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
}