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 [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] 지정된 문자열 패턴에 해당하는 경로에서 검색.
print 검색 결과를 출력. 검색 항목은 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옵션을 가장 많이 사용한다. (모든 프로세서를 풀 옵션으로 보기)

ps

이제 출력되는 결과의 뜻을 확인해보자.

항목 의미
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 : SIGTERM (종료) 한다. default 가 15번 이다. kill -9 : 강제종료한다. (보통 SIGTERM 명령 먼저 보내보고 안될시 SIGKILL이 안전하다.) kill -l : 시그널 리스트를 확인한다.

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라는 파일로 저장)

댓글남기기