본문 바로가기

IT&코딩/국비지원

리눅스 - 4 (실습)

728x90
반응형

■ 실습

 

[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

728x90
반응형

'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