シェル演習

シェル演習:質問を記録し、毎日

1、需要: - バッチファイル名を変更

         / 123ディレクトリの下にある拡張子.txtを持つすべてのファイル

  1. 一括編集.TXTです.txt.bak
  2. すべての.BAKファイルは圧縮123.tar.gzをパッケージ化しています
  3. 復元するバッチファイルの名前は、それが削除.BAKを高めることです 
#!/ binに/ bashを
見つける## txtファイル
検索 / 123型のF -nameを" * .TXT " >を/ tmp / txt.list 
##バッチファイル名を変更
するために F  ` CATを/ tmp / txt.list`
 行います
    ミュージックビデオの$ Fの$のf.bak
 DONE 
ディレクトリを作成するには##、ディレクトリはすでに非常に複雑拡張を追加する、避けるために存在する
D = ` DATE +%Y%mの%のD%のH%Mは%S '
 ます。mkdir / tmpは/ $のD 123_ 
## .BAKはにファイルをコピーを/ tmp / 123_ $ Dの
 ための F  ` CATを/ tmp / txt.list`
 行う
    CPをf.bak $を/ tmp / 123_ $ D
 DONE 
圧縮梱包## 
CDを/ tmp /
 タール CZF 123タール 123_ $ D / .gzを
##削減
のための F  ` CATを/ tmp / txt.list`
 行う
    ミュージックビデオ$ FにF $ BAKは
 DONE

 図2に示すように、要求: - 統計的平均ユーザ

 写个shell,看看你的Linux系统中是否有自定义用户(普通用户),若是有,一共有几个?并输出姓名!
すべてのユーザーが1000以上のuidに共通していると仮定すると、
!/ binに/ bashが
##通常のユーザーを持つ行を見つけ、数カウント
のn = ` awkのを -F ' '  ' $> = 1000 3。'の/ etc / passwdが | WC - L 'は、
##の一般的なユーザーの数を決定する
IF - [$ N GT 0 ]
 、次いで
   ##通常のユーザとどのように多くの出力
    エコー 「$ N-一般ユーザがあるが、」

   最初の行は、(平均的なユーザーのラインとプリントを見つけるために##しますユーザーの名前を持つ行)
    のuname = ` awkの -F ' '  ' $> = 1000 3。'の/ etc / passwdの | awkは-F ' '  ' {$ 1印刷} ' `
     エコー " のユーザは、$のunameでした。" 
他に
    エコーない " 共通のユーザーを。" 
Fiの

3.要件: - ファイルの変更を検出

    B、パスワードなしに直接sshをすることができた場合に2つのLinuxサーバのAとBがあります。AとBは、AとBがまったく同じであれば、そのディレクトリ内のファイルの前に、当然のことながら、我々はいくつかの層の特定のサブディレクトリを知らない、多くがあり、ここでダウンファイル/ /データ/ウェブというディレクトリがあります。しかし、今不確か合意するかどうか。私たちは、この機能を実現するためのスクリプトを記述する必要がソリッド、マシンは、AとBのマシン/データ/ web /ディレクトリのファイル間で標準としてのA・マシン上のファイルを類似点と相違点を検出します。例えば、一つの少ないマシンBのA.TXTファイルならば、我々はそれを検出することができるはず、またはB.TXTファイルB・マシン上の変更を持って、我々はそれを検出することができるはずです(マシンB上の複数のファイル我々は考えていません) 。

 提示: 使用核心命令 md5sum a.txt 算出md5值,去和B机器上的比较。
#!/ binに/ bashのが
Bに#マシンAは、マシンが設定パスワード行われなかったと仮定される
DIR = /データ/ ウェブ
## IPマシンB 192とする168.0100 
B_ip = 192.1680.100 
検索 $ DIRの型F | xargsの md5sumは>は/ tmp / md5.txt
 SSH $ B_ip " | $ DIR型Fを探すには、md5sumの> /tmp/md5_b.txt xargsの" 
SCP /tmp/md5_b.txt /:$ B_ip TMPを

するために F  ` awkの " { $ 2}印刷"を/ tmp / md5.txt`
 行う
    IF  はgrep -q" $ Fを"を/ tmp / md5_b.txt
     その後、
        md5_a = ` grepの $ fが/tmp/md5.txt | awkの ' {$ 1印刷} ' ` 
        md5_b =` grepのの $ fが/tmp/md5_b.txt | awkの ' {$ 1印刷} ' `
         場合、[$のmd5_aは!= $ md5_b]
         その後、
             エコー " $ fは変更しました。" 
        Fiの
    他には
        エコー " $削除。fは" 
    Fiの
完了

 

 

 

おすすめ

転載: www.cnblogs.com/xulx/p/11661666.html