Linux

Linux 필수용어 20가지

병호네 2025. 2. 3. 16:40

명령어요약표

01 pwd  02 ls 03 cd 04 mkdir
현재위치 출력 현재 디렉터리 내의 파일과 디렉터리 출력 디렉터리 이동 디렉터리 생성
05 cp 06 mv  07 rm 08 cat
파일 또틑 디렉터리 복사 파일또는 디렉터리 이동 파일 또는 디렉터리 삭제  파일내용을 확인
09 touch  10 echo 11 ip addr /  ifconfig 12 nc
빈파일생성 문자열 화면에 표시 IP 정보 확인 네트워크 상태확인
13 which, whereis, locate 14 tail 15 find 16 ps
명령어 위치 확인 파일 마지막 부분 확인하기 파일이나 디렉터리찾기 현재 실행중인 프로세스 목록과 상태확인
17 grep 18 kill 19 alias  20 vi / vim
주어진 입력 값에서 패턴에 맞는 값 출력 프로세스 종료 명령어 별칭 만들기 편집기

 

 

01. pwd

pwd는 point work directory의 약자로 현재 작업 중 인 디렉터리를 출력합니다.

 

02. ls

list segments의 약자로 현재 디렉터리의 파일과 디렉터리를 보여줍니다.

보통 단독으로 잘 사용하지않고 a, l 등 의 옵션을 함께 사용함

 

  • ls -l : 파일등의 상세정보를 보여줌
  • ls -a : 숨김 파일 표시
  • ls -t : 오래된 파일부터 표시
  • ls -rt : 오래된 파일부터 표시
  • ls -F : 파일을 표시할 때 파일 탑입을 나타내는 문자열을 표시 ( / 디렉터리, * 실행파일, @ 씸볼릭 링크)
  • ls -R : 하위 디렉터리의 내용까지 표시

보통은 위의 옵션들을 조합해 ls -al, ls -alt, ls -altF 등으로 사용

 

💡씸볼릭 링크(simbolic link) : 원본파일을 가리키도록 링크만 연결시켜둔거임!! (ex. 윈도나 바탕화면의 바로가기 와 같은 개념)

 

03. cd

change directory의 약자로 말 그대로 디렉터리 이동시 사용하는 명령어입니다.

  • cd ~ : 홈디렉터리로 이동
  • cd .. : 상쉬 디렉터리로 이동 ( cd ../../ 같은 식으로 여러 번 사용가능)
  • cd /dir : 절대 경로를 지정해 이동가능
  • cd - : 바로 전의 디렉터리로 이동

04. mkdir

make directory의 약자로 디렉터리를 만들 때 사용

  "test"의 이름을 가진 디렉터리를 현재 디렉터리에 생성합니다. 
$ mkdir test

 

💡 -p 옵션으로 하위디렉터리까지 한 번에 생성가능

$ mkdir -p test/하위 디렉터리명

 

05. cp

copy의 약자입니다. 파일 또는 디렉터리를 복사할 때 사용

Esul디렉터리를 dorami라는 이름으로 복사
$ cp Esul dorami
dorami 파일이 이미있는 경우 덮어 쓰기
$ cp -f Esul dorami
디렉터리를 복사할떄 사용함(하위디렉터리도 모두 복사함)
$ cp -R Esul dorami

 

06. mv

move의 약자입니다. 파일 또는 디렉터리의 위치를 옮길 때 사용합니다. 혹은 이름을 변경할 때도 사용가능

dorami 이름을 Esul 로 변경
$ mv dorami Esul
dorami를 상위 디렉터리로 옮김
$ mv dorami ../
dorami를 /green 이하 디렉터리로 옮김
$ dorami /green/

07. rm

remove의 약자입니다.  파일 또는 디렉터리를 삭제할 때 사용함.

Esul 을 삭제
$ rm Esul
디렉터리 Esul을 삭제, 삭제시 확인함
$ rm -r Esul
디렉터리 Esul을 삭제, 삭제 확인 안 함
$ rm -rf Esul
txt로 끝나는 모든 파일을 삭제 할지 물어보면서 삭제
$ rm -i *.txt

 

08. cat

catenate (잇다 연결하다) 의 약자입니다. 파일의 내용을 확일 할때 사용함.

Esul.txt 파일의 내용을 확인
$ cat test.t

 

 

09 touch

touch는 빈 파일을 생성합니다. 혹은 파일의 날짜와 시간을 수정할 때 사용합니다.

 

# afile을 생성
$ touch afile

# afile의 시간을 현재 시간으로 갱신
$ touch -c afile

# bfile의 날짜 정보를 afile의 정보와 동일하게 변경
$ touch -r afile bfile

 

10 echo

echo는 어떤 문자열을 화면에 보여줄 때 사용합니다. echo와 리다이렉션을 사용해 파일을 생성, 추가하는 작업을 많이 합니다.

 

# helloworld 출력
$ echo 'helloworld'

# 패스로 지정된 문자열을 출력
$ echo $PATH

# 이스케이프 문자열을 해석
$ echo -e 문자열

# 개행을 표시할 수 있음
$ echo -e "안녕하세요\n이렇게 하면\n새 줄이생겨요"

# ls와 유사하게 현재 디렉터리의 파일과 폴더를 출력
$ echo *

# 리다이렉션 '>'을 사용해 hello.txt 파일 생성. 파일 내용에는 echo로 표시되는 내용이 들어감
$ echo hello redirection > hello.txt

# 추가 연산자 >>를 사용해 기존 파일에 문자열 추가
$ echo hello2 >> hello.txt

 

11 ip addr / ifconfig

접속한 리눅스의 IP 정보를 알아낼 때 사용합니다.

 

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
group default qlen 50000
link/ether fa:16:3e:5d:0b:d7 brd ff:ff:ff:ff:ff:ff
inet 10.201.1.10/16 brd 10.202.255.255 scope global eth0
valid_lft forever preferred_lft forever

 

ip addr이 설치되어 있지 않은 경우에는 ifconfig를 사용하면 됩니다.

 

$ ifconfig
eth0 Link encap:Ethernet HWaddr 06:4d:de:ae:a8:50
inet addr:172.31.27.212 Bcast:172.31.31.255 Mask:255.255.240.0
inet6 addr: fe80::44d:deff:feae:a850/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:9001 Metric:1
RX packets:68903966 errors:0 dropped:0 overruns:0 frame:0
TX packets:75295223 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15691124260 (15.6 GB) TX bytes:42265387295 (42.2 GB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:6623596 errors:0 dropped:0 overruns:0 frame:0
TX packets:6623596 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:349206971 (349.2 MB) TX bytes:349206971 (349.2 MB)

 

12 nc

netcat의 약자입니다. 예전에는 포트가 열렸는지 확인하는 데 telnet 명령어를 사용했지만 요즘은 주로 nc를 사용합니다.

 

# 포트가 오픈됐는지 확인
$ nc IP주소 포트

# 더 자세한 정보가 남음
$ nc -v IP주소 포트

# 현재 서버의 포트를 오픈(방화벽에 해당 포트 번호가 설정 함)
$ nc -l 포트

 

13 which, whereis, locate

which는 특정 명령어의 위치를 찾아줍니다.

 

$ which git
/usr/local/bin/git

# which -a : 검색 가능한 모든 경로에서 명령어를 찾아줍니다.
$ which -a git
/usr/local/bin/git
/usr/bin/git

# where : which -a와 같습니다.
$ where git
/usr/local/bin/git
/usr/bin/git

# whereis는 실행 파일, 소스, man 페이지의 파일을 찾아줍니다.
$ whereis ssh
ssh: /usr/bin/ssh /usr/share/man/man1/ssh.1

# locate는 파일명을 패턴으로 빠르게 찾아줍니다.
# 아래 예제는 .java 파일을 찾아주는 명령입니다.
$ locate *.java

 

14 tail

tail은 꼬리라는 의미처럼 파일의 마지막 부분을 보여줍니다. tail이 있으면 당연히 head도 있는데 사용법은 같습니다. 필자는 tail -f {파일}을 가장 많이 쓰는 편입니다. 서버의 로그를 실시간으로 보고 싶을 때 사용합니다.

 

# 파일의 마지막 라인부터 숫자만큼의 파일의 라인 수를 보여주기
$ tail -n {숫자} {파일경로}

# 숫자로 지정한 라인부터 보여주기
$ tail -n +{숫자} {파일경로}

# 파일의 마지막 라인부터 숫자로 지정한 바이트 수 만큼 보여주기
$ tail -c {숫자} {파일경로}

# Ctrl + C로 중단하기 전까지 지정한 파일의 마지막에 라인이 추가되면 계속 출력하기
$ tail -f {파일경로} :

# 파일의 마지막 라인부터 지정한 숫자만큼을
# {초}로 지정한 시간이 지날 때마다 리프레시해서 보여주기
$ tail -n {숫자} -s {초} -f {파일경로}

 

15 find

find는 명령어의 뜻 그대로 파일이나 디렉터리를 찾는 데 사용하는 명령어입니다. 굉장히 많은 옵션이 있으나 그중에 자주 사용되는 것만 소개합니다.

 

# 확장자 명으로 찾기
$ find {디렉터리} -name '*.bak'

# 디렉터리를 지정해 찾기
$ find {디렉터리} -path '**/검색 시 사용하는 디렉터리명/**.*.js'

# 파일명을 패턴으로 찾기
$ find {디렉터리} -name '*패턴*'

# 파일명을 패턴으로 찾되 특정 경로는 제외하기
$ find {디렉터리} -name '*.py' -not -path '*/site-packates/*'

# 파일을 찾은 다음 명령어 실행하기
$ find {디렉터리} -name '*.ext' -exec wc -l {} \;

# 최근 7일간 수정된 파일을 찾고 삭제하기
$ find {디렉터리} -daystart -mtime -7 -delete

# 0바이트인 파일을 찾고 삭제하기
$ find {디렉터리} -type f -empty -delete

 

16 ps

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

 

# 실행 중인 모든 프로세스를 보여주기
$ ps aux

# 실행 중인 모든 프로세스를 전체 커맨드를 포함해 보여주기
$ ps auxww

# 특정 문자열과 매칭되는 프로세스 찾기(grep은 바로 다음에 나옵니다)
$ ps aus | grep {패턴}

# 메모리 사용량에 따라 정렬하기
$ ps --sort size

 

17 grep

grep은 입력에서 패턴에 매칭되는 내용을 찾는 명령어입니다. grep이라는 이름은 ed의 명령어인 g/re/p(내용 전체를 정규식으로 찾은 다음 프린트하라: globally search for a regular expression and print matching lines)에서 왔습니다. 보통 find, ps 등과 조합해 사용합니다.

 

# 파일에서 특정 패턴을 만족하는 부분 찾기
$ grep "패턴" 파일경로

# 파일명과 라인을 함께 표시하기
$ grep --with-filename --line-number "패턴" 파일경로

# 매칭하지 않는 부분 표시하기
$ grep --invert-match "패턴"

# cat과 함께 사용하기
$ cat 파일경로 | grep "패턴"

 

18 kill

프로세스를 죽이는 명령어입니다. 프로세스를 죽인다고는 하지만 원리는 프로세스에 중지하라는 시그널을 보내는 겁니다. SIGKILL, SIGSTOP은 강제 종료이며 나머지는 정상적으로 종료시킵니다. 프로세스 아이디는 ps 명령어로 알아낼 수 있습니다 .

 

# kill에서 사용할 수 있는 시그널 표시하기
$ kill -l

# 프로세스 죽이기 SIGTERM(terminate)
$ kill 프로세스ID

# 백그라운드 잡 종료시키기
$ kill {잡ID}

# 프로세스 강제 종료
$ kill -9 | KILL 프로세스ID

 

19 alias

자주 사용하는 명령어가 길면 타이핑하려면 귀찮습니다. 이때 alias를 사용하면 줄여서 사용할 수 있습니다.

 

# 모든 alias 표시하기
$ alias

# alias 만들기
# 예) alias ll="ls -al"
$ alias 단어="명령"

# cd ../..을 cd …으로 줄여 쓰기
# cd ../../../은 cd ….으로 가능
$ alias ...=../..
$ alias ....=../../..
$ alias .....=../../../..
$ alias ......=../../../../..

# alias 삭제하기
$ unalias 단어

 

20 vi / vim

vi 혹은 vim은 대부분의 리눅스에 기본적으로 설치되어 있는 텍스트 에디터입니다. 백엔드 개발 환경에서는 적지 않게 사용할 기회를 만나게 됩니다. 최소한의 vim 사용법을 알려드리겠습니다.

 

vi {파일명 혹은 디렉터리명}을 사용해 진입할 수 있습니다.

 

$ vi test.txt

 

test.txt 파일이 있다면 text.txt 파일을 읽어서 화면에 보여주고 없다면 다음과 같이 빈 화면을 보여줍니다.

 

 

여기서 i, 혹은 a를 눌러서 편집 모드로 들어갈 수 있습니다.

 

 

편집 모드에서 “hello vim”을 적고 esc를 누르면 편집 모드가 종료되고 명령 모드로 변경됩니다.

 

 

명령모드에서 :wq 또는 :x를 입력하고 enter를 누르면 저장하고 vim을 빠져나오게 됩니다.

 

 

명령 모드에서 커서 이동은 h (왼쪽), j (아래), k (위), l (오른쪽) 키로 합니다. vim은 여기서 소개한 것보다 더 강력한 편집 도구입니다. 공들여 공부할 가치가 있으니 추가로 공부해두기 바랍니다.