1、重定向-tr
程序 = 指令(命令) + 數據(變量)
在程序中,數據如何輸入和輸出
1) 數據輸入:鍵盤 -- 標准輸入,但是不是唯一輸入方式
echo "123456" | passwd --stdin "username" //輸入密碼
./useradd.sh< user.txt //把user.txt中文件重定向到useradd.sh中
2) 數據輸出:顯示器--標准輸出,但是不是惟一的輸出方式。
ls /etc/ > a.txt
fd文件標識符0-9:相當於給文件分類
0:標准輸出
1:標准輸入
2:錯誤輸入輸出
常見重定向符號:
1)標准輸出
> 覆蓋重定向
set -C 關閉覆蓋重定向的功能 set +C:恢復
>| 強制重定向
>> 追加重定向
2)標准輸入
< a<b :把b交給a執行
tr 替換文件內容(tr set1 [set2])char(字符:一個一個換)
tr abc ABC < /etc/passwd :把etc/passwd中abc換成ABC
<< 將多行數據同時輸入
3)錯誤輸出
2> 2>>
擴展:不需要輸出內容,只需要輸出狀態;
echo $? :判斷上一條命令是否正確(0正確,1-255其他都不正確)
2、管道符-tee
command1|command2|command3|...... :前一個命令的執行結果交給后一個命令來執行
free -m | grep "^Mem"|cut -d ' ' -f19
free -m | grep "^Mem"|awk'{print$3}'
tee /tmp/tee.out //如果沒有文件,會創建,默認如果文件存在有內容,會覆蓋;
練習:
1)將/etc/passwd文件中的前5行內容轉換為大寫后保存至/tmp/passwd.out文件中
head -5 /etc/passwd | tr [a-z] [A-Z] > /tmp/passwd.out
2)將登錄至當前系統上用戶信息匯總的后3位信息轉換為大寫后保存至/tmp/who.out文件中
who | tail -3 | cut -d ' ' -f1 | tr [a-z] [A-Z] tee /tmp/who.out
tail 查看文件尾部多少行(10行)
-n tail -n /etc/passwd == 簡寫 tail -5 /etc/passwd
-f 實時查看文件更新內容
tail -f /var/log/meddage :實時查看日志文件
head 查看文件頭部多少行(10行)
-n # 前#行,
例子: 取/etc/passwd文件中10-20行
head -20 /etc/passwd | tail -10