티스토리 뷰

자주 사용하면서도 항상 구글링을 해서 찾았던 리눅스 명령어들을 이제서야 정리를 좀 해보려고 한다. 

 

각 기본 명령어에 대한 설명은 여기에서 매우 자세하게 설명하여, 참고했다.


1. ls (List segments) : 현재 위치의 파일 목록 조회

  • ls -l : 파일의 상세정보
  • ls -a : 숨김 파일 표시
  • ls -t : 파일들을 생성시간순(제일 최신 것부터)으로 표시
  • ls -rt : 파일들을 생성시간순(제일 오래된 것부터)으로 표시
  • ls -f : 파일 표시 시 마지막 유형에 나타내는 파일명을 끝에 표시
    ('/' : 디렉터리, '*' : 실행파일, '@' : 링크 등등,,,)

 

2. cd (Change directory) :디렉터리 이동

  • cd [디렉터리 경로] : 이동하려는 디렉터리로 이동 (경로 입력 시 '[', ']'부분은 빼고 입력!)
  • cd ~ : 홈 디렉터리로 이동
  • cd / : 최상위 디렉터리로 이동
  • cd . : 현재 디렉터리 
  • cd .. : 상위 디렉터리로 이동
  • cd - : 이전 경로로 이동

 

3. touch : 0바이트 파일 생성, 파일의 날짜와 시간을 수정

  • touch filename : filename의 파일을 생성
  • touch -c filename : filename의 시간을 현재시간으로 갱신
  • touch -t 202110291608 filename : filename의 시간을 날짜 정보(YYYYMMDDhhmm)로 갱신
    (20211029160 => 2021.10.29.16:08)
  • touch -r oldfile newfile  : newfile의 날짜 정보를 oldfile의 날짜 정보와 동일하게 변경

 

4. mkdir (Make dirctory) : 디렉터리 생성

  • mkdir dirname : dirname이라는 디렉터리 생성
  • mkdir dir1 dir2: 한 번에 여러 개의 디렉터리 생성
  • mkdir -p dirname/sub_dirname : dirname이라는 디렉터리 생성, sub_dirname이라는 하위 디렉터리도 생성
  • mkdir -m 700 dirname : 특정 퍼미션(권한)을 갖는 디렉터리 생성

<파일의 퍼미션>

8진수 2진수 권한 의미
0 000 --- 아무 권한 없음
1 001 --x 실행 권한만 있음
2 010 -w- 쓰기 권한만 있음
3 011 -wx 쓰기,실행 권한 있음
4 100 r-- 읽기 권한만 있음
5 101 r-x 쓰기,실행 권한 있음
6 110 rw- 읽기,쓰기 권한 있음
7 111 rwx 모든 권한 있음

예를 들어 '777'의 경우 이진수로 111111111이고 rwxrwxrwx라는 의미를 가지므로 파일 소유자, 소유 그룹, 일반 사용자에게 읽기, 쓰기, 실행의 모든 권한을 주는 설정이다.

 

5. cp (Copy) : 파일 복사

  • cp file1 file2 : file1을 file2라는 이름으로 복사
  • cp -f file1 file2 : 강제 복사(file2라는 파일이 이미 있을 경우 강제로 기존 file2를 지우고 복사 진행)
  • cp -r dir1 dir2 : 디렉터리 복사. 폴더 안의 모든 하위 경로와 파일들을 복사

 

6. mv (Move) : 파일 이동

  • mv file1 file2 : file1 파일을 file2 파일로 변경
  • mv file1 /dir : file1 파일을 dir 디렉터리로 이동
  • mv file1 file2 /dir : 여러 개의 파일을 dir 디렉터리로 이동
  • mv /dir1 /dir2 : dir1 디렉터리를 dir2 디렉터리로 이름 변경

 

7. rm (Remove) : 파일 삭제

  • rm file1 : file1을 삭제
  • rm -f file1 : file1을 강제 삭제
  • rm -r dir : dir 디렉터리 삭제 (디렉터리는 -r 옵션 없이 삭제 불가)

 

8. cat (Catenate) : 파일의 내용을 화면에 출력, 리다이렉션 기호('>')를 사용하여 새로운 파일 생성

  • cat file1 : file1의 내용을 출력
  • cat file1 file2 : file1과 file2의 내용을 출력
  • cat file1 file2 | more : file1과 file2의 내용을 페이지별로 출력
  • cat file1 file2 | head : file1과 file2의 내용을 처음부터 10번째 줄까지만 출력
  • cat file1 file2 | tail : file1과 file2의 내용을 끝에서부터 10번째 줄까지만 출력

 

9. redirection ('>', '>>') : 화면의 출력 결과를 파일로 저장

'>' 기호 : 기존에 있는 파일 내용을 지우고 저장
'>>' 기호 : 기존 파일 내용 뒤에 덧붙여서 저장
'<' 기호 : 파일의 데이터를 명령에 입력

  • cat file1 firle2 > file3 : file1, file2의 명령 결과를 합쳐서 file3라는 파일에 저장
  • car file4 >> file3 : file3에 file4의 내용 추가
  • cat < file1 : file1의 결과 출력
  • cat < file1 > file2 : file1의 출력 결과를 file2에 저장

 

10. alias : 자주 사용하는 명령어들을 별명으로 정의하여 쉽게 사용할 수 있도록 설정

alias 별명 = '명령어 정의'

ex) alias lsa = 'ls -a' : lsa를 실행하면 -a 옵션을 갖는 ls를 실행합니다.

unalias lsa

unalias lsa : lsa라는 alias를 해제

 

11. pwd : 현재 사용하고 있는 디렉토리 경로 확인

  • pwd: 현재 작업 중인 디렉토리 경로를 표시
  • pwd -P: 심볼릭 링크를 무시하고 실제 디렉토리 경로를 출력

 

12. su (switch user): 현재 계정을 로그아웃 하지 않고 다른 계정으로 전환하는 명령어 

  • su : root 사용자로 변경한다.
  • su -: root 사용자로 변경하면서 환경변수까지 적용한다.
  • su username: username 유저로 변경한다.
  • su -username: username 유저로 변경하면서 환경변수까지 적용한다.

 

13. chown: 파일 또는 폴더의 소유자 변경

chown [옵션] [소유자:소유그룹] [파일 또는 폴더]

  • chown -R: 하위 경로의 소유자를 모두 변경한다.
  • chown -f: 소유자 변경이 안될 때 오류 메시지를 표출
  • chown -c: 변경된 파일을 자세히 표출
  • chown -v: 작업 상태를 출력
  • chown user1 test.txt : test.txt 파일의 소유자를 user1으로 변경
  • chown :users test.txt: test.txt 파일의 소유 그룹을 users로 변경

 

14. chmod: 파일 권한 변경

해당 명령어는 파일의 read, write, excute 권한을 소유자, 그룹, 그 외 사용자에게 나누어서 부여할 수 있는 명령어이다. 

아래 그림은 파일을 사용하는 주체의 종류와 권한의 종류를 나타낸 그림이다. 이는 ls -l 로 파일의 상세 정보를 띄웠을 때 나타나는 권한 정보와 동일하니 반드시 순서를 익혀야 한다.

 chmod [OPTION] [MODE] [FILE]
      OPTION
        -v        : 모든 파일에 대해 모드가 적용되는 진단(diagnostic) 메시지 출력.
        -f        : 에러 메시지 출력하지 않음.
        -c        : 기존 파일 모드가 변경되는 경우만 진단(diagnostic) 메시지 출력.
        -R        : 지정한 모드를 파일과 디렉토리에 대해 재귀적으로(recursively) 적용.
      MODE
        파일에 적용할 모드(mode) 문자열 조합.
          u,g,o,a : 소유자(u), 그룹(g), 그 외 사용자(o), 모든 사용자(a) 지정.
          +,-,=   : 현재 모드에 권한 추가(+), 현재 모드에서 권한 제거(-), 현재 모드로 권한 지정(=)
          r,w,x   : 읽기 권한(r), 쓰기 권한(w), 실행 권한(x)
          X       : "디렉토리" 또는 "실행 권한(x)이 있는 파일"에 실행 권한(x) 적용.
          s       : 실행 시 사용자 또는 그룹 ID 지정(s). "setuid", "setgid".
          t       : 공유모드에서의 제한된 삭제 플래그를 나타내는 sticky(t) bit.
          0~7     : 8진수(octet) 형식 모드 설정 값.

예제는 아래와 같다.

 

  • chmod g+w text.txt: text.txt에 대한 write 권한을 그룹에게 준다.
  • chmod o-r text.txt: text.txt에 대한 read권한을 그 외 사용자에게서 뺏는다.
  • chmod 777 text.txt: text.txt에 대하여 소유자, 그룹, 그 외 사용자에게 모든 권한을 부여한다.(rwx:111 -> 7)

 

15. grep: 특정 파일에서 지정한 문자열이나 정규표현식을 포함한 행을 출력해주는 명령어

- grep [옵션] [패턴] [파일명]

 

[옵션]

-A num, --after-context=num: 특정 문자열로부터 num 이후의 라인까지 출력

-B num, --before-context=num: 특정 문자열로부터 num 이전의 라인까지 출력

-C num, --context=num: 특정 문자열로부터 num 이전,이후의 라인까지 출력 (-A num -B num 과 같다)

  --colour, --color=[when]: 특정 문자열을 특정 색으로 표시 ([when] = never, always, auto)

-d action, --directories=action: 특정 디렉토리에서 특정 문자열 검색

-e pattern, --regexp=pattern: 여러 특정 문자열로 검색, 한 번에 2개 이상의 특정 문자열로 검색할 때 사용

-i, --ignore-case: 특정 문자열을 대소문자 구분 없이 검색

-v, --invert-match: 특정 문자열을 제외한 나머지 행을 검색

-w, --word-regexp: 다른 문자열이 포함되지 않은 특정 문자열'만' 검색, 특정 문자열을 하나의 단어로 취급

 

  • grep 'error' text.txt: text.txt에서 error 라는 문자열 찾기
  • grep 'error' text.txt text2.txt: text.txt, text2.txt에서 error 라는 문자열 찾기
  • grep 'error' *: 현재 디렉토리 내에 있는 모든 파일에서 'error' 문자열 찾기

 

16. find: 파일 시스템에서 파일을 검색하는 데 사용되는 명령어

find [옵션] [경로] [표현식]

 

[옵션]

 - P: 심볼릭 링크를 따라가지 않고, 심볼릭 링크 자체 정보 사용

 - L: 심볼릭 링크에 연결된 파일 정보 사용

 - H: 심볼링 링크를 따라가지 않으나, Command Line Argument를 처리할 때는 예외

 - D: 디버그 메시지 출력

 

[표현식]

  • name : 해당 이름의 파일을 찾음. 해당 이름에는 정규 표현식을 활용할 수 있음
  • type : 지정된 파일 타입에 해당하는 파일 검색
  • user : 해당 유저에게 속한 파일 검색
  • empty : 빈 디렉토리 혹은 크기가 0인 파일 검색
  • delete : 검색된 파일 혹은 디렉토리 삭제
  • exec : 검색된 파일에 대해 지정된 명령 실행
  • path : 지정된 문자열 패턴에 해당하는 경로에서 검색.
  • print : 검색 결과를 출력. 검색 항목은 newline으로 구분. (기본 값)
  • print0 : 검색 결과를 출력. 검색 항목은 null로 구분.
  • size : 파일 크기를 사용하여 파일 검색.
  • mindepth : 검색을 시작할 하위 디렉토리 최소 깊이 지정.
  • maxdepth : 검색할 하위 디렉토리의 최대 깊이 지정.
  • atime : n일 이내에 액세스된 파일을 찾음.
  • ctime : n일 이내에 만들어진 파일을 찾음.
  • mtime : n일 이내에 수정된 파일을 찾음.
  • cnewer file : 해당 파일보다 최근에 수정된 파일을 찾음

 

[예시]

  • find . -name "*test*" : 현재 디렉토리에서 test가 포함되는 파일 찾기
  • find . -name "*.txt": 현재 디렉토리에서 .txt 확장자 모두 찾기
  • find . -type d: 현재 디렉토리에서 모든 디렉토리 찾기
  • find . -name "*test*" -type d:  현재 디렉토리에서 test가 들어가는 디렉토리 찾기
  • find . -type f: 현재 디렉토리에서 모든 파일 찾기

 

17. ps: 현재 돌아가고 있는 프로세스를 확인할 수 있는 명령어

ps [옵션]

 

[옵션]

  • -e: 모든 프로세스 출력
  • -f: 풀 포맷으로 보여준다. (UID, PID 등)
  • -l: 긴 포맷으로 보여준다.
  • p, -p: 특정 PID의 프로세스를 보여준다.
  • -u: 특정 사용자의 프로세스를 보여준다.

[예시] 

  • ps -ef: 모든 프로세스를 풀 포맷으로 출력
  • ps -ef | grep 'tomcat' : tomcat 이라는 이름을 가지고 있는 모든 프로세스를 출력

 

18. tail: 파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력해주는 명령어

tail [옵션] [파일명]

 

[옵션]

  • -f : tail을 종료하지 않고 파일의 업데이트 내용을 실시간으로 계속 출력한다.
  • -n (라인 수) : 파일의 마지막줄부터 지정한 라인수까지의 내용을 출력한다.
  • -c (바이트 수) : 파일의 마지막부터 지정한 바이트만큼의 내용을 출력한다.
  • -q : 파일의 헤더와 상단의 파일 이름을 출력하지 않고 내용만 출력한다.
  • -v : 출력하기전에 파일의 헤더와 이름 먼저 출력한 후 파일의 내용을 출력한다.

[예시]

  • tail -f mylog.log | grep 192.168.15.86: mylog.log 파일에서 192.168.15.86을 찾아서 출력
  • tail mylog1.log mylog2.log: mylog1.log, mylog2.log 각 파일의 마지막 부분을 출
Comments