Linux command
Linux command
리눅스에서는 명령어 하나에 여러 옵션들을 주어서 여러가지 기능들을 가능하게 한다. 대략적인 명령어 소개와 자세한 쓰임새를 알아보자.
Keyword | Description |
---|---|
man | 메뉴얼 조회 |
ls, cat, head, tail | 파일 목록/내용 조회 |
grep, find | 검색/탐색 |
tar, zip/unzip, gzip/gunzip | 파일 압축/압축풀기 |
date, cal | 시간/날짜 |
sudo | 관리자 권한 |
apt, yum | 패키지 매니저 |
nano | 텍스트에디터 |
echo, exit, history | 기타 명령어 |
1. 기본 명령어
man (–help)
man과 –help는 명령어에 대한 설명과 예제가 나와있다. 보통 명령어의 옵션을 찾아보거나 내용을 찾아볼 때 주로 쓰인다.
man [man options] [[section] page ...] ...
ls (ll)
cd
cat
touch
echo
echo 명령어는 텍스트를 출력스트림으로 보여준다.
echo $! : 마지막으로 백그라운드에서 실행된 명령어의 PID 값을 출력한다. echo $? : 마지막으로 종료된 명령어의 종료 상태를 말해준다. (정상 종료인 경우 0) echo $$ : 현재 쉘의 PID값을 출력한다.
alias
2. 텍스트 처리
head
파일의 앞 부분 출력하는 명령어이다.
head [option]... [file]...
- 자주 사용되는 옵션 -c, –bytes=[-]NUM : NUM byte만 출력 -n, –lines=[-]NUM : NUM line만 출력 (default 10라인) (-n에 -를 주게 되면 밑에 해당 NUM을 제외한 전체 출력 ex) head -n -20 :밑의 20라인 제외 후 처음부터 출력) ex) head -n 100 test.txt
tail
head가 앞 부분이라면 tail은 파일의 뒷 부분을 출력해준다.
tail [option]... [file]...
- 자주 사용되는 옵션 -f : 파일에 추가되는 내용 실시간 반영 출력 (로그 볼 때 중요) -F : -f와 같은 기능에 추가로 파일이 삭제 후 재생성 되어도 따라간다. (로그같이 자동으로 이름 바뀌고 새로 만들어질 때 유용) (–follow=name –retry와 같다.) -c, –bytes=[-]NUM : NUM byte만 출력 -n, –lines=[-]NUM : NUM line만 출력 (default 10라인) (-n에 +로 주게 되면 해당 라인부터 끝까지 출력한다. ex) tail -n +10 :10번째 라인부터 끝까지 출력)
wc (word count)
파일의 line, word, byte count 출력하는 명령어이다.
wc [option]... [file]...
- 자주 사용되는 옵션 -l : 라인수 만 출력
😊TIP : wc 뒤에 여러 파일을 입력하면 각각 파일 정보와 전체 정보까지 나온다.
nl (line number)
파일 내용을 라인 넘버와 함께 출력
nl [option]... [file]...
- 자주 사용되는 옵션 -ba : 모든 라인에 대해 라인 넘버링 (default는 빈 라인은 건너뛰기 하고 넘버링 됨) -v N : 시작 라인 넘버를 N으로 지정 -s : 라인 넘버 출력 후 출력할 separator 지정
sort
정렬하여 출력한다.
sort [option]... [file]...
- 자주 사용되는 옵션 위치 기준 -k : key에 의한 정렬 수행 F[.C][OPTS] -t : 필드 구분자(기본값은 공백 문자) ex) sort -t: -k 3 (:를 구분자로 3번째 구분을 기준으로 sort한다.)
정렬 기준 -f, –ignore-case : 대소문자 무시하고 출력 -g, –general-numeric-sort : -n, –numeric-sort : 숫자를 기준으로 정렬 (ex 12와 2 이면 12가 뒤에) -r, –reverse : 역순 출력 -u, –unique : (내용이 같은 경우 하나만 출력)
😊Tip : 마지막에 –debug를 붙이면 sort 기준을 확인 할 수 있다.
uniq
중복된 내용을 제거하고 출력
uniq [option]... [<input> [<출력>]]
- 자주 사용되는 옵션 -d, –repeated : 중복된 내용만 출력 -u, –unique : 중복되지 않은 내용만 출력 -i, –ignore-case : 대소문자
기본적으로는 바로 다음 라인의 같은 문자열만 생략하고 출력하기 때문에 sort 명령어와 주로 같이 사용된다.
ex) sort test.txt | uniq | nl 하면 test.txt파일에서 정렬하고 중복을 제거하고 순서를 붙여서 출력해준다. |
cut
각 파일에서 선택한 라인 부분을 출력한다.
cut [option]... [file]...
- 자주 사용되는 옵션 -b, –bytes=LIST : byte 선택 -c, –characters=LIST : character 선택 -f, –fields=LIST : 필드(컬럼) 선택 -d, –delemiter=DELIM : tab 대신 사용할 구분자 지정 –complement : 선택 반전 –output-delimiter=STRING : 출력시 사용할 구분자 지정
ex)
head /etc/passwd | cut -d ‘:’ -f 1,7
head /etc/passwd | cut -d ‘:’ -f 1,7 –output-delimiter=STRING ‘: ‘
ls -al | cut -b -10
ls -al | cut -b -10 –complement
tr
어떤 내용을 변환(translate) 한다.
tr [option]... SET2 [SET2]
- 자주 사용되는 옵션 -c, -C, –complement -d, –delete 해당 내용을 지우고 나머지를 출력한다.
- SET
- CHAR1-CHAR2 : CHAR1부터 CHAR2까지(ex ‘a-z’)
- [:alnum:] : 문자 + 숫자
- [:alpha:] : 문자
- [:blank:] : 공백
- [:space:] : 공백 + newline
- [:digit:] / [:xdigit:] : 10진수 숫자 / 16진수 숫자
- [:lower:] / [:upper:] : 소문자 / 대문자
어떤 내용을 지우거나 변환할 때 주로 사용한다. ex) ll | tr -d ‘/’ : /없애고 출력한다. ll | tr [:lower:] [:upper:] : 소문자를 모두 대문자로 변환시킨다.
sed
stream editor 이다. 단어의 변환, 출력, 삭제 등에 사용된다.
sed [option]... {script-only-if-no-other-script} [input-file]
- 자주 사용되는 옵션
- n : 기본 출력을 없애준다.
- {RANGE}p : range 내의 라인을 출력 (-n을 앞에 붙이면 해당 라인 출력)
- {RANGE}d : range 내의 라인을 삭제
- /SEARCHPATTERN/p : SEARCHPATTERN과 매치되는 라인을 출력
- /SEARCHPATTERN/d : SEARCHPATTERN과 매치되는 라인을 삭제
- s/REGEX/REPLACE/ : REGEX에 매치되는 처음 단어를 REPLACE로 교체
- s/REGEX/REPLACE/g : REGEX에 매치되는 모든 단어를 REPLACE로 교체
ex) ll | sed -n ‘2,5p’ : 2번째 줄부터 5번째 줄까지 출력해라. (n을 빠뜨리면 2,5줄만 2번 출력한다.) ll | sed ‘2,5d’ : 2번째 줄부터 5번째 줄까지 삭제 후 출력해라. ll | sed -n ‘/unins/p’ : unins를 포함하는 행을 출력해라. ll | sed ‘s/unins/xxxx/’ : 맨 처음 unins를 xxxx로 바꾸어서 출력해라 ll | sed ‘s/unins/xxxx/g’ : 모든 unins를 xxxx로 바꾸어서 출력해라
awk
텍스트 처리 script language 이다.
awk options 'selection _criteria {action }' input-file
- 자주 사용되는 옵션 -F : field seperator 지정
- 주요 내장 변수
- $1, $2, $3, … :Nth field
- NR : number of records
- NF : number of fields
- FS : field separator(default ‘white space’)
- RS : record separator(default ‘new line’)
- OFS : Output field separator
- ORS : Output record separator
3. 검색
find
find 명령어는 주로 파일이나 디렉토리의 위치를 찾을 때 사용한다. 파일의 이름, 생성시간, 소유자, 크기, 위치 등을 기반한 검색으로 찾을 수 있다.
find [-H] [-L] [-P] [-Olevel] [-D debugopts] [path...] [expression]
find 명령어의 기본 사용법은 find [경로] [옵션] [조건] [실행] 이다.
OPTION -P : 심볼릭 링크를 따라가지 않고, 심볼릭 링크 자체 정보 사용. -L : 심볼릭 링크에 연결된 파일 정보 사용. -H : 심볼릭 링크를 따라가지 않으나, Command Line Argument를 처리할 땐 예외.
name [PATTERN] | 지정된 문자열 패턴에 해당하는 파일 검색. |
empty | 빈 디렉토리 또는 크기가 0인 파일 검색. |
delete | 검색된 파일 또는 디렉토리 삭제. |
exec | 검색된 파일에 대해 지정된 명령 실행. 실행 위치에 {} 표시를 해 주고 마지막에 \; 으로 끝나야 한다. |
path [PATTERN] | 지정된 문자열 패턴에 해당하는 경로에서 검색. |
검색 결과를 출력. 검색 항목은 newline으로 구분. (기본 값) | |
print0 | 검색 결과를 출력. 검색 항목은 null로 구분. |
size [N] | 파일 크기를 사용하여 파일 검색. |
type [] | 지정된 파일 타입에 해당하는 파일 검색. |
mindepth [LEVELS] | 검색을 시작할 하위 디렉토리 최소 깊이 지정. (조건 중 가장 먼저 걸어야 한다.) |
maxdepth [LEVELS] | 검색할 하위 디렉토리의 최대 깊이 지정. (조건 중 가장 먼저 걸어야 한다.) |
atime [N] | 파일 접근(access) 시각을 기준으로 파일 검색. |
ctime [N] | 파일 내용 및 속성 변경(change) 시각을 기준으로 파일 검색. |
mtime [N] | 파일의 데이터 수정(modify) 시각을 기준으로 파일 검색. |
표현식에는 연산자를 사용하여 두 개 이상의 표현식 조합이 가능하다.
-a 나 -and로 둘 다 만족하는 조건을 찾고, -o, -or로 둘 중 하나 만족하는 조건을 찾을 수 있다. (default는 and이다.)
grep
apropos
locate
which
시스템 정보
ps
ps는 프로세스 관련 명령어이다. ps [option] 으로 관련 명령을 볼 수 있고 가장 많이 사용하는 명령어는 ps -ef 이다.
옵션 | 설명 |
---|---|
-A | 모든 프로세스를 출력한다. |
-a | 세션 리더를 제외하고 데몬 프로세서처럼 터미널에 종속되지 않은 모든 프로세스를 출력한다. |
-e | 커널 프로세스를 제외한 모든 프로세스를 출력해준다. |
-f | 풀 포맷으로 보여준다. |
-l | 긴 포맷으로 보여준다. |
-o [type] | (pid, tty, time, cmd) 등을 타입으로 입력하여 해당 것에 대한 조회를 할 수 있다. |
-m | 프로세스들 뿐만 아니라 커널 스레드들도 보여준다. |
u | 프로세스의 소유자를 기준으로 출력한다. |
-u | 특정 프로세스 정보를 확일할 때 사용한다. (기본은 현재 사용자) |
-x | 로그인 상태에 있는 동안 아직 완료되지 않은 프로세서들을 보여준다. |
일반적으로 ef옵션을 가장 많이 사용한다. (모든 프로세서를 풀 옵션으로 보기)
이제 출력되는 결과의 뜻을 확인해보자.
항목 | 의미 |
---|---|
UID (or USER) | 프로세스 소유자의 이름 |
PID | 프로세스 식별 번호 |
PPID | 부모 프로세스ID |
%CPU | CPU 사용 비율의 추정치 (BSD계열) |
%MEM | 메모리의 사용 비율의 추정치 (BSD계열) |
VSZ | K단위 또는 페이지 단위의 가상메모리 사용량 |
RSS | 실제 메모리 사용량 |
TTY | 프로세서와 연결된 터미널 |
S (or STAT) | 현재 프로세스 상태코드 |
TIME | 총 CPU 사용 시간 |
COMMAND | 프로세스의 실행 명령행 |
STIME | 프로세스가 시작된 시간 |
C (or CP) | 짧은 기간 동안의 CPU 사용률 |
F | 프로세스의 플래그 |
PRI | 실제 실행 우선순위 |
NI | nice 우선순위 번호 |
kill
kill 명령어는 프로세스에 시그널을 보내주는 명령어 이다.
강제종료를 위해 SIGKILL 시그널을 보내면 프로그램이 무조건 즉시 종료하게 되지만 이는 좋지 않은 방법이다.
SIGTERM이나 SIGINT 등의 종료 시그널은 시그널 핸들러를 등록하여 Socket close나 file close 같은 종료 작업을 한 뒤에 종료처리 하여야 하는데
SIGKILL은 핸들러를 두지 못해 즉시 종료하므로 저장중인 데이터가 유실될 우려가 있다.
kill [options] <pid> [...]
kill 뒤에 시그널을 보내 명령을 내릴 수 있다.
주로 쓰이는 명령어는
kill
top
lsof
netstat
sysctl
df
du
dmidecode
lscpu
free
vim
개발 도구
diff
patch
ctags
cscope
strace
apt
apt는 리눅스 패키지 매니저이다. apt install apt-get install 패키지 목록 apt remove apt-get remove 패키지 삭제 apt purge apt-get purge 패키지와 관련 설정 제거 apt update apt-get update 레파지토리 인덱스 갱신 apt upgrade apt-get upgrade 업그레이드 가능한 모든 패키지 업그레이드 apt autoremove apt-get autoremove 불필요한 패키지 제거 apt full-upgrade apt-get dist-upgrade 의존성 고려한 패키지 업그레이드 apt search apt-cache search 프로그램 검색 apt show apt-cache show 패키지 상세 정보 출력 apt list apt 목록 출력
Linux all command
리눅스에서는 명령어 하나에 여러 옵션들을 주어서 여러가지 기능들을 가능하게 한다. 대략적인 명령어 소개와 자세한 쓰임새를 알아보자.
Keyword | Description | Example |
---|---|---|
cd | 디렉토리 이동 | cd /home (home으로 이동) |
pwd | 현재 디렉토리 위치 출력 | |
clear | 콘솔 화면 클리어 | |
tail, head | 파일 끝에서(앞에서)부터 찾기 | tail -n 100 server.log |
more, less | (주로) 긴 파일 읽기 | more -d server.log |
cat | 파일의 내용 전부를 화면에 출력한다. | cat file1 file2 2개 파일 연결하여 출력 |
grep | 각 파일에서 패턴이 일치하는 행을 찾아낸다 | grep -i 'hello word' file1 file2 |
find | 해당 이름을 가진 파일의 위치를 찾는다. | find /etc -name "*.conf" |
date | 날짜 관련 출력 | date +$D |
file | 해당 파일의 정보를 알 수 있다. | file filelist.gz |
echo | (메아리) 해당 내용을 출력한다. | echo $PWD |
env | 환경변수를 확인한다. | env |
cal | 달력을 확인한다. | cal -A4 |
history | 명령어 기록을 출력한다. | history |
exit | 실행중인 쉘을 종료한다. | exit |
sudo | 해당 계정으로 실행한다. (default 관리자 계정) | sudo apt install hello |
apt | 패키지 매니저 관련 정보가 나타난다. list, install ... | apt list | grep hello |
> | 파일로 저장해라 | find > filelist (find의 출력결과를 filelist라는 파일로 저장) |
댓글남기기