More

    [리눅스 (LINUX)] 기본 명령어

    1. cd (change directory)

    Linux에서 디렉토리를 변경하는 명령어는 “cd”입니다. “cd” 명령어는 Change Directory의 약자로, 사용자가 현재 작업 디렉토리를 변경하는 데 사용됩니다.

    “cd” 명령어는 사용자가 해당 디렉토리에 읽고 쓰기 권한이 있을 때만 작동합니다. 만약 디렉토리가 존재하지 않거나 액세스 권한이 없는 경우에는 오류 메시지가 표시됩니다.

    1) 홈 디렉토리로 이동
    어느 디렉토리에 있든 홈 디렉토리로 이동하고 싶다면 cd만 누르면 된다.
    itgoit@itgoit-linux:/var/www/html$ cd
    itgoit@itgoit-linux:~$
    2) 상대 경로 이동
    home 디렉토리 내의 "documents" 디렉토리로 이동합니다. 이동 시 해당 디렉토리 내에 documents 디렉토리가 있어야 한다.
    itgoit@itgoit-linux:/home$ cd documents
    itgoit@itgoit-linux:/home/documents$ 
    
    itgoit@itgoit-linux:/home/documents$ cd documents
    -bash: cd: documents: No such file or directory
    itgoit@itgoit-linux:/home/documents$
    3) 절대 경로 이동
      전체 경로인 "/var/www/html" 디렉토리로 이동합니다.  최상위 경로(/)를 붙여줌으로써 절대 경로 사용이 가능하며 특정 디렉토리로 이동할 수 있다. 어느 경로에서든 상관 없이 절대 경로로 이동이 가능하다.
    itgoit@itgoit-linux:/home/documents$ cd /var/www/html
    itgoit@itgoit-linux:/var/www/html$
    4) 상위 디렉토리로 이동 / 이전 디렉토리로 이동
      해당 디렉토리의 상위 디렉토리로 이동하기 위해 ".."을 사용합니다.  또한 바로 전에 머물렀던 디렉토리로 다시 돌아가고 싶다면 "-"를 이용하여 바로 전에 머물렀던 디렉토리가 표시되며 이동됩니다.
    itgoit@itgoit-linux:/var/www/html$ cd ..
    itgoit@itgoit-linux:/var/www$ cd -
    /var/www/html
    itgoit@itgoit-linux:/var/www/html$

    2. mkdir (Make Directory)

    새로운 디렉토리(폴더)를 만들기 위한 명령어로 사용자가 지정한 이름의 디렉토리를 생성하여 파일 시스템에 추가합니다. 윈도우의 새 폴더 만들기라고 생각하시면됩니다.

    mkdir [옵션] 디렉토리명
    -p: 지정된 경로에 디렉토리를 만들 때 필요한 중간 디렉토리 또한 모두 생성합니다.
    -m: 새로운 디렉토리의 권한을 설정합니다.
    -v: 새로운 디렉토리를 만들 때마다 그 작업을 자세히 표시해줍니다. 명령이 실행될 때마다 만들어진 디렉토리의 이름을 보여줍니다. 이 옵션을 사용하면 작업이 성공적으로 수행되었는지 확인이 쉽습니다.
    -p 옵션을 사용하면 디렉토리 생성시 "/www/html/"는 기존에 있는 경로이며 "wp/make/folder/test"는 존재하지 않는 디렉토리지만 중간 디렉토리를 동시에 생성할 수 있습니다.
    itgoit@itgoit-linux:~$ mkdir -p /var/www/html/wp/make/folder/test
     -m 옵션은 디렉토리 생성 시 디렉토리의 권한을 설정하는 데 사용됩니다. 새로운 디렉토리에 대한 권한을 숫자 모드(Octal mode)로 설정합니다. 
     test라는 새 디렉토리를 만들고, 이 디렉토리에 대한 권한을 764를 설정합니다. 소유자에게 읽기(Read) O, 쓰기(Write) O, 실행(Excute) O 권한인 7(rwx), 그룹 사용자에게 읽기(Read) O, 쓰기(Write) O, 실행(Excute) X 권한인 6(rw-), 기타사용자에게 읽기(Read) O, 쓰기(Write) X, 실행(Excute) X 권한인 4(r--)으로 설정합니다.
    itgoit@itgoit-linux:~$ mkdir -m 764 test (※ 764 - 소유자 7(rwx):그룹 6(rw-):기타사용자 4(r--))
    itgoit@itgoit-linux:~$ ls
    drwxrw-r--  2 root     root         4096 May 13 13:15 test
    itgoit@itgoit-linux:~$ 
    -v 옵션은 작업 여부를 메시지로 확인할 수 있습니다.
    itgoit@itgoit-linux:~$ mkdir -v test
    mkdir: created directory 'test'
    itgoit@itgoit-linux:~$ ls
    test
    itgoit@itgoit-linux:~$

    3. rmdir (Remove Directory)

    빈 디렉토리를 삭제하는 데 사용됩니다. 해당 디렉토리에는 어떤 파일이나 디렉토리도 포함되어 있지 않아야 합니다. 만약 삭제하려는 디렉토리에 내용이 있으면 rmdir은 실패하고 오류 메시지가 표시됩니다. 이 때 -p 옵션을 사용합니다.

    rmdir [옵션] 디렉토리명
    -p: 부모 디렉토리를 함께 삭제합니다. 즉, 지정된 디렉토리를 삭제하고 그 디렉토리가 비어 있고, 이후에 부모 디렉토리가 비어 있으면 부모 디렉토리도 삭제됩니다.
    -v: 작업을 수행할 때마다 세부 정보를 표시합니다.
    itgoit@itgoit-linux:/var/www$ ls
    make  test1
    itgoit@itgoit-linux:/var/www$ tree make
    make
    └── test2
    
    1 directory, 0 files
    
    목록에는 make와 test1 폴더가 있고, 그중 make 폴더안에는 test2가있습니다.
    
    itgoit@itgoit-linux:/var/www$ rmdir test1
    itgoit@itgoit-linux:/var/www$ ls
    make
    itgoit@itgoit-linux:/var/www$ rmdir make
    rmdir: failed to remove 'make': Directory not empty
    itgoit@itgoit-linux:/var/www$ rmdir -p make
    itgoit@itgoit-linux:/var/www$ ls
    itgoit@itgoit-linux:/var/www$

    4. ls / dir (ms-dos 시절 dir도 지원)


    리눅스에서 ls 명령어는 현재 디렉토리에 있는 파일과 디렉토리의 목록을 보여줍니다. 일반적으로 사용되는 옵션은 다음과 같습니다.

    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls          // 일반 파일 표시
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -a       // 모든 파일 표시 (dot 파일 )
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -F       // 파일명 뒤에 파일 유형을 나타내는 기호를 표시
                                                              (디렉토리-/, 실행파일-*, 심볼릭 링크-@)
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -C       // 한줄에 여러 파일 표시 (도스의 dir/w과 같은 명령)
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -l       // 상세 파일 정보를 표시
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -t       // 파일이 생성된 시간 별로 정렬
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -R    // 서브 디렉토리  모든 파일 표시 (리눅스 모든 폴더가 표시)
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -lt      // 상세파일 표시를 파일 생성 시간대 별로 
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -al      // 모든 파일을 상세하게 표시
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -aC      // 모든 파일을 한줄에 여러 파일 표시
    1) ls
     현재 디렉토리의 모든 파일 및 폴더를 기본 형식으로 보여준다.
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls
    index.php        wp-blog-header.php    wp-cron.php        wp-settings.php
    license.txt      wp-comments-post.php  wp-includes        wp-signup.php
    nginx.conf       wp-config-docker.php  wp-links-opml.php  wp-trackback.php
    readme.html      wp-config-sample.php  wp-load.php        xmlrpc.php
    wp-activate.php  wp-config.php         wp-login.php
    wp-admin         wp-content            wp-mail.php
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$
    2) ls -a
    숨겨진 파일을 포함하여 모든 파일을 보여준다.
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -a
    .            wp-activate.php       wp-content         wp-settings.php
    ..           wp-admin              wp-cron.php        wp-signup.php
    .htaccess    wp-blog-header.php    wp-includes        wp-trackback.php
    index.php    wp-comments-post.php  wp-links-opml.php  xmlrpc.php
    license.txt  wp-config-docker.php  wp-load.php
    nginx.conf   wp-config-sample.php  wp-login.php
    readme.html  wp-config.php         wp-mail.php
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$
    3) ls -F
        각 항목의 유형을 나타내는 문자를 추가하여 파일과 디렉토리를 목록화합니다.
    ls -F를 사용하면 아래와 같이 식별 문자가 추가됩니다. 아래 식별자를 통해 파일과 디렉토리를 더 쉽게 식별할 수 있습니다.
    - 슬래시(/) : 디렉토리
    - 별표(*) : 실행 가능한 파일
    - AT 기호(@) : 심볼릭 링크
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -F
    ads.txt       wp-activate.php*       wp-content/         wp-mail.php*
    ads.txt.save  wp-admin/              wp-cron.php*        wp-settings.php*
    index.php*    wp-blog-header.php*    wp-includes/        wp-signup.php*
    license.txt*  wp-comments-post.php*  wp-links-opml.php*  wp-trackback.php*
    readme.html*  wp-config-sample.php*  wp-load.php*        xmlrpc.php*
    wp-config.php wp-login.php*
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ cd /etc/nginx
    itgoit@itgoit-linux:~/etc/nginx$ ls -F
    conf.d/         itgoit.conf  modules@          scgi_params       uwsgi_params
    fastcgi.conf    koi-utf      modules-enabled/  sites-available/  win-utf
    fastcgi_params  koi-win      nginx.conf        sites-enabled/
    itgoit.com      mime.types   proxy_params      snippets/
    itgoit@itgoit-linux:~/etc/nginx$
    4) ls -C
        파일과 디렉토리를 여러 열에 걸쳐 정렬하여 표시합니다. 이렇게 하면 화면 너비에 맞춰 목록이 자동으로 조정되어 더 가독성이 좋아집니다. 파일 및 디렉토리가 여러 열에 걸쳐 표시되므로 긴 파일 목록을 볼 때 특히 유용합니다.
     창 너비에 맞춰 목록이 아래와 같이 자동으로 조정되니 창을 조절해야할 경우 다시 다시 정렬하여 깔끔하게 볼 수있습니다.
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -C
    index.php        wp-blog-header.php    wp-cron.php        wp-settings.php
    license.txt      wp-comments-post.php  wp-includes        wp-signup.php
    nginx.conf       wp-config-docker.php  wp-links-opml.php  wp-trackback.php
    readme.html      wp-config-sample.php  wp-load.php        xmlrpc.php
    wp-activate.php  wp-config.php         wp-login.php
    wp-admin         wp-content            wp-mail.php
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -C
    index.php         wp-blog-header.php    
    wp-cron.php       wp-settings.php
    license.txt       wp-comments-post.php
    wp-includes       wp-signup.php
    nginx.conf        wp-config-docker.php
    wp-links-opml.php wp-trackback.php
    readme.html       wp-config-sample.php  
    wp-load.php       xmlrpc.php
    wp-activate.php   wp-config.php         
    wp-login.php      wp-admin         
    wp-content        wp-mail.php
    5) ls -l
        현재 디렉토리에 있는 파일과 디렉토리의 자세한 정보를 보여줍니다.
    - 파일 유형 및 권한
    - 링크 수
    - 소유자 이름
    - 그룹 이름
    - 파일 크기(바이트 단위)
    - 마지막 수정 날짜 및 시간
    - 파일 또는 디렉토리 이름
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -l
    total 248
    -rw-r--r--  1 82 82   405 Feb  6  2020 index.php
    -rw-r--r--  1 82 82 19915 Jan  1  2023 license.txt
    -rw-r--r--  1 82 82     0 Jul  4 23:37 nginx.conf
    -rw-r--r--  1 82 82  7402 May 31 00:43 readme.html
    -rw-r--r--  1 82 82  7205 Sep 17  2022 wp-activate.php
    drwxr-xr-x  9 82 82  4096 May 17 01:45 wp-admin
    -rw-r--r--  1 82 82   351 Feb  6  2020 wp-blog-header.php
    -rw-r--r--  1 82 82  2338 Nov 10  2021 wp-comments-post.php
    -rw-rw-r--  1 82 82  5529 May 31 00:18 wp-config-docker.php
    -rw-r--r--  1 82 82  3013 Feb 23 19:38 wp-config-sample.php
    -rw-r--r--  1 82 82  5633 Jul  4 23:37 wp-config.php
    drwxr-xr-x 10 82 82  4096 Aug  4 16:42 wp-content
    -rw-r--r--  1 82 82  5536 Nov 24  2022 wp-cron.php
    drwxr-xr-x 28 82 82 16384 May 17 01:45 wp-includes
    -rw-r--r--  1 82 82  2502 Nov 27  2022 wp-links-opml.php
    -rw-r--r--  1 82 82  3792 Feb 23 19:38 wp-load.php
    -rw-r--r--  1 82 82 49330 Feb 23 19:38 wp-login.php
    -rw-r--r--  1 82 82  8541 Feb  3 22:35 wp-mail.php
    -rw-r--r--  1 82 82 24993 Mar  2 00:05 wp-settings.php
    -rw-r--r--  1 82 82 34350 Sep 17  2022 wp-signup.php
    -rw-r--r--  1 82 82  4889 Nov 24  2022 wp-trackback.php
    -rw-r--r--  1 82 82  3238 Nov 30  2022 xmlrpc.php
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$
    6) ls -t
        파일 및 디렉토리를 수정된 시간에 따라 정렬하여 표시합니다. 가장 최근에 수정된 파일이 먼저 표시되고, 가장 오래된 파일이 나중에 표시됩니다. 가장 최근에 사용한 파일이나 작업한 디렉토리를 빠르게 찾을 수 있습니다.
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -t
    wp-content            wp-admin              license.txt        wp-activate.php
    nginx.conf            wp-settings.php       xmlrpc.php         wp-comments-post.php
    wp-config.php         wp-config-sample.php  wp-links-opml.php  index.php
    readme.html           wp-load.php           wp-cron.php        wp-blog-header.php
    wp-config-docker.php  wp-login.php          wp-trackback.php
    wp-includes           wp-mail.php           wp-signup.php
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$
    7) ls -lt
        파일과 디렉토리를 자세한 정보와 함께 수정된 시간에 따라 정렬하여 표시합니다. 즉, 가장 최근에 수정된 파일이 먼저 나타나고, 가장 오래된 파일이 나중에 나타납니다. 파일의 자세한 정보를 표시하면서도 최신 파일 부터 보여주므로 가장 많이 사용되는 옵션 중 하나입니다.
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -lt
    total 248
    drwxr-xr-x 10 82 82  4096 Aug  4 16:43 wp-content
    -rw-r--r--  1 82 82     0 Jul  4 23:37 nginx.conf
    -rw-r--r--  1 82 82  5633 Jul  4 23:37 wp-config.php
    -rw-r--r--  1 82 82  7402 May 31 00:43 readme.html
    -rw-rw-r--  1 82 82  5529 May 31 00:18 wp-config-docker.php
    drwxr-xr-x 28 82 82 16384 May 17 01:45 wp-includes
    drwxr-xr-x  9 82 82  4096 May 17 01:45 wp-admin
    -rw-r--r--  1 82 82 24993 Mar  2 00:05 wp-settings.php
    -rw-r--r--  1 82 82  3013 Feb 23 19:38 wp-config-sample.php
    -rw-r--r--  1 82 82  3792 Feb 23 19:38 wp-load.php
    -rw-r--r--  1 82 82 49330 Feb 23 19:38 wp-login.php
    -rw-r--r--  1 82 82  8541 Feb  3 22:35 wp-mail.php
    -rw-r--r--  1 82 82 19915 Jan  1  2023 license.txt
    -rw-r--r--  1 82 82  3238 Nov 30  2022 xmlrpc.php
    -rw-r--r--  1 82 82  2502 Nov 27  2022 wp-links-opml.php
    -rw-r--r--  1 82 82  5536 Nov 24  2022 wp-cron.php
    -rw-r--r--  1 82 82  4889 Nov 24  2022 wp-trackback.php
    -rw-r--r--  1 82 82 34350 Sep 17  2022 wp-signup.php
    -rw-r--r--  1 82 82  7205 Sep 17  2022 wp-activate.php
    -rw-r--r--  1 82 82  2338 Nov 10  2021 wp-comments-post.php
    -rw-r--r--  1 82 82   405 Feb  6  2020 index.php
    -rw-r--r--  1 82 82   351 Feb  6  2020 wp-blog-header.php
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$
    8) ls -al
        현재 디렉토리에 있는 모든 파일과 디렉토리를 자세한 정보와 함께 표시합니다. 숨겨진 파일 및 디렉토리도 모두 포함하여 보여줍니다. 따라서 현재 디렉토리에 있는 모든 항목을 보고 싶을 때 유용합니다.
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -al
    total 260
    drwxr-xr-x  5     82     82  4096 Aug  3 00:53 .
    drwxrwxr-x  8 itgoit itgoit  4096 Jul 27 23:07 ..
    -rw-r--r--  1     82     82   294 May 31 01:07 .htaccess
    -rw-r--r--  1     82     82   405 Feb  6  2020 index.php
    -rw-r--r--  1     82     82 19915 Jan  1  2023 license.txt
    -rw-r--r--  1     82     82     0 Jul  4 23:37 nginx.conf
    -rw-r--r--  1     82     82  7402 May 31 00:43 readme.html
    -rw-r--r--  1     82     82  7205 Sep 17  2022 wp-activate.php
    drwxr-xr-x  9     82     82  4096 May 17 01:45 wp-admin
    -rw-r--r--  1     82     82   351 Feb  6  2020 wp-blog-header.php
    -rw-r--r--  1     82     82  2338 Nov 10  2021 wp-comments-post.php
    -rw-rw-r--  1     82     82  5529 May 31 00:18 wp-config-docker.php
    -rw-r--r--  1     82     82  3013 Feb 23 19:38 wp-config-sample.php
    -rw-r--r--  1     82     82  5633 Jul  4 23:37 wp-config.php
    drwxr-xr-x 10     82     82  4096 Aug  4 16:45 wp-content
    -rw-r--r--  1     82     82  5536 Nov 24  2022 wp-cron.php
    drwxr-xr-x 28     82     82 16384 May 17 01:45 wp-includes
    -rw-r--r--  1     82     82  2502 Nov 27  2022 wp-links-opml.php
    -rw-r--r--  1     82     82  3792 Feb 23 19:38 wp-load.php
    -rw-r--r--  1     82     82 49330 Feb 23 19:38 wp-login.php
    -rw-r--r--  1     82     82  8541 Feb  3 22:35 wp-mail.php
    -rw-r--r--  1     82     82 24993 Mar  2 00:05 wp-settings.php
    -rw-r--r--  1     82     82 34350 Sep 17  2022 wp-signup.php
    -rw-r--r--  1     82     82  4889 Nov 24  2022 wp-trackback.php
    -rw-r--r--  1     82     82  3238 Nov 30  2022 xmlrpc.php
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$
    9) ls -aC
        현재 디렉토리에 있는 모든 파일과 디렉토리를 숨겨진 항목을 포함하여 열거하고, 항목을 여러 열에 걸쳐 화면에 출력합니다. 이렇게 하면 파일 및 디렉토리를 가독성 좋게 표시할 수 있습니다.
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ ls -aC
    .            wp-activate.php       wp-content         wp-settings.php
    ..           wp-admin              wp-cron.php        wp-signup.php
    .htaccess    wp-blog-header.php    wp-includes        wp-trackback.php
    index.php    wp-comments-post.php  wp-links-opml.php  xmlrpc.php
    license.txt  wp-config-docker.php  wp-load.php
    nginx.conf   wp-config-sample.php  wp-login.php
    readme.html  wp-config.php         wp-mail.php
    itgoit@itgoit-linux:~/itgoit-wp/wordpress$ 

    5. login

    리눅스는 기본적으로 멀티 유저 개념으로 만들어져 생성된 사용자 ID로 로그인하여 사용합니다.

    root@itgoit-server:~# login --help
    Usage: login [-p] [name]                             // -p id 이전의 동일한 환경으로 실행
           login [-p] [-h host] [-f name]                // -h hostname 원격접속할 때 호스트명을 입력한다.
           login [-p] -r host      // -f 인증 절차가 완료된 사용자는 절차를 무시. root id는 무조건 인증절차를 거친다.
           
    root@itgoit-server:~# login -p itgoit
    Password: itgoit!!
    ---------- 생략 ----------
    itgoit@itgoit-linux:~$
    
    root@itgoit-server:~# login -p itgoit
    Password: itgoit!!
    Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4)
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
      System information as of Fri Aug  4 14:52:07 KST 2022
      System load:  0.2841796875       Users logged in:                  1
      Usage of /:   5.6% of 193.65GB   IPv4 address for br-5ac294f22074: 175.10.0.1
      Memory usage: 48%                IPv4 address for docker0:         175.12.0.1
      Swap usage:   1%                 IPv4 address for ens3:            10.0.0.111
      Processes:    143
     * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
       just raised the bar for easy, resilient and secure K8s cluster deployment.
       https://ubuntu.com/engage/secure-kubernetes-at-the-edge
    Expanded Security Maintenance for Applications is not enabled.
    0 updates can be applied immediately.
    Enable ESM Apps to receive additional future security updates.
    See https://ubuntu.com/esm or run: sudo pro status
    Last login: Fri Aug  4 14:19:29 KST 2022 from 172.253.1.93 on pts/0
    itgoit@itgoit-linux:~$                                                  // 계정과 호스트명, 디렉토리 표시가 변경되었다.

    6. password

    패스워드 관련 명령어로 패스워드를 변경하거나 사용 기한 지정 등을 설정할 수 있습니다.

    p.s 네트워크 장비는 입력 도중 backspasce가 적용되지만 리눅스는 도중에 틀리면 엔터 치고 다시 해야 합니다.

    itgoit@itgoit-linux:~$ passwd --help
    Usage: passwd [options] [LOGIN]
    Options:
      -a, --all                     report password status on all accounts   // 모든 계정의 비밀번호 상태 보고
      -d, --delete                  delete the password for the named account
      -e, --expire                  force expire the password for the named account
      -h, --help                    display this help message and exit
      -k, --keep-tokens             change password only if expired
      -i, --inactive INACTIVE       set password inactive after expiration
                                    to INACTIVE
      -l, --lock                    lock the password of the named account
      -n, --mindays MIN_DAYS        set minimum number of days before password
                                    change to MIN_DAYS
      -q, --quiet                   quiet mode
      -r, --repository REPOSITORY   change password in REPOSITORY repository
      -R, --root CHROOT_DIR         directory to chroot into
      -S, --status                  report password status on the named account
      -u, --unlock                  unlock the password of the named account
      -w, --warndays WARN_DAYS      set expiration warning days to WARN_DAYS
      -x, --maxdays MAX_DAYS        set maximum number of days before password
                                    change to MAX_DAYS
                                    
    itgoit@itgoit-linux:~$ passwd
    Current password: itgoit00!!                                      // 현재 패스워드 입력
    New password: itgoit!!00                                          // 새로운 패스워드 입력
    Retype new password: itgoit!!00                                   // 새로운 패스워드 다시 한번 입력
    itgoit@itgoit-linux:~$ 
    1) 정상적인 변경방법
    itgoit@itgoit-linux:~$ passwd
    Changing password for itgoit.
    Current password: itgoit00!!                                      // 현재 패스워드 입력
    New password: itgoit!!00                                          // 새로운 패스워드 입력
    Retype new password: itgoit!!00                                   // 새로운 패스워드 다시 한번 입력
    passwd: password updated successfully                             // 변경이 정상적으로 이루어짐
    itgoit@itgoit-linux:~$
    2) 현재 패스워드 틀렸을 때
    itgoit@itgoit-linux:~$ passwd
    Changing password for itgoit.
    Current password: itgoti00!!                                  // 비밀번호를 틀려보겠습니다.
    passwd: Authentication token manipulation error
    passwd: password unchanged                                    // 비밀번호가 변경되지 않았습니다.
    3) 새로운 패스워드가 현재 패스워드와 동일하거나 비었을 때
    itgoit@itgoit-linux:~$ passwd
    Changing password for itgoit.
    Current password: itgoti00!!                                  // 현재 비밀번호 itgoti00!!
    New password: itgoti00!!                                      // 새로운 비밀번호 itgoti00!!
    Retype new password: itgoti00!!
    The password has not been changed.                            // 비밀번호가 동일할 경우 변경하지 않음
    New password: itgoti00!!
    Retype new password: itgoti00!!
    The password has not been changed.
    New password:                                                 // 비밀번호를 공백으로  
    Retype new password:
    No password has been supplied.                                // 비밀번호가 비었다고 나오며 변경되지 않음
    passwd: Authentication token manipulation error
    passwd: password unchanged
    4) 패스워드 다시 입력하기 틀렸을 경우
    itgoit@itgoit-linux:~$ passwd
    Changing password for itgoit.
    Current password: itgoti00!!
    New password: itgoti00##
    Retype new password: itgoti0033                               // 새로운 비밀번호 재입력 오류 
    Sorry, passwords do not match.
    passwd: Authentication token manipulation error
    passwd: password unchanged
    itgoit@itgoit-linux:~$ 


    7. pwd (print working directory)

    1) 현재 작업 디렉토리 확인
      pwd 명령어는 현재 작업 디렉토리의 절대 경로를 출력합니다. 이것은 사용자가 현재 어디에 있는지 알 수 있도록 도와줍니다.
    itgoit@itgoit-linux:/var/www/html$ pwd
    /var/www/html
    itgoit@itgoit-linux:/var/www/html$
    2) 파일 및 디렉토리의 절대 경로 얻기pwd 명령어는 다른 명령어의 인수로 사용할 수 있습니다. 예를 들어, ls 명령어에 pwd 명령어의 출력을 인수로 전달하면 현재 작업 디렉토리의 내용을 나열할 수 있습니다.
    itgoit@itgoit-linux:/var/www/html$ ls $(pwd)
    ads.txt       wp-activate.php       wp-content         wp-mail.php
    ads.txt.save  wp-admin              wp-cron.php        wp-settings.php
    index.php     wp-blog-header.php    wp-includes        wp-signup.php
    license.txt   wp-comments-post.php  wp-links-opml.php  wp-trackback.php
    readme.html   wp-config-sample.php  wp-load.php        xmlrpc.php
    wp-config.php wp-login.php
    itgoit@itgoit-linux:/var/www/html$
    3) 셸 스크립트를 생성하여 변수를 통한 현재 작업 디렉토리 출력pwd 명령어는 셸 스크립트에서 현재 작업 디렉토리를 얻는 데 유용합니다. 이것은 스크립트가 다른 디렉토리에 있는 파일에 액세스 해야 할 때 유용할 수 있습니다.
    itgoit@itgoit-linux:/var/www/html$ sudo vim script.sh
    
    # 현재 작업 디렉토리 출력
    pwd
    
    # 현재 작업 디렉토리를 itgoit_dir 변수에 저장
    itgoit_html_dir=$(pwd)
    
    # PATH 환경 변수에 현재 작업 디렉토리 추가
    export PATH=$PATH:$itgoit_html_dir
    
    # 변수를 사용하여 현재 작업 디렉토리를 출력
    echo "itgoit html working directory: $itgoit_html_dir"
    
    # PATH 환경변수 값 출력
    echo PATH
    
    :wq
    
    itgoit@itgoit-linux:/var/www/html$ chmod +x script.sh
    itgoit@itgoit-linux:/var/www/html$ ./script.sh
    /var/www/html
    itgoit html working directory: /var/www/html
    /기존 환경변수:/pwd값 작업 디렉토리 환경변수
    itgoit@itgoit-linux:/var/www/html$
    4) 환경 변수 설정 해제
      환경변수를 해제하게 되면 아래와 같이 공백으로 표시
    itgoit@itgoit-linux:/var/www/html$ unset PATH
    itgoit@itgoit-linux:/var/www/html$ echo $PATH
    
    itgoit@itgoit-linux:/var/www/html$ 

    8. 그 외 자주 사용하게 될 명령어

    1) find

    리눅스에서 흩어져 있는 파일및 디렉토리를 찾아 정리할 수있는 명령어입니다. 명령을 사용하여 다양한 방법으로 흩어져 있던 내용을 정리할 수 있음

     find [경로] [옵션] [검색 조건] [명령어]
    -name: 파일 이름으로 검색합니다.
    -type: 파일 유형으로 검색합니다.
    -size: 파일 크기로 검색합니다.
    -mtime: 파일 수정 시간으로 검색합니다.
    -atime: 파일 액세스 시간으로 검색합니다.
    -ctime: 파일 상태 변경 시간으로 검색합니다.
    
    [검색 조건]
    -and: 여러 검색 조건을 연결합니다.
    -or: 여러 검색 조건을 연결합니다.
    -not: 검색 조건을 부정합니다.
    
    [명령어]
    -print: 검색 결과를 출력합니다.
    -delete: 검색 결과를 삭제합니다.
    -exec: 검색 결과에 명령어를 실행합니다.
    find . -name "*itgoit*" | xargs grep "itgoit" | sort | uniq     // 현재 디렉토리에서 "itgoit"이라는 단어가 
                                                                       포함된 모든 파일을 검색하고  파일의
                                                                       내용을 정렬하고, 중복된 줄을 제거
    find . -name "*itgoit*"           // 현재 디렉토리에서 "itgoit"이라는 단어가 포함된 모든 파일을 검색
    find . -size +500M                // 현재 디렉토리에서 파일 용량이 500M 이상되는 모든파일을 검색
    find . -mtime -1                  // 현재 디렉토리에서 1일이내에 수정된 모든 파일검색
    find . -name "*itgoit*" -delete   // 현재 디렉토리에서 검색결과 삭제

    2) dpkg

    dpkg는 데비안 패키지 관리 시스템을 위한 명령어입니다. 데비안 패키지 관리 시스템은 데비안 기반 리눅스 배포판에서 사용되는 패키지 관리 시스템입니다.

    dpkg [옵션] 명령어 패키지
    -i 패키지 설치
    -r 패키지 제거
    -u 패키지 업그레이드
    -s 패키지 정보 표시
    -e 패키지 구성 파일 편집
    -l 설치된 모든 패키지의 목록 표시
    itgoit@itgoit-linux:~$ dpkg -i python3.deb          // 패키지 설치
    itgoit@itgoit-linux:~$ dpkg -r python3              // 패키지 삭제
    itgoit@itgoit-linux:~$ dpkg -u python3.deb          // 패키지 업데이트
    itgoit@itgoit-linux:~$ dpkg -s python3              // 패키지 정보 표시
    itgoit@itgoit-linux:~$ dpkg -e python3              // 패키지 구성파일 편집
    itgoit@itgoit-linux:~$ dpkg -l               // 설치된 모든 패키지목록 표시
    Desired=Unknown/Install/Remove/Purge/Hold
    | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
    |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
    ||/ Name                                  Version                              >
    +++-=====================================-=====================================>
    ii  adduser                               3.118ubuntu5                         >
    ii  apparmor                              3.0.4-2ubuntu2.3                     >
    ii  apport                                2.20.11-0ubuntu82.5                  >
    ii  apport-symptoms                       0.24                                 >
    ii  apt                                   2.4.12                               >
    ii  apt-utils                             2.4.12                               >
    ii  autoconf                              2.71-2                               >
    ii  automake                              1:1.16.5-1.3                         >
    ------------------------------ 이하 생략 -----------------------------------------

    3) whereis

    whereis 명령어는 리눅스에서 명령어, 매뉴얼 페이지, 소스 코드 파일의 위치를 찾는 데 사용되는 명령어입니다.

    whereis [옵션] 명령어
    -b: 바이너리 파일의 위치만 표시합니다.
    -m: 매뉴얼 페이지의 위치만 표시합니다.
    -s: 소스 코드 파일의 위치만 표시합니다.
    -u: 모든 파일의 위치를 표시합니다.
    itgoit@itgoit-linux:~$ wehreis dpkg                // pkg 위치 표시 (man 디렉토리내 gz파일은 매뉴얼 페이지)
    dpkg: /usr/bin/dpkg /usr/lib/dpkg /etc/dpkg /usr/libexec/dpkg /usr/share/dpkg /usr/share/man/man1/dpkg.1.gz
    itgoit@itgoit-linux:~$ wehreis -b dpkg             // 바이너리 파일 위치 표시
    dpkg: /usr/bin/dpkg /usr/lib/dpkg /etc/dpkg /usr/libexec/dpkg /usr/share/dpkg
    itgoit@itgoit-linux:~$ wehreis -s dpkg             // 소스코드 파일 위치 표시
    itgoit@itgoit-linux:~$ wehreis -u dpkg             // 모든 파일 위치 표시

    4) file

    파일의 유형을 확인하는 데 사용됩니다. 파일이 어떤 종류의 데이터를 포함하고 있는지를 결정하기 위해 파일의 내용과 특성을 분석합니다. 이것은 파일이 텍스트 파일, 이미지 파일, 바이너리 파일 등인지를 판별하는 데 도움이 됩니다.

    file [옵션] 파일명
    -b 혹은 --brief : 파일명을 출력하지 않고 파일의 유형만 출력합니다.
    -f 혹은 --file-form : 많은 파일을 한 번에 확인하기 위한 파일 리스트를 만들어서 여러 개의 파일을 한 번에 확인할 때 사용합니다.
    -i 혹은 --mime : MIME 타입 문자로 출력합니다.
    itgoit@itgoit-linux:/var/www/html/wp$ file ads.txt
    ads.txt: ASCII text
    itgoit@itgoit-linux:/var/www/html/wp$ file readme.html
    readme.html: HTML document, ASCII text, with very long lines (345)
    itgoit@itgoit-linux:/var/www/html/wp$
    itgoit@itgoit-linux:/var/www/html/wp$ file -b readme.html
    HTML document, ASCII text, with very long lines (345)
    itgoit@itgoit-linux:/var/www/html/wp$ file -i readme.html
    readme.html: text/html; charset=us-ascii
    itgoit@itgoit-linux:/var/www/html/wp$ 

    5) apt-cache

    apt-cache는 데비안 기반의 리눅스 배포판(예: Ubuntu)에서 패키지 메타데이터를 검색하고 생성합니다. 시스템 상태를 변경하지 않으며, update 명령을 통해 가져온 패키지 메타데이터에서 다양한 유용한 정보를 검색하고 생성하는 기능을 제공합니다

    5-1) apt-cache search 키워드

    Debian 기반 리눅스 시스템에서 사용되는 Advanced Packaging Tool (APT)의 캐시를 검색하여 패키지를 검색하는 데 사용됩니다.
    이 명령어는 패키지 이름, 설명 및 다른 관련 정보를 사용하여 패키지 데이터베이스에서 패키지를 검색합니다.

    itgoit@itgoit-linux:~$ apt-cache search jvm
    libpython3-all-dbg - package depending on all supported Python 3 debugging packages
    libpython3-all-dev - package depending on all supported Python 3 development packages
    python3-all - package depending on all supported Python 3 runtime versions
    python3-all-dbg - package depending on all supported Python 3 debugging packages
    python3-all-dev - package depending on all supported Python 3 development packages
    clojure - Lisp dialect for the JVM
    gradle - Powerful build system for the JVM
    gradle-doc - Powerful build system for the JVM - Documentations
    groovy - Agile dynamic language for the Java Virtual Machine
    groovy-doc - Agile dynamic language for the Java Virtual Machine (documentation)
    jarwrapper - Run executable Java .jar files
    jattach - JVM Dynamic Attach utility all in one jmap jstack jcmd jin
    ------------------------------------- 중간 생략 -----------------------------------------
    itgoit@itgoit-linux:~$
    5-2) apt-cache show 패키지명

    명령을 사용하면 특정 패키지에 대한 세부정보를 확인할 수 있습니다.

    itgoit@itgoit-linux:~$ apt-cache show python3
    Package: python3
    Architecture: amd64
    Version: 3.10.6-1~22.04
    Multi-Arch: allowed
    Priority: important
    Section: python
    Source: python3-defaults
    Origin: Ubuntu
    Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
    Original-Maintainer: Matthias Klose <doko@debian.org>
    Bugs: https://bugs.launchpad.net/ubuntu/+filebug
    Installed-Size: 90
    Provides: python3-profiler
    Pre-Depends: python3-minimal (= 3.10.6-1~22.04)
    ------------------------------------- 중간 생략 -----------------------------------------
    5-3) apt-cache depends 패키지명

    명령을 사용하면 특정 패키지에 대한 종속성을 확인할 수 있습니다.

    itgoit@itgoit-linux:~$ apt-cache depends python3
    python3
      PreDepends: python3-minimal
      Depends: python3.10
      Depends: libpython3-stdlib
      Suggests: python3-doc
      Suggests: python3-tk
      Suggests: python3-venv
      Replaces: python3-minimal
    itgoit@itgoit-linux:~$
    5-4) apt-cache policy 패키지명

    명령을 사용하면 특정 패키지에 대한 설치 상태와 사용 가능한 버전을 확인할 있습니다.

    itgoit@itgoit-linux:~$ apt-cache policy python3
    python3:
      Installed: 3.10.6-1~22.04
      Candidate: 3.10.6-1~22.04
      Version table:
     *** 3.10.6-1~22.04 500
            500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
            500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages
            100 /var/lib/dpkg/status
         3.10.4-0ubuntu2 500
            500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages

    6) APT (Advanced Packaging Tool), APT-GET

    데비안 (Debian) 기반 리눅스 시스템에서 패키지를 관리하는 데 사용됩니다.

    apt-get install 패키지명 : 패키지 설치
    패키지를 설치하는 데 사용됩니다. 이 명령어를 사용하여 시스템에 새로운 소프트웨어를 설치하거나 기존 소프트웨어를 업그레이드할 수 있습니다.
    패키지 저장소에서 지정된 패키지를 찾아 설치하고, 필요한 경우 의존성 패키지도 함께 설치합니다.
    필요에 의해 저장소를 추가하여 최신버전을 설치하는 경우도 있습니다.
    apt-get remove 패키지명 : 패키지 제거
    패키지를 제거하는 데 사용됩니다. 이 명령어를 사용하여 시스템에서 특정 소프트웨어를 제거할 수 있습니다.
    이때, 해당 패키지에 의존하는 다른 패키지가 있다면 이를 함께 제거하지 않습니다. 만약 해당 패키지에 의존하는 다른 패키지도 함께 제거하려면 apt-get autoremove 명령어를 사용할 수 있습니다.
    apt-get --purge remove 패키지명 : 패키지 및 관련 설정 파일 제거
    apt-get upgrade : 패키지 업그레이드
    apt-get search 검색어 : 패키지 검색
    apt-get update : 패키지 정보 업데이트
    apt-get autoremove : 불필요한 패키지 제거
    사용하지 않는 패키지를 자동으로 제거하는 데 사용됩니다. 일반적으로 이 명령어는 시스템에서 더 이상 필요하지 않은 의존성이나 잔여 파일을 정리하는 데 사용됩니다.
    현재 시스템에 설치된 패키지 중에서 다른 패키지에 의존하지 않는 패키지가 검색되어 제거됩니다. 이것은 시스템 공간을 절약하고 불필요한 패키지를 정리하는 데 도움이 됩니다.
    명령어 실행 후에는 자동으로 삭제될 패키지 목록이 표시되며, 삭제를 승인하려면 "Y"를 입력하고 엔터 키를 누르면 됩니다.

    6-1) APT

    – APT를 통해 패키지 검색/설치/삭제/업데이트 등 진행 가능
    – APT는 패키지 의존성을 자동으로 해결하므로 필요한 모든 패키지를 자동으로 설치 혹은 업그레이드 할 수 있음
    – 명령줄 및 API를 통해 사용될 수 있으며 친화적인 인터페이스를 제공하고, 패키지 관리 작업을 편리하게 실행할 수있음

    6-2) APT-GET (1998년 릴리즈)

    데비안 (Debian) 기반 리눅스 시스템에서 패키지를 관리하는 데 사용되는 APT보다 더 오래전 릴리즈된 명령어

    – APT-GET은 APT의 하위 도구 중 하나로, 주로 패키지의 설치 및 업그레이드를 담당
    – 명령줄 도구로 사용되며, 터미널에서 패키지를 설치/업그레이드 및 삭제
    – APT-GET은 더 많은 옵션과 기능을 제공하며, 일부 사용자는 더욱 세부적인 제어를 위해 APT-GET을 선호할 수 있음

    일반적으로 APT는 APT-GET과 다른 APT 하위 도구를 통합하여 패키지 관리를 보다 효율적으로 수행할 수 있습니다. 따라서 대부분의 경우에는 APT를 사용하는 것이 권장됩니다.

    man python3 – python3 명령어 메뉴얼 확인 (명령어 괄호 안 숫자 (1)은 주로 일반사용자 활용, (8)은 주료 관리자 활용

    df -h – 전체 디스크 용량 확인 (disk free), -h(human) 사람이 보기 좋게 표시, -sh 현재 폴더 용량 사이즈 확인(-s size)

    touch itgoit.sh – itgoit.sh 라는 빈 파일 만들기

    echo HelloWorld > itgoit.sh – itgoit.sh 파일에 HelloWorld 입력, > (덮어쓰기), >> (이어쓰기 append)

    cat /var/log/syslog | tail -2 – 파일 내용 출력 (tail -2 는 syslog 파일 내용중 마지막 2라인 출력)

    head -1 itgoit.sh – 첫줄 한 줄 읽기

    tail -1 itgoit.sh – 끝줄 한 줄 읽기

    tree – 폴더 구조로 볼수있는 명령어

    itgoit@itgoit-linux:/var/log$ tree
    .
    ├── alternatives.log
    ├── apt
    │   ├── eipp.log.xz
    │   ├── history.log
    │   └── term.log
    ├── auth.log

    ps -ef – 실행 중인 프로세스 모두 표시

    ps -ef | grep php – 실행 중인 모든 프로세스 중 php 패키지만 표시. 이 때 프로세스의 UID, PID, PPID 등을 확인가능

    UID PID PPID C STIME TTY TIME CMD
    root 1 0 0 May06 ? 00:00:25 /sbin/init
    root 2 0 0 May06 ? 00:00:00 [kthreadd]

    kill -9 1641 – 위에서 확인된 pid로 프로세스 죽이기

    Subscribe

    댓글 남기기