반응형
다양한 명령어, 강력한 CLI
명령어 해석 순서
alias
keyword
function
builtin
외부 명령어
#compgen -a | column
#compgen -k | column
#compgen -c | column
#compgen -b | column
sort, wc 정렬, word counter
$sort /etc/passwd | sort는 파일이나 입력 스트림에서 텍스트를 정렬하는 유틸리티이다. /etc/passwd 파일 내의 각 줄을 알파벳순으로 정렬한 결과를 출력 |
||
$sort -r /etc/passwd | -r 옵션이 붙으면 파일의 내용을 역순으로 정렬. | ||
$wc /etc/services | word counter | ||
$wc -l /etc/services | word counter line | ||
$wc -w /etc/services | word counter word | ||
$wc -c /etc/passwd | word counter character | ||
$ls -l /var/log | sort -n -k 5 | /var/log 디렉토리 내부에 있는 파일들의 정보를 ls -l 명령어를 통해 출력하고, 이를 파일 크기(-k 5)를 기준으로 오름차순(-n)으로 정렬하여 출력. 파일 크기순 |
||
$ls -l /var/log | sort -k 9 | /var/log 디렉토리 내부에 있는 파일들의 정보를 ls -l 명령어를 통해 출력하고, 이를 파일 이름(-k 9)을 기준으로 정렬하여 출력. 파일명 순 |
||
$sort -u | 정렬된 결과에서 중복된 행을 제거하는 옵션 |
[root@kwc ~]# touch aaa
[root@kwc ~]# cat > aaa
apple
banana
cherry
apple
banana
[root@kwc ~]# sort aaa
apple
apple
banana
banana
cherry
# sort 했을 때 apple과 banana가 모두 출력된다.
[root@kwc ~]# sort -u aaa
apple
banana
cherry
# -u 옵션을 붙이고 sort하면 중복되는 항목들이 하나씩만 출력된다.
Pipe 파이프의 활용 ( | )
'|' 기호(파이프)는 한 명령어의 실행 결과를 다른 명령어의 입력으로 사용할 때 활용된다.
이를 통해 여러 명령어를 조합하여 더 복잡한 작업을 수행할 수 있다.
[root@kwc ~]# sort /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:997:994::/var/lib/chrony:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
flatpak:x:988:988:User for flatpak system helper:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
geoclue:x:990:990:User for geoclue:/var/lib/geoclue:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
pipewire:x:989:989:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin
polkitd:x:991:991:User for polkitd:/:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin
sssd:x:998:995:User for sssd:/:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-oom:x:992:992:systemd Userspace OOM Killer:/:/usr/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
# sort 명령어만 사용하여 /etc/passwd 파일의 내용을 정렬
[root@kwc ~]# sort /etc/passwd | nl
1 adm:x:3:4:adm:/var/adm:/sbin/nologin
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 chrony:x:997:994::/var/lib/chrony:/sbin/nologin
4 daemon:x:2:2:daemon:/sbin:/sbin/nologin
5 dbus:x:81:81:System message bus:/:/sbin/nologin
6 flatpak:x:988:988:User for flatpak system helper:/:/sbin/nologin
7 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
8 games:x:12:100:games:/usr/games:/sbin/nologin
9 geoclue:x:990:990:User for geoclue:/var/lib/geoclue:/sbin/nologin
10 halt:x:7:0:halt:/sbin:/sbin/halt
11 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
12 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
13 mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin
14 nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
15 operator:x:11:0:operator:/root:/sbin/nologin
16 pipewire:x:989:989:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin
17 polkitd:x:991:991:User for polkitd:/:/sbin/nologin
18 root:x:0:0:root:/root:/bin/bash
19 rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
20 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
21 sshd:x:74:74:Privilege-separated SSH:/usr/share/empty.sshd:/sbin/nologin
22 sssd:x:998:995:User for sssd:/:/sbin/nologin
23 sync:x:5:0:sync:/sbin:/bin/sync
24 systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
25 systemd-oom:x:992:992:systemd Userspace OOM Killer:/:/usr/sbin/nologin
26 tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
# sort 명령어를 | 를 이용하여 nl 명령어와 연결해 실행.
# nl 명령어가 함께 실행 되어 행번호가 붙은 것을 볼 수 있다.
grep 패턴찾기
특정 문자열 패턴을 검색하여 출력해주는 명령어로, 매우 유용한 검색 도구 중 하나이다.
grep 명령어의 대표적인 옵션들
• ' -i ' : 대소문자를 구분하지 않음
• ' -v ' : 지정된 패턴을 포함하지 않는 행만 출력
• ' -c ' : 패턴이 일치하는 행의 수를 출력
• ' -n ' : 출력할 때 행의 번호를 함께 출력
• ' -r ' : 하위 디렉토리까지 모두 검색
• ' -l ' : 패턴이 포함된 파일 이름만 출력
• ' -w ' : 패턴과 정확히 일치하는 단어만 검색
• ' -E ' : 확장 정규식을 사용
• ' -F ' : 고정 문자열 검색을 사용
[root@kwc ~]# grep -c www /etc/services
9
# -c 옵션을 넣으면 www가 포함된 행의 개수만 보여준다.
파이프와 grep 함께 사용하기
whereis, whatis, which
• whereis
명령어나 실행 파일의 위치와 소스 코드와 같은 다른 파일들의 위치를 찾아주는 명령어.
명령어과 관련된 다른 파일들의 위치를 찾고자 할 때 사용.
• which
명령어나 실행 파일의 위치를 찾아주는 명령어. 보통 실행 가능한 파일의 위치를 찾는 데 사용됨.
간단하게 실행 가능한 파일의 위치를 찾고자 할 때 사용.
•whatis
매뉴얼 페이지에서 검색어에 해당하는 요약 정보를 출력하는 명령어.
즉, 명령어나 프로그램이 어떤 역할을 수행하는지 요약된 설명을 보여줌.
[root@kwc ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
[root@kwc ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@kwc ~]# whatis ls
ls (1) - list directory contents
문자열 다루기
[root@kwc ~]# K="Korean"
---
[root@kwc ~]# echo ${#K} # 문자열의 길이 출력
6 # Korean 문자열은 총 6개의 문자로 이루어져 있기 때문에 6이 출력됨
[root@kwc ~]# echo `expr length $K` # 문자열의 길이를 출력하는 다른 방법 중 하나
6 # 주의할 점은 ` (back tick)을 사용해야 한다는 것이다.
[root@kwc ~]# echo '$K'
$K # 문자 그대로 출력
[root@kwc ~]# echo "$K"
Korean # 처음에 K="Korean"으로 지정한 값이 출력
[root@kwc ~]# echo $K
Korean # ""를 사용한 것과 동일하게 지정한 값이 출력된다.
[root@kwc ~]# echo "$K 공백 포함하려면 큰따옴표 사용"
Korean 공백 포함하려면 큰따옴표 사용 # ""를 사용하면 공백(띄어쓰기)가 포함된 문자열을 출력할 수 있다.
파싱 (parsing)
문자열을 의미있는 토큰으로 분리하고 파스트리를 구현하는 과정.
[root@kwc ~]# d=date
[root@kwc ~]# echo $d
date
[root@kwc ~]# d=`date` # back tick ` 사용
[root@kwc ~]# echo $d
Sun Apr 30 15:48:05 KST 2023
숫자 다루기
[root@kwc ~]# 20 + 3
-bash: 20: command not found # 수식만 입력하면 인식하지 못 함
[root@kwc ~]# expr 20 + 3
23 # 정상적으로 계산되어 출력됨
[root@kwc ~]# expr 20 * 3
expr: syntax error: unexpected argument ‘C++tri.cpp’ # 곱셈의 경우엔 \ 를 곱셈기호 * 앞에 입력해주어야 함
[root@kwc ~]# expr 20 \* 3
60
[root@kwc ~]# echo $[3 + 5]
8
[root@kwc ~]# echo $[3 * 5]
15 # echo를 이용해 이런 식으로도 입력해 쓸 수 있음
[root@kwc ~]# let a=5+4 && echo $a
9
[root@kwc ~]# let b=5*4 && echo $b
20 # let과 echo를 이용
find 검색
find [찾을 위치] [option] [수행할 명령]
option: -name, -user, -group, -uid, -gid, -empty, -perm, -used ...
---크기가 100M 이상인 파일 찾기---
[root@kwc ~]# find / -size +100M -exec ls -Alh {} \; 2>/dev/null
-r--------. 1 root root 128T Apr 30 14:27 /proc/kcore
-rw-r--r--. 1 root root 137M Apr 20 00:49 /usr/lib/jvm/java-11-openjdk-11.0.19.0.7-1.el9_1.x86_64/lib/modules
---비어있는 파일 찾기---
[root@kwc ~]# find / -empty 2>/dev/null | more
/boot/efi/EFI/rocky
/data
/dev/mqueue
/dev/hugepages
/dev/shm
/home/acd
/home/j
--More--
------------------------------------------------------------
2>/dev/null # 오류 메세지를 화면에 출력하지 않도록 하는 구문.
-exec command {} \; # 검색되었을 때 특정 명령을 수행한다.
# {} : 검색된 파일들을 의미. 여러개의 파일이 검색되면 하나씩 치환되면서 해당 명령 실행.
# \; : 검색된 결과가 여러개일 때 한 번에 명령을 사용하기 위함
Filter 사용법
[root@kwc ~]# 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
[root@kwc ~]# 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 # 소문자 알파벳을 대문자로 치환
[root@kwc ~]# 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 # 소문자 알파벳중 k와 b만 대문자로 치환
[root@kwc ~]# echo "sdfJSDFSFJsdljf" | tr -d 'a-z'
JSDFSFJ # 소문자를 제외한 결과 출력
[root@kwc ~]# echo "4455663333" | tr -s '3'
4455663 # 숫자 3을 찾아 중복된 문자를 하나로 줄이고 결과 출력.
[root@kwc ~]# shuf -e "tiny" "stone" "blog"
blog
tiny
stone
[root@kwc ~]# shuf -e "tiny" "stone" "blog"
stone
blog
tiny
[root@kwc ~]# shuf -e "tiny" "stone" "blog"
tiny
blog
stone # 무작위로 섞어서 결과 출력
[root@kwc ~]# shuf -i 1-30 | column
9 10 8 3 22 29 30 19 4 6
14 2 24 17 25 16 21 20 27 13
7 26 5 23 15 12 11 28 18 1
# 1~30까지 무작위로 섞은 후 행과 열로 구분하여 출력
[root@kwc ~]# shuf -i 1-45 -n 6
19
45
36
21
14
42
# 응용. 1-45까지의 수 중에서 무작위로 6개를 뽑아 출력. 복권 사기 전에 사용하면 좋을 것 같다.
[root@kwc ~]# shuf -i 1-45 -n 6 | paste - - - - - -
4 29 43 1 33 18 # 옆으로 나열하는 방법. -의 개수만큼 나열할 수 있다.
[root@kwc ~]# shuf -i 1-45 -n 6 | paste - - - - - - > num12
[root@kwc ~]# nl num12
1 29 37 19 30 9 39 # num12 파일로 저장한 뒤 불러오기
압축
리눅스에서 많이 사용되는 압축 툴
gzip ↔ gunzip
compress ↔ uncompress
bzip2 ↔ bunzip2
xz ↔ unxz
묶는 명령여 ar, tar 등이 많이 사용된다.
디렉터리는 묶어서 압축한다.
먼저 하나의 파일로 묵은 다음에 묶인 파일을 압축.
alias lh='ls -Alh'
[root@kwc ~/d3]# touch a1 && cat > a1
Hello a1
NC7 3일차 복습중.. # a1 파일 생성
[root@kwc ~/d3]# lh
total 4.0K
-rw-r--r--. 1 root root 26 Apr 30 16:55 a1
[root@kwc ~/d3]# gzip a1 # a1 파일 압축
[root@kwc ~/d3]# lh
total 4.0K
-rw-r--r--. 1 root root 50 Apr 30 16:55 a1.gz # 압축파일이 생성됐다.
[root@kwc ~/d3]# gunzip a1 # 압축풀기
[root@kwc ~/d3]# lh
total 4.0K
-rw-r--r--. 1 root root 26 Apr 30 16:55 a1 # 압축이 풀린 상태.
[root@kwc ~/d3]# bzip2 a1 # bzip2로 압축해보았다.
[root@kwc ~/d3]# lh
total 4.0K
-rw-r--r--. 1 root root 78 Apr 30 16:55 a1.bz2 # 압축파일이 생성됐다.
[root@kwc ~/d3]# bunzip2 a1.bz2 # bzip2 해제 할 땐 bunzip2
[root@kwc ~/d3]# lh
total 4.0K
-rw-r--r--. 1 root root 26 Apr 30 16:55 a1 # 압축해제
[root@kwc ~/d3]# xz a1 # 이번엔 xz로 압축
[root@kwc ~/d3]# lh
total 4.0K
-rw-r--r--. 1 root root 84 Apr 30 16:55 a1.xz # a1.xz 압축파일 생성
[root@kwc ~/d3]# unxz a1.xz # 압축해제
[root@kwc ~/d3]# lh
total 4.0K
-rw-r--r--. 1 root root 26 Apr 30 16:55 a1
tar 사용법
옵션 | 설명 | ||
c (create) | 새로운 tar 파일 생성 | ||
x (extract) | 풀기, 추출하기 | ||
v (verbose) | 상태 보기 | ||
z (gzip, gunzip) | 압축은 gzip, 압축 해제는 gunzip | ||
t (list) | 실제로 압축을 풀지는 않고, 어떤 파일이 압축되어 있는지 보여줌 | ||
f (file) | 필수옵션 |
tar 명령어 사용 시 옵션 앞에 -를 생략할 수 있다.
-를 옵션 앞에 붙여서 사용하면 옵션들의 순서가 정확해야 한다.
압축 파일 확장자 구분
*.tar.gz // gzip
*.tar.Z // compress
*.tar.bz2 // bzip2
*.tar.xz // xz
반응형
'[네이버클라우드] AIaaS 개발자 과정 > Linux' 카테고리의 다른 글
[네이버클라우드캠프] 2023.4.27 Linux(1) - UbuntuLinux 설치 및 기본설정 (0) | 2023.04.30 |
---|---|
[네이버클라우드캠프] 2023.4.26 Linux(3) - RockyLinux 설치 (파티션 분할), 설치 후 기본 설정 (0) | 2023.04.30 |
[네이버클라우드캠프] 2023.4.26 Linux(1) - 파일 분류 권한의 이해 (0) | 2023.04.30 |
[네이버클라우드캠프] 2023.4.25 Linux(2) - 파일 다루기, vi editor, 홈 디렉토리와 환경설정 (0) | 2023.04.29 |
[네이버클라우드캠프] 2023.4.25 Linux(1) - 로그인과 기초 사용법, 절대경로와 상대경로 (0) | 2023.04.29 |