[네이버클라우드캠프] - 3일차 (파일분류 및 CLI 정리)

holy one·2023년 4월 26일
0

파일분류하기

  • 리눅스 운영체제는 모든 것을 (일반, 특수) 파일로 인식하고 처리한다.

  • file : file type 정의하는 명령어

  • 파일의 종류

이름설명
ddirectory
-file
lsoft(symbolic) link
ccharcter device
bblock device
ssocket
pnamepipe

일반 파일과 특수 파일 종류

일반특수
Text, binaryDirectory, Block 형 / Char 형 (장치 파일에 따라)
  1. directory
1.
j15@ace:~/d3$ file d300
d300: directory

2.
j15@ace:~/d3$ file /
/: directory

3.
j15@ace:~/d3$ file /etc/
/etc/: directory

4.
j15@ace:~/d3$ file /tmp/
/tmp/: sticky, directory

5.
j15@ace:~/d3$ ll
합계 64
drwxrwxr-x 2 j15 j15  4096  4월 26 10:04 ./
drwxr-x--- 8 j15 j15  4096  4월 26 10:04 ../
  1. file
1. - type으로 file 찾기
j15@ace:~/d3$ find /dev/httpd -type f -exec ls -al {} \; 2>/dev/null

2.
  1. soft(symbolic) link
1. - type으로 link 찾기
j15@ace:~/d3$ find /run -type s -exec ls -al {} \; 2>/dev/null
srw-rw---- 1 smmta smmta 0  4월 26 09:20 /run/sendmail/mta/smcontrol
,,,
srw------- 1 j15 j15 0  4월 26 09:25 /run/user/1016/gnupg/S.gpg-agent

2.
15@ace:~/d3$ file /etc/vtrgb
/etc/vtrgb: symbolic link to /etc/alternatives/vtrgb
  1. charcter device
1.
j15@ace:~/d3$ file /dev/tty
/dev/tty: character special (5/0)

2.
j15@ace:~/d3$ ls -l /dev/tty
crw-rw-rw- 1 root tty 5, 0  4월 26 09:57 /dev/tty			- 앞자리(c) 확인	
  1. block device
1.
j15@ace:~/d3$ file /dev/sr0
/dev/sr0: block special (11/0)

2. - ls로 block type 찾기
j15@ace:~/d3$ ls -l /dev/sr0
brw-rw---- 1 root cdrom 11, 0  4월 26 09:19 /dev/sr0		- 앞자리(b) 확인	
  1. socket
1.
j15@ace:~/d3$ file /run/systemd/journal/dev-log
/run/systemd/journal/dev-log: socket

2. - type으로 socket 찾기
j15@ace:~/d3$ find /run -type s -exec ls -AlF {} \; 2>/dev/null
srw-rw---- 1 smmta smmta 0  4월 26 09:20 /run/sendmail/mta/smcontrol=
srwxrwxrwx 1 mysql mysql 0  4월 26 09:19 /run/mysqld/mysqld.sock=
srwxrwxrwx 1 mysql mysql 0  4월 26 09:19 /run/mysqld/mysqlx.sock=
srw-rw-rw- 1 root root 0  4월 26 09:19 /run/uuidd/request=
,,,
s--------- 1 root root 0  4월 26 09:19 /run/systemd/inaccessible/sock=
srw------- 1 root root 0  4월 26 09:19 /run/udev/control=	-앞자리(s) 확인	

  1. pipe
1.
j15@ace:~/d3$ file /run/systemd/sessions/119.ref
/run/systemd/sessions/119.ref: fifo (named pipe)

2. - type으로 pipe 찾기
j15@ace:~/d3$ find /run -type p -exec ls -AlF {} \; 2>/dev/null
p--------- 1 j15 j15 0  4월 26 09:25 /run/user/1016/systemd/inaccessible/fifo|
,,,															-앞자리(p) 확인	
prw------- 1 root root 0  4월 26 10:01 /run/systemd/sessions/100.ref|

j15@ace:~/d3$ find /run -type p -exec ls -AlF {} \; 2>/dev/null
p--------- 1 j15 j15 0  4월 26 09:25 /run/user/1016/systemd/inaccessible/fifo|
,,,
prw------- 1 root root 0  4월 26 10:01 /run/systemd/sessions/102.ref|
prw------- 1 root root 0  4월 26 10:01 /run/systemd/sessions/101.ref|
prw------- 1 root root 0  4월 26 10:01 /run/systemd/sessions/100.ref|

3.
j15@ace:~/d3$ mkfifo aa			- aa(named) pipe 생성 
j15@ace:~/d3$ file aa
aa: fifo (named pipe)
  1. 일반/특수 파일
j15@ace:~/d3$ file b.c
b.c: C source, Unicode text, UTF-8 text
  • 링크파일
Hardsoft
하나의 파일에 별칭 부여 = alias원본파일에 대해 위치정보 가짐
c++의 reference와 같은 개념window의 바로가기 아이콘와 같은 개념
= symbolic link
j15@ace:~/d3$ b			- c 언어로 코딩된 파일

 c언어가 짱인가?...?

j15@ace:~/d3$ bb		- b 파일 복사본

 c언어가 짱인가?...?

j15@ace:~/d3$ ls -l
합계 36
-rwxrwxr-x 1 j15 j15 15960  4월 26 10:04 b
-rw-rw-r-- 1 j15 j15    92  4월 26 10:01 b.c
-rwxrwxr-x 1 j15 j15 15960  4월 26 11:02 bb

j15@ace:~/d3$ ln b lb		- b로 연결될 Hard 링크 생성
j15@ace:~/d3$ ls -l
합계 52
-rwxrwxr-x 2 j15 j15 15960  4월 26 10:04 b
-rw-rw-r-- 1 j15 j15    92  4월 26 10:01 b.c
-rwxrwxr-x 1 j15 j15 15960  4월 26 11:02 bb
-rwxrwxr-x 2 j15 j15 15960  4월 26 10:04 lb

j15@ace:~/d3$ lb		- 지정된 링크로 연결된 모습

 c언어가 짱인가?...?

j15@ace:~/d3$ alias li='ls -Ali'	-alias로 단축어 생성하여 코딩의 편리함 추가

j15@ace:~/d3$ li
합계 52
393426 -rwxrwxr-x 		2 	j15 j15 15960  4월 26 10:04 b
393431 -rw-rw-r-- 		1 	j15 j15    92  4월 26 10:01 b.c
393329 -rwxrwxr-x 		1 	j15 j15 15960  4월 26 11:02 bb
393426 -rwxrwxr-x 		2 	j15 j15 15960  4월 26 10:04 lb
						└> 인덱스 넘버로써 같은 링크가 연결됨을 확인할 수 있음


j15@ace:~/d3$ ln b lb2		- 인덱스 넘버 증가를 확인하기 위해 한번 더 실행
j15@ace:~/d3$ li
합계 68
393426 -rwxrwxr-x 3 j15 j15 15960  4월 26 10:04 b
393431 -rw-rw-r-- 1 j15 j15    92  4월 26 10:01 b.c
393329 -rwxrwxr-x 1 j15 j15 15960  4월 26 11:02 bb
393426 -rwxrwxr-x 3 j15 j15 15960  4월 26 10:04 lb
393426 -rwxrwxr-x 3 j15 j15 15960  4월 26 10:04 lb2


j15@ace:~/d3$ ln -s b sb		- symbolic 링크 생성
j15@ace:~/d3$ li
합계 68
393426 -rwxrwxr-x 3 j15 j15 15960  4월 26 10:04 b
393431 -rw-rw-r-- 1 j15 j15    92  4월 26 10:01 b.c
393329 -rwxrwxr-x 1 j15 j15 15960  4월 26 11:02 bb
393426 -rwxrwxr-x 3 j15 j15 15960  4월 26 10:04 lb
393426 -rwxrwxr-x 3 j15 j15 15960  4월 26 10:04 lb2
393427 lrwxrwxrwx 1 j15 j15     1  4월 26 11:06 sb -> b

j15@ace:~/d3$ file sb			- symbolic 링크 임을 확인
sb: symbolic link to b

j15@ace:~/d3$ sb				- 지정된 링크로 연결된 모습

 c언어가 짱인가?...?


j15@ace:~/d3$ ln -s /usr/local/ 66		- symbolic 링크 생성
j15@ace:~/d3$ li
합계 68
393434 lrwxrwxrwx 1 j15 j15    11  4월 26 11:08 66 -> /usr/local/	- 생성됨을 확인
393426 -rwxrwxr-x 3 j15 j15 15960  4월 26 10:04 b
393431 -rw-rw-r-- 1 j15 j15    92  4월 26 10:01 b.c
393329 -rwxrwxr-x 1 j15 j15 15960  4월 26 11:02 bb
393426 -rwxrwxr-x 3 j15 j15 15960  4월 26 10:04 lb
393426 -rwxrwxr-x 3 j15 j15 15960  4월 26 10:04 lb2
393427 lrwxrwxrwx 1 j15 j15     1  4월 26 11:06 sb -> b
				 └> 인덱스 넘버 확인
  • symbolic 링크는 연결시 색이 변화 한다.
j15@ace:~/d3$ rm -f b		- 링크 원본 삭제 과정
j15@ace:~/d3$ li
합계 52
393431 -rw-rw-r-- 1 j15 j15    92  4월 26 10:01 b.c
393329 -rwxrwxr-x 1 j15 j15 15960  4월 26 11:02 bb
393426 -rwxrwxr-x 2 j15 j15 15960  4월 26 10:04 lb
393426 -rwxrwxr-x 2 j15 j15 15960  4월 26 10:04 lb2
393427 lrwxrwxrwx 1 j15 j15     1  4월 26 11:06 sb -> b

j15@ace:~/d3$ file sb
sb: broken symbolic link to b		- 링크가 깨짐을 확인

j15@ace:~/d3$ li
합계 52
393431 -rw-rw-r-- 1 j15 j15    92  4월 26 10:01 b.c
393329 -rwxrwxr-x 1 j15 j15 15960  4월 26 11:02 bb
393426 -rwxrwxr-x 2 j15 j15 15960  4월 26 10:04 lb
393426 -rwxrwxr-x 2 j15 j15 15960  4월 26 10:04 lb2
393427 lrwxrwxrwx 1 j15 j15     1  4월 26 11:06 sb -> b
				  └> 처음 생성했을때 보다 인덱스 넘버 다운됨
 j15@ace:~/d3$ lb

 c언어가 짱인가?...?

j15@ace:~/d3$ lb2

 c언어가 짱인가?...?

- hard 링크는 실행은 가능!           
j15@ace:~/d3$ unlink b		- 링크 해제명령어
j15@ace:~/d3$ li
합계 36
393431 -rw-rw-r-- 1 j15 j15    92  4월 26 10:01 b.c
393329 -rwxrwxr-x 1 j15 j15 15960  4월 26 11:02 bb
393426 -rwxrwxr-x 1 j15 j15 15960  4월 26 10:04 lb2
393427 lrwxrwxrwx 1 j15 j15     1  4월 26 11:06 sb -> b - 사진으로 색 변화 확인
  • 링크 해제 시 soft 링크 색이 변화 한다.

결론

  • hard link : 파일만 가능, 동일 파일 시스템에서만 가능
    아무리 많아도 용량을 차지하지 않는다.

결론 2

  • soft link : 파일, 디렉터리 모두 가능, 다른 파일 시스템도 가능

문제) a = 40 byte일때 x는 몇 byte일까?

  1 #include <stdio.h>
  2 void f(int* x) //int x[10], int x[] 
  4     printf("x = %d byte \n", sizeof(x));
  5 }
  6
  7 int main(void)
  8 {
  9     int a[10] = {0, };
 10     printf(" a = %d byte \n", sizeof(a));
 11     f(a);
 12     return 0;
 13 }

정답) x = 8 byte
이유) x = 64bit com의 메모리의 주소를 가르키는 C언어의 포인터 값

자주 쓰는 명령어

명령어 해석 순서

alias > keyword > function > builtin > 외부명령어

  • compgen : 옵션에 맟는 bash모음 출력

j15@ace:~/d3$ compgen -a | column	-a:alias
alert   egrep   fgrep   grep    h       l       la      li      ll      ls

j15@ace:~/d3$ compgen -b | column	-b:bultins = enable
.               cd              echo            getopts         mapfile         set             type
:               command         enable          hash            popd            shift           typeset
[               compgen         eval            help            printf          shopt           ulimit
alias           complete        exec            history         pushd           source          umask
bg              compopt         exit            jobs            pwd             suspend         unalias
bind            continue        export          kill            read            test            unset
break           declare         false           let             readarray       times           wait
builtin         dirs            fc              local           readonly        trap
caller          disown          fg              logout          return          true

[root@nc7 ~]# compgen -c | column	-c:command
c                                       rm
cp                                      i386
dc                                      cpio
df                                      who
di                                      cmp
dq                                      rmdir
du                                      diff
egrep                                   runcon
fgrep                                   diff3
grep                                    seq
h                                       last


j15@ace:~/d3$ compgen -k | column	-k:keyword
if              fi              select          done            {               ]]
then            case            while           in              }               coproc
else            esac            until           function        !
elif            for             do              time            [[

출처 : https://colinch4.github.io/2021-11-19/compgen/

  1. 파일 내용보기
1.
j15@ace:~/d3$ 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
,,,
helper:/:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin
blue:x:1000:1000::/home/blue:/bin/bash

j15@ace:~/d3$ tac /etc/passwd
blue:x:1000:1000::/home/blue:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin
flatpak:x:988:988:User for flatpak system 
,,,
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash

- tac은 cat의 역순 출력

2.
j15@ace:~/d3$ ls -l /var/log | sort
-rw-r-----  1 root      adm               14190 12월 30 13:56 dmesg.2.gz
-rw-r-----  1 root      adm               14284 12월 30 09:29 dmesg.3.gz
-rw-r-----  1 root      adm               14340 12월 29 17:21 dmesg.4.gz
-rw-r-----  1 root      adm               14476  4월 24 12:07 dmesg.1.gz
-rw-r-----  1 root      adm               19535  4월 26 09:20 cloud-init-output.log
											└> 파일 사이즈 
  1. Word 정렬
    wc : 문서의 행과 단어 그리고 문자의 개수를 카운트하고 출력
1.
j15@ace:~/d3$ wc /etc/services
  361  1773 12813 /etc/services
  
j15@ace:~/d3$ wc -l /etc/services	- 문서 행
361 /etc/services

j15@ace:~/d3$ wc -w /etc/services	- 문서 단어
1773 /etc/services

j15@ace:~/d3$ wc -c /etc/services	- 문서 개수
12813 /etc/services

2.
j15@ace:~/d3$ ls -l /var/log | sort -n -k 5		- 용량 크기별로 올림차순
-rw-r--r--  1 root      root                  0  8월  9  2022 ubuntu-advantage.log
-rw-rw----  1 root      utmp                  0  8월  9  2022 btmp.1
합계 4788
-rw-r--r--  1 root      root                314 12월 30 09:35 ubuntu-advantage-timer.log.1
-rw-r--r--  1 root      root                631  4월 26 09:41 ubuntu-advantage-timer.log
-rw-r--r--  1 root      root                841  4월 25 18:33 fontconfig.log
,,,
-rw-r-----  1 root      adm               14476  4월 24 12:07 dmesg.1.gz

3.

j15@ace:~/d3$ sort -t: -k3 p | nl	 - 3번쨰 ip를 정수로 인식하여 오름차순
     1  root:x:0:0:root:/root:/bin/bash
     2  j:x:1000:1000:j:/home/j:/bin/bash
     3  ace:x:1001:1001::/home/ace:/bin/bash
     4  j1:x:1002:1003::/home/j1:/bin/bash
     5  j2:x:1003:1004::/home/j2:/bin/bash
    ,,,
    18  j14:x:1015:1016::/home/j14:/bin/bash
    19  j15:x:1016:1017::/home/j15:/bin/bash
	20  j16:x:1017:1018::/home/j16:/bin/bash
    				└> 3번쨰 ip
  1. 패턴찾기
1.
j15@ace:~/d3$ grep http s
# Updated from https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml .
http            80/tcp          www             # WorldWideWeb HTTP ★
https           443/tcp                         # http protocol over TLS/SSL
https           443/udp                         # HTTP/3
http-alt        8080/tcp        webcache        # WWW caching service

2.
j15@ace:~/d3$ grep ftp s
ftp-data        20/tcp 
ftp             21/tcp		★
tftp            69/udp
ftps-data       989/tcp                         # FTP over SSL (data)
ftps            990/tcp
venus-se        2431/udp                        # udp sftp side effect
codasrv-se      2433/udp                        # udp sftp side effect
gsiftp          2811/tcp
zope-ftp        8021/tcp                        # zope management by ftp

3.
j15@ace:~/d3$ grep pop3 s
pop3            110/tcp         pop-3           # POP version 3 ★
pop3s           995/tcp                         # POP-3 over SSL

4.
j15@ace:~/d3$ grep domain s
domain          53/tcp                          # Domain Name Server
domain          53/udp		★
domain-s        853/tcp                         # DNS over TLS [RFC7858]
domain-s        853/udp                         # DNS over DTLS [RFC8094]

5.
j15@ace:~/d3$ grep ftp s
ftp-data        20/tcp
ftp             21/tcp		★
tftp            69/udp
ftps-data       989/tcp                         # FTP over SSL (data)
ftps            990/tcp
venus-se        2431/udp                        # udp sftp side effect
codasrv-se      2433/udp                        # udp sftp side effect
gsiftp          2811/tcp
zope-ftp        8021/tcp                        # zope management by ftp

★ = 각 프로그램 port를 뜻함
  1. 입출력 지향
1.
j15@ace:~/d3$ function aha()		-함수 생성
> {
> echo "aha aha"
> }
j15@ace:~/d3$ aha
aha aha

2.
j15@ace:~/d3$ ahha()				
> {
> echo "*******************"
> }
j15@ace:~/d3$
j15@ace:~/d3$ ahha
*******************

3.
j15@ace:~/d3$ cat << A >k2
> haha
> hoho
> A

4.
j15@ace:~$ whatis cp		-명령어 뒤에 입력한 단어에 대한 요약 설명을 출력
cp (1)               - copy files and directories

5.
j15@ace:~$ which cp				-  명령어 뒤에 입력한 파일의 위치 출력
/usr/bin/cp

6.
j15@ace:~$ whereis cp			- which랑 같은 뜻
cp: /usr/bin/cp /usr/share/man/man1/cp.1.gz
  1. 문자열
1.
j15@ace:~/d3$ k="korea"
j15@ace:~/d3$ echo ${#k}				-문자열 출력
5

2.
j15@ace:~/d3$ echo `expr length $k`		-문자열 출력과 같은 뜻
5

3.
j15@ace:~/d3$ echo '$k'					-문자 그대로 출력
$k

4.
j15@ace:~/d3$ echo "$k"					- 공백을 포함하려면 ""로 생성
korea

5.
j15@ace:~/d3$ echo "$k
> { 이렇게 창이 뜸}
> ;
>
> "						

6.
j15@ace:~/d3$ echo $k_seoul
(공백)

7.
j15@ace:~/d3$ echo ${k}_seoul
korea_seoul

8.
j15@ace:~/d3$ id									- 가입된 user id와 그룹 id 출력
uid=1016(j15) gid=1017(j15) 그룹들=1017(j15)

9.
j15@ace:~/d3$ find / -uid 1016 2>/dev/null | nl		- 가입된 user id 1016번 으로 검색
     1  /run/user/1016
     2  /run/user/1016/snapd-session-agent.socket
     3  /run/user/1016/pk-debconf-socket
     4  /run/user/1016/gnupg
     5  /run/user/1016/gnupg/S.gpg-agent
     6  /run/user/1016/gnupg/S.gpg-agent.ssh
     7  /run/user/1016/gnupg/S.gpg-agent.extra
,,,
	1469  /home/j15/k.sh
 	1470  /dev/pts/42
  	1471  /dev/pts/1
   
10.
j15@ace:~/d3$ cat << A > my.txt
> aaa
> aaa
> AAA
> bbb
> bbb
> bbb
> A
j15@ace:~/d3$ nl my.txt
     1  aaa
     2  aaa
     3  AAA
     4  bbb
     5  bbb
     6  bbb
j15@ace:~/d3$ uniq my.txt
aaa
AAA
bbb
j15@ace:~/d3$ uniq my.txt  -i
aaa
bbb
j15@ace:~/d3$ uniq my.txt  -i | sort -r
bbb
aaa
j15@ace:~/d3$ uniq my.txt  -i | sort
aaa
bbb
  • Parsing 실습
1.
j15@ace:~/d3$ d=date
j15@ace:~/d3$ echo $d
date

2.
j15@ace:~/d3$ d=`date`
j15@ace:~/d3$ echo $d
2023. 04. 26. (수) 12:45:46 KST

  1. 인수 표현식

j15@ace:~/d3$ expr 20+3
20+3
j15@ace:~/d3$ expr 20 \* 3			- 곱셈은 이렇게 표현
60
j15@ace:~/d3$ let k=2+7

j15@ace:~/d3$ echo $k
9									- echo 출력 필요

j15@ace:~/d3$ echo $[3*5]			-곱셈의 또다른 표현
15	

j15@ace:~/d3$ 2 * 3					-에러의 대표 사례
-bash: 2: command not found
  1. 검색
1.
j15@ace:~/d3$ find / -size +100M -exec ls -Alh {} \; 2>/dev/null 		-100M 이상의 파일 찾아서 다음 명령 실행
-rw------- 1 root root 103M 12월 30 09:35 /var/lib/snapd/snaps/lxd_23541.snap
-rw------- 1 root root 112M  4월 24 12:13 
,,,
/usr/lib/jvm/java-11-openjdk-amd64/lib/modules
-rw------- 1 root root 2.0G 12월 29 17:10 /swap.img		

2.
j15@ace:~/d3$ find / -empty 2>/dev/null | more		- 비어있는 파일 찾기 
/run/needrestart
/run/unattended-upgrades.lock
,,,
/run/sendmail/stampdir/reload
/run/sendmail/msp

3.
j15@ace:~/d3$ find / -size +30M 2>/dev/null		- 30M 이상의 파일 찾기
/var/cache/apt/srcpkgcache.bin
/var/cache/apt/pkgcache.bin
/var/lib/snapd/snaps/core20_1852.snap
/var/lib/snapd/snaps/lxd_23541.snap
/var/lib/snapd/snaps/lxd_24322.snap
/var/lib/snapd/snaps/snapd_17883.snap
  • -exec [command] {} \:; 문자 : 검색 후 특정 명령 수행
    {} = 검색 파일, 여러개 中 하나씩 치환하며 명령 실행
    \;; = 많은 결과 중 한번에 명령 사용
  1. 필터링 사용법
1.
j15@ace:~/d3$ echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
j15@ace:~/d3$ echo {a..z} | tr 'a-z' 'A-Z'
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
j15@ace:~/d3$ echo {a..z} | tr 'kb' 'KB'
a B c d e f g h i j K l m n o p q r s t u v w x y z

2.
j15@ace:~/d3$ echo "zxzcvSDFEWRVSDFjasdf" | tr -d 'a-z'
SDFEWRVSDF
j15@ace:~/d3$ echo "3333333333333333333333333333" | tr -s '3'
3

3.
j15@ace:~/d3$ echo {a..z} | tr -d '' | cut -b 3
b
j15@ace:~/d3$ echo {a..z} | tr -d '' | cut -b 1-5
a b c

4.
j15@ace:~/d3$ shuf -e "kim" "ho" "il"
il
ho
kim
j15@ace:~/d3$ shuf -e "kim" "ho" "il"
ho
il
kim
j15@ace:~/d3$ shuf -e "kim" "ho" "il"
kim
ho
il

5.
j15@ace:~/d3$ shuf -i 1-30 | column
15      24      19      6       12      30      1       29      25      5
20      26      27      7       4       10      21      16      23      3
9       14      18      28      11      17      2       22      13      8
j15@ace:~/d3$ shuf -i 1-30 -n 6
5
17
7
9
24
8

7.
j15@ace:~/d3$ shuf -i 1-30 -n 6 | paste - - -
19      23      10
29      26      28
j15@ace:~/d3$ shuf -i 1-30 -n 6 | paste - - - - -
20      8       15      3       22
23
j15@ace:~/d3$ shuf -i 1-30 -n 6 | paste - - - - - -
18      17      30      7       3       5
j15@ace:~/d3$ shuf -i 1-30 -n 6 | paste - - - - - -  > num12
j15@ace:~/d3$ nl num12
     1  16      13      8       9       30      7

9.압축

  • 리눅스에서 많이 사용하는 압축툴
압축해제
gzipgunzip
compressuncompress
bzip2bunzip2
xzunxz
j15@ace:~/d3$ alias lh='ls-Alh' - alias로 자주 사용하는 별칭 명령어 지정

j15@ace:~/d3$ gzip s 		- 압축실행
j15@ace:~/d3$ lh
합계 12K
-rw-r--r-- 1 j15 j15 3.5K  4월 26 14:44 p
-rw-r--r-- 1 j15 j15 5.3K  4월 26 14:44 s.gz		- 생성된 gz 파일

j15@ace:~/d3$ gunzip s.gz	-압축 해제
j15@ace:~/d3$ lh
합계 20K
-rw-r--r-- 1 j15 j15 3.5K  4월 26 14:44 p
-rw-r--r-- 1 j15 j15  13K  4월 26 14:44 s			- 압축 해제된 모습


j15@ace:~/d3$ bzip2 s		-압축실행
j15@ace:~/d3$ lh
합계 12K
-rw-r--r-- 1 j15 j15 3.5K  4월 26 14:44 p
-rw-r--r-- 1 j15 j15 5.1K  4월 26 14:44 s.bz2 		- 생성된 bz2 파일 

j15@ace:~/d3$ bunzip2 s.bz2	-압축 해제
j15@ace:~/d3$ lh
합계 20K
-rw-r--r-- 1 j15 j15 3.5K  4월 26 14:44 p
-rw-r--r-- 1 j15 j15  13K  4월 26 14:44 s			-압축 해제된 모습

j15@ace:~/d3$ xz s			-압축실행
j15@ace:~/d3$ lh
합계 12K
-rw-r--r-- 1 j15 j15 3.5K  4월 26 14:44 p
-rw-r--r-- 1 j15 j15 5.1K  4월 26 14:44 s.xz		- 생성된 xz 파일

j15@ace:~/d3$ unxz s.xz		-압축 해제
j15@ace:~/d3$ lh
합계 20K
-rw-r--r-- 1 j15 j15 3.5K  4월 26 14:44 p
-rw-r--r-- 1 j15 j15  13K  4월 26 14:44 s			-압축 해제된 모습

11.ftp를 이용한 다룬 및 압축

  • tar 사용법
옵션설명
ccreate : 새로운 tart 파일 생성
xextract : 추출하거나 풀기
vverbose : 상태 출력
zgzip, gunzip : 압축할때는 g, 압축풀때는 gun
tlist : 실제로 압축을 풀지는 않고, 어떤 파일인지 출력
ffile : 필수 옵션
  • tar 사용 시 옵션 앞에 -를 생략 가능하다.
1.
j15@ace:~/d3$ tar cfz b.tar.gz httpd-2.4.57			- 압축해제하여 새로운 gz 파일 생성
j15@ace:~/d3$ lh
합계 29M
-rw-rw-r--  1 j15 j15 9.4M  4월 26 15:01 a.tar.gz
-rw-rw-r--  1 j15 j15 9.4M  4월 26 15:03 b.tar.gz	- 생성 완료
drwxr-xr-x 13 j15 j15 4.0K  4월  3 01:05 httpd-2.4.57
-rw-rw-r--  1 j15 j15 9.4M  4월  6 23:46 httpd-2.4.57.tar.gz
-rw-r--r--  1 j15 j15 3.5K  4월 26 14:44 p
-rw-r--r--  1 j15 j15  13K  4월 26 14:44 s

2.
j15@ace:~/d3$ tar xfz b.tar.gz						- 묶음 해제 
j15@ace:~/d3$ ls
a.tar.gz  b.tar.gz  httpd-2.4.57  httpd-2.4.57.tar.gz  p  s
j15@ace:~/d3$ lh
합계 29M
-rw-rw-r--  1 j15 j15 9.4M  4월 26 15:01 a.tar.gz
-rw-rw-r--  1 j15 j15 9.4M  4월 26 15:03 b.tar.gz
drwxr-xr-x 13 j15 j15 4.0K  4월  3 01:05 httpd-2.4.57
-rw-rw-r--  1 j15 j15 9.4M  4월  6 23:46 httpd-2.4.57.tar.gz
-rw-r--r--  1 j15 j15 3.5K  4월 26 14:44 p
-rw-r--r--  1 j15 j15  13K  4월 26 14:44 s
  • 묶음 압축시 이름 지정하지 않으면 '조심스럽게 거부'하는 에러가 발생한다.
j15@ace:~/d3$ tar cfz httpd-2.4.57/	
tar: 빈 아카이브 만들기를 조심스럽게 거부하고 있습니다
자세한 정보는 'tar --help' 또는 'tar --usage'를 입력하십시오.
j15@ace:~/d3$ tar cfz b.tar.gz httpd-2.4.57/
3.
j15@ace:~/d3$ tar cfz myhome.tar.gz ~  2>/dev/null
j15@ace:~/d3$ lh
합계 112M
-rw-rw-r--  1 j15 j15 1.2M  4월 26 15:26 5.tar.gz
-rw-rw-r--  1 j15 j15 9.4M  4월 26 15:08 b.tar.gz
drwxr-xr-x 13 j15 j15 4.0K  4월  3 01:05 httpd-2.4.57
-rw-rw-r--  1 j15 j15  43M  4월  6 23:46 httpd-2.4.57.tar
-rw-rw-r--  1 j15 j15  59M  4월 26 15:28 myhome.tar.gz
-rw-r--r--  1 j15 j15 3.5K  4월 26 15:05 p
-rw-r--r--  1 j15 j15  13K  4월 26 15:05 s

4.
j15@ace:~/d3$ tar cfJ b.tar.xz /etc/ 2>/dev/null		- xz 툴로 생성
j15@ace:~/d3$ lh
합계 103M
-rw-rw-r--  1 j15 j15 800K  4월 26 15:31 b.tar.xz
drwxr-xr-x 13 j15 j15 4.0K  4월  3 01:05 httpd-2.4.57
-rw-rw-r--  1 j15 j15  43M  4월  6 23:46 httpd-2.4.57.tar
-rw-rw-r--  1 j15 j15  59M  4월 26 15:28 myhome.tar.gz
-rw-rw-r--  1 j15 j15 664K  4월 26 15:30 myhome.tar.xz
-rw-r--r--  1 j15 j15 3.5K  4월 26 15:05 p
-rw-r--r--  1 j15 j15  13K  4월 26 15:05 s

j15@ace:~/d3$ tar xfJv b.tar.xz 2>/dev/null				- 생성된 xz파일 압축 해제
j15@ace:~/d3$ ls
b.tar.xz  etc  httpd-2.4.57  httpd-2.4.57.tar  myhome.tar.gz  myhome.tar.xz  p  s
j15@ace:~/d3$ lh
합계 103M
-rw-rw-r--   1 j15 j15 800K  4월 26 15:31 b.tar.xz
drwxr-xr-x 114 j15 j15 4.0K  4월 26 12:14 etc			- 압축 해제로 생성된 파일
drwxr-xr-x  13 j15 j15 4.0K  4월  3 01:05 httpd-2.4.57
-rw-rw-r--   1 j15 j15  43M  4월  6 23:46 httpd-2.4.57.tar
-rw-rw-r--   1 j15 j15  59M  4월 26 15:28 myhome.tar.gz
-rw-rw-r--   1 j15 j15 664K  4월 26 15:30 myhome.tar.xz
-rw-r--r--   1 j15 j15 3.5K  4월 26 15:05 p
-rw-r--r--   1 j15 j15  13K  4월 26 15:05 s


5.
j15@ace:~/d3$ zip -r e.zip /etc/mail 2>/dev/null		- zip형식으로 압축

j15@ace:~/d3$ ls
b.tar.xz  e.zip  etc  httpd-2.4.57  httpd-2.4.57.tar  myhome.tar.gz  myhome.tar.xz  p  s
j15@ace:~/d3$ lh
합계 103M
-rw-rw-r--   1 j15 j15 800K  4월 26 15:31 b.tar.xz
-rw-rw-r--   1 j15 j15 147K  4월 26 15:35 e.zip			- 새로 압축된 zip 파일
drwxr-xr-x 114 j15 j15 4.0K  4월 26 12:14 etc
drwxr-xr-x  13 j15 j15 4.0K  4월  3 01:05 httpd-2.4.57
-rw-rw-r--   1 j15 j15  43M  4월  6 23:46 httpd-2.4.57.tar
-rw-rw-r--   1 j15 j15  59M  4월 26 15:28 myhome.tar.gz
-rw-rw-r--   1 j15 j15 664K  4월 26 15:30 myhome.tar.xz
-rw-r--r--   1 j15 j15 3.5K  4월 26 15:05 p
-rw-r--r--   1 j15 j15  13K  4월 26 15:05 s

j15@ace:~/d3$ unzip -d e e.zip							- 압축된 파일 해제
Archive:  e.zip
   creating: e/etc/mail/
 extracting: e/etc/mail/local-host-names
  inflating: e/etc/mail/helpfile
   creating: e/etc/mail/m4/
   creating: e/etc/mail/peers/
  inflating: e/etc/mail/peers/provider
  ,,,
  inflating: e/etc/mail/tls/no_prompt
  inflating: e/etc/mail/address.resolve

j15@ace:~/d3$ ls
b.tar.xz  e  e.zip  etc  httpd-2.4.57  httpd-2.4.57.tar  myhome.tar.gz  myhome.tar.xz  p  s
j15@ace:~/d3$ lh
합계 103M
-rw-rw-r--   1 j15 j15 800K  4월 26 15:31 b.tar.xz
drwxrwxr-x   3 j15 j15 4.0K  4월 26 15:36 e				- 압축이 해제 완료 후 생성된 파일
-rw-rw-r--   1 j15 j15 147K  4월 26 15:35 e.zip
drwxr-xr-x 114 j15 j15 4.0K  4월 26 12:14 etc
drwxr-xr-x  13 j15 j15 4.0K  4월  3 01:05 httpd-2.4.57
-rw-rw-r--   1 j15 j15  43M  4월  6 23:46 httpd-2.4.57.tar
-rw-rw-r--   1 j15 j15  59M  4월 26 15:28 myhome.tar.gz
-rw-rw-r--   1 j15 j15 664K  4월 26 15:30 myhome.tar.xz
-rw-r--r--   1 j15 j15 3.5K  4월 26 15:05 p
-rw-r--r--   1 j15 j15  13K  4월 26 15:05 s

  • 윈도우에서 tar 파일은 아래와 같이 압축해제를 한다.
profile
☁️ 좋아요!

0개의 댓글