Server

TOP 20 터미널 기본 명령어 2탄 (예시와 상세한 설명)

HoodieJun 2021. 2. 4. 11:26

hoodiejun.tistory.com/3

 

TOP 20 터미널 기본 명령어 1탄 (예시와 상세한 설명)

아무것도 없는 깜깜한 터미널입니다. 저는 전공자도 아니고 취미로 이것저것 하다 보니 터미널을 접하게 되었습니다. 그런데 처음 접했을 때 이 깜깜한 터미널처럼 정말 막막하고 어떻게 해야

hoodiejun.tistory.com

 

저번 편에 이어서 리눅스 기본 명령어 10가지를 소개해드릴게요!

(사용하면서 permission denied 라는 문구가 나오면 superuser 권한이 필요한 작업이니 명령어 앞에 sudo를 붙여주세요.)

 

1. find

  단어의 뜻 그대로 무언가 찾을 때 쓰는 명령어입니다.

  제가 기억력이 안좋아서 정말 많이 쓰는데요. 이 명령어를 사용하면 입력해준 directory의 그 안에 포함된 하위 directory부터 파일까지 전부 검색합니다. 예를 들어서

find /home/user/ -type f -name example.txt

  라고 입력하시면 /home/user directory 어딘가에 있는 example.txt 파일이 있는 곳을 알려줍니다. 같은 이름은 전부 알려주니 기다리시면 원하는 파일을 찾을 수 있습니다.

  파일 말고 directory를 찾고 싶은 경우 -type f 를 -type d 로 바꿔 주시면 directory를 찾을 수 있습니다.

find /home/user/ -type d -name example

  찾기만 하는  걸로 아쉬울 때가 있습니다. 무언가 찾는다는 것은 찾은 파일이나 directory로 작업을 하고 싶다는 거겠죠?

  그래서 찾은 부분으로 바로 작업 명령을 내려줄 수도 있습니다. 저의 경우에는 파일들의 이름을 한 번에 바꿔 주고 싶을 때 사용합니다. 예를 들어서 아래와 같이 입력하면

find /home/user/test/ -name "*.txt" -exec sh -c 'f="{}"; mv -- "$f" "${f%.txt}.py"' \;

  test directory 안에 있는 txt 확장자를 가진 파일을 찾고 .txt 부분을 .py로 바꿔줍니다. 여러 파일이 떨어져 있고 한 번에 바꿔주고 싶은데 일일이 바꾸기 귀찮을 때 사용하면 유용합니다. 이런 식으로 find는 응용할 수 있는 부분이 엄청 많으니 여러 가지 방법으로 사용하면 좋을 것 같습니다.

 

2. grep

  필터링 역할을 하는 명령어입니다. 만약에 제가 수많은 파일이 있는 directory에서 example이라는 단어가 들어간 파일만 확인하고 싶을 때 grep을 사용하면 원하는 example이 포함된 파일만 보여줍니다.

ls | grep example

  방금 사용한 find와 같이 사용할 수도 있습니다.

find /home/user/test/ -name "*.txt" | grep ex

  파일 전체 이름을 몰라도 txt 파일 중에 ex만 포함된 파일이면 전부 표시합니다.

 

3. df / du / lsblk (용량 확인 명령어)

 

  - df

    이용 가능한 disk 용량과 사용 중인 disk 용량을 보여줍니다.

df -h

    h 옵션은 human readable의 줄임말로 사람이 읽기 쉽게 KB, MB, GB 또는 TB 단위로 표시합니다.

df -h example.txt

    df와 함께 특정 파일을 입력하면 그 파일을 갖고 있는 disk의 용량만 확인합니다.

 

  - du

    특정 파일이나 특정 directory의 용량을 확인합니다.

du -h example.txt
du -h /home/user/test

    example.txt의 파일의 용량을 확인합니다.

    /home/user/test directory의 용량을 확인합니다. 이때 하위 directory의 용량도 쭉 나열하므로 test directory가 차지하는 용량만 확인하고 싶다면

du -h test --total | grep total

    이렇게 이용할 수 있습니다.

 

  - lsblk

    블록 장치를 모두 보여주는 명령어입니다.

 

4. diff

  difference의 줄임말로 두 파일의 다른 점을 나타냅니다.

diff example1.txt example2.txt

  example1.txt 파일과 example2.txt 파일의 내용을 비교하여 다른점을 보여줍니다.

  필요한 부분을 빨리 확인하고 수정할 수 있어서 유용한 명령어입니다.

 

5. chmod / chown

  - chmod

    파일이나 directory의 권한을 변경할 때 사용합니다.

    read : 4 (파일을 열고 읽을 수 있습니다.)

    write : 2 (파일을 수정하고 삭제할 수 있습니다.)

    execute : 1 (파일을 실행할 수 있습니다.)

    1편에서 썼던 ls -l 을 실행하면 파일의 권한까지 다 표시됩니다.

$ ls -l
-rwxrw-r-- 1 user user  111 Jan 30 15:56 example.txt

    앞에 rwx는 user의 권한입니다. 이때 user는 읽고 쓰고 실행할 수 있는 권한이 있습니다.

    그다음 rw-는 group의 권한입니다. group의 포함된 유저들은 읽고 쓸 수 있습니다. x권한을 포함되어있지 않으므로 - 로 표시되었습니다.

    r-- 유저도 아니고 그룹에도 포함 안된 나머지는 읽기만 가능합니다.

    이때 권한을 8진법으로 나타내면 764입니다.

    chmod를 이용하여 유저만 읽고 쓰는 것이 가능하게 만들고 싶습니다. 그러면 600 이겠죠?

$ chmod 600 example.txt
-rw------- 1 user user  111 Jan 30 15:56 example.txt

    권한이 수정된 것을 확인할 수 있습니다. 혼자서 사용하는 서버면 상관없지만 여러 명이 사용하는 서버면 권한 문제가 정말 중요하죠. 다른 사람이 보거나 수정하면 안 되는 파일은 권한 변경을 통해 철저히 관리해주세요!

 

  - chown

    소유자 또는 소유 그룹을 변경합니다.

    지금 example.txt의 파일은 유저는 user로 그룹도 user로 설정되어있습니다.

    유저는 testuser로 그룹은 test로 변경해줄게요.

chown testuser:test example.txt
-rw------- 1 testuser test  111 Jan 30 15:56 example.txt

    왼쪽이 유저 오른쪽이 그룹입니다.

    chown / chmod를 이용하여 파일이나 directory 하나만 일일이 바꾸려면 힘들겠죠?

    그래서 그 안에 하위 directory 파일이나 directory까지 변경하고 싶을 때는 옵션 -R을 붙여주면 해당 권한이나 소유자 변경을 한 번에 할 수 있습니다.

 

6. jobs / pkill

  - jobs

    현재 실행되는 작업을 보여줍니다. 윈도우에서 ctrl+alt+delete 버튼으로 작업 관리자를 들어가는 것과 비슷합니다.

  - pkill

    jobs로 확인한 작업을 종료할 수 있습니다. jobs로 실행 중인 프로그램 이름을 확인한 뒤 pkill -9 프로그램 이름을 입력하면 강제로 그 프로그램을 종료합니다. -9 대신 -15을 사용하면 진행 중이던 작업이 끝날 때까지 기다렸다가 종료합니다.

$ jobs
[1]  + suspended  vim test.txt

$ pkill -9 vim
[1]  + 1167 killed     vim test.txt

    vim 프로그램이 잘 종료되었습니다. 프로그램이 먹통이 되었거나 급하게 강제 종료해야 할 경우 유용합니다.

 

7. ping

  Paket Internet Groper의 줄임말로 대상 컴퓨터를 향해 네트워크 패킷을 보내고 응답하는 메시지를 분석하여 보여줍니다. 지금 내 컴퓨터의 인터넷이 연결이 잘되어있는지, 혹은 접속하려는 사이트의 네트워크 상태가 어떤지 파악할 수 있습니다.

ping google.com

  간단한 게 테스트하고자 하는 사이트 주소를 입력하면 됩니다. 옵션 -a를 붙여주면 사이트의 ip주소를 알 수 있습니다.

$ ping naver.com -a
PING naver.com (223.130.195.95) 56(84) bytes of data.

  223.130.195.95로 접속하면 네이버가 접속됩니다.

 

8. wget

  인터넷에서 파일을 다운로드할 때 사용합니다. 받고자 하는 파일의 링크에서 우클릭하여 링크 주소 복사를 해줍니다.

  wget 링크주소

  를 입력하면 다운로드가 시작됩니다.

wget http://ipv4.download.thinkbroadband.com/5MB.zip

 

9. top / htop

  top을 입력하면 위와 같은 창이 나타납니다. cpu 사용량, 메모리 사용량, 작업 중인 프로세스 등등 리소스를 한눈에 확인할 수 있습니다. 너무 칙칙하고 깔끔하지 않은 느낌입니다.

  기본 탑재 프로그램은 아니지만 htop이라는 프로그램을 설치하시면

  조금 더 가시적으로 변했습니다. 사용량이나 진행 중인 프로세스를 깔끔하게 확인할 수 있습니다.

 

10. clear / ctrl+c / ctrl+z / tab / up key

  마지막은 짜잘한(?) 것들을 모아봤습니다.

  - clear

    입력하면 현재 창을 깨끗하게 지워줍니다.

    작업하다 보면 이것저것 많이 써서 창을 깨끗하게 쓰고 싶을 때 사용하는데 실제로 내용이 지워지는 것은 아니고 스크롤을 위로 올려보면 작업하던 내용이 보이니 다시 찾고 싶을 땐 올려서 확인하시면 됩니다.

    단축키는 ctrl+l (소문자 엘)입니다.

 

  - ctrl+c

    현재 작업 중인 작업을 종료합니다. 복사 단축키랑 같아서 windows terminal에서는 설정에서 단축키를 변경해줘야 합니다. 그래서 보통 터미널에서 복사 단축키는 ctrl+shift+c를 많이 사용합니다.

 

  - ctrl+z

    실행 중이던 프로그램을 일시중지시키고 명령어 창으로 빠져나옵니다. 에디터를 사용하다가 ctrl+z 를 이용해서 터미널에 빠져나와 작업하다가 다시 fg를 입력하면 멈췄던 작업으로 돌아갑니다.

 

  - tab

    자동완성 기능입니다.

    입력하다가 tab을 누르면 입력하고자 하는 명령어 혹은 파일을 자동으로 완성시킵니다. 제일 많이 쓰고 정말 편합니다. 만약 겹치는 명령어나 파일이 있다면 tab을 한 번 더 눌러주세요. 겹치는 명령어나 파일을 전부 보여줍니다.

 

  - up key

    윗 방향키입니다. 전에 입력했던 명령어들이 기록되어있습니다.

    윗 방향키를 입력하면 바로 전에 입력했던 명령어부터 입력되므로 똑같은 명령어를 여러 번 수행할 경우 매번 입력할 필요가 없습니다.

 

2편에 걸쳐 총 20가지 명령어를 살펴봤는데요. 여기서는 간단히 소개만 해드렸고 더 자세한 사용방법은 추후에 올리도록 할게요. 이 정도만 알아도 당장 사용하는 데는 문제없을 것 같아요. 그럼 다들 즐거운 리눅스 생활하세요!