Linux重定向與shell變數

2021-09-24 06:23:09 字數 3207 閱讀 3511

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