Ian's Archive 🏃🏻

thumbnail
Linux Study
Linux
2021.02.22.

리눅스 자주쓰는 명령어와 중요 개념 정리한다.

1. find

find [path] [Option] [expression] : 파일이나 디렉터리를 찾고 싶을 때 사용하는 명령어

Tip!!

  • 옵션을 통해 다양한 경우의 상황으로 찾기 가능
  • 시간 옵션 뒤에 부여해야 하는 숫자 tip!! linux time 옵션

옵션

 -name : 파일이나 디렉토리 이름
 -iname : 대소문자 구분 없이 이름으로 검색
 -user : 사용자 이름
 -group : 그룹 이름
 -uid : uid로 검색
 -gid : gid로 검색
 -perm : 권한으로 검색
 -type : 파일 유형으로 검색
    (d : 디렉토리, f : 파일, l : 링크, s : 소켓)
 -atime n : 파일에 접근한 시간(파일을 Open할 때 마다 갱신된다)
 -ctime n : inode의 값(파일 속성, 권한, 크기 등)으로 검색
 -mtime n : 파일이 수정되었을 때 기준으로 검색
   * time부분을 min으로 사용하면 분으로 검색
   * 추가로 Suffix를 붙여 정확한 시간 지정 가능
 -empty : 빈 파일 찾기
 -exec : 명령 내릴 수 있는 옵션 / 결과 값 {}, \;로 끝내야 한다.
 -size n : n블록 길이의 파일
 -inum n : inode
 -maxdepth n : 파일 계층 depth의 최대값 설정
 -mindepth n : 파일 계층 depth의 최소값 설정
 -prune : 값을 찾으면 하위 디렉토리에 들어가서 찾지 않음
 -newer : 뒤에 적힌 파일보다 최근에 변경된 파일 찾음

사용 예제

copyButtonText
# 수정된지 100일이 지난 파일 목록 출력
$ find -mtime +100

# php 디렉토리 파일 중, 오늘 생성한 디렉토리를 삭제하시오
$ find ~/php/* -ctime 0 -type d -exec rm -r {} \;

# 연결되지 않은 심볼릭 링크 찾는 방법
$ find -L . -type l

# 현재 디렉토리에서 test로 시작하는 디렉토리만 찾아 삭제
$ rm -r `find -name 'test*' -type d`

Tip!!

  • 명령어에서 `(backtick)사용 : 스크립트 내에서 명령어를 실행할 경우 이용
  • 2>/dev/null : 명령어 뒤에 추가로 달아주면 권한 없는건 화면에 출력되지 않는다.

2. grep

grep [option] [pattern] [file_name] : 특정 문자열을 파일에서 찾아주는 명령어

  • pattren에는 정규 표현식 메타 문자가 들어간다.

Tip!!

  • egrep
  • egrep은 grep의 확장판
  • grep이 하나의 문자열을 찾는 것 과는 달리, 여러 개의 문자열을 동시에 찾기 가능
  • grep에서 활용할 수 있는 메타문자 이외에 추가 정규 표현식 메타문자 사용 가능

+: +앞의 정규표현식이 1회 이상 나타남
?: ?앞의 정규표현식이 0회 또는 1회 나타남
|: 문자열간의 OR연산자
(): 정규표현식을 둘러쌈

옵션

 -b : 검색 결과의 각 행 앞에 블록번호 표시
 -c : 찾아낸 행의 총 개수 출력
 -i : 대소문자 구분 x
 -l : 대소문자 구분 o
 -n : 파일 내에서 행 번호를 함께 출력
 -s : 에러 메세지 외에 표시 x
 -G : 기본 정규식으로 검색

사용 예제

copyButtonText
# 'm'으로 시작하는 모든 파일에서 'hamster'를 포함하는 모든 행을 찾으시오
$ grep -n hamster m*

# grep을 사용하여 마침표로 시작되는 줄을 찾으시오
$ grep ^\. {찾을 파일 / 디렉토리 명}

# NW나 EA가 포함된 행을 출력한다
$ egrep 'NW|EA' {file 명}

# 숫자 3이 한 번 이상 등장하는 행 출력
$ egrep '3+' {file 명}

3. awk

awk [옵션] 문서에서 패턴을 검사해 원하는 값 얻는다.

$ awk {-f 파일명} {-F 필드 구분자} {"패턴"} {처리할 파일명}
  • pattern 생략 시 모든 레코드 적용
  • action 생략 시 print 적용
  • pattern과 action에 작성되는 awk program 코드에는 표현식, 변수, 함수 사용 가능

옵션

-F : 필드 구분 문자 지정
-f : awk program 파일 경로 지정
-v : awk program에서 사용될 특정 variable값 지정

사용 예제

copyButtonText
# pattern 생략
$ awk '{print}' ./file.txt

# action 생략
$ awk '/p/' ./file.txt

# 레코드의 길이가 10 이상인 경우, 세 번째($3), 네 번째($4), 다섯 번째($5) 필드를 출력
$ awk 'length($0) > 10 { print $3, $4, $5} ' {파일 이름}

4. Redirection

명령의 결과를 모니터로 출력하지 않고, 파일로 저장할 수 있다. (리다이렉션을 사용해 출력, 입력 방향 지정 가능)

표준 입출력(Standard I/O)

구분 파일 디스크럽터
표준 입력 0
표준 출력 1
표준 에러 2
기호 기능
>/>> 출력 방향 재지정
</<< 입력 방향 재지정
> 덮어 쓴다.
>> 추가된다.

5. vi

  • 텍스트 편집기
  • 3가지 모드가 있다.
    • 입력(내용입력), 명령(편집기능), 콜론(열기, 저장, 추가기능 수행)

문자열 치환

: [범위] / [매칭 문자열] / [치환문자열] / [행범위]

Tip!!

  • gg : 최상단으로 커서 옮김
  • 0 : 현재 줄 맨 앞
  • $ : 현재 줄 맨 뒤
  • dd : 라인 삭제
  • u : 복구
  • p : 붙여 넣기
  • yy : 라인 복사
  • :wq : 저장 후 종료
  • .vimrc 파일에 환경설정 가능!

6. sed(stream deitor)

필터링과 텍스트를 변환하는 스트림 편집기

주요기능

copyButtonText
# 1. 치환
# addrass를 address로 바꾼다.
$ sed 's/addrass/address/' {파일이름}

# tab문자를 enter로 변환
$ sed 's/\t/\ /' {파일이름}

# 2. 삭제
# 처음 1줄, 2줄을 지운다.

# 공백라인을 삭제하는 명령
$ sed '/^$/d {파일 이름}

jhnyang님 블로그

7. ls

현재 폴더의 하위 디렉토리의 리스트 출력

옵션

8. 사용자 권한 (chmod, chown)

리눅스는 사용자 및 그룹에 기반하여 액세스를 허가하거나 금지한다.

chown

파일의 소유권 바꾸기 위해 사용

copyButtonText
chown [OPTION]... [OWNER][:[GROUP]] FILE...

chmod

파일이나 디렉토리의 모드를 변경

copyButtonText
$ chmod {옵션} {권한} {파일}

9. tty

  • 로그인 한 모든 세션은 각각 고유의 tty를 가지고 있다.
  • 입력과 출력을 처리한다.
copyButtonText
$ tty

/dev/pts/0

10. alias

사용자가 원하는 명령어를 추가하기 위한 명령어

사용 예제

$ alias la='ls -a'
$ alias lf='ls -F'
$ alias lr='ls -R'
$ alias ri='rm -i'
$ alias mi='mv -i'
  • alias를 입력하면 입력 된 alias를 확인할 수 있다.
  • ~/.bashrc에 정의하면 쉘이 시작할 때 자동으로 정의된다.

11. history

커맨드 이력 관리 명령어

  • ~/.bash_history 에 저장

히스토리 관련 환경변수

HISTFILE : command 저장 파일
HISTFILESIZE : 히스토리 파일 최대 크기
HISTSIZE : 히스토리에 저장 가능한 최대 명령어 개수

Tip!!

  • history -w {파일 이름}: 별도의 파일로 저장
  • !! : 바로 직전 커맨드 실행
  • !n : history n 번째에 저장된 명령어 실행
  • !{string} : string으로 시작하는 가장 최근 실행한 커맨드 찾아 실행
  • :p : :p를 붙여서 실행 시 커맨드만 출력

12. jobs / 포그라운드 백그라운드

  • jobs : 현재 쉘에서 작업 중지된 상태나 백그라운드로 진행되는 작업 표시
  • bg : 백그라운드 프로세스 확인
  • & : 프로세스를 백그라운드로 실행

13. ps

현재 실행중인 프로세스 목록과 상태를 보여준다.

14. 심볼릭 링크, 하드 링크

하나의 파일에 두개의 이름 사용하게 링크를 연결

사용하는 경우

  • 매우 긴 파일명이 있을 때
  • 경로를 입력하지 않고 파일명만 입력해 사용할 때
  • 서버(nginx)가 바라보는 경로설정 같은 경우에도 사용한다.

차이점

하드 링크 심볼릭 링크
파일에만 링크 가능 파일 또는 디렉토리에 링크 할 수 있음
존재하지 않는 파일 링크 불가능 존재하지 않는 파일에 대해 링크 가능
같은 파일 시스템에서만 가능 다른 파일 시스템에서 가능

15. du / df

du

디렉토리 사용량 확인

옵션

-a : 모든 파일들의 기본정보를 보여준다.
-b : 표시단위를 기본 KB 대신 Byte로 한다.
-k : 표시단위를 KB 단위로 한다.
-h : 파일들의 용량단위가 보기좋게 정리되어 보여준다.
-c : 모든 파일들의 디스크 사용정보를 보여주고 나서 합계를 보여준다.
-s : 총 사용량만 표시
-x : 체크하는 경로안에 다른 시스템이 있으면 생략

df

디스크의 사용가능한 용량 확인

16. dd

파일을 변환하고 복사하는 명령어

$ dd if={입력} of={출력} bs={바이트} count={반복}

ibs = bytes     #한번에 bytes 바이트씩 읽는다.
obs = bytes     #한번에 bytes 바이트씩 쓴다.
skip = n        #n*ibs 바이트만큼 무시하고 읽는다.
seek = n        #n*obs 바이트만큼 무시하고 쓴다.

17. cat

cat {옵션} 파일명

파일 내용 출력

18. cron

unix 운영체제에서 어떤 작업을 특정 시간에 실행시키기 위한 데몬

cron 작업을 설정하는 파일을 crontab이라고 부른다.

형식

* * * * * {명령어}

분/시/일/월/요일

추가 기호

 , : 복수개의 시간 지정
 * : 모든 시간 지정
 - : 시간의 범위 지정
 / : 시간 간격을 지정

크론 조회

copyButtonText
$ crontab -l

크론 접근 권한 설정은 관련된 파일로 명시해준다.

  • /etc/cron.allow
  • /etc/cron.deny
  • /etc/con.d/cron.deny

19. cut

cut {option} {file}

파일에서 필드 추출, 필드는 구분자로 구분 가능

옵션

 -c : 잘라낼 곳의 위치 지정. (콤마나 하이픈으로 범위 설정 가능)
 -f : 잘라낼 필드 설정
 -d : 필드 구분 문자 지정

20. tar / gzip

tar : gzip 명령이 포함된 압축 툴 gzip : 파일 압축 명령어

21. wc

wc {옵션} {파일} 각각의 파일에 대한 줄(line), 단어(word), 문자(char), 바이트(byte) 수를 알려준다.

옵션

-c : byte 수를 알려준다.
-m : 문자 수를 알려준다.
-l : 줄 수를 알려준다.
-L : 가장 긴 줄의 길이를 알려준다.

22. Tree

tree 명령어는 기본적으로 존재하는 명령어가 아니므로 apt이나 yum을 이용해 설치한다.

copyButtonText
$ tree --help

명령어로 트리의 옵션을 볼 수 있다. tree 옵션

tree 명령어의 실행 화면이다.

tree 실행 화면

Thank You for Visiting My Blog, I hope you have an amazing day 😆
© 2023 Ian, Powered By Gatsby.