Linux 상용 명령 해석 및 Bash Shell 스 크 립 트 사용법 예시

10197 단어

요약
리 눅 스 명령 은 텍스트 형식 을 바탕 으로 입 출력 하 는 프로그램 으로 유 닉 스 철학 에서 강조 하 는 프로그램 기능 이 간단 하고 입력 이 느슨 하 며 출력 이 엄밀 하 며 각종 프로그램 조합 이 더욱 강력 한 기능 을 가 질 수 있다. 이런 유연성 을 가 진 주요 원인 은 리 눅 스 규정 프로그램의 입 출력 이 반드시 파일 흐름 형식, 즉 텍스트 형식 을 지 켜 야 하기 때문이다.이것 이 리 눅 스 시스템 의 핵심 중 하나 다.
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

좋은 웹페이지 즐겨찾기