重定向和管道符:
1、重定向
程式 = 指令 + 資料
命令 變數
在程式中,資料如何輸入?又如何輸出?
資料輸入:鍵盤 -- 標準輸入,但是並不是唯一輸入方式;
--stdin
echo "123456" | passwd --stdin "username"
例如:功能新增使用者 useradd.sh user.txt文字文件1000個使用者
./useradd.sh a
./useradd.sh b
..../useradd.sh < user.txt
while line ; do
迴圈體 $line
done < /etc/passwd
資料輸出: 顯示器 -- 標準輸出,但是並不是唯一輸出方式
ls /etc/ > a.txt
fd 檔案識別符號 0-9 -- 相當於給檔案分類;
0 1 2
0 -- 標準輸出
1 -- 標準輸入
2 -- 錯誤輸入輸出(標準錯誤)
常見重定向符號
1、標準輸出
> 覆蓋重定向、非常危險
set -c 關閉覆蓋重定向功能
>| 強制重定向
>> 追加重定向
不覆蓋2、標準輸入
< tr 替換檔案內容
tr set1 [set2] < file.txt
<< 將多行資料同時輸入
cat >>a.txt<1
>2
>3
>eof
3、錯誤輸出
2> 2>>
擴充套件:不需要輸出內容,只需要輸出狀態;
ls /etc/ > /dev/null 2> /dev/null
echo $? ($?--變數:上一條命令的執行狀態)
if $?等於0;麼?
ok--幹!否則不
結束ls 暗室逢燈 > /dev/null 2> /dev/null
/dev/null 黑洞檔案 來什麼吃什麼(刪除)
/dev/zero 吹泡泡
&> &>> == 2&>1
ls /etc/ &> /dev/null
2、管道 - tee
command1 | command2 | command3 | ... ...
前乙個命令的執行結果交給後乙個命令來執行;
【linux思想:結合小功能實現大功能】
free -m | grep "^mem" | cut -d' ' -f19
free -m | grep "^mem" | awk ''
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 實時檢視檔案更新內容
tail -f /var/log/message
head 檢視檔案頭部多少行(預設時行)
-n # 前#行, 簡寫 -#
取 10 - 20 行: head -20 /etc/passwd | tail -10
tar 壓縮
tr 替換
cut 切
學習centos第二天 shell
一 shell 是linux系統中執行的一種特殊程式 是在使用者和核心之間充當翻譯官 bash 是linux系統中預設使用的shell程式,檔案位於 bin bash 二 linux命令分為內部和外部 用which檢視命令在那條路徑下,例如which ifconfig ifconfig是外部命令,c...
Shell學習筆記 第二天
1 顯示日期 date cal cal 2010 cal 2 2010 2 改變檔案擁有者 chown 3 改變檔案許可權 chmod 4 顯示當前目錄 pwd 5 檢視檔案尾部內容,並且檢視不斷更新的內容 tail tail f mycat.log 6 查詢檔案 find name filenam...
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...