Shell学習(五)---stty,[[等]


1、指定ファイルに指定された文字の個数を計算しますか?
   cat file|tr -cd letters|wc -c
説明:tr-cd lettersは、lettersに一致しない文字がすべて削除される限り、-cオプションは反転の意味であり、一致しないlettersの文字を操作し、-dオプションは削除されます.wc-cの役割は文字カウントです.

  
  
  
  
  1. [root@PC shell]# cat 1 
  2. 1 2 3 
  3. 2 3 4 
  4. 3 4 5 
  5. 4 5 6 
  6. [root@PC shell]# cat 1 | tr -cd 3 | wc -c 
  7. [root@PC shell]# cat 1 | tr -cd 1 | wc -c 
  8. [root@PC shell]# cat 1 | tr -cd 4 | wc -c 

wc-cが中国語に対してどのように処理した結果なのか知りたいです.

  
  
  
  
  1. [root@PC shell]# echo   | wc -c 
  2. [root@PC shell]# echo -n   | wc -c #  3 
  3. [root@PC shell]# echo 123 | wc -c 
  4. [root@PC shell]# echo -n 123 | wc -c #  echo   wc ,  -n   

2,stty
端末操作パラメータを設定、リセット、レポートします.
まあ、これは本当に覚えにくい命令だと言わなければなりません.上手に使うのはしばらく考えないでください.
まず、面白い使い方を話して、ステルス:

  
  
  
  
  1. [root@PC shell]# stty -echo #  , , ,  
  2. [root@PC shell]# 1  2  3  4  5  6  7  8  a  c  scripts  xx 
  3. [root@PC shell]# Linux PC 2.6.18-194.32.1.el5 #1 SMP Wed Jan 5 17:53:09 EST 2011 i686 i686 i386 GNU/Linux  
  4. [root@PC shell]#   
  5. [root@PC shell]# [root@PC shell]#   # echo,stty echo 
  6. [root@PC shell]# ls 
  7. 1  2  3  4  5  6  7  8  a  c  scripts  xx 
  8. [root@PC shell]# uname -a 
  9. Linux PC 2.6.18-194.32.1.el5 #1 SMP Wed Jan 5 17:53:09 EST 2011 i686 i686 i386 GNU/Linux 
  10. [root@PC shell]# echo " " 
  11.  

もちろん他にも重要な使用があり、端末を柔軟に制御しています.

  
  
  
  
  1. [root@PC shell]# stty -a  #   
  2. speed 38400 baud; rows 27; columns 91; line = 0
  3. intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>eol2 = <undef>
  4. swtch = <undef>start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; 
  5. flush = ^O; min = 1time = 0
  6. -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr 
  7. -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany 
  8. -imaxbel -iutf8 
  9. opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 
  10. isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke 
  11. [root@PC shell]# 

次のようになります.
  • eof:入力終了
  • erase:後方削除文字、
  • intr:現在のプログラムを中断する
  • kill:コマンド全体を削除
  • quit:現在のプログラム
  • を終了
  • start:起動画面出力
  • stop:画面出力を停止する;
  • susp:terminal stop現在のプログラム.

  • 詳細については、以下を参照してください.http://study.chyangwa.com/IT/AIX/aixcmds5/stty.htm
    3,pidof
    ジョブを実行しているプロセスID(PID)を取得します.
    
      
      
      
      
    1. [root@PC shell]# pidof vsftpd 
    2. 1368 
    3. [root@PC shell]# pidof httpd 
    4. 8326 8286 8091 8062 7755 7566 7418 7249 7102 2129 2101 

    4,fuser
    fuserコマンドは、指定したファイルまたはファイルシステムでプロセス番号を表示します.デフォルトでは、各ファイル名の後にアルファベットが付いてタイプを表します. 
    必須パラメータ
    -l表示信号
    -4 IPv4
    -6 IPv6
    -aプログラムに関連するすべてのファイル
    -kプログラム関連のすべてのファイルを削除
    -Iインターチェンジモード
    -s処理情報を表示しない
    -u PID表示ユーザ名
    -v運転時、信頼処理情報を表示
    -クリア
    -mファイルシステムのマウント
    -signal送信信号
     
    -nファイル、UDP、TCPなどのキーワードを指定して検索する
    -V表示バージョン表示
    プロセス番号の後ろには、プロセスがファイルをどのように使用するかを示すアルファベットが付いています.
    c:現在のディレクトリ
    e:拡張
    f:開いているファイル
    r:ルートディレクトリ
    m:共有ライブラリ
    
      
      
      
      
    1. [root@PC lib]# fuser /home/max #  /home/max  
    2. /home/max:           14606c 
    3. [root@PC lib]# ps aux | grep 14606 | grep -v grep #   
    4. max      14606  0.6  0.1   5008  1468 pts/1    Ss+  01:21   0:00 -bash 
    5. #  , putty max ,  

     
    まだ少し巧みに使っていますが、テクニックが多すぎて、もっと練習します.
    
      
      
      
      
    1. [root@PC lib]# fuser -un tcp 21 #  21 ftp  
    2. 21/tcp:               1368(root) 
    3. [root@PC lib]# ps aux | grep 1368 | grep -v grep #   vsftpd 
    4. root      1368  0.0  0.0   5296   528 ?        Ss   Mar12   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf 


    5,[[ ]]、[ ]、(( ))
    もちろん、これらのものは本当に少しぼんやりしています.
    [...]の使用条件判断構造は[...]ではなく、スクリプトの多くの論理エラーを防止することができる.たとえば,&,|,<,和>オペレータは[]]条件判断構造に正常に存在するが,[]構造に現れるとエラーを報告する.(()構造は演算式の値を拡張して計算する.式の結果が0の場合、返される終了ステータスコードは1または偽です.ゼロ以外の式で返される終了ステータスコードは0またはtrueになります.
    次に、上記の言葉について実験を行います.実験の前に、shellの下の構造についてお話しします.dosomething&&thendoの意味はdosomethingが成功した後にthendoを実行することです.dosomething||thendoはdosomethingが失敗した後にthendoを実行することです.
    
      
      
      
      
    1. [root@PC lib]# [[ 1&&2 ]] 
    2. [root@PC lib]# [ 1&&2 ] #   
    3. -bash: [: missing `]' 
    4. [root@PC lib]# a=2+3 #   
    5. [root@PC lib]# echo $a 
    6. 2+3 
    7. [root@PC lib]# ((a=2+3)) #   
    8. [root@PC lib]# echo $a 
    9. [root@PC lib]# (a=2+3) #   
    10. [root@PC lib]# echo $a 
    11. [root@PC lib]# (a++) #  。。。。 
    12. -bash: a++: command not found 
    13. [root@PC lib]# ((a++)) #  (( )) 。 
    14. [root@PC li 

    さて、この2日間の学習成果は2つのブログになりました.心を静めて練習しましょう...