klaus

[KDT-DAY_12] Linux (feat. 명령어) 본문

수업/KDT

[KDT-DAY_12] Linux (feat. 명령어)

klus! 2023. 1. 10. 16:39

0.들어가기

- 지난시간에는 연산 부호를 공부

 

 

[+] 정규 포현식

touch doc1 doc2 doc3 docA docB docC docD main.c main.o calc.c 파일생성

 

- 대괄호 [ ]

ls doc[1AC]

 

 

ls doc[1-6]

 

ls doc[B-F]

ls *.[co]

확장자가 c나 o인 경우

- 중괄호 {} 

touch doc{ument,draft} && mkdir {fall,winter,spring}report

중괄호를 사용하여 파일과 디렉터리 만들기

ls doc?

==> doc으로 시작하는 파일보기

ls *report

리포트로(report) 끝나는 파일 보기

 

- >

2 > &

https://knight76.tistory.com/3087

 

간단하게 1>, >2, >&2, 2>&1, exec를 살펴보기

쉘 스크립트에서 >와 /dev/null cp file-name > /dev/null >1은 커맨드의 표준 출력을 다음에 나오는 파일 디스크립터에 전달한다. $ ls b* >1 m.log$ cat m.log... >2는 쉘 스크립트의 표준 에러를 다음에 나오는 파

knight76.tistory.com

 

[+] cut 

- 필요한 부분만 추출하는 명령어

 

[실습]

head - 2와 같은 경우 두줄 또는 10자리를 표기한다고 할 때, 콜론(:)으로 구별하였다.

만약, cut을 사용하여 열의 구분하여 화면에 출력하고 싶을 때, 아래와 같이 사용할 수 있다.

- cat /etc/passwd |cut -d":" -f1,6,7 | sort -r | cat -n >user_pass.txt  

 > sort -r 역순 정렬

> cat -n 줄표기

> user_pass.txt 파일에 저장하여라

 

 

 

[+] cmp / comm 

- 파일을 비교해주는 명령어 < == >diff

[실습]

 

- cmp

- comm

- 비교를 할 때, 처음 파일을 기준으로 하나의 문자열이 있을 때마다 \t를 해준다

 

- diff 

 

 

[+] grep, fgrep, egrep, pgre

- 정규 표현식 패턴으로 검색해주는 명령어

 

패   턴 설    명
[aeiou]  
   
   
   
   
   
   

^카레트? 시작 $ 끝

 

 

[실습] httpd 파일을

grep -n "httpd" httpd.conf 

==>httpd.conf 파일에 줄을 붙여서

cat -n httpd.conf |grep "httpd"

 

grep -c "httpd" httpd.conf

=> httpd가 포함된 줄수는?

grep -v "httpd" httpd.conf |wc -l

==> httpd포함되지 않은 줄은?

grep -c "httpd" test.txt

 

grep -n "httpd" test.txt

grep -v "httpd" test.txt

 

 

 

 

grep ^# testt.txt

 

 

 

 

grep -v ^$ testt.txt

== > 빈 줄($)을 빼고 출력

 

 

grep -v ^# testt.txt |grep -v ^$                  == grep ^[^#$] testt.txt 

==> 주석으로 시작하고 끝

grep ^[^root] /etc/passwd

= root (문자별 r.o.o.t라는 문자)로 시작하는 열을 출력

 

grep -n ^[^#$] testt.txt

grep -n(줄번호) ^(부정) [^(시작) #(주석시작)$(빈줄)] [파일이름]

즉, 주석과 빈 줄로 시작되지 않는 실제 내용만 줄 번호를 붙여서 보이는 것

==> ^[ ] 부정 의미

 

- fgrep -i "RoOt" /etc/passwd /etc/group /etc/shdow

 

- pgrep bash   ==  pidof bash

 

- egrep -e ^root /etc/passwd

==> /etc/passwd에서 첫번째로 root시작하는 것을 찾음

 

[+] tr

- 파일에서 문자열을 변환시키는 명령어

 

[실습]

 head -1 /etc/passwd |tr root ROOT

소문자 root를 대문자로 표기하여라

 

grep 'root' /etc/passwd |tr 'root' 'admin'

 

 

 

[+] 클래스 사용법

tr [:lower:] [:upper:]     == tr 'a-z' 'A-Z'

== > 소문자를 대문자료 변경하여라 (입력값을)

 

 

echo 'my name is 12345' |tr -d [:alpha:]

==  문자를 삭제하고 출력되도록

[:digit:] : 문자만 출력하기

 

[+] awk

- 패턴 검색과 처리를 위한 명령어

 

 

[실습]

 

-F 필드 구분자

 

 

 

[+] sed (stream editor)

파일을 갈무리해서 보이는 명령어 (변경도 가능)

sed [OPTION] {script-only-if-no-other-script} [input-file]

 

[실습]

sed -n '2p' abc.txt 

2p줄만 출력

sed -n '2,5p' abc.txt

2번줄부터 5번 줄만

 

 

 

 

sed -e '1a\Z' abc.txt | cat -n

==> 첫번째 줄 뒤에 

 

 

sed -e '$a\FF' abc.txt

==> abc.txt파일에 마지막 줄에 FF를 추가한다.

 

sed G abc.txt | cat -n

G는 공백라인을 넣는다.

 

 

- sed -e 's/b/x/g abc.txt | cat -n          ==> /g를 모든 줄에서 라는 의미

- sed -e 's/c/k/' abc.txt |cat -n             ==> c를 K로 변경하여라

 

- sed -e '2s/b/k/g' abc.txt |cat -n

=> 두번째만 변경된다.

- sed -e '2,5s/b/k/g' abc.txt | cat -n 

2~5번까지 b가 있으면 k로 변경하여라

 

 

- sed -e '4d' abc.txt | cat -n

==> 4번째 줄을 지워라

 

- sed -e '2,5s/b/ /g' abc.txt | cat -n

 / / 공백을 넣어 줄 수도 있다.

 

 

sed -e '2,5s/b/ /g' abc.txt | cat -n

 

 

 

 

sed -n '2,4p' abc.txt | cat -n

sed -n '2,4p' abc.txt | cat -n

 

 

 

 

 

sed -n '/[^Bb]/p' abc.txt | cat -n

= Bb로 시작하지 않는 것을 찾을 때

 

 

 

 

sed -i '1a\ZZ' abc.txt | cat -n

-i 옵션은 내용을 추가해서 저장하여라 라는 옵션

이번에는 cat -n이 실행되지는 않았음(

 

 

 

[혼자 실습]

1) head –5 /root/initial-setup-ks.cfg | cat –n 

==> /root/initial-setup-ks.cfg 파일의 위에 부터 줄의 번호를 붙여 5줄을 화면에 출력하여라.

 

2) 단어/어구 변경은 's/바뀔_단어/바꿀_단어/' 형식이다. 
 > sed -e 's/System/SYSTEM/g' /root/initial-setup-ks.cfg | head 

     =>모든 System이 SYSTEM으로 변경됨

sed -e '1,5s/System/SYST/g' /root/initial-setup-ks.cfg | head  
=>1~5줄 내에서만 SYSTEM이 SYST로 바뀜


sed -e 's/SYSteM/SYSTEM/gi' /root/initial-setup-ks.cfg | head 
=>대소문자 구별하지 않고 SYSTEM으로 변경 == sed -e 's/[Ss]ystem/SYSTEM/g' /root/initial-setup-ks.cfg | head 

 

 

3) 단어/어구 삭제는 '패턴/d' 형식이다. 
sed -e 's/System/(공백)/gi' /root/initial-setup-ks.cfg | head 
=>"System" 단어가 있으면 삭제


sed -e 'd' /root/initial-setup-ks.cfg | head 
=> 모든 문자 및 문자열을 삭제하여라(Delete) 즉, 아무것도 표기되지 않음.

sed -e '4d' /root/initial-setup-ks.cfg > /home/centos/initial-setup-ks.cfg.bak 
=>4번째 줄을 지우고 /home/centos/아래 initial-setup-ks.cfg.bak으로 저장한다. 

=>sed -i '4d' /root/initial-setup-ks.cfg 한 것과 동일하다.
=>diff /root/initial-setup-ks.cfg /home/centos/initial-setup-ks.cfg.bak 해서 차이 나는 곳을 본다. 


sed -e '3,$d' /etc/passwd | head
=>3줄부터 끝줄까지 삭제


sed -e '1,10d' /etc/passwd | head 
=>1~10줄까지 삭제

 

 

sed -e '/^#/d' /etc/httpd/conf/httpd.conf | head -20
=>주석#으로 시작되는 줄만 삭제. ^#이 부호라는 의미로 전후에 /~/을 붙였다.  


sed -e '3,7s/sbin/(빈칸)/g' /etc/passwd | cat –n 
=>3~7줄에서 sbin만 삭제

 

 

 

 

 

 


sed -e '/^$/d' /etc/httpd/conf/httpd.conf | cat –n 
=>공백 줄만 삭제
sed -e '/^$/!d' /etc/httpd/conf/httpd.conf | cat –n 
=>공백 줄만 삭제하지 않음 
sed -e '3,7d' /etc/passwd | head | cat –n  
=>3~7줄만 빼고 보임 
sed -e '/root/d' /etc/passwd | cat –n 
=>root가 포함된 줄만 삭제
sed -e '/^#$/d' /etc/httpd/conf/httpd.conf | sed -e '/^$/d' | cat –n 
=>주석#과 빈 줄을 모두 삭제
=>sed -i '/^$/d' /etc/httpd/conf/httpd.conf && sed '/^#/d' /etc/httpd/conf/httpd. conf && cat -n /etc/httpd/conf/httpd.conf
=>빈 줄과 주석#을 제외하고 저장함

 

 

 

몇 줄 안으로 들여쓰기 # 줄을 지운다면

sed '\/#/d' [파일 위치]

sed '\/#/d' /etc/httpd/conf/httpd.conf 와 sed '/^[*]#/d' /etc/httpd/conf/httpd.conf를 사용할 수 있다.

 

split - b 22 /etc/passwd  PASSS

파일을 분할해주는 명령어

 

 

줄로 나누는 경우 split -l 10 /etc/passwd  PASSS

 

 

 

 

 

 

 

 

 

[+] 소유권과 허가권

 

 

 

chmod

허가권(권한) 변경하는 명령어

- 허가권은 파일의 소유자/그룹/기타로 액세스하도록 설정할 수 있다.

문자식 변경은 읽기(r) 쓰기(w) 실행(x)순으로 할수있고 권한의 추가 및 삭제는 + -로 할수 있다.

==> 새롭게 파일 디렉터리를 생성하면 기본적으로 권한은 파일666, 디렉터리 777권한

 

 

 

 

 

수치로 권한을 지정할 수 있다. 읽(4) 쓰(2) 실(1)

 

 

하위 디렉터리까지 적용하기(-R) 는 mkdir -p /xyz/ABC 생성하고

chmod -R 222 /XYZ 으로 권한을 부여하였을 때 하위 디렉터리까지 변경되는 것을 확인할 수 있다.

 

[+]chown

소유권 변경 

-R, --recursive        operate on files and directories recursively

 

 

 

 

 

 

[실습]

 

 

 

 

 

 

특수파일

/dev/sdb1은 cat /proc/partitions

proc는 가상파일 시스템에서 인식한 각 블록장치의 메인과 마이너의 넘버를 확인할 수있다.

sdb0 hdd / sr0 cd-rom

tty 콘솔

 

 

 

 

Named pipe

 

 

 

socket file

temporary file

내일은 편집기!

01-10_2.txt
0.02MB

Comments