シェルスクリプトの一般的なコマンド(diff、patch、cut、sort、uniq、tr、&&および||、test)

diffとpatch

diffは通常ファイルの内容を比較し、patchはパッチを適用するためによく使用されます

    diff的输出信息:
     
    [num1,num2]  [ a | c | d ]  [num3,num4]
     
    num1,num2               第一个文件中的行
     
    a                       添加
     
    c                       更改
     
    d                       删除
     
    <                       第一个文件中的内容
     
    >                       第二个文件中的内容

比較する2つのファイルに違いがない場合、diffコマンドは情報を表示しません
ここに写真の説明を挿入

diff後のファイル順序の表示を変更します
ここに写真の説明を挿入

cは変化を意味します
ここに写真の説明を挿入

    diff的常用参数
     
    -b                 忽略空格
     
    -B                 忽略空行
     
    -i                 忽略大小写
     
    -c                 显示文件所有内容并标示不同
     
    -r                 对比目录
     
    -u                 合并输出

diff -bB westos westos1は、比較時にスペースと空白行を無視します
ここに写真の説明を挿入

diff -i westoswestos1ケースを無視

ここに写真の説明を挿入

diff -c westos westos1はファイルのすべての内容を表示し、違いをマークします

ここに写真の説明を挿入

diff -r sss / test /はディレクトリの違いを示します

ここに写真の説明を挿入

diff -u westos westos1> Combine 2つのファイルを結合し、新しいファイルにインポートします
ここに写真の説明を挿入

patch
 
dnf install patch -y                              安装patch
 
diff -u westos westos1 > westos.path              生成补丁文件
 
patch -b westos westos.path                       给westos打补丁同时备份原文件

ここに写真の説明を挿入

CUTコマンド

切る

      -b                                         指定字节
 
      -d  :                                      指定“:”为分隔符(此处指原文件中的分割符)
 
      -f                                         指定列
 
      -c                                         指定截取字符
 
      --compement                                反选
 
      --output-delimiter=分割符                   指定输出的分割符

カット-d:-f 1 passwd
ここに写真の説明を挿入

カット-d:-f 1-3 passwd
ここに写真の説明を挿入

カット-c1,3 passwd
ここに写真の説明を挿入

カット-d "" -f 1-3 westos --complement

cut -d "" -f 1-2 westos --complement --output-delimiter = @
ここに写真の説明を挿入

演習1:

コマンドを使用して、ifconfigでこのネットワークカードのIPアドレスをフィルタリングします。出力時には、ipのみが表示され、その他の情報は表示されません。

ifconfig ens160 | grep "inet" | カット-c14-26
ここに写真の説明を挿入

ソートコマンドとuniqコマンド

    sort -n      纯数字排序
    sort -r      倒序
    sort -u      去掉重复数字
    sort -o      输出到指定文件中
    sort -t      指定分隔符
    sort -k      指定要排序的列

ソート番号はデフォルトで順方向ソートになり、各行の最初の単一番号をソートします
ここに写真の説明を挿入

sort -n番号純粋なデジタル並べ替え(今回は番号全体のサイズに従って並べ替えられます)
ここに写真の説明を挿入

sort -urn番号は、純粋な番号を逆にして並べ替えます

ここに写真の説明を挿入

sort -urn numbers -oNUM出力をファイルにインポートします

ここに写真の説明を挿入

sort -t:-k 2の数値2番目の列の数値を:を区切り文字として並べ替えます
ここに写真の説明を挿入

sort -t:-k 2数値-urn使用:2番目の列の数値の純粋なデジタルソートを実行するための区切り文字として
ここに写真の説明を挿入

演習2:

ls -lディレクトリは、ディレクトリ内のすべてのファイルの属性を表示できます

ファイルサイズで並べ替えて、最大の2つのファイルを見つけ、それらの名前を表示してください

ls -l * | カット-d "" -f 5- | sort -nr | ヘッド-n2 | カット-d "" -f 5

ここに写真の説明を挿入

    uniq -u     显示唯一的行
    uniq -d     显示重复的行
    uniq -c     每行显示一次并统计重复行数

sort -n NUM | uniq -c純粋な数値のソート後、繰り返し番号は1回だけ表示され、繰り返し数は左側に表示されます。
ここに写真の説明を挿入

sort -n NUM | uniq -dは、純粋な数値ソート後に重複行を表示します
ここに写真の説明を挿入

sort -n NUM | uniq -uは、純粋な数値ソート後に繰り返されない行を表示します

trコマンド

tr'a-z''A-Z '<westos小文字から大文字

tr'A-Z''a-z '<westos大文字から小文字
ここに写真の説明を挿入

&& And ||コマンド

&&は正しいことを意味し、||は間違っていることを意味します

ping -c1 -w1 172.25.254.30&> / dev / null && echo yes || echo no pingでき、出力はyes、not no
ここに写真の説明を挿入

上記のコマンドをスクリプトとして記述します

#!/bin/bash
ping -c -w1 172.25.254.$* &>/dev/null && {
        echo yes
        exit
}||{
        echo no
        exit
}

ここに写真の説明を挿入

テストコマンド

test = [] testコマンドは "[]"と同等です

    test数字对比
   
    =        相等
     
    !=      不相等
     
    num1 -eq num2     判断 num1 是否和 num2 相等
     
    num1 -ne num2     判断 num1 是否和 num2 不相等
     
    num1 -gt num2     判断 num1 是否大于 num2 
     
    num1 -lt num2     判断 num1 是否小于 num2
     
    num1 -ge num2     判断 num1 是否大于等于 num2
     
    num1 -le num2     判断 num1 是否小于等于 num2

ここに写真の説明を挿入

演習3:

監視スクリプトを作成します。/使用率が80%を超えたときに、ルートユーザーのメールボックスに警告メールを送信します。

​​​​​​​#!/bin/bash
 [ "`df -h / | tail -n 1 | awk '{print$5}' | cut -d "%" -f 1 `" -ge "20" ] && {
         echo "warning: / is full!" | mail -s warnimg root
         exit
 }
    test的条件关系和对空的判定
     
    -a             并且
     
    -o             或者
     
    -n             判定内容不为空
     
    -z             判定内容为空

3.ファイルに対するテストの判断

-efファイルIDは一貫しています
ここに写真の説明を挿入

-ファイル1がファイル2よりも新しいかどうか
ここに写真の説明を挿入

-otファイル1はファイル2より古い
ここに写真の説明を挿入

-dディレクトリ
ここに写真の説明を挿入

-Sソケット

-Lソフト接続
ここに写真の説明を挿入

-eが存在します
ここに写真の説明を挿入

-f通常のファイル
ここに写真の説明を挿入

-bブロックデバイス
ここに写真の説明を挿入

-cキャラクターデバイス
ここに写真の説明を挿入

演習4:次のタスクを完了するためのスクリプトを作成する

実行中のfile_check.sh

スクリプトの後にテストファイルが指定されていない場合、「テストファイルが指定されていません。指定してください」というエラーが報告されます。

スクリプトの後に指定されたファイルが存在しない場合、「このファイルは存在しません」というエラーが報告されます

ファイルが存在する場合は、ファイルの種類を確認して出力に表示してください

#!/bin/bash
[ -z "$*" ] && {
        echo "ERROR: please input check file!!"
        exit
}
 
[ -e "$*" ] || {
        echo "ERROR: please input correct file!!"
        exit
}
 
[ -L "$*" ] && {
        echo "The input file is soft link"
        exit
}
 
[ -f "$*" ] && {
        echo "the input file is a common file"
        exit
}
 
[ -d "$*"] && {
        echo "the input file is adirectory"
        exit
}

おすすめ

転載: blog.csdn.net/qq_42958401/article/details/108303365