学習linux 11

9772 ワード

shell
十.shell特殊文字_Cutコマンド
特殊記号
1.*任意の文字2.?任意の文字3.#コメント文字4.エスケープ文字5.|パイプ文字
Cutコマンドは、フィールドを切り取るために使用されます.
Cutオプション-d文字分割文字は単一引用符で囲む必要があります-c指定の後に何番目の文字-fが指定フィールドの内容を表示するかを指定します
Cutの使い方
[root@qklinux-01 ~]# cat /etc/passwd |head
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@qklinux-01 ~]# cat /etc/passwd |head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

[root@qklinux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1 //       
root
bin
[root@qklinux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2 //       
root:x
bin:x
[root@qklinux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1-3  //       
root:x:0
bin:x:1

十一sort_wc_Uniqコマンド
sortソート、-n数字ソート-r逆ソート-tセパレータ–kn 1/-kn 1,n 2例:追加/etc/passwdから1.txt
[root@qklinux-01 ~]# head /etc/passwd >> 1.txt 1.txtファイルを編集して特殊記号を書き込む
[root@qklinux-01 ~]# vim 1.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
1212aaaaaa
88888888dhajskkd
*sjakjsk
1212312
1231
>
<
{
]

sortでソート
[root@qklinux-01 ~]# sort 1.txt
<
>
]
{
1212312
1212aaaaaa
1231
1.txt
2.txt
88888888dhajskkd
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/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
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
*sjakjsk
sync:x:5:0:sync:/sbin:/bin/sync

sort-nアルファベットと特殊記号を数字で並べ替えると0とみなされます
[root@qklinux-01 ~]# sort -n 1.txt
<
>
]
{
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/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
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
*sjakjsk
sync:x:5:0:sync:/sbin:/bin/sync
1.txt
2.txt
1212aaaaaa
1231
1212312
88888888dhajskkd

sort-rは最大の数字を逆順に並べ替えます
[root@qklinux-01 ~]# sort -nr 1.txt
88888888dhajskkd
1212312
1231
1212aaaaaa
2.txt
1.txt
sync:x:5:0:sync:/sbin:/bin/sync
*sjakjsk
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
{
]
>
<

wcコマンドwc–l統計行数
[root@qklinux-01 ~]# wc -l 1.txt
21 1.txt

wc-m統計文字数
[root@qklinux-01 ~]# wc -m 1.txt
455 1.txt

wc–w統計語
[root@qklinux-01 ~]# wc -w 1.txt
21 1.txt

Uniqコマンドは再編集2.txtファイル
[root@qklinux-01 ~]# vi 2.txt
[root@qklinux-01 ~]# cat 2.txt
123
abc 111,222
123
abd
1
2
1

並べ替えてからやり直す
[root@qklinux-01 ~]# sort 2.txt |uniq
1
123
2
abc 111,222
abd
[root@qklinux-01 ~]# sort 2.txt |uniq -c
      2 1
      2 123
      1 2
      1 abc 111,222
      1 abd

12 tee_tr_splitコマンドteeコマンドと>同様に、リダイレクトと同時に画面に表示されます.
[root@qklinux-01 ~]# sort 2.txt |uniq -c |tee a.txt
      2 1
      2 123
      1 2
      1 abc 111,222
      1 abd
[root@qklinux-01 ~]# cat a.txt
      2 1
      2 123
      1 2
      1 abc 111,222
      1 abd

tee–aはコンテンツの追加も可能です
[root@qklinux-01 ~]# sort 2.txt |uniq -c |tee -a a.txt
      2 1
      2 123
      1 2
      1 abc 111,222
      1 abd
[root@qklinux-01 ~]# cat a.txt
      2 1
      2 123
      1 2
      1 abc 111,222
      1 abd
      2 1
      2 123
      1 2
      1 abc 111,222
      1 abd

trコマンドは、文字tr'a'b'の大文字と小文字を置換するために使用されますtr'[a-z][A-Z]'を置換します.
[root@qklinux-01 ~]# echo "qkailinux" |tr '[al]' '[AL]'
qkAiLinux
[root@qklinux-01 ~]# echo "qkailinux" |tr 'a' 'A'

qkAilinux
[root@qklinux-01 ~]# echo "qkailinux" |tr '[a-z]' '[A-Z]'
QKAILINUX

splitカット、ドキュメントのカット、-bサイズ(デフォルト単位バイト)
リダイレクトファイルの追加
[root@qklinux-01 ~]# find /etc/ -type f -name "*conf" -exec cat {} >> a.txt \;
[root@qklinux-01 ~]# du -sh a.txt
240K	a.txt
[root@qklinux-01 ~]# ls
111          4.txt
123          aa.txt
1_heard.ttx  anaconda-ks.cfg.1
1_sorft.txt  a.txt
1.txt        a.xtt
1.txt~       bb.txt
1.xtt        qkai2
234          yum.log
2.txt        zsh-5.0.2-31.el7.x86_64.rpm
3.txt              .txt
[root@qklinux-01 ~]# mv a.txt test/
mv:    "a.txt"    "test/":     
[root@qklinux-01 ~]# mkdir test
[root@qklinux-01 ~]# mv a.txt test/

カットファイル1000 kに単位を付けないデフォルトはバイトです
[root@qklinux-01 test]# split -b 1000 a.txt
[root@qklinux-01 test]# ls
a.txt  xaw  xbt  xcq  xdn  xek  xfh  xge  xhb  xhy  xiv
xaa    xax  xbu  xcr  xdo  xel  xfi  xgf  xhc  xhz  xiw
xab    xay  xbv  xcs  xdp  xem  xfj  xgg  xhd  xia  xix
xac    xaz  xbw  xct  xdq  xen  xfk  xgh  xhe  xib  xiy
xad    xba  xbx  xcu  xdr  xeo  xfl  xgi  xhf  xic  xiz
xae    xbb  xby  xcv  xds  xep  xfm  xgj  xhg  xid  xja
xaf    xbc  xbz  xcw  xdt  xeq  xfn  xgk  xhh  xie  xjb
xag    xbd  xca  xcx  xdu  xer  xfo  xgl  xhi  xif  xjc
xah    xbe  xcb  xcy  xdv  xes  xfp  xgm  xhj  xig  xjd
xai    xbf  xcc  xcz  xdw  xet  xfq  xgn  xhk  xih  xje
xaj    xbg  xcd  xda  xdx  xeu  xfr  xgo  xhl  xii  xjf
xak    xbh  xce  xdb  xdy  xev  xfs  xgp  xhm  xij  xjg
xal    xbi  xcf  xdc  xdz  xew  xft  xgq  xhn  xik  xjh
xam    xbj  xcg  xdd  xea  xex  xfu  xgr  xho  xil  xji
xan    xbk  xch  xde  xeb  xey  xfv  xgs  xhp  xim  xjj
xao    xbl  xci  xdf  xec  xez  xfw  xgt  xhq  xin  xjk
xap    xbm  xcj  xdg  xed  xfa  xfx  xgu  xhr  xio  xjl
xaq    xbn  xck  xdh  xee  xfb  xfy  xgv  xhs  xip
xar    xbo  xcl  xdi  xef  xfc  xfz  xgw  xht  xiq
xas    xbp  xcm  xdj  xeg  xfd  xga  xgx  xhu  xir
xat    xbq  xcn  xdk  xeh  xfe  xgb  xgy  xhv  xis
xau    xbr  xco  xdl  xei  xff  xgc  xgz  xhw  xit
xav    xbs  xcp  xdm  xej  xfg  xgd  xha  xhx  xiu
[root@qklinux-01 test]# du -sh
1.3M	.

サイズの指定
[root@qklinux-01 test]# split -b 100k a.txt
[root@qklinux-01 test]# ls
a.txt  xaa  xab  xac
[root@qklinux-01 test]# du -sh *
240K	a.txt
100K	xaa
100K	xab
40K	xac

abcで始まる名前を指定
[root@qklinux-01 test]# split -b 100k a.txt  abc
[root@qklinux-01 test]# ls
abcaa  abcab  abcac  a.txt

指定カット1000行ごとに1つのsplit指定行数
[root@qklinux-01 test]# split -l 1000 a.txt
[root@qklinux-01 test]# wc -l *
  2500 abcaa
  2577 abcab
  1101 abcac
  6178 a.txt
  1000 xaa
  1000 xab
  1000 xac
  1000 xad
  1000 xae
  1000 xaf
   178 xag
 18534    

shell特殊記号特殊記号$変数接頭辞、!変数接頭辞!変数接頭辞!組合せ正則の中に行位を表す.複数のコマンドを1行に書き、セミコロンで分割します.たとえば、次のようにします.
[root@qklinux-01 ~]# ls 1.txt ; wc -l 2.txt
1.txt
7 2.txt

~ユーザーのホームディレクトリ、後の正規表現でマッチングを表す&コマンドをバックグラウンドに置く
[root@qklinux-01 ~]# sleep 30&
[1] 8188
root@qklinux-01 ~]# jobs
[1]+                    sleep 30 &

大きい番号は正しいリダイレクトが前の内容を上書きすることを示します
2つ以上の番号を追加リダイレクト2>エラーリダイレクト2>>エラー追加リダイレクト&>正しいエラーを区別せずにすべて1つのファイルに入力
中かっこ[]文字の1つを指定し、[0-9][abc]
記号||&&&、コマンド間で使用する場合はshellで表すか、コマンド用の場合は1番目のコマンドが正常に実行されると2番目のコマンドは実行されず、1番目のコマンドが間違っている場合は実行に失敗して2番目のコマンドが実行されます
  [root@qklinux-01 ~]# ls a.txt || wc -l 2.txt
    ls:     a.txt:          
    7 2.txt
    [root@qklinux-01 ~]# ls 1.txt || wc -l 2.txt
    1.	txt

&&コマンドは、前のコマンドが正常に実行されたことを示します.後のコマンドが正常に実行されなかった場合、後のコマンドは実行されません.
[root@qklinux-01 ~]# ls 1.txt && wc -l 2.txt
1.txt
7 2.txt
[root@qklinux-01 ~]# ls 1a.txt && wc -l 2.txt
ls:     1a.txt:          

知識の拡張
簡易監査システム1.linuxシステム追加操作記録監査設定オンラインユーザー操作記録履歴履歴設定ユーザー操作記録リアルタイム記録一般ユーザーが削除する権限がないことを保証するステップ:ディレクトリを作成し権限を与える
1.mkdir -p /usr/local/domob/records/
chmod 777 /usr/local/domob/records/
chmod +t /usr/local/domob/records/

2 vi/etc/profile最後に次のコードを追加
  if [ ! -d /usr/local/domob/records/${LOGNAME} ]
    then
    mkdir -p /usr/local/domob/records/${LOGNAME}
    chmod 300 /usr/local/domob/records/${LOGNAME}
    fi
    export HISTORY_FILE="/usr/local/domob/records/${LOGNAME}/bash_history"
    export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'

二.PROMPT_についてCOMMAND環境変数の意味http://www.linuxnote.org/prompt_command-environment-variables.html义齿http://alsww.blog.51cto.com/2001924/1113112sortはASCIIでソートされていませんhttp://blog.csdn.net/zenghui08/article/details/7938975