4種執行bash的命令方法:
先執行(父)的bash小,後執行的(子)bash大
2 . bas**件名 (父子bash)
3 bash bas**件名 (父子bash,–bash–bash–命令在第二個bash[子]中執行)
4 chmod +x bas**件名–>將變為可執行檔案,將檔案變成可執行檔案 ./ bas**件名(父子bash)如果首行沒有(!# ),則預設開啟子bash
正確(1)錯誤(2)都可以輸出到指定位置
覆蓋重定向
aaa/bbb檔案顯示:最新輸入內容
原本輸出在家目錄(控制台)的資料使用重定向命令後輸出在aaa檔案中
ls 1>aaa 1代表標準輸出
[root@sxt001 ~]#ls
anaconda-ks.cfg ifcfg-eth0 jdk-8u171-linux-x64.rpm python-3.6.1.tgz
a.txt install.log profile sort.txt
bigdata. install.log.syslog python-3.6.1
[root@sxt001 ~]#ls 1>aaa
[root@sxt001 ~]# cat aaa
aaaanaconda-ks.cfg
a.txt
bigdata.
ifcfg-eth0
install.log
install.log.syslog
jdk-8u171-linux-x64.rpm
profile
python-3.6.1
python-3.6.1.tgz
sort.txt
ls / /tmp 1>bbb
將根目錄檔案和 根目錄下的tmp檔案輸出在bbb檔案中
追加重定向
ccc檔案顯示:歷史內容+新內容
ls /mnt 1>>ccc
其他ls / /aabb 1>ls01.out 2>ls02.out 兩個檔案都可以顯示輸出
ls / /aabb 1>ls01.out 2>ls01.out 顯示正確輸出。因為錯誤輸出被先寫被覆蓋,不顯示
ls / /aabb 1>>ls01.out 2>>ls01.out 先顯示錯誤輸出,後顯示正確輸出。因為錯誤輸出先顯示
ls / /aabb 2>&1 1>ls01.out 顯示錯誤輸出。首先得到乙個正確乙個錯誤2個輸出,錯誤的指向正確的輸出位址,但是1剛開始列印在控制台,然後正確輸出重定向到 ls01.out 檔案,故不顯示
ls / /aabb 1>ls01.out 2>&1 顯示2個輸出結果,先顯示錯誤輸出,再顯示正確輸出
注意: 檔案描述符(1,2)和重定向符號之間/重定向符左邊不能包含空格。如果有空格命令會預設是檔案。右邊可以包含空格
若需要2個結果列印在乙個檔案中,則要按照從左到右定位指向編寫命令
特殊寫法(先列印錯誤的,再列印正確的):
ls / /aabb >& ls01.out
ls / /aabb &> ls01.out
<<< 表示從乙個字串讀入資料
[root@sxt001 ~]# read aaa <<<「hello」
[root@sxt001 ~]# echo $aaa
hello
<< 結束符,將第乙個換行符之前的資料列印
read對換行符敏感,只列印第乙個換行符之前的內容,即aba。若要退出aabb的編輯,需要在最後一行輸入aabb與之匹配
[root@sxt001 ~]# read aaadefghi
lmnaabb
[root@sxt001 ~]# echo $aaa
aba< 將檔案作為標準輸入傳給命令,例如cat cat 0本地變數
需要加local
[root@sxt001 ~]# sxt()
[root@sxt001 ~]# sxt
sxthello
[root@sxt001 ~]# echo $bbb
區域性變數
[root@sxt001 ~]# sxt()
[root@sxt001 ~]# sxt
world
[root@sxt001 ~]# echo $ccc
world
位置變數($1)
–$1,2,2,
2,注意{}的使用 $1表示定位第乙個
a指向sh03,s**件中的echo $1 b指向sh03.s**件中的echo $2
[root@sxt001 ~]# vi sh03.sh
[root@sxt001 ~]# source sh03.sh a bab
[root@sxt001 ~]# cat sh03.sh
echo $1
echo $2
環境變數(export)
在管道裡建立子bash時,會把父bash直接繼承過來。
但在檔案中執行子bash時,不會繼承父bash的值,只有將其匯出(export)後才會繼承父bash的值
注意:不能跨bash,父子之間使用
[root@sxt001 ~]# vi sh04.sh
[root@sxt001 ~]# chmod +x sh04.sh
[root@sxt001 ~]# ./sh04.sh
sxt[root@sxt001 ~]# c=111
[root@sxt001 ~]# ./sh04.sh
sxt[root@sxt001 ~]# export c
[root@sxt001 ~]# ./sh04.sh
111sxt
特殊變數
管道,作用有2 其一,將左邊命令的輸出轉為右邊命令的輸入
其二,將左邊和右邊分別開啟1個子bash,左邊bash執行完消失,不影響右邊
特殊符,列印
的cas
h值相同
,列印的cash值相同
,列印的ca
sh值相
同只是接收者,$bashpid是真實id
[root@sxt001 ~]# echo katex parse error: expected 'eof', got '#' at position 22: …[root@sxt001 ~]#̲ echo | more
1349
[root@sxt001 ~]# echo $bashpid | more
1427
Linux下Shell重定向
1.標準輸入,標準輸出與標準錯誤輸出 linux下系統開啟3個檔案,標準輸入,標準輸出,標準錯誤輸出。標準輸入 從鍵盤輸入資料,即從鍵盤讀入資料。標準輸出 把資料輸出到終端上。標準錯誤輸出 把標準錯誤輸出到終端上。預設的標準輸入指的是鍵盤,預設的標準輸出與標準錯誤輸出指的是螢幕或者是終端。系統為這三...
Shell重定向與exec
首先我們需要知道exec是什麼,exec是linux下面乙個建立程序的方法,詳情請參考 fd說明 0stdin,標準輸入 1stdout,標準輸出 2stderr,標準錯誤輸出 檢視檔案描述符 ll proc fd 關閉標準輸出 n 表示將 n 號輸出關閉 述所有形式都可以前導乙個數字,此時建立的檔...
Linux中重定向 追加重定向與輸入重定向
簡單介紹一下重定向 追加重定向與輸入重定向,輸入追加重定向的用法 重定向 我們可以將想要輸出的內容通過重定向新增到某個檔案中 ps 將hello寫入到當前資料夾下的a.txt檔案中,然後檢視a.txt檔案內容 追加重定向 追加重定向和重定向大致相同,不同點是追加重定向在檔案的基礎上繼續新增內容 ps...