シェル演習:質問を記録し、毎日
1、需要: - バッチファイル名を変更
/ 123ディレクトリの下にある拡張子.txtを持つすべてのファイル
- 一括編集.TXTです.txt.bak
- すべての.BAKファイルは圧縮123.tar.gzをパッケージ化しています
- 復元するバッチファイルの名前は、それが削除.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.0。100 B_ip = 192.168。0.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の 完了