■ 실습
[root@localhost ondal]# cd /home/ondal/eebang
[root@localhost eebang]# ls
[root@localhost eebang]# touch aa.txt
[root@localhost eebang]# vi aa.txt
[root@localhost eebang]# cd ..
[root@localhost ondal]# ls
[root@localhost ondal]# cp -r eebang imsi 디렉토리 복사
# cp -r eebang imsi
- eebang 안에 있는 모든 폴더 및 파일이 imsi 폴더가 생성되면서 복사된다.
- 즉 -r 하위 디렉토리까지 모두 복사
# cp의 기본형은 -i 옵션 즉, cp -i
- i는 overwrite 할지를 확인하는 옵션
# cp -b aa.txt bb.txt
ㄴ bb.txt의 백업파일인 bb.txt
cp -f
[root@localhost imsi]# mv aa.txt /hong/ondal
[root@localhost imsi]# mv bb.txt cc.txt
- rename의 기능을 한다.
■ 파일삭제, 디렉토리 삭제
rm cc.txt
디렉토리 삭제는?
eebang2에 kk.txt를 만들고eebang2를 지워보자
[root@localhost imsi]# cd eebang2
[root@localhost eebang2]# ls
[root@localhost eebang2]# touch kk.txt
[root@localhost eebang2]# cd..
삭제는 무조건 부모방에서
rmdir eebang2
rmdir: failed to remove `eebang2': 디렉터리가 비어있지 않음 하는 오류가 있다.
왜 오류가 나는가? eebang2 안에 파일이 있기 때문에
따라서
[root@localhost imsi]# cd eebang2
[root@localhost eebang2]# rm -f kk.txt
[root@localhost eebang2]# ls
[root@localhost eebang2]# cd ..
[root@localhost imsi]# rmdir eebang2
[root@localhost imsi]# ls
이런 식의 표현도 가능하다.
[root@localhost imsi]# rm bb.*
[root@localhost imsi]# rm *.txt
rm aaa.txt bbb.txt : 2개 파일 삭제
그럼 ondal로 폴더로 가서 폴더 내의 파일까지 삭제할 수 있을까?
[root@localhost imsi]# cd ..
[root@localhost ondal]# ls
aa.txt aabang bbbang ccbang eebang imsi room7
[root@localhost ondal]# rm -r imsi
rm: descend into directory `imsi'? n
삭제할 거냐는 질문없이 삭제하려면?
[root@localhost ondal]# rm -rf imsi
ㄴ -rf 옵션을 삭제 (디렉토리와 그 안의 파일을 삭제, 안 물어보고 삭제)
rm -r * : 모든 파일 물어보면서 삭제
[root@localhost ondal]# rm -r *
rm: remove 일반 파일 `aa.txt'? n
rm: remove 디렉토리 `aabang'? y
rm: remove 디렉토리 `bbbang'? y
rm: descend into directory `ccbang'? n
rm: descend into directory `eebang'? n
rm: descend into directory `room7'? n
[root@localhost ondal]# rm -f * // 디렉토리 말고 파일만 삭제
rm: cannot remove `ccbang': 디렉터리입니다
rm: cannot remove `eebang': 디렉터리입니다
rm: cannot remove `room7': 디렉터리입니다
- 파일을 지울 때는 -f
■ multi user, multi tasking
[root@localhost ondal]# mail ondal
Subject: 나라니까
리눅스 멋있지 온달아
EOT ctrl+ d 누르면 전송
이제 ondal로 접속
[root@localhost ondal]# su - ondal
[ondal@localhost ~]$ pwd
/home/ondal
[ondal@localhost ~]$ mail
보고 싶은 메일의 번호를 입력
종료는 q
이제 다시 root로
[ondal@localhost ~]$ su
[root@localhost ondal]# pwd
[root@localhost ondal]# cd
이제 원래 admin이 보내는 방식으로 해보자
[root@localhost ~]# wall
computer is closing
메시지 입력 후 ctrl + d
■ link(ln)
링크 명령에는 두 가지가 있다
□ 1. hard link
같은 파일 시스템일 때 i-node 공유, 원본 삭제도 가능 (파일복사와 유사)
i-node는 파일에서 고유의 number를 붙일 수 있는
이름이 달라도 i-node가 같으면 같은 파일
[root@localhost ~]# cd /home/ondal
[root@localhost ondal]# cat > aa.txt
love
[root@localhost ondal]# cat aa.txt
love
[root@localhost ondal]# ls -al aa.txt
-rw-r--r--. 1 root root 5 8월 7 21:58 aa.txt
aa.txt의 번호가 현재 1번
[root@localhost ondal]# ln aa.txt bb.txt
[root@localhost ondal]# ls -al *.txt
-rw-r--r--. 2 root root 5 8월 7 21:58 aa.txt
-rw-r--r--. 2 root root 5 8월 7 21:58 bb.txt
번호가 2번으로 같음
[root@localhost ondal]# ls -ali *.txt
37374851 -rw-r--r--. 2 root root 5 8월 7 21:58 aa.txt
37374851 -rw-r--r--. 2 root root 5 8월 7 21:58 bb.txt
view처럼 외부 사람에게 bb.txt의 권한을 주는 방식으로 사용 가능
하나가 수정되면 다른 것도 수정
하지만 하나가 삭제되면 다른 건 삭제되지 않는다.
[root@localhost ondal]# cat >> bb.txt
like
[root@localhost ondal]# cat bb.txt
love
like
[root@localhost ondal]# cat aa.txt
love
like
bb.txt를 지워도 aa.txt는 지워지지 않는다.
[root@localhost ondal]# rm bb.txt
rm: remove 일반 파일 `bb.txt'? y
[root@localhost ondal]# ls
aa.txt ccbang eebang room7
□ 2. hard link(symbolic link(sw link))
다른 파일 시스템일 때, 원본 삭제하면 안 됨. 파일 이름 공유 (바로가기와 유사)
/lib c언어 lib...a ==> 복잡한 경로에 있음
(cf) C언어 malloc(), free()
포인터 2개중 1개만 지운 경우
나머지 1개는 그냥 남아이는 포인터에 불과함
==> dangling pointer problem
[root@localhost ondal]# mkdir bang
[root@localhost ondal]# cd bang
[root@localhost bang]# mkdir bang2
[root@localhost bang]# cd bang2
[root@localhost bang2]# pwd
/home/ondal/bang/bang2
[root@localhost bang2]# cd ..
[root@localhost bang]# cd ..
[root@localhost ondal]# ls
aa.txt bang ccbang eebang room7
[root@localhost ondal]# ln -s bang/bang2 yoki
aa.txt bang ccbang eebang room7 yoki
[root@localhost ondal]# ls -al
합계 16
drwx------. 9 ondal ondal 186 8월 7 22:47 .
drwxr-xr-x. 3 root root 19 8월 3 17:41 ..
-rw-r--r--. 1 ondal ondal 18 4월 1 2020 .bash_logout
-rw-r--r--. 1 ondal ondal 193 4월 1 2020 .bash_profile
-rw-r--r--. 1 ondal ondal 231 4월 1 2020 .bashrc
drwxrwxr-x. 3 ondal ondal 18 8월 7 21:32 .cache
drwxrwxr-x. 3 ondal ondal 18 8월 7 21:32 .config
drwxr-xr-x. 4 ondal ondal 39 8월 3 17:33 .mozilla
-rw-r--r--. 1 root root 10 8월 7 22:05 aa.txt
drwxr-xr-x. 3 root root 19 8월 7 22:43 bang
drwxr-xr-x. 3 root root 21 8월 7 18:05 ccbang
drwxr-xr-x. 3 root root 35 8월 7 20:17 eebang
drwxr-xr-x. 2 root root 48 8월 7 17:16 room7
lrwxrwxrwx. 1 root root 10 8월 7 22:47 yoki -> bang/bang2
이제 yoki로 가서 파일을 만들고 bang2로 가서 확인해보자
[root@localhost ondal]# cd ..
[root@localhost home]# cd ..
[root@localhost /]# cd /home/ondal
[root@localhost ondal]# ls
aa.txt bang ccbang eebang room7 yoki
[root@localhost ondal]# cd ./bang/bang2
[root@localhost bang2]# pwd
/home/ondal/bang/bang2
[root@localhost bang2]# cd ..
[root@localhost bang]# cd ..
[root@localhost ondal]# cd yoki
[root@localhost yoki]# pwd
/home/ondal/yoki
[root@localhost yoki]# ls -al
합계 0
drwxr-xr-x. 2 root root 6 8월 7 22:43 .
drwxr-xr-x. 3 root root 19 8월 7 22:43 ..
[root@localhost yoki]# touch pp.txt
[root@localhost yoki]# cd ..
[root@localhost ondal]# cd ..
[root@localhost home]# cd ondal
[root@localhost ondal]# pwd
/home/ondal
[root@localhost ondal]# cd bang
[root@localhost bang]# cd bang2
[root@localhost bang2]# ls
pp.txt
□ su
su - ondal (위치도 바뀌고 권한도 바뀜)
[root@localhost /]# cd root
[root@localhost ~]# pwd
/root
[root@localhost ~]# su ondal
[ondal@localhost root]$ pwd
/root
[ondal@localhost root]$ su - root
[root@localhost ~]# pwd
/root
[root@localhost ~]# su - ondal
[ondal@localhost ~]$ pwd
/home/ondal
[ondal@localhost ~]$ touch gg.txt
[ondal@localhost ~]$ ls -al *.txt
-rw-r--r--. 1 root root 10 8월 7 22:05 aa.txt
-rw-rw-r--. 1 ondal ondal 0 8월 7 23:03 gg.txt
* 파일권한
r : read
w : write
x : execution
* 디렉토리 권한
r : read
w : write
x : execution ==> access 권한
rwx rwx rwx
1 2 3
1 : 나
2 : 내가 속한 그룹
3 : other 그룹
□ umask
[ondal@localhost ~]$ umask
0002
[ondal@localhost ~]$ touch yy.txt
[ondal@localhost ~]$ ls -l yy.txt
-rw-rw-r--. 1 ondal ondal 0 8월 7 23:48 yy.txt
[ondal@localhost ~]$ touch tt.txt
[ondal@localhost ~]$ ls -l tt.txt
-rw-rw-r--. 1 ondal ondal 0 8월 7 23:48 tt.txt
디렉토리 777
파일 666
421 421 421
rwx rwx rwx
(1) 파일권한을 줄 때
6 6 6
rw- rw- rw- (x : 실행)
(2) 디렉토리 권한을 줄 때
7 7 7
rwx rwx rwx (x: 접근)
파일을 만들어보니
rw- rw- r-- 나온 이유는 umask 때문
umask 값이 2
이 경우에 파일 권한은 다음처럼 결정된다
666
- 2
----------------
664
디렉토리를 만들어보니
mkdir room1
[ondal@localhost ~]$ ls -dl room1
drwxrwxr-x. 2 ondal ondal 6 8월 7 23:59 room1
rwx rwx r-x
7 7 5
777
- 2
----------------
775
775, 664 ==> mode, mode를 변경하는 문법은 chmod
chmod 777 yy.txt
==> counter
□ 압축 관련
2진수 01 10 11 100
8진수 0 1 2 ... 5 6 7 10 11
10진수 0 1 2 ...9 10 11
16진수 0 1 2 ... 9 A B C D E F 10
압축원리
414243AAAAAC5c6bbbbb
==> 414243A6C5c6b5 중복되는수만큼 숫자로바꿈
유닉스, 리눅스
2단계로 압축
ㄴ 묶음 + 압축 ===> 압축풀고 + 묶음풀고
421
rwx rwx rwx
ㄴuser(u) ㄴgroup(g) ㄴother(o)
chmod u+x, g+x, o+x aa.txt
'IT&코딩 > 국비지원' 카테고리의 다른 글
빅데이터 - 2 (하둡 & winscp) (0) | 2023.08.17 |
---|---|
빅데이터 - 1 (0) | 2023.08.17 |
리눅스 - 3 (tera term 사용) (0) | 2023.08.17 |
리눅스 - 1 (centos, 설치) (0) | 2023.08.16 |
JDBC (0) | 2023.08.09 |