4. 리눅스 명령어

Son_Doobu96·2023년 1월 27일
0

DevOps 이론

목록 보기
3/25
post-thumbnail

리눅스 명령어

$ man
명령어에 대한 매뉴얼을 터미널에서 알려주는 창이다.
스페이스바를 이용해 페이지를 이동할 수 있다.
q로 돌아갈 수 있다.

$ cat
파일의 내용을 출력하는 명령어이다.
$ cat -n <파일명> : 파일 내용을 라인번호와 함께 출력한다.

$ more
파일을 화면 단위로 끊어서 출력한다.

  • enter : 다음 줄 출력
  • space : 다음 페이지 출력
  • b : 이전 페이지 출력
  • q : 종료
    $ more +<number> <파일명> : number번째 줄부터 출력된다.
    $ more +</string> <파일명> : string이 포함된 페이지를 출력한다.

$ less
파일 내용을 출력한다.
cat과 다르게 터미널 세션을 방해하지 않으면서
화살표키만으로 파일 내에서 양방향 탐색이 가능하다.
큰 용량의 파일을 더 빨리 읽을 수 있다.
$ less -N <파일명> : 라인 번호를 함께 출력한다.

$ head
파일의 처음 부분을 설명한 라인만큼 출력하는 명령
기본 값으로 10줄이 세팅된다.
$ head -7 <파일명> : 처음 7줄 만큼을 출력한다.

$ tail
파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력한다.
기본값으로 마지막 10줄이 설정되어있다.
오류나 파일 로그를 실시간으로 활용 시 사용(-f)
$ tail -n <파일명> : 지정한 라인까지 출력
$ tail -f <파일명> : 즉시 종료 되지 않고 내용이 추가되는 상태를 지켜보며 계속 출력


$ awk
데이터의 열을 출력한다.
awk 명령에서 출력하고 싶은 열은 {$n}으로 표기한다.
{$0}은 모든 열을 출력한다.
{$1, $3}처럼 ,을 통해 중복된 열을 출력 가능하다.
항시 {}(중괄호)에는 ‘’(작은 따옴표)를 붙여야 한다.

`$ cat <파일명> | awk ‘{print $1 “,” $6}’`
`$ awk '{print $2}' : 2번째 열을 출력한다.`
`$ awk '{print $2 "," $6}' : 2번째 6번째 열을 출력하며 “,”로 구분한다.`
`$ awk '{print "STR$2", "STR$6"}' : 필드 값에 임의의 문자열을 같이 출력한다.`
`$ awk '$1 === {print $2}' <파일명>  : 특정 필드 값 비교를 통해 선택된 열만 출력`

$ cut
파일에서 특정 열을 쉽게 추출할 수 있다.
$ cut –f 1,3 <파일명> : 1, 3번째 열을 추출한다.
$ cut –d ‘,’ -f 1-9 <파일명>: 1~9번째 열을 ‘,’로 구분하여 추출한다.


$ join
두 파일을 묶어 하나의 파일로 합친다.
$ join <파일명a> <파일명b> : a파일과 b 파일을 합친다.
$ join -a <파일명a> <파일명b>: a파일과 b파일을 기준에 맞게 합친다.
$ join -e <파일명a> <파일명b>: a파일과 b파일에서 빠진 필드의 입력은 EMPTY처리
$ join -i <파일명a> <파일명b>: 비교 대상의 필드가 다를 경우 무시한다.

$ paste
지정된 파일의 각 행이 탭으로 결합되어 각행이 열로 바뀌는 파일을 수평으로 결합 할 수 있다.
각각 다른 파일에 있는 내용을 종합하여 (열로 변경되는 )하나의 파일로 결합 할 수 있다.

※ paste 예제 :
names.txt.라는 파일에 이름 목록이 있고 age.txt라는 파일에 나이 목록이 있는 경우
첫 열에 이름 두 번째 열에 나이로 출력 되는 결과로 만들어라!

$ paste number.txt age.txt > Output.txt 

$ sed
문자열 대체 (찾기 및 바꾸기)이다.
기본적으로 문자열의 첫 번째 항목만을 바꾼다.
특정 줄을 삭제하는데 사용할 수도 있다.

$ sed 's/sample1/ID2023/' myfile.txt:(명령어)(바꾸려는 항목)(바꿀 결과)(파일명)

$ sed ‘s/(find)/(replace)/n’
- 기본적으로 문자열의 첫 번째 항목만을 변경하던 것을 특정 수의 발생으로 바꾸려 할 때

$ sed ‘s/(find)/(replace)/g’
- 한 줄의 모든 항목을 바꾸려고 할 때

$ sed ‘n s/(find)/(replace)/g’
- 파일 내의 특정 줄에 있는 항목만 바꾸려고 할 때 앞에 줄 번호 또는 범위를 추가한다.

$ sed ‘5d’ <파일명>
- 5번째 줄을 삭제한다.

$ sed ‘$d’ <파일명>
- 가장 마지막 줄을 삭제한다.

$ sed ‘3,5d’ <파일명>
- 3~5번까지의 줄을 삭제한다.

$ sed ‘s/pattern/d’ <파일명>
- 패턴을 포함하는 줄을 삭제한다.

$ sort
파일내에서 줄이나 열을 정렬하는데 유용하다. 기본적으로 줄 시작 부분의 문자를 기준으로
다음 순서를 정렬한다.
1. 오름 차순 숫자
2. 오름 차순 문자

$ sort <파일명> : 기본값
$ sort -r <파일명> : 순서를 역으로 정렬한다.
$ sort -n <파일명> : 정렬의 기준점을 문자 → 숫자로 변경한다.
$ sort -u <파일명> : 파일을 정렬하고 중복을 제거한다.
$ sort -k <파일명> : 특정 열을 기준으로 파일을 정리

$ uniq
인접하고 일치하는 라인을 필터링하여 필터링된 데이터를 출력 파일 OUTPUT 에 기록합니다.
일치하는 다른 줄 바로 앞이나 뒤에 있으면 일치하는 줄은 "인접"합니다.
(인접 행과 일치하는 모든 행이 생략된다.)

$ uniq <파일명> : 기본값
$ uniq -c <파일명> : 발생한 횟수를 앞에 숫자로 표기한다.
$ uniq -d <파일명> : 중복된 줄만 인쇄한다. (단일 발생 시 출력하지 않는다.)
$ uniq -i <파일명> : 대소문자를 무시한다.

$ wc
파일의 줄, 단어 및 문자 수를 계산하는데 사용할 수 있다.
줄-단어-문자수 순으로 표현

$ wc <파일명> : 기본값
$ wc -l <파일명> : 파일의 줄 수
$ wc -w <파일명> : 파일의 단어 수
$ wc -c <파일명> : 파일의 문자 수

$ find
터미널에서 파일을 검색하는데 사용되는 명령어
파일권한 소유권, 수정 날짜, 크기 등과 같은 특정 기준에 따라 파일을 검색할 수 있다.

※ find 명령어는 사용할 때 위치 선정을 하지 않으면
현재 디렉토리만을 검색하기 때문에 원하는 내용을 찾을 수 없다.
따라서 찾으려고 하는 위치를 지정해서 사용하는 것이 좋다.

$ find -name <파일명> : 기본값
$ find -name <파일명> -type.d : 파일 형태가 디렉토리인  경우만을 검색한다.
$ find . -empty : 빈 파일 찾기
$ find . -newer <파일명> : <파일명>파일보다 최근에 변경된 파일 찾기

$ locate
특정 파일 위치 찾기 find에 비해 매우 빠르지만
데이터 베이스의 정기적인 업데이트를 필요로 합니다.
updatedb에 의해 생성된 미리 빌드된 파일들의 데이터 베이스를 통해서 검색
(효율성 정확성은 낮다.)
$ locate <파일명> : 기본값

$ which
실행 파일 위치 식별
검색하려는 파일이 실행파일일 경우 which를 통해 찾을 수 있다.
$ which <실행 파일명> : 기본값


$ grep
특정 문자열을 찾으려고 할 때 사용하는 명령이다.

$ grep <내용> : 기본값

$ grep -v <내용>: 내용이 없는 행만을 출력한다.

$ grep -i <내용> : 대소문자 구분 없이 문자열을 찾는다.

$ grep -w <내용> : 단어 단위로 문자열을 검색한다.

$ grep -m <내용> : 설정된 개수만큼 선택된 다음 라인 출력을 정지한다. (5의 경우 4개까지 출력)

$ grep -n <내용>: 선택된 문자열이 포함된 라인 번호를 함께 출력한다.

$ grep -c <내용> : 패턴이 일치하는 행의 숫자를 출력한다.

$ grep * <내용>: 현재 디렉토리 내 모든 파일에서 문자열을 검색한다.

$ grep *,txt <내용> : 특정 확장자를 가진 모든 파일에서 문자열을 검색한다.

정규 표현식
(‘ ’) 작은 따옴표로 묶어서 표현한다.

$ grep '^a' <파일명>: 파일에서 a로 시작하는 행을 찾는다.
(^는 파일의 시작을 나타낸다.)

$ grep 'apple$' <파일명> : 파일에서 e로 끝나는 행을 찾는다.
($는 파일의 끝을 나타낸다.)

$ grep 'a.....e' <파일명> : a로 시작하고 e로 끝나는 7자리 단어가 있는 행을 찾는다.

$ grep [a-d] <파일명> : a,b,c,d로 시작하는 단어를 모두 찾는다.

$ grep [aA]pple <파일명>: apple 혹은 Apple로 시작하는 행을 모두 찾는다.

$ grep 'apple' d* : d로 시작하는 파일에서 apple을 포함하는 모든 행을 찾는다.

$ grep '^[ab]' <파일명> : 파일에서 a나 b로 시작되는 모든 행을 찾는다.

$ grep 'HTTP.*200' <파일명>: HTTP로 시작 200으로 끝나는 문자열이 있는 행을 모두 출력한다.

$ ps
현재 실행중인 프로세스 목록과 상태를 보여준다
$ ps aux
$ ps -ef

$ pstree
컴퓨터의 전체 프로세스를 구조화하여 확인하고 싶을 때는 pstree 명령을 사용한다.
이 명령을 사용하면 다음과 같이 트리 구조로 도식화하여 프로세스를 확인할 수 있고
부모 관계를 한 눈에 파악할 수 있습니다

$ kill
이름 그대로 프로세스를 죽이는 명령어이며 이는 터미널에 프로그램을 종료한다는
이벤트를 전달하는 시그널 과정으로 다양한 명령어 옵션이 존재한다.
$ kill -9 <%작업번호:PID>: 강제 종료
$ kill -15 <%작업번호:PID> : 정상 종료

$ jobs
백그라운드에서 수행중인 프로세스를 확인하는 명령어
[1] 혹은 [2] 라고 되어 있는 기호는 작업 번호를 이야기 합니다. 더불어 + 기호로 표시된 프로세스는 현재 처리되고 있는 작업을 의미하며, - 기호는 다음에 작업할 프로세스를 의미합니다.

  • Running : 실행 중
  • Stopped : 일시 중단(Ctrl + Z 입력)
  • Terminated : 강제 종료(kill 명령 종료)
  • Done : 정상 종료
  • $ fg %작업번호 : 포그라운드 전환

$ systemctl
데몬의 목록을 확인할 수 있다.

$ systemctl list-unit-files : 설치된 유닛(데몬)을 보여준다.

$ systemctl enable <unit> : 부팅 시 유닛을 활성화한다.

$ systemctl disable <unit> : 유닛이 부팅 시 비활성화된다.

$ systemctl start <unit> : 유닛을 즉시 활성화시킨다.

$ systemctl stop <unit> : 유닛을 즉시 비활성화한다.

$ systemctl restart <unit> : 유닛을 즉시 재시작한다.

$ systemctl status <unit> : 유닛의 상태와 최근 로그들을 조회한다.

$ man
명령어에 대한 매뉴얼을 터미널에서 알려주는 창이다.
스페이스바를 이용해 페이지를 이동할 수 있다.
q로 돌아갈 수 있다.

profile
DevOps를 꿈꾸는 엔지니어 지망생!

0개의 댓글