리눅스 명령어 모음

42Seoul을 진행하면서 사용한 명령어를 정리한 페이지입니다. 주기적으로 추가될 예정

echo

화면에 문자열을 표준출력한다.

다양한 옵션을 사용하여 사용할 수 있다.

echo [option][string]

echo "Hello" // Hello 출력

Option

  1. -n: 마지막에 따라오는 개행문자를 출력하지 않는다.
  2. -e: 문자열에서 백슬래시와 이스케이프문자를 "로 묶어서 인식하도록 한다.
  3. -E: 백슬래시와 이스케이프문자를 비활성화 한다.(default)
  4. –help: 명령어에 대한 사용법을 출력한다.
  5. –version: 버전을 출력한다.
  • echo를 통해 환경변수를 만들 수 있다.

아래 이스케이프문자를 사용할 때는 역슬래시 한개를 더 붙여서 \\로 사용하거나 -e옵션을 앞에 붙여서 묶도록 한다.

Escape

  1. \: 역슬래시 문자를 사용한다.
  2. \a: 경고음을 소리를 출력.
  3. \b: 백스페이스의 역할을 한다.
  4. \c: 지정한 문자열부터 출력하지 않음
  5. \n: 줄바꿈을 한다.
  6. \r: 새로운 줄을 사용
  7. \t: tab간격을 출력
  8. \v: 수직으로 간격을 출력

더 많은 옵션이 있다.. –help를 사용할것!

grep

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

정말 많이 사용되니 꼭 사용법을 알고있자..!

grep [option][pattern][file]

➜  Desktop cat test.txt
total 40
drwxr-xr-x   8 jeonglee  2021_seoul    272 Jun 13 18:19 .
drwxr-xr-x  69 jeonglee  2021_seoul   2414 Jun 13 18:19 ..
-rw-r--r--@  1 jeonglee  2021_seoul  10244 Jun 13 17:51 .DS_Store
drwxr-xr-x   9 jeonglee  2021_seoul    306 May  5 15:21 42_seoul
-rwxr-xr-x@  1 jeonglee  2021_seoul   1785 May 16 17:01 42seoul_link_all_cache_dirs.sh
drwxr-xr-x  31 jeonglee  2021_seoul   1054 Mar 21 15:58 fkdl0048.github.io
-rwxrwxrwx   1 jeonglee  2021_seoul     10 Jun 13 17:51 test.sh
-rw-r--r--   1 jeonglee  2021_seoul      0 Jun 13 18:19 test.txt
➜  Desktop grep "Mar" test.txt
drwxr-xr-x  31 jeonglee  2021_seoul   1054 Mar 21 15:58 fkdl0048.github.io

기본적으로 대소문자를 구분하며 문자열이 존재하는 라인을 출력한다.

Option

  1. -e : 매칭을 위한 PATTERN 전달.
  2. -f : 파일에 기록된 내용을 PATTERN으로 사용.
  3. -i : 대/소문자 무시.
  4. -v : 매칭되는 PATTERN이 존재하지 않는 라인 선택.
  5. -w : 단어(word) 단위로 매칭.
  6. -x : 라인(line) 단위로 매칭.
  7. -z : 라인을 newline(\n)이 아닌 NULL(\0)로 구분.
  8. -m : 최대 검색 결과 갯수 제한.
  9. -b : 패턴이 매치된 각 라인(-o 사용 시 문자열)의 바이트 옵셋 출력.
  10. -n : 검색 결과 출력 라인 앞에 라인 번호 출력.
  11. -H : 검색 결과 출력 라인 앞에 파일 이름 표시.
  12. -h : 검색 결과 출력 시, 파일 이름 무시.
  13. -o : 매치되는 문자열만 표시.
  14. -q : 검색 결과 출력하지 않음.
  15. -d : 디렉토리 처리 방식 지정. (read, recurse, skip)
  16. -D : 장치 파일 처리 방식 지정. (read, skip)
  17. -r : 하위 디렉토리 탐색.
  18. -R : 심볼릭 링크를 따라가며 모든 하위 디렉토리 탐색.
  19. -L : PATTERN이 존재하지 않는 파일 이름만 표시.
  20. -l : 패턴이 존재하는 파일 이름만 표시.
  21. -c : 파일 당 패턴이 일치하는 라인의 갯수 출력.

정규표현식

.: 1개의 문자 매치 (정확히 1개의 문자와 매치)
*: 앞 문자가 0회 이상 매치
{n}: 앞 문자가 정확히 n회 매치
{n,m}: 앞 문자가 n회 이상 m회 이하 매치
[ ]: 대괄호에 포함된 문자 중 한개와 매치
[^ ]: 대괄호 안에서 ^뒤에 있는 문자들을 제외
[ - ]: 대괄호 안 문자 범위에 있는 문자들 매치
(): 표현식을 그룹화
^: 문자열 라인의 처음
$: 문자열 라인의 마지막
?: 앞 문자가 0 또는 1회 매치 (확장 정규 표현식)
+: 앞 문자가 1회 이상 매치 (확장 정규 표현식)
|: 표현식 논리 OR (확장 정규 표현식)

자주 사용되는 사용법

  1. grep “Mar” [FILE] # 대상 파일에서 문자열을 검색
  2. grep “Mar” * # 현재 디렉토리에서 모든 파일에서 문자열 검색
  3. grep “Mar” *.txt # 특정확장자를 가진 모든 파일에서 문자열 검색
  4. grep -i “Mar” [FILE] # 대소문자를 구분하지 않고 검색
  5. grep -v “Mar” [FILE] # 패턴이 존재하지 않는 라인 검색
  6. grep -w “Mar” [FILE] # 단어단위로 검색
  7. grep -n “Mar” [FILE] # 검색된 문자열이 포함된 라인번호 출력
  8. grep -r “Mar” * # 하위디렉토리까지
  9. grep -m 100 “Mar” [FILE] # 검색 결과 갯수 제한
  10. grep -H “Mar” * # 검색 결과 앞에 파일 이름 표시
  11. grep “A.*B” * # 문자열 A로 시작해서 B로 끝나는 패턴
  12. grep “^Mar” [FILE] # 문자열 라인 처음 시작 패턴 검색하기
  13. grep “$Mar” [FILE] # 문자열 라인 마지막 종료 패턴 검색

awk

위 grep과 마찬가지로 정말 많이 사용되는 리눅스 명령어로 약어가 아닌 만든 사람의 이니셜이다.

awk는 파일로부터 레코드를 읽어 선택된 레코드에 포함된 값을 조작하거나 데이터화하는 명령어이다.

크게 가능한 기능은 텍스트파일의 내용 출력, 파일의 특정 필드만 출력, 특정 필드에 문자열 추가하여 출력, 패턴이 포함된 레코드 출력, 특정 필드에 연산 수행 결과 출력, 필드 값 비교에 따라 레코드 출력등이 있다.

awk는 레코드와 필드로 구분되는데 데이터를 라인 단위의 레코드로 레코드에 있는 텍스트는 공백으로 필드로 구분된다.

이렇게 구분된 레코드와 필드는 awk에 의해서 다양한 매칭 패턴 출력등이 가능해진다.

awk [Option][awk program][Argument] # 기본 양식 awk [Option] pattern {action} [Argument] # [awk program] -> pattern {action}

Option

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

awk program

-f옵션을 지정하지 않은 경우 awk가 실행할 코드 지정

Argument

입력 파일 지정 또는 variable 값 지정

pattern과 action은 생략이 가능하다. pattern생략하는 경우 모든 레코드 적용, action생략하는 경우 print

awk '{print}' ./test.txt
# 모든 레코드 출력
awk '/p/' ./test.txt
# action 생략 'p'를 포함하는 모든 레코드 출력
  • 레코드와 필드를 나타내는 변수는 $를 붙여서 사용한다. $0은 레코드를 나타내고, $1~..n은 필드를 나타낸다.

즉, awk length($0) > 10 {print $1}은 레코드의 길이가 10보다 길다면 해당 레코드의 첫번째 필드를 출력하는 것이다.

xargs

파이프랑 여러 명령어를 조합하다보면 필요해지는 명령어이다.

이 명령어는 앞 명령어의 결과를 파이프와 함께 사용하여 앞 명령어의 출력값을 다음 명령어로 넘길 수 있다.

이 말은 grep으로 삭제하고 싶은 확장자를 지정후 전부 삭제할 수 있다.

ls | grep ".c$" | xargs rm
# 파일에서 확장자가 .c인 파일들을 삭제

sort

지정한 파일의 내용을 정리하거나 병합할 때 사용한다.

cat test.txt | sort 
# 정렬되어 출력된다.

Option

  1. -r: 역순으로 정렬한다.
  2. -k: 정해진 필드를 기준으로 정렬한다.
  3. -u: 정렬 후 중복된 내용을 제거한다.

uniq

중복된 내용의 행이 연속적으로 있다면 하나만 남기고 삭제한다.

cat test.txt | sort | uniq
# 정렬되어 중복된 내용없이 출력된다.  

wc

word count주어진 파일 또는 표준입력 바이트, 문자, 단어의 줄수를 출력해주는 명령어이다.

ls -al과 함께 파일의 수를 알고 싶을 때 자주 사용함

Option

  1. -c: 파일의 파이트 수를 출력한다.
  2. -m: 문자들의 수를 출력한다.
  3. -l: 줄의 수를 출력합니다.
  4. -w: 단어의 수를 출력합니다.
ls -al | wc -l 
# 현재 디렉토리의 파일 및 디렉토리의 개수 표시

free

free명령어는 메모리의 사용량과 여유량 그리고 캐싱으로 사용되는 메모리가 얼마나 있는지 파악한다.

실제로 proc/meminfo에서 메모리정보를 가져와서 사용함

이미지

total: 설치된 총 메모리크기 / 설정된 스왑크기 used: total에서 used와 buff/cahce를 뺀 실제 사용가능한 여유있는 메모리 / 사용되지 않은 스왑 크기 free: total에서 used와 buff/cache를 뺀 실제 사용 가능한 메모리, 여러 프로세스에서 사용할 수 있는 메모리 shared: tmpfs(메모리 파일 시스템), ramfs등으로 사용되는 메모리, 여러 프로세스에서 사용할 수 있는 공유 메모리 buffers: 커널 버퍼로 사용중인 메모리 cache: 페이지 캐시와 slab으로 사용중인 메모리 buff/cache: 버퍼와 캐시를 더한 사용중인 메모리 available: swapping없이 새로운 프로세스에서 할당 가능한 메모리 예상크기

Option

  1. -h: 사람이 읽기 편한 단위로
  2. -b -k -m -g: 바이트, 키비파이트, 메비바이트, 기비바이트 단위로 출력한다.
  3. –tebi –pebi: 테비바이트, 페비바이트 단위로 출력한다.
  4. –kilo –mega –giga –tera –peta: 킬로바이트, 메가바이트, 기가바이트, 페타바이트 단위로 출력한다.

df

리눅스 시스템 전체의 디스크 여유 공간을 확인하는 명령어이다. 파일 시스템, 디스크 크기, 사용량, 여유 공간, 마운트 지점으로 표시된다.

이미지

Option

  1. -a: 모든 파일 시스템 출력
  2. -h: 사람이 읽기 쉬운 형태로 출력(킬로바이트)
  3. -T: 보여주는 목록을 파일시스템 타입으로 제한
  4. -l: 출력하는 목록을 로컬 파일 시스템으로 제한

top

리눅스의 현재 OS의 상태를 나타내주는 명령어이다.

메모리 사용량, CPU 사용량을 표시해준다.

이미지

실시간으로 보여주기 때문에 다른 명령어 처럼 현재상태표시로 보고싶다면 top -bn1명령어로 볼 수 있다.

-b는 batch모드로 순간 정보를 저장 -n1은 실행주기 즉3, 1회

cut

cut [Option] [File]

말 그대로 짤라주는 명령어로 파일이 없다면 표준 입력에서 짜른다.

Option

  1. -c: 문자열로 짜르기
  2. -d: 구분자로 짜르기
  3. -f: 필드로 짜르기(구분자로 짜르기와 같이 사용됨)
echo 'jeonglee' | cut -c 1
# j출력
echo 'jeonglee' | cut -c 2-
# eonglee출력 //2번째 문자부터 마지막까지

who

리눅스 명령어 who는 호스트에 로그인한 사용자의 정보를 출력하는 명령어이다.

이미지

Option

  1. -a: 모두 출력 / -b -d –loing -p -r -t -T -u 옵션과 동일
  2. -b: 마지막 시스템 부팅 시간을 출력
  3. -d: 죽은 프로세스를 출력
  4. -H: 열의 헤더를 출력
  5. –ips: 호스트명 대신 ips를 출력
  6. -l: 시스템 로그인 프로세스를 출력

등등..

ls

list의 준말로 현재 위치한 디렉의 내용을 출력하는 명령어이다.

ls # 뒤에 경로를 적어서 해당 경로의 내용을 출력할 수 있다.

Option

  1. -l: 파일들을 자세하게 나열한다.
  2. -a: 모든 파일을 나열한다.(숨김파일 포함)
  3. -R: 하부 디렉의 파일까지 전부 출력한다.
  4. -h: 파일크기를 헤석에 용이하게 출력한다.
  5. -r: 출력 결과를 내림차순으로 정렬한다.
  6. -t: 출력 결과를 파일이 수정된 시간 기준으로 정렬한다.

등등..

ps

process의 준말로 현재 돌아가고 있는 프로세스를 확인할 수 있다.

ps

Option

  1. -A: 모든 프로세스를 출력한다.

댓글남기기