重定向和管道符:
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跳出迴圈後,把列印的東東留在了...