기본적인 유닉스 커맨드 정리

dong5854·2022년 2월 15일
0

pwd

현재 디렉토리의 경로를 출력한다.

사용법: pwd

#예시
dong@ubuntu:~$ pwd
/home/dong

cd

디렉토리를 이동한다. ~를 이용해 홈 디렉토리로 이동하고 /를 이용해 루트 디렉토리로 이동, -를 이용해 이전 경로로 이동하는 것들도 가능하다.

사용법: cd [PATH]

#예시
dong@ubuntu:~$ cd /
dong@ubuntu:/$ cd ~
dong@ubuntu:~$ cd /var/log/
dong@ubuntu:/var/log$ cd -
/home/dong
dong@ubuntu:~$ cd ..
dong@ubuntu:/home$ 

mkdir

디렉토리를 생성한다. 여러 경로를 주어 한번에 여러 디렉토리를 만드는 것도 가능하다.

사용법: mkdir PATH1 PATH2 ...

#예시
dong@ubuntu:~$ mkdir new

touch

경로에 해당하는 파일을 생성한다. 원래는 파일의 마지막 접근 시간 / 수정 시간을 업데이트하는데 쓰이지만 파일이 존재하지 않으면 새로 생성하기 때문에 파일 생성 용도로도 쓰인다.

사용법: touch PATH1 PATH2 ...

#예시
dong@ubuntu:~$ touch newfile

touch

vim 텍스트 에디터를 실행한다. touch와 마찬가지로 파일이 존재하지 않으면 새로 생성하기 때문에 파일을 생성할 때도 사용할 수 있다. 사용할 일이 많고 기능도 많기 때문에 따로 글을 작성할 예정

사용법: vim [PATH]

#예시
dong@ubuntu:~$ vi newfile

cat

경로에 해당하는 파일들의 내용을 출력한다. 파일이 여러 개인 경우 내용을 모두 붙여서 출력한다.

사용법: cat PATH1 PATH2 ...

#예시
dong@ubuntu:/var/log$ cat syslog
Feb 15 08:22:13 ubuntu rsyslogd: [origin software="rsyslogd" swVersion="8.2001.0" x-pid="67316" x-info="https://www.rsyslog.com"] rsyslogd was HUPed
Feb 15 08:22:13 ubuntu NetworkManager[66589]: <info>  [1644942133.2081] manager: NetworkManager state is now DISCONNECTED
Feb 15 08:22:13 ubuntu NetworkManager[66589]: <info>  [1644942133.2084] audit: op="networking-control" arg="on" pid=90651 uid=0 result="success"
.
.
.

less

PATH에 해당하는 파일을 페이지 단위로 나눠서 보여준다.

사용법: less PATH

단축키:

  • 줄 이동: 위쪽 / 아래쪽 방향키
  • 다음 페이지: space 아니면 f
  • 이전 페이지: b
  • 마지막 페이지: G
  • 처음 페이지: g
  • 삐져나오기: q
#예시
dong@ubuntu:/var/log$ less syslog
Feb 15 08:22:13 ubuntu rsyslogd: [origin software="rsyslogd" swVersion="8.2001.0" x-pid="67316" x-info="https://www.rsyslog.com"] rsyslogd was HUPed
Feb 15 08:22:13 ubuntu NetworkManager[66589]: <info>  [1644942133.2081] manager: NetworkManager state is now DISCONNECTED
Feb 15 08:22:13 ubuntu NetworkManager[66589]: <info>  [1644942133.2084] audit: op="networking-control" arg="on" pid=90651 uid=0 result="success"
:

PATH에 해당하는 파일의 처음 10줄을 출력한다.

사용법: head [-n count] PATH

-n 옵션: 출력되는 줄 개수를 바꾼다.

#예시
dong@ubuntu:/var/log$ head -5 syslog
Feb 15 08:22:13 ubuntu rsyslogd: [origin software="rsyslogd" swVersion="8.2001.0" x-pid="67316" x-info="https://www.rsyslog.com"] rsyslogd was HUPed
Feb 15 08:22:13 ubuntu NetworkManager[66589]: <info>  [1644942133.2081] manager: NetworkManager state is now DISCONNECTED
Feb 15 08:22:13 ubuntu NetworkManager[66589]: <info>  [1644942133.2084] audit: op="networking-control" arg="on" pid=90651 uid=0 result="success"
Feb 15 08:22:13 ubuntu NetworkManager[66589]: <info>  [1644942133.2086] device (ens33): carrier: link connected
Feb 15 08:22:13 ubuntu NetworkManager[66589]: <info>  [1644942133.2087] device (ens33): state change: unavailable -> disconnected (reason 'carrier-changed', sys-iface-state: 'managed')

tail

PATH에 해당하는 파일의 마지막 10줄을 출력한다.

사용법: tail [-n count] PATH

-n 옵션: 출력되는 줄 개수를 바꾼다.
-f 옵션: 파일이 늘어남에 따라 출력도 실시간으로 늘어나면서 보여준다.

tail의 같은 경우에는 최근 로그의 기록을 보기 위해 사용되어 head보다 자주 사용되고 -f옵션은 실시간으로 로그를 모니터링 할 때 유용하다.

#예시
dong@ubuntu:/var/log$ tail -5 syslog
Feb 15 08:52:28 ubuntu systemd[1]: NetworkManager-dispatcher.service: Succeeded.
Feb 15 08:52:58 ubuntu gnome-terminal-[51773]: gnome-terminal-server has no capability of surrounding-text feature
Feb 15 08:55:14 ubuntu kernel: [58909.929605] audit: type=1400 audit(1644944114.809:111): apparmor="DENIED" operation="open" profile="snap.snap-store.ubuntu-software" name="/var/lib/snapd/hostfs/usr/share/gdm/greeter/applications/gnome-initial-setup.desktop" pid=2448 comm="snap-store" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
Feb 15 08:55:14 ubuntu kernel: [58909.944870] audit: type=1400 audit(1644944114.821:112): apparmor="DENIED" operation="open" profile="snap.snap-store.ubuntu-software" name="/var/lib/snapd/hostfs/usr/share/gdm/greeter/applications/gnome-initial-setup.desktop" pid=2448 comm="snap-store" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0
Feb 15 08:55:14 ubuntu kernel: [58909.970441] audit: type=1326 audit(1644944114.849:113): auid=1000 uid=1000 gid=1000 ses=4 subj=snap.snap-store.ubuntu-software pid=2448 comm="snap-store" exe="/snap/snap-store/558/usr/bin/snap-store" sig=0 arch=c000003e syscall=93 compat=0 ip=0x7f8667ff84fb code=0x50000

mv

디렉토리/파일을 이동하거나 이름을 변경한다. 두 번째 아규먼트(DEST_PATH)가 이미 존재하는 디렉토리의 경로일 경우 SOURCE_PATH에 해당하는 디렉토리/파일을 그 안으로 이동하고, 그렇지 않으면 DEST_PATH로 이름 변경한다.

사용법: mv [-i] SOURCE_PATH DEST_PATH

-i 옵션: 이동/이름 변경을 할 때 똑같은 이름의 디렉토리/파일이 있으면 덮어씌워진다. 확인을 하면서 mv를 하려면 i 옵션을 사용하면 된다.

#예시
dong@ubuntu:~$ mv -i file1.txt file2.txt
dong@ubuntu:~$ mv -i file1.txt dir1

grep

입력으로 전달된 파일의 내용에서 정규식(Regular Expression)에 의한 패턴매칭으로 특정 문자열을 찾을 때 사용된다.

사용법: grep [OPTION] [PATTERN] [FILE]

파이프라인 |과 같이 사용하여 리눅스 명령어의 출력에서 특정 패턴을 찾을 때도 사용한다.

#예시
dong@ubuntu:/var/log$ grep systemd syslog
Feb 16 08:34:06 ubuntu systemd[1]: Started Login Service.
Feb 16 08:34:06 ubuntu systemd[1]: Started Authorization Manager.
Feb 16 08:34:06 ubuntu systemd[1]: Starting Modem Manager...
.
.
.
dong@ubuntu:/var/log$ ps -ef | grep 1920
dong        1920    1659  0 08:34 ?        00:00:00 /usr/libexec/ibus-x11 --kill-daemon
dong        4617    2635  0 09:12 pts/0    00:00:00 grep --color=auto 1920

rm

경로에 해당하는 파일/디렉토리들을 지운다.

사용법: mv [-i] SOURCE_PATH DEST_PATH

-r 옵션: 디렉토리를 삭제할 때 필요한 옵션 recursive를 의미한다.
-i 옵션: 복사할 때 각 파일을 정말 지울 것인지 확인하는 옵션.
-f 옵션: 지울 것인지 절대 확인하지 않고 바로 지운다 force를 의미하고 사용시 주의해야함.

#예시
dong@ubuntu:~$ rm file1.txt file2.txt
dong@ubuntu:~$ rm -rf dir1

ls

PATH에 해당하는 디렉토리/파일정보를 보여준다. PATH를 넣어주지 않으면 현재 디렉토리의 정보를 보여준다.

사용법: ls [-al] [PATH]

-a옵션은 숨겨진 파일을 포함한 모든 파일을 보여준다.
-l옵션은 더 자세한 정보를 보여준다.

-l옵션을 볼 때 알아야 하는 것은
d: 디렉토리
rwxr-xr-x :퍼미션 정보
dong dong : 소유권 소유그룹
4096 : 디렉토리(파일) 용량
Jan 24 07:33 : 생성날짜와 시간
Desktop : 디렉토리(파일) 이름

ls -al은 자주 사용되는 만큼 대부분의 리눅스 시스템에서 ll로 alias(별명)설정이 되어있다.
이 외에도 많은 옵션들이 있으나 가장 많이 사용되는 것은 이 둘이다.

#예시
dong@ubuntu:~$ ls -a
.   .bash_history  .bashrc  .cache   Desktop          Documents  .gem  .gitconfig   .gnupg  .mozilla  nginx-1.20.2         Pictures  .profile  snap  .sudo_as_admin_successful  Videos
..  .bash_logout   .bundle  .config  docker-complete  Downloads  gems  github_blog  .local  Music     nginx-1.20.2.tar.gz  .pki      Public    .ssh  Templates                  .vscode
dong@ubuntu:~$ ls -l
total 1092
drwxr-xr-x  2 dong dong    4096 Jan 24 07:33 Desktop
drwxrwxr-x  6 dong dong    4096 Feb 10 08:27 docker-complete
drwxr-xr-x  2 dong dong    4096 Jan 24 07:33 Documents
drwxr-xr-x  5 dong dong    4096 Feb 10 08:22 Downloads
drwxrwxr-x  9 dong dong    4096 Feb  7 10:05 gems
drwxrwxr-x 12 dong dong    4096 Feb  7 11:21 github_blog
drwxr-xr-x  2 dong dong    4096 Jan 24 07:33 Music
drwxr-xr-x  9 dong dong    4096 Jan 24 08:20 nginx-1.20.2
-rw-rw-r--  1 dong dong 1062124 Nov 16 06:51 nginx-1.20.2.tar.gz
drwxr-xr-x  2 dong dong    4096 Jan 27 08:20 Pictures
drwxr-xr-x  2 dong dong    4096 Jan 24 07:33 Public
drwx------  4 dong dong    4096 Jan 24 07:41 snap
drwxr-xr-x  2 dong dong    4096 Jan 24 07:33 Templates
drwxr-xr-x  2 dong dong    4096 Jan 24 07:33 Videos

기본적인 명령어들에 대해 정리를 해 보았으며 자주 사용하는 명령어들에 대해서는 하나씩 게시물을 작성할 예정

참고자료: 코드잇(https://www.codeit.kr/)의 유닉스 커맨드 라인 코스

profile
https://github.com/dong5854?tab=repositories

0개의 댓글