컬쥐네 다락방
리눅스 기본 명령어 본문
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 |