學SHELL的第二天

2022-05-17 02:13:42 字數 1996 閱讀 2970

重定向和管道符:

1、重定向

程式 = 指令 + 資料

命令 + 變數

資料輸入:鍵盤 --標準輸入,但是並不是唯一輸入方式;

--stdin

echo "123456"| passwd --stdin "username"

./useradd.sh a

.../.useradd.sh z

./useradd.sh

while linr;do

done

資料輸出:顯示器 -- 標準輸出,但並不是唯一的輸出方式

ls  /etc/ >a.txt

fd 檔案識別符號 0-9-- 相當於給檔案分類;

0      1     2

0--標準輸入

1--標準輸出

2--錯誤輸入輸出

常見重定向符號

1、標準輸出

>    覆蓋重定向

set - c  這個是去掉覆蓋重定向功能

>|     強制重定向

>>   追加重定向,不覆蓋

2、標準輸入

<           tr    替換檔案內容

用法:tr   原來的    現在的

<<         將多行資料同時輸入

cat >>zat.txt<

>1

>2

>eof

3、錯誤輸出

2>

擴充套件:不需要輸出內容,只需要輸出狀態

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

&> &>>==2&>1

ls /etc/ &>/dev/null

2、管道 - tee

command1|command2|command3|.。。

前乙個命令的執行結果交給後乙個命令來執行;

free -m |grep "^mem"|cut -d -f19

tee 一路輸入,兩路輸出

tee /tmp/tee.out

如果沒有檔案,會建立,預設如果檔案存在有內容,會覆蓋;

練習:將/etc/passwd檔案中的前5行內容轉換為大寫後儲存至/tmp/passwd.outwen檔案中

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

將登入至當前系統上使用者資訊彙總的後三位資訊轉換為大寫儲存至/tmp/who.out

who |tail -3

3、文字處理工具 --wc,cut,sort,uniq

wcword count 統計文字檔案中的字元數量

行數 -l     字元個數   -w      檔案大小  -c     檔名

cut用來做檔案分割

-d    指定分隔符

-f    指定輸出的列資料

【cut 的侷限性:1、-d指定分隔符,不能同時指定多個2、不能做高階的格式化輸出:所以我們要熟練掌握awk】

sort   排序命令

根據ascll碼來進行排序

常用引數:

-r 逆序

-f 忽略字元的大小寫

-t delimiter指定字元段分隔符

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

-n 指定以數值大小進行排序

-u uniq 排序去除重複,重複不顯示

uniq

連續且相同的命令去重

建議先排序後去重

-c顯示重複了多少次,統計重複次數

-d僅僅顯示重複過的行

-指令碼練習題:

批量建立使用者

if id $* &>/dev/null;then

echo "這個使用者已經存在"

else

for i in $*;do

useradd $i

echo "123456"|passwd --stdin "$i" &>/dev/null

echo "使用者$i新增成功"

done   

exit 0

fi

第二天學python

while else else是跟在while後的,while沒有被break打斷走else,被break打斷,不走else。utf 8 3個位元組表示乙個中文。中文全包括。至少用乙個位元組表示。unicode 4個位元組表示乙個中文。gbk 包含中文與英文本母,乙個中文用兩個位元組。不全。冪運算 ...

shell程式設計 第二天

ls l dir1 wc l 1。while 條件 do done test 2。until同上,僅僅是條件不成立的時候才執行 3。dev null unix 黑洞。用於清空檔案 cat dev null xx find name a.txt 2 dev null 4。注意 陷阱題之continue...

shell程式設計 第二天

1。while 條件 do done test 2。until同上,僅僅是條件不成立的時候才執行 3。dev null unix 黑洞。用於清空檔案 cat dev null xx find name a.txt 2 dev null 4。注意 陷阱題之continue跳出迴圈後,把列印的東東留在了...