컬쥐네 다락방

리눅스 기본 명령어 본문

클라우드/리눅스

리눅스 기본 명령어

코딩하는 갱얼쥐 2022. 2. 15. 00:15

VMware workstation을 사용해서 리눅스 환경 구축.

리눅스 터미널에는 GUI와 가상 콘솔이 5개가 존재한다.

Alt + F1 은 초기화면

Alt + F2 는 GUI 화면

여기서 가상 콘솔로 진입하기 위해서는 Alt + Ctl + F3을 눌러주면 된다.

가상 콘솔은 F3 ~ F7까지 있다. (F7은 따로 개인 설정을 해주면 사용 가능)

su (Switching user) 명령어를 사용하면 사용자를 바꿔줄 수 있다. ex) su - , su - user

id 명령어를 사용하면 자신이 현재 사용중인 id 정보가 나온다.

ip a 아이피 주소 조회

systemctl restart firewalld : 방화벽 설정을 건드려서 작동을 막는다.

 

윈도우 터미널에서 ssh root@ ip주소에서 조회한 2번 ens160에 있는 연결된 ip주소를 입력하면 윈도우 터미널에서 가상화 터미널로 접속해서 편하게 작업할 수 있다.

 

리눅스 기초 명령어

디렉토리 명령어

cd 

- 절대경로

- 기준은 "/"  (루트라고 읽는다)

- / -> 루트 디렉토리

- root -> 루트 사용자

- /root -> 루트 사용자의 홈 디렉토리

[root@localhost ~]# cd /etc/rc.d/init.d

pwd

pwd는 현재 위치한 경로를 절대 경로로 보여주는 명령어

[root@localhost init.d]# pwd 
/etc/rc.d/init.d

 - 상대경로

- 기준은 현재 자신이 위치한 디렉토리

. 현재 디렉토리

.. 상위 디렉토리

모든 디렉토리는 자신과 상위 디렉토리를 가리킨다.

[root@localhost init.d]# pwd
/etc/rc.d/init.d
[root@localhost init.d]# cd ../../rc3.d
[root@localhost rc3.d]# pwd
/etc/rc3.d

 

 - 특수문자

cd - : 방금전 디렉토리로 이동

[root@localhost rc3.d]# pwd
/etc/rc3.d
[root@localhost rc3.d]# cd -
/etc/rc.d/init.d
[root@localhost init.d]#
[root@localhost init.d]# cd -
/etc/rc3.d
[root@localhost rc3.d]#

 

cd~ : 현재 로그인한 사용자의 홈 디렉토리 또는 지정된 사용자 홈 디렉토리로 이동한다

주의사항 :  cd 만 처야 하고 이 명령은 오직 현재 로그인한 사용자의 홈디렉토리로 이동만 가능하다

[root@localhost rc3.d]# cd    (현재 로그인 사용자의 홈디렉토리로 이동)
[root@localhost ~]# pwd
/root     <- root 사용자의 홈디렉토리      root의 홈디렉토리 라고 읽는다.

 

cd ~사용자명 (~ 뒤에는 공백이 없음)

[root@localhost ~]# cd ~user    
[root@localhost user]# pwd
/home/user

 

ls 명령어

 -옵션 -l -a -i -F -R -d -t(lt,lct,lut)

[root@localhost ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  공개  다운로드  문서  바탕화면  비디오  사진  서식  음악
[root@localhost ~]# ls -a
.              .bash_history  .bashrc  .cshrc     .local    .tcshrc               공개      바탕화면  서식
..             .bash_logout   .cache   .dbus      .mozilla  anaconda-ks.cfg       다운로드  비디오    음악
.ICEauthority  .bash_profile  .config  .esd_auth  .pki      initial-setup-ks.cfg  문서      사진
[root@localhost ~]# ls -l
합계 8
-rw-------. 1 root root 1220  2월 14 07:02 anaconda-ks.cfg
-rw-r--r--. 1 root root 1447  2월 14 07:12 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6  2월 14 07:16 공개
drwxr-xr-x. 2 root root    6  2월 14 07:16 다운로드
drwxr-xr-x. 2 root root    6  2월 14 07:16 문서
drwxr-xr-x. 2 root root    6  2월 14 07:16 바탕화면
drwxr-xr-x. 2 root root    6  2월 14 07:16 비디오
drwxr-xr-x. 2 root root    6  2월 14 07:16 사진
drwxr-xr-x. 2 root root    6  2월 14 07:16 서식
drwxr-xr-x. 2 root root    6  2월 14 07:16 음악

[root@localhost ~]# ls -i    inode 정보 확인
 67157636 anaconda-ks.cfg        67934731 공개      103208654 문서       67934746 비디오   34268744 서식
 67934214 initial-setup-ks.cfg    2433200 다운로드  103208642 바탕화면   34268745 사진      2433204 음악

[root@localhost ~]# ls -F    속성 확인
anaconda-ks.cfg  initial-setup-ks.cfg  공개/  다운로드/  문서/  바탕화면/  비디오/  사진/  서식/  음악/
[root@localhost ~]#

[root@localhost ~]# ls -l /root
합계 8
-rw-------. 1 root root 1220  2월 14 07:02 anaconda-ks.cfg
-rw-r--r--. 1 root root 1447  2월 14 07:12 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6  2월 14 07:16 공개
drwxr-xr-x. 2 root root    6  2월 14 07:16 다운로드
drwxr-xr-x. 2 root root    6  2월 14 07:16 문서
drwxr-xr-x. 2 root root    6  2월 14 07:16 바탕화면
drwxr-xr-x. 2 root root    6  2월 14 07:16 비디오
drwxr-xr-x. 2 root root    6  2월 14 07:16 사진
drwxr-xr-x. 2 root root    6  2월 14 07:16 서식
drwxr-xr-x. 2 root root    6  2월 14 07:16 음악
[root@localhost ~]# ls -ld /root
dr-xr-x---. 16 root root 4096  2월 14 09:58 /root

[root@localhost ~]# ls -lR /root
/root:
합계 8
-rw-------. 1 root root 1220  2월 14 07:02 anaconda-ks.cfg
-rw-r--r--. 1 root root 1447  2월 14 07:12 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6  2월 14 07:16 공개
drwxr-xr-x. 2 root root    6  2월 14 07:16 다운로드
drwxr-xr-x. 2 root root    6  2월 14 07:16 문서
drwxr-xr-x. 2 root root    6  2월 14 07:16 바탕화면
drwxr-xr-x. 2 root root    6  2월 14 07:16 비디오
drwxr-xr-x. 2 root root    6  2월 14 07:16 사진
drwxr-xr-x. 2 root root    6  2월 14 07:16 서식
drwxr-xr-x. 2 root root    6  2월 14 07:16 음악

/root/공개:
합계 0

/root/다운로드:
합계 0

/root/문서:
합계 0

/root/바탕화면:
합계 0

/root/비디오:
합계 0

/root/사진:
합계 0

/root/서식:
합계 0

/root/음악:
합계 0
-rw-------. 1 root root 1220  2월 14 07:02 anaconda-ks.cfg
==========================================================
- 속성  - 파일, d 디렉토리 l 심볼릭링크 c 케릭터 파일 b 블록파일 
 rw-------   소유자 , 그룹, other 가 가지는 이 파일 (또는 디렉토리)에서의 권한  rw- ,---, ---
	  .  파일(또는 디렉토리)에 ACL(access control list) 가 성언되어있는지 유무 표현 .은 선언되지 않음을 나타냄
	    1 링크 카운트  ( 파일의 default 링크카운트는 1  디렉토리의 default 링크카운트는 2)
		 root root  소유자  그룹 을 나타냄  이름이 같지만 다른 정보 
		         1220   크기를 나타냄 현재는 byte 단위로 표기 
			     2월 14 07:02  시간을 나타냄  ls -l 명령어 뒤에 기본적으로 t 생략됨  수정시간을 나타냄 
				  ls -lt  Modify time
				  ls -lut Access time
				  ls -lct Change time
				  보통   이걸 줄여서 mac TIME 이라함
					anaconda-ks.cfg   파일 또는 디렉토리 이름

 

파일을 보기 위한 명령어

  : cat more less head tail grep ( grep fgrep egrep )

cat

[root@localhost ~]# file /etc/passwd
/etc/passwd: ASCII text <-----
[root@localhost ~]# cat /etc/passwd   -> 파일 내용을 출력
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

[root@localhost ~]# file /etc
/etc: directory     <------
[root@localhost ~]# cat /etc   -> 디렉터리는 출력 불가능
cat: /etc: 디렉터리입니다  
[root@localhost ~]# file /var/run/utmp
/var/run/utmp: firmware 0 v0 (revision 0)   V2, 0 bytes or less, UNKNOWN2 0x38365f36, at 0x0 0 bytes , at 0x0 0 bytes   <---- data format 
[root@localhost ~]# cat /var/run/utmp
~~~reboot4.18.0-240.el8.x86_64�G
5~~~runlevel4.18.0-240.el8.x86_64H
b�9�tty2roottty2!H
bzp�
    tty3tty3user�
                 K
tty4tty4root;
K
b�9tty5tty5LOGIN~K
bw�
   tty6tty6rootL
be�
   fpts/1ts/1root192.168.209.1�n
b����[root@localhost ~]#
[root@localhost ~]# cat -n /etc/passwd   -> -n을 붙이면 라인 번호를 붙여준다
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
	...............

more

파일 내용을 확인하는 명령어. 파일을 읽어 화면에 화면 단위로 끊어서 출력해준다.

위에서 아래 방향으로만 출력되기 때문에 지나간 내용은 볼 수 없다.

보고 있는 화면을 종료하기 위해서는 q를 눌러준다

[root@localhost ~]# more /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync

[root@localhost ~]# more /etc

*** /etc: directory ***

less

more와 다르게 파일과 디렉토리를 모두 볼 수 있지만 more에 비해서 무겁고 오류가 생길 수 있다.

명령의 결과를 다른 변수에 담아서 처리하는 형태의 프로그래밍 경우에는 오류가 더 발생할 가능성이 높음.

more는 위에서 아래 방향으로만 출력되어 지나간 내용을 볼 수 없지만, less는 한 번에 보여지는 만큼만 읽어서 출력하기 때문에 대용량의 파일을 열어 볼 때 빠르게 사용가능하다.

[root@localhost ~]# less /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
.............

[root@localhost ~]# less /root     

합계 44
dr-xr-x---. 16 root root 4096  2월 14 09:58 ./
dr-xr-xr-x. 17 root root  224  2월 14 06:45 ../
-rw-------.  1 root root  310  2월 14 07:16 .ICEauthority
-rw-------.  1 root root  109  2월 14 09:58 .bash_history
-rw-r--r--.  1 root root   18  5월 11  2019 .bash_logout
-rw-r--r--.  1 root root  176  5월 11  2019 .bash_profile
-rw-r--r--.  1 root root  176  5월 11  2019 .bashrc
drwx------. 11 root root  245  2월 14 07:36 .cache/
drwx------. 11 root root  215  2월 14 07:17 .config/
-rw-r--r--.  1 root root  100  5월 11  2019 .cshrc
drwx------.  3 root root   25  2월 14 07:11 .dbus/
-rw-------.  1 root root   16  2월 14 07:16 .esd_auth
drwx------.  3 root root   19  2월 14 07:16 .local/
drwx------.  5 root root   66  2월 14 07:36 .mozilla/
drwxr-----.  3 root root   19  2월 14 07:16 .pki/                    
-rw-r--r--.  1 root root  129  5월 11  2019 .tcshrc
-rw-------.  1 root root 1220  2월 14 07:02 anaconda-ks.cfg
-rw-r--r--.  1 root root 1447  2월 14 07:12 initial-setup-ks.cfg
drwxr-xr-x.  2 root root    6  2월 14 07:16 공개/
drwxr-xr-x.  2 root root    6  2월 14 07:16 다운로드/
drwxr-xr-x.  2 root root    6  2월 14 07:16 문서/
drwxr-xr-x.  2 root root    6  2월 14 07:16 바탕화면/
drwxr-xr-x.  2 root root    6  2월 14 07:16 비디오/
drwxr-xr-x.  2 root root    6  2월 14 07:16 사진/
drwxr-xr-x.  2 root root    6  2월 14 07:16 서식/
drwxr-xr-x.  2 root root    6  2월 14 07:16 음악/

pipeline 이라고 말하며 앞에 선행 프로세스 결과를 후행 프로세스의 입력으로 넣어준다.

[root@localhost ~]# ls -al /etc | more
합계 1376
drwxr-xr-x. 139 root root      8192  2월 14 09:11 .
dr-xr-xr-x.  17 root root       224  2월 14 06:45 ..
-rw-------.   1 root root         0  2월 14 06:47 .pwd.lock
-rw-r--r--.   1 root root       208  2월 14 06:45 .updated
-rw-r--r--.   1 root root      4536  4월 26  2020 DIR_COLORS

head 명령어

기본은 10줄로 설정된다.

위에서부터 설정한 라인만큼 출력하는 기능

[root@localhost ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@localhost ~]# cat -n /etc/passwd | head -5
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

tail 명령어

head와 마찬가지로 기본은 10줄로 설정된다.

아래에서부터 설정한 라인만큼 출력한다.

[root@localhost ~]# tail -5 /etc/passwd
gnome-initial-setup:x:976:975::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:975:974:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
user:x:1000:1000:user:/home/user:/bin/bash
[root@localhost ~]# cat -n /etc/passwd | tail -5
    43  gnome-initial-setup:x:976:975::/run/gnome-initial-setup/:/sbin/nologin
    44  sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    45  rngd:x:975:974:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
    46  tcpdump:x:72:72::/:/sbin/nologin
    47  user:x:1000:1000:user:/home/user:/bin/bash

[root@localhost ~]# tail -n +41 /etc/passwd
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
clevis:x:977:976:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/sbin/nologin
gnome-initial-setup:x:976:975::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:975:974:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
user:x:1000:1000:user:/home/user:/bin/bash
[root@localhost ~]# cat -n /etc/passwd | tail -n +41
    41  gdm:x:42:42::/var/lib/gdm:/sbin/nologin
    42  clevis:x:977:976:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/sbin/nologin
    43  gnome-initial-setup:x:976:975::/run/gnome-initial-setup/:/sbin/nologin
    44  sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    45  rngd:x:975:974:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
    46  tcpdump:x:72:72::/:/sbin/nologin
    47  user:x:1000:1000:user:/home/user:/bin/bash

파이프 라인을 이용해서 /etc/passwd 가 47라인으로 구성되어있을 때 10번째부터 20번째 라인까지만 출력하는 방법은 다음과 같다.

cat -n /etc/passwd | head -n +20 | tail -n +10 

물론 이외에도 다양한 방식이 있음.

 

여기서 tail 명령어와 출력을 계속 유지하는 -f 명령어를 합쳐서 시스템 log 파일을 모니터링 할 수 있다.

[root@localhost ~]# tail -f -n 5 /var/log/messages
Feb 14 12:38:43 localhost systemd[1]: firewalld.service: Succeeded.
Feb 14 12:38:43 localhost systemd[1]: Stopped firewalld - dynamic firewall daemon.
Feb 14 12:38:43 localhost systemd[1]: Starting firewalld - dynamic firewall daemon...
Feb 14 12:38:44 localhost systemd[1]: Started firewalld - dynamic firewall daemon.
Feb 14 12:38:44 localhost firewalld[9200]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider disabling it now.

grep 명령어

원하는 단어가 들어간 파일을 찾아낼 수 있다.

grep root 라고 검색하면 root라는 단어가 들어간 모든 라인을 찾아주고 grep ^root 혹은 root$ 명령어로 맨 앞에 root가 오는 라인을 찾거나 맨 뒤에 붙는 라인만 찾기도 가능하다.

 

 

[root@localhost ~]# grep --help
	-l -i -v -c -n
[root@localhost ~]# grep  root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# grep bash$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
user:x:1000:1000:user:/home/user:/bin/bash
[root@localhost ~]# grep  root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# grep bash$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
user:x:1000:1000:user:/home/user:/bin/bash\

[root@localhost ~]# grep -l root /etc/passwd
/etc/passwd
[root@localhost ~]# grep -l umask /etc/*  2> /dev/null  (밑에 나오겠지만 umask가 들어간 라인을 모두 찾아주고, 에러가 나면 /dev/null로 보내라는 명령어)
/etc/bashrc
/etc/csh.cshrc
/etc/login.defs
/etc/profile
[root@localhost ~]#

[root@localhost ~]# grep ROOT /etc/passwd
[root@localhost ~]# grep -i ROOT /etc/passwd  i를 붙여주면 대,소문자를 구분하지 않고 찾아준다.
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
[root@localhost ~]# grep -c root /etc/passwd  c : 카운트
2
[root@localhost ~]#
[root@localhost ~]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin


[root@localhost ~]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]# grep -n root /etc/passwd  | grep -v bash
10:operator:x:11:0:operator:/root:/sbin/nologin

파일과 디렉토리 관련 명령어

 

[root@localhost ~]# touch aaa
[root@localhost ~]# ls -l aaa
-rw-r--r--. 1 root root 0  2월 14 12:07 aaa
[root@localhost ~]# date
2022. 02. 14. (월) 12:07:41 EST

[root@localhost ~]# date
2022. 02. 14. (월) 12:08:01 EST
[root@localhost ~]#
[root@localhost ~]# ls -l aaa
-rw-r--r--. 1 root root 0  2월 14 12:07 aaa
[root@localhost ~]# date
2022. 02. 14. (월) 12:08:32 EST
[root@localhost ~]# touch aaa      <--- 기존에 존재하는 파일 또는 디렉토리를 touch 하면 현재 시간으로 동기화 해줌
[root@localhost ~]# ls -lt aaa
-rw-r--r--. 1 root root 0  2월 14 12:08 aaa
[root@localhost ~]# ls -lut aaa
-rw-r--r--. 1 root root 0  2월 14 12:08 aaa
[root@localhost ~]# ls -lct aaa
-rw-r--r--. 1 root root 0  2월 14 12:08 aaa

###  > , >> 를 이용한 파일 생성

[root@localhost ~]# echo hi
hi
[root@localhost ~]# echo hi > bbb
[root@localhost ~]# cat bbb
hi
[root@localhost ~]# echo haha > bbb
[root@localhost ~]# cat bbb
haha
[root@localhost ~]#
[root@localhost ~]# echo hi >> ccc
[root@localhost ~]# cat ccc
hi
[root@localhost ~]# echo haha >> ccc
[root@localhost ~]# cat ccc
hi
haha
[root@localhost ~]#

여기서 echo hi를 쳤을 때 hi가 출력되는 이유는 현재 터미널 화면이 기본 출력 장치로 설정되어 있기 때문.
> 를 이용해서 출력되는 대상을 설정해주면 그 파일로 내용이 들어간다.

여기서 > >> 를 이해하고 넘어가야 한다.

>는 출력을 의미하는데, echo hi > bbb 는 hi를 bbb에 출력해라 라는 의미다.

만약 bbb에 다른 내용이 있더라도 덮어쓰기 기능을 수행한다.

덮어쓰는 것을 방지하려면 >> 을 사용해서 기존 내용 밑에 붙여줘야한다.

[참고 - > , >>    0 표준 입력 1 표준 출력 2 표준에러  fd 이해]

	2>&1
	0< 표준 입력
	1> 표준 출력
	2> 표준 에러      ex) gre /etc/* | grep root
		[root@localhost ~]# grep -l umask   /etc/*
		grep: /etc/NetworkManager: 디렉터리입니다
		grep: /etc/PackageKit: 디렉터리입니다
		grep: /etc/UPower: 디렉터리입니다
		grep: /etc/X11: 디렉터리입니다
		
	[root@localhost ~]# grep -l umask   /etc/*   2> /dev/null
	/etc/bashrc
	/etc/csh.cshrc
	/etc/login.defs
	/etc/profile

디렉토리 생성

 

mkdir 

[root@localhost ~]# mkdir kbs
[root@localhost ~]# ls -ld kbs   -> ls -ld 로 생성된 kbs 디렉토리를 확인 가능
drwxr-xr-x. 2 root root 6  2월 14 19:34 kbs
[root@localhost ~]# ls -la kbs
합계 4
drwxr-xr-x.  2 root root    6  2월 14 19:34 .
dr-xr-x---. 17 root root 4096  2월 14 19:34 ..
[root@localhost ~]#
[root@localhost ~]# mkdir kbs/mbc/sbs   -> 중간 경로가 없기에 생성 불가
mkdir: `kbs/mbc/sbs' 디렉토리를 만들 수 없습니다: 그런 파일이나 디렉터리가 없습니다
[root@localhost ~]# mkdir -p kbs/mbc/sbs   ->  p 옵션을 통해 경로에 없으면 생성할 수 있다.
[root@localhost ~]# ls -ld kbs
drwxr-xr-x. 3 root root 17  2월 14 19:35 kbs
[root@localhost ~]# ls -R kbs  -> ls -R 옵션은 하위 경로와 그 안에 있는 파일을 나열하는 옵션
kbs:
mbc

kbs/mbc:
sbs

kbs/mbc/sbs:
[root@localhost ~]# touch kbs/aaa
[root@localhost ~]# ls -ld kbs
drwxr-xr-x. 3 root root 28  2월 14 19:37 kbs
[root@localhost ~]# mkdir kbs/jtbc   -> 하위 디렉토리가 생기면 링크 카운트가 1 올라가는 것을 볼 수 있다.
[root@localhost ~]# ls -ld kbs
drwxr-xr-x. 4 root root 40  2월 14 19:38 kbs
[root@localhost ~]# mkdir kbs/mbc/ebs
[root@localhost ~]# ls -ld kbs
drwxr-xr-x. 4 root root 40  2월 14 19:38 kbs
[root@localhost ~]#

하위 디렉토리 당 링크 카운트가 1씩 올라가고, 처음 디렉토리를 만들었을 때 ls -la로 확인할 수 있듯 . 과 .. 이 기본 사항이기에 링크 카운트 -2 로 해당 디렉토리의 하위 디렉토리 개수를 확인할 수 있다.

디렉토리와 다르게 파일의 링크  카운트는 하드 링크를 통해 증가한다.

[root@localhost ~]# cp /etc/passwd aaa  -> cp 명령어를 이용해 /etc/passwd를 aaa로 복사
cp: overwrite 'aaa'? y
[root@localhost ~]# ls -il /etc/passwd aaa
35173065 -rw-r--r--. 1 root root 2658  2월 14 07:13 /etc/passwd
67934757 -rw-r--r--. 1 root root 2658  2월 14 19:53 aaa
[root@localhost ~]# diff /etc/passwd aaa
[root@localhost ~]# sha256sum /etc/passwd  -> 복사한 다음이라서 해쉬값이 현재 동일하다.
1c880794d3054d08e2026223851a08a60bb7d0adac341cf49d6a70a704b9c014  /etc/passwd
[root@localhost ~]# sha256sum aaa
1c880794d3054d08e2026223851a08a60bb7d0adac341cf49d6a70a704b9c014  aaa
[root@localhost ~]# ln aaa bbb  -> 링크 연결
[root@localhost ~]# ls -il aaa bbb /etc/passwd
35173065 -rw-r--r--. 1 root root 2658  2월 14 07:13 /etc/passwd
67934757 -rw-r--r--. 2 root root 2658  2월 14 19:53 aaa  -> bbb와 링크가 되면서 링크 카운트 1증가
67934757 -rw-r--r--. 2 root root 2658  2월 14 19:53 bbb  ->inode가 같다
[root@localhost ~]# ln aaa /tmp/bbb
[root@localhost ~]# ls -il aaa bbb /tmp/bbb  -> /tmp/bbb와 aaa가 링크되면서 모두 연결되어 3으로 보인다.
67934757 -rw-r--r--. 3 root root 2658  2월 14 19:53 /tmp/bbb  -> inode도 변화
67934757 -rw-r--r--. 3 root root 2658  2월 14 19:53 aaa
67934757 -rw-r--r--. 3 root root 2658  2월 14 19:53 bbb
[root@localhost ~]# rm -f ccc
[root@localhost ~]# ln -s aaa ccc  -> 심볼릭 링크
[root@localhost ~]# ls -il aaa ccc
67934757 -rw-r--r--. 3 root root 2658  2월 14 19:53 aaa
67934266 lrwxrwxrwx. 1 root root    3  2월 14 20:09 ccc -> aaa  -> 링크 카운트는 증가하지 않는다.
[root@localhost ~]#
[root@localhost ~]# ln kbs ebs  -> 디렉토리는 하드링크 불가능
ln: kbs: 디렉토리는 하드링크할 수 없습니다
[root@localhost ~]# ln -s kbs kbs2
[root@localhost ~]# ls -ild kbs kbs2
68430440 drwxr-xr-x. 5 root root 52  2월 14 19:43 kbs
68430426 lrwxrwxrwx. 1 root root  3  2월 14 20:10 kbs2 -> kbs

심볼릭 링크

심볼릭 링크는 특정 파일 또는 디렉토리를 가리키고 있는 포인터이다.(윈도우의 바로가기와 유사)

다른이름으로 파일을 만들고 원본파일로 들어간다. 용량사이즈가 증가하며 링크카운트가 증가하지 않는다.

 

하드링크는 다른 파티션과 링크를 걸 수 없고 심볼릭 링크는 다른 파티션과 링크를 걸 수 있어서

심볼릭 링크를 주로 사용한다.

 

cp 

복사 명령어

[root@localhost ~]# cp aaa  eee
[root@localhost ~]# ls -il aaa eee
67934757 -rw-r--r--. 3 root root 2658  2월 14 19:53 aaa
68430443 -rw-r--r--. 1 root root 2658  2월 14 20:37 eee

mv

이동 명령어

[root@localhost ~]# mv  aaa kbs/mbc/
[root@localhost ~]# ls -l aaa
ls: cannot access 'aaa': 그런 파일이나 디렉터리가 없습니다
[root@localhost ~]# ls -l kbs/mbc/aaa
-rw-r--r--. 3 root root 2658  2월 14 19:53 kbs/mbc/aaa
[root@localhost ~]# ls -ld mbc
drwxr-xr-x. 5 root root 52  2월 14 20:38 mbc
[root@localhost ~]# mv mbc /tmp
[root@localhost ~]# ls -ld mbc
ls: cannot access 'mbc': 그런 파일이나 디렉터리가 없습니다
[root@localhost ~]# ls -ld /tmp/mbc
drwxr-xr-x. 5 root root 52  2월 14 20:38 /tmp/mbc
[root@localhost ~]# mv aaa jjj   <---  같은디렉토리에서 mv 는 결과적으로 이름 변경과 같다.
[root@localhost ~]# ls -il aaa
ls: cannot access 'aaa': 그런 파일이나 디렉터리가 없습니다
[root@localhost ~]# ls -il jjj
67934757 -rw-r--r--. 3 root root 2658  2월 14 19:53 jjj

rm

삭제 명령어 

일반적으로 rm 은 rm -i 를 뜻한다. -i가 자동으로 붙어서 실행된다.

rmdir 

디렉토리 삭제 

rm -f 

일반적으로 rm [파일이름] 을 사용하면 삭제할건지 한 번 더 물어보는데 -f를 붙이면 그냥 삭제된다.

-> 항상 사용시 조심해야한다. 어떤 파일을 실수로 날려먹을지 모른다!

 

하드링크 파일 찾기

[root@localhost ~]# ln aaa bbb
[root@localhost ~]# ls -il aaa bbb
68430434 -rw-r--r--. 2 root root 2658  2월 15 00:42 aaa
68430434 -rw-r--r--. 2 root root 2658  2월 15 00:42 bbb
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# find / -inum 68430434 -ls        <--- inode를 이용해서 찾는 방법
 68430434      4 -rw-r--r--   2  root     root         2658  2월 15 00:42 /root/aaa
 68430434      4 -rw-r--r--   2  root     root         2658  2월 15 00:42 /root/bbb
[root@localhost ~]#

[root@localhost ~]# find / -samefile  aaa  -ls  2> /dev/null       <------  samefile 옵션을 이용해서 찾는 방법
 68430434      4 -rw-r--r--   2  root     root         2658  2월 15 00:42 /root/aaa
 68430434      4 -rw-r--r--   2  root     root         2658  2월 15 00:42 /root/bbb

'클라우드 > 리눅스' 카테고리의 다른 글

작업 예약 - cron  (0) 2022.02.24
vi 에디터 명령어  (0) 2022.02.21
파일 입출력 명령어  (0) 2022.02.18
리눅스 시스템 명령어  (0) 2022.02.16
vi 편집기 명령어 간단 정리  (0) 2021.10.26
Comments