日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Shell入门02

發布時間:2025/5/22 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shell入门02 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Shell入門-02

1.重定向 標準輸入(<) 標準輸出 標準錯誤重回定向

???????? 程序 = 指令 + 數據

????????????????????????? 命令?? 變量

???????? 在程序中,數據如何輸入?又如何輸出?

???????? 數據輸入:鍵盤 – 標準輸入,但是并不是唯一輸入方式

?????????????????????????????????? --stdin

?????????????????????????????????? 不進入交互式界面,直接輸入密碼

?????????????????????????????????? echo “123456” | passwd –stdin “username”

?????????????????????????????????? 例如:功能添加用戶,useradd.sh user.txt文本文檔1000個用戶

??????????????????????????????????????????? ? ./useradd.sh? <? user.txt

??????????????????????????????????????????? ? while line ; do

???????????????????????????????????????????????????????????? 循環體 $line

??????????????????????????????????????????? ? done? <? /etc/passwd

???????? 數據輸出:顯示器 – 標準輸出,但并不唯一輸出方式

????????????????????????? ?? ls /etc/ > a.txt

???????? fd文件標識符 0-9 ---- 相當于給文件分類;

????????????????? 被定義的標識符 0—標準輸出? 1—標準輸入? 2—標準錯誤(錯誤輸入輸出)

???????? 常見的重定向的符號:

????????????????? 1.標準輸出

????????????????????????? 0>? ???????? --????? 覆蓋重定向、非常的危險 重定向后數據將會丟失

????????????????????????? set –C ??? 關閉重定向功能,剪掉C的功能 C的功能就是去掉重定向

????????????????????????? set +C????? 加上重定向

????????????????????????? >|???????????? 強制重定向

????????????????????????? >>? ???????? --????? 追加重定向 將數據內容追加到文件末尾? 不覆蓋

???????? ????????????????????????? ??? less more

?????????????????????????????????? ??? cat a.txt | more/less

????????????????? 2.標準輸入

????????????????????????? 1<???????????? a < b? b的內容交給a

??????????????????????????????????????????? tr 替換 ?tr set [set2]? ??默認進入交互式界面手動輸入替換內容

???????????????????????????????????????????????????????????? tr set [set2] < file.txt

??????????????????????????????????????????? tr abc ABC < /etc/passwd

???????????????????????????????????????????????????? |? |

?????????????????????? 單個字符

??????????????????????????????????????????? tr abc ABC < /etc/passwd > /etc/passwd

<<???????????? cat 查看,將多行數據同時輸入

??????????????????????????????????????????? cat >> a.txt <<EOF

??????????????????????????????????????????? >1

??????????????????????????????????????????? >2

??????????????????????????????????????????? >3

??????????????????????????????????????????? >EOF

????????????????? 3.錯誤輸出

?????????????????????????????????? 2>??? 2>>

?????????????????????????????????? 擴展:不需要輸出內容,只需要輸出狀態;

??????????????????????????????????????????? ?? ls /etc/ > /dev/null 2> /dev/null

??????????????????????????????????????????? ?? if [$? –eq 0];then

???????????????????????????????????????????????????????????? 循環體

??????????????????????????????????????????? ?? fi

??????????????? &> &>> == 2&>1

?????????????????????????????????? ???????? ?? ls /etc/ &> /dev/null

2.管道符 – tee

???????? command1|command2|command3|… …

???????? 前一個命令的執行結果交給后一個命令來執行;

???????? 【linux思想:結合小功能實現大功能】

????????????????????????? free –m

????????????????????????? m? --- 單位

free –m|grep “^Mem” | cut –d’ ’ –f19

free –m|grep “^Mem” | awk ‘{print $3}’

s = ` free –m|grep “^Mem” | cut –d’ ’ –f19`

if [$s –gt 1000];then

???????? 告警

fi

tee命令

?????? 一路輸入,兩路輸出

?????? Tee /tmp/tee.out //如果沒有文件會創建,如果默認文件有內容會覆蓋

?

練習:

/etc/passwd文件中的前5行內容轉換為大寫后保存至/tmp/passwd.out文件中;

head -5 /etc/passwd | tr [a-z] [A-Z] > /tmp/passwd.out

將登錄至當前系統上用戶信息匯總的后3位信息轉換為大寫后保存至/tmp/who.out文件中;

who | tail -3 | cut –d’ ’ –f1 |? tr [[:lower:]] [[:upper:]] ?| ?tee /tmp/who.out

tail? 查看文件尾部多少行(默認10行)

????????????? -n tail –n 5 /etc/passwd = tail -5 /etc/passwd

-f 實時查看文件更新查看

Sleep? 等待多長時間后再執行

????????????? tail –f /vaar/log/message

head? 查看文件頭部多少行(默認10行)

????????????? -n head –n 5 /etc/passwd = head -5 /etc/passwd

head -20 /etc/passwd | tail -10

3.文本處理工具---wc,cut,sort,uniq

wc

???????? Word count 統計文本文件中的字符個數

????????

???????? 行數14 字符個數72 文件大小711字節 文件大小

???????? –c 文件大小

???????? -l? 看行數

???????? -w 字符個數

cut

???????? 用來做文件分割

???????? -d 指定分隔符(單個) (delimiter)

???????? -f 指定多少列數 –f2輸出第二列

?????????????????????????????????? ?? -f1,3輸出第一列到第三列

?????????????????????????????????? ?? -f1-3

???????? ???????? history | cut –d’ ’ –f3 /etc/passwd

???????? --output-delimiter=’xx’

????????????????? cut –d’ ’ –f1,3 /etc/passwd

?

cut –d’:’ –f1,3 –output-delimiter=’????????? ’ /etc/passwd

格式化輸出

?

Cut的局限性:

**-d 指定分隔符不能同時指定多個**

**不能做高級的格式化輸出**?????????? 需要熟練掌握awk

sort

???????? 排序命令,默認將第一個字符(數字、字母、特殊符號、空格)按照ASCII碼值來進行排序

???????? -n 按照數值大小排序 特殊字符和字母在數字前面

???????? -r 倒序排列

-f 忽略字符大小寫

-k 已指定字段的第幾段進行排序

-u uniq 排序去重復,重復的不顯示

-t指定字段分隔符

uniq

?

連續且相同,才被視為重復

建議,先排序后去重

???????? Uniq? –c 統計某些字符重復的次數

????????????????? ? Sort filename | uniq –c

????????????????? ? -d 重復的行

練習:

顯示/etc/passwd的第六行到第十行,按照第三個字段進行數值大小排序,最后顯示第一列

?

轉載于:https://www.cnblogs.com/KAJIA1/p/11314854.html

總結

以上是生活随笔為你收集整理的Shell入门02的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。