Linux 상용 명령 해석 및 Bash Shell 스 크 립 트 사용법 예시
요약
리 눅 스 명령 은 텍스트 형식 을 바탕 으로 입 출력 하 는 프로그램 으로 유 닉 스 철학 에서 강조 하 는 프로그램 기능 이 간단 하고 입력 이 느슨 하 며 출력 이 엄밀 하 며 각종 프로그램 조합 이 더욱 강력 한 기능 을 가 질 수 있다. 이런 유연성 을 가 진 주요 원인 은 리 눅 스 규정 프로그램의 입 출력 이 반드시 파일 흐름 형식, 즉 텍스트 형식 을 지 켜 야 하기 때문이다.이것 이 리 눅 스 시스템 의 핵심 중 하나 다.
Bash, 즉 Shell 의 일종 으로 현재 주류 Linux 버 전의 기본 명령 행 해석 기 를 발행 하 는 기능 이 강 한 도구 로 Linux 가 지원 하 는 프로그램 명령 의 조합 을 실현 하여 강력 한 기능 을 실현 할 수 있 습 니 다.Window 시스템 과 유사 한 bat 파일, Bash 는 더욱 강력 한 기능 을 가지 고 있 으 며, Bash 를 통 해 자동 화 된 프로 그래 밍, 기능 수행, 심지어 시스템 작 동 을 실현 할 수 있 으 며, 이것들 은 모두 유 닉 스 의 디자인 이념 덕분이다.
이 박문 은 필자 의 경험 담 을 바탕 으로 학습 참고 용 으로 만 제공 되 며 누락 이 있 으 면 댓 글로 지적 해 주 셔 서 감사합니다.
리 눅 스 명령 상세 설명
디 렉 터 리 관련 명령
현재 디 렉 터 리 에 있 는 파일 의 자세 한 내용 을 보 여 줍 니 다. ls 는 파일 이름 만 표시 합 니 다. ll 은 'ls - alF' 명령 의 별명 입 니 다. alias | grep 'll' 명령 을 통 해 볼 수 있 습 니 다.
king@king-desktop:~/test$ ls
t1 test1
king@king-desktop:~/test$ ll
total 12
drwxr-xr-x 3 king king 4096 2014-08-23 18:26 ./
drwxr-xr-x 39 king king 4096 2014-08-23 18:26 ../
-rw-r--r-- 1 king king 0 2014-08-23 18:26 t1
drwxr-xr-x 2 king king 4096 2014-08-23 18:26 test1/
king@king-desktop:~/test$ alias | grep 'll'
alias ll='ls -alF'
또한, 고전 트 리 디 렉 터 리 를 통 해 표시 하려 면 추가 트 리 명령 (비 내부 명령) 을 사용 할 수 있 습 니 다. 구체 적 인 동작 은 다음 과 같 습 니 다. - L 2 는 현재 디 렉 터 리 를 루트 디 렉 터 리 로 하여 디 렉 터 리 구 조 를 2 층 으로 표시 하 는 것 을 말 합 니 다.
king@king-desktop:~$ tree
The program 'tree' is currently not installed. You can install it by typing:
sudo apt-get install tree
king@king-desktop:~$ sudo apt-get install
king@king-desktop:~/test$ tree -L 2
.
|-- t1
`-- test1
`-- t2
1 directory, 2 files
디 렉 터 리 삭제 작업 을 만 들 려 면 mkdir 와 rmdir 두 명령 을 사용 하 십시오. 디 렉 터 리 가 비어 있 지 않 으 면 rm – rf DirName 을 사용 하 십시오.
king@king-desktop:~/test$ ls
t1 test1
king@king-desktop:~/test$ mkdir test2
king@king-desktop:~/test$ rmdir test1
rmdir: failed to remove `test1': Directory not empty
king@king-desktop:~/test$ rm -rf test1
king@king-desktop:~/test$ ls
t1 test2
king@king-desktop:~/test$ rmdir test2/
king@king-desktop:~/test$ ls
t1
tar 명령 사용
포장, 압축 과 압축 해제 에 자주 사용 되 며, 사용 은 매개 변수 와 관련 이 있 습 니 다. 그 중에서 c 는 포장 을 말 합 니 다. x 는 추출 을 말 합 니 다. z 는 gzip 압축 을 말 합 니 다. j 는 bzip 압축 을 말 합 니 다. v 는 압축 해제 과정 을 표시 합 니 다. C 는 지정 한 디 렉 터 리 입 니 다. 여 기 는 압축 해제 할 디 렉 터 리 를 말 합 니 다.디 렉 터 리 test 1 을 포장 하고 나중에 받 는 매개 변수 순 서 를 주의 하 며 포장 의 이름 을 표시 한 다음 에 디 렉 터 리 이름 입 니 다.
king@king-desktop:~/test$ tar -cvf test.tar test1/
test1/
test1/t2
king@king-desktop:~/test$ ls
t1 test1 test.tar
,-C
king@king-desktop:~/test$ tar -xvf test.tar -C ./test1/
test1/
test1/t2
king@king-desktop:~/test$ ls ./test1/
t2 test1
gzip
king@king-desktop:~/test$ tar -czvf test.tar.gz test1/
king@king-desktop:~/test$ tar -xzvf test.tar.gz
bzip2
king@king-desktop:~/test$ tar -cjvf test.tar.bz test1/
tar -xjvf test.tar.bz test1/
파일 관련
파일 내용 보이 기
cat, more, less, head, tail, nl 등 내부 명령 을 포함 하여 실현 가능 하지만 약간 다 릅 니 다.
cat 파일 을 stdout 에 직렬 로 출력 합 니 다. 보통 터미널 에 출력 합 니 다. 일반적인 매개 변 수 는 – n 을 포함 하고 기능 은 nl 과 유사 하 며 동시에 줄 번 호 를 출력 합 니 다.
more 한 페이지 가 넘 거나 터미널 디 스 플레이 길 이 를 초과 한 파일 내용 을 탐색 할 수 있 습 니 다. 스페이스 바 를 통 해 페이지 를 넘 길 수 있 습 니 다. Enter 키 는 열람 이 가능 하고 Q 키 는 종료 되 며 텍스트 는 터미널 에 표 시 됩 니 다.
less 한 페이지 가 넘 거나 터미널 디 스 플레이 길 이 를 초과 하 는 파일 내용 을 탐색 할 수 있 습 니 다. 스페이스 바 를 통 해 페이지 를 넘 길 수 있 습 니 다. Enter 키 는 열람 이 가능 합 니 다. 위아래 화살 표 는 전진 또는 후퇴 가 가능 합 니 다. Q 키 는 종료 되 고 텍스트 는 독립 적 으로 열 리 는 모드 에 표 시 됩 니 다.
head 후 접 매개 변수 – n 10, 물론 10 은 변경 할 수 있 습 니 다. 텍스트 를 표시 하 는 10 줄 을 말 합 니 다.
tail 후 접 매개 변수 - n 10, 위 와 같이 텍스트 를 표시 하 는 후 10 줄 을 말 합 니 다.
nl cat - n
king@king-desktop:~/test$ cat t1
hello
world
!!!
END
gujinjin
king@king-desktop:~/test$ head -n 1 t1
hello
king@king-desktop:~/test$ tail -n 2 t1
END
gujinjin
king@king-desktop:~/test$ nl t1
1 hello
2 world
3 !!!
4 END
5 gujinjin
king@king-desktop:~/test$ cat -n t1
1 hello
2 world
3 !!!
4
5 END
6 gujinjin
king@king-desktop:~/test$ more t1
hello
world
!!!
END
gujinjin
텍스트 흐름 처리 및 사용
텍스트 흐름 모델 은 리 눅 스 의 핵심 사상 중 하나 이기 때문에 명령 은 조합 하여 더욱 강력 한 기능 을 형성 할 수 있다.텍스트 를 처리 하 라 는 명령 이 매우 많 습 니 다. 여기 서 필 자 는 주로 지금 생각 하 는 것 을 소개 합 니 다. 부족 한 점 은 양해 해 주 십시오!
여기에 awk 명령, 즉 텍스트 프로세서, 비교적 강력 하고 신기 합 니 다. 베 어 실험실 의 A, W, K 세 분 이 만 든 것 입 니 다. 입문 은 상당히 쉽 습 니 다. 여기 진 호 선생님 의 글 이 있 습 니 다. 쿨 껍질 망 (CoolShell. cn) 에 발표 되 었 습 니 다. 인터넷 주 소 는 다음 과 같 습 니 다. 재 미 있 는 것 은 볼 수 있 습 니 다.
http://coolshell.cn/articles/9070.html
“|” ,
“>”“>>” , , ,
grep (global search regular expression(RE) and print out the line), –o ,
: IP
king@king-desktop:~/test$ ifconfig | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
192.168.229.200
192.168.229.255
255.255.255.0
127.0.0.1
255.0.0.0
cut ,
, IP , ip.log
: -s , -d , -f , , –f1,3 1,3
king@king-desktop:~/test$ cat ip.log | cut -s -d. -f1
192
192
255
127
255
sort , , –n , ; -r , reverse
n , , ip.log , , :
king@king-desktop:~/test$ cat ip.log | cut -s -d. -f1 | sort
127
192
192
20
255
255
king@king-desktop:~/test$ cat ip.log | cut -s -d. -f1 | sort -n
20
127
192
192
255
255
king@king-desktop:~/test$ cat ip.log | cut -s -d. -f1 | sort -nr
255
255
192
192
127
20
uniq , –c, ,
king@king-desktop:~/test$ cat ip.log | cut -s -d. -f1 | sort | uniq -c
1 127
2 192
1 20
2 255
awk , -F , $1 , 。
king@king-desktop:~/test$ awk -F. '$1>127 && $1<255 {print $0}' ip.log
192.168.229.200
192.168.229.255
텍스트 처리 예시
과거 기록 명령 사용 횟수 를 가장 많이 집계 한 상위 10 개
king@king-desktop:~/test$ history | awk '{print $2}' | sort | uniq -c | sort -nr | head -n 10
255 ls
168 clear
79 cd
64 history
60 sh
48 sudo
46 cat
22 vim
20 clea
19 tree
하하 하, 뭘 발 견 했 는 지 클 라 가 20 번 이나 걸 었 다 니, 클 라 리 어 명령 이 자주 틀 리 는 구나 ~
권한 관련
리 눅 스에 서 권한 관리 시스템 이 완벽 한 것 도 리 눅 스 가 해 킹 을 거의 받 지 않 는 이유 중 하나 다.일반적으로 자주 사용 되 는 세 가지 명령, 즉 변경 파일 권한 의 chmod, chown, chgrp 입 니 다.
chmod , , , 3 , r - 4, w - 2,x - 1, - - 0, u – User, g – Group, o – Other, a – All ,
king@king-desktop:~/test/test1$ chmod ugo=rwx t2
king@king-desktop:~/test/test1$ chmod a=rwx t2
king@king-desktop:~/test/test1$ chmod 777 t2
king@king-desktop:~/test/test1$ ll t2
-rwxrwxrwx 1 king king 10240 2014-08-23 19:27 t2*
chown ,
king@king-desktop:~/test/test1$ sudo chown root t2
king@king-desktop:~/test/test1$ ll t2
-rwxrwxrwx 1 root king 10240 2014-08-23 19:27 t2*
king@king-desktop:~/test/test1$ sudo chown root:root t2
king@king-desktop:~/test/test1$ ll t2
-rwxrwxrwx 1 root root 10240 2014-08-23 19:27 t2*
chgrp
king@king-desktop:~/test/test1$ sudo chgrp root t2
king@king-desktop:~/test/test1$ ll t2
-rwxrwxrwx 1 king root 10240 2014-08-23 19:27 t2*
네트워크 관련
ifconfig
netstat TCP ,TCP、UDP , , , 。 –r , -i interface ,-a socket
king@king-desktop:~/test/test1$ netstat -a | grep tcp | head -n 1
tcp 0 0 *:ssh *:* LISTEN
lsof list open files, , root 。 80 :
root@king-desktop:~# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 987 root 3u IPv4 4423 0t0 TCP *:www (LISTEN)
apache2 3899 www-data 3u IPv4 4423 0t0 TCP *:www (LISTEN)
apache2 3900 www-data 3u IPv4 4423 0t0 TCP *:www (LISTEN)
apache2 3901 www-data 3u IPv4 4423 0t0 TCP *:www (LISTEN)
apache2 3902 www-data 3u IPv4 4423 0t0 TCP *:www (LISTEN)
apache2 3903 www-data 3u IPv4 4423 0t0 TCP *:www (LISTEN)
nc NetCat, , ,
: -4 IPv4, -6 IPv6, -v , -w (s) , -z , -u UDP TCP
king@king-desktop:~$ nc -v -w 2 -z 192.168.229.200 76-80
nc: connect to 192.168.229.200 port 76 (tcp) failed: Connection refused
nc: connect to 192.168.229.200 port 77 (tcp) failed: Connection refused
nc: connect to 192.168.229.200 port 78 (tcp) failed: Connection refused
nc: connect to 192.168.229.200 port 79 (tcp) failed: Connection refused
Connection to 192.168.229.200 80 port [tcp/www] succeeded!
Bash Shell 구체 적 실현 예시
여기 서 자주 사용 하 는 작은 예 를 몇 개 열거 하 는 것 은 Shell 문법 에 대한 기본 적 인 회고 라 고 할 수 있다.
지정 한 시간 내 에 작성 자가 파일 지정 문자열 을 수정 하 는 것 에 대한 보기
#!/bin/bash
res=`ls -l | awk '$3=="king" && $6=="2014-08-23" && $7<"22:10" && NR!=1 {print $8}'`
#echo $res
for var in $res;do
r=`cat ./$var | grep -n -w 'test' >> mod.log`
#echo $var
if [ $? -ne 0 ];then
echo "Execute CMD error!!!"
exit 1
fi
done
exit 0
king@king-desktop:~/Shell$ sudo sh p1.sh
king@king-desktop:~/Shell$ cat mod.log
1:this is a test this is a test
6:this is a test this is a test
프로 세 스 를 시작 하 는 배경 에서 실행 한 다음 작업 이 끝 난 후 프로 세 스 를 닫 습 니 다.
#!/bin/bash
DIR=/home/king/CPPFile/Socket
echo $DIR
if [ -e $DIR/server ];then
$DIR/server & > info.log 2>&1
if [ $? -ne 0 ];then
echo "Execute Wrong!"
exit 1
fi
sleep 2
pid=$!
echo $pid
kill -9 $pid
if [ $? -ne 0 ];then
echo "fail to kill pid"
exit 2
fi
fi
exit 0
king@king-desktop:~/CPPFile/Socket$ sudo sh test.sh
/home/king/CPPFile/Socket
16028
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.