學習shell的第二天

2022-09-16 10:51:10 字數 1995 閱讀 6123

重定向和管道符:

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...