【shell】怎么理解shell中的 "<" 、 "<<" 、 "< <" 、"<<<" 的含義?

一、說明

大多數(shù) UNIX 系統(tǒng)命令從你的終端接受輸入并將所產(chǎn)生的輸出發(fā)送回??到您的終端。

一個(gè)命令通常從一個(gè)叫標(biāo)準(zhǔn)輸入的地方讀取輸入,默認(rèn)情況下,這恰好是你的終端。

同樣,一個(gè)命令通常將其輸出寫入到標(biāo)準(zhǔn)輸出,默認(rèn)情況下,這也是你的終端。

二、輸出重定向


重定向一般通過在命令間插入特定的符號(hào)來實(shí)現(xiàn)。

關(guān)于輸出重定向,沒有多少可說的,比較好理解,不是本文的重點(diǎn)。

如果不熟悉的讀者,可以參考:

shell 輸入/輸出重定向

http://www.runoob.com/linux/linux-shell-io-redirections.html

shell中 1>&2 2>&1 &> 重定向的含義和區(qū)別是什么?

http://www.lxweimin.com/p/41c304016185


三、輸入重定向


輸入重定向和輸出重定向一樣,Unix 命令也可以從文件獲取輸入。


1.關(guān)于 "<"?


語法:?

#? ?command? ?<? /path/to/file

注意:輸出重定向是大于號(hào)(>),輸入重定向是小于號(hào)(<),這樣,本來需要從鍵盤獲取輸入的命令會(huì)轉(zhuǎn)移到文件讀取內(nèi)容,注意 "<"只能從文件中讀取輸入。

#? mysql? -u? root? ?-h 127.0.0.1? -p"MySQL@123"? ?<? dump.sql?



#? echo "123456"? > passwd.txt

# passwd? --stdin root? < passwd.txt



2.? 關(guān)于 "<<"

"<<" 在BASH文檔中,稱之為 "Here Documents"。

Here Documents 是 shell 中的一種特殊的重定向方式,用來將輸入重定向到一個(gè)交互式 Shell 腳本或程序。

將兩個(gè) delimiter(此處是OF,end of file 之意) 之間的內(nèi)容(document) 作為輸入傳遞給 command。

如果想將輸入保存到文件文件中,可以結(jié)合輸出重定向:

#? cat? ? << EOF? ? ?>>? /etc/profile

export http_proxy=http://127.0.0.1:8123

export https_proxy=http://127.0.0.1:8123

export ftp_proxy=http://127.0.0.1:8123?

EOF? ?


3. 關(guān)于 "<<<"


"<<<" 在BASH文檔中,稱之為 "Here Strings"。

Here String是Here Documents 的一個(gè)變種。

它由操作符"<<<"和作為標(biāo)準(zhǔn)輸入的字符串構(gòu)成,here-string是一個(gè)用于輸入重定向的普通字符串


語法:

#? command <<<? "WORD"

注意:?jiǎn)蝹€(gè)單詞不需要引號(hào)引用,中間如果有空格的字符串,則需要引號(hào)引用起來。

# echo "123456" | passwd? --stdin? root

# passwd --stdin root? <<< "123456"


# mysql -u root? ?-e? ? ? "select user,host from mysql.user;"

# mysql -u root? ?<<<? ? "select user,host from mysql.user;"


# while read line ; do echo $line; done <<< "111 222 333"


4. 關(guān)于 "<? ?<"

應(yīng)該說??"<? ?<" 并不是一個(gè)單獨(dú)的輸入重定向符號(hào),兩個(gè)< 至少有一個(gè)空格,它是兩個(gè)符號(hào)的組合:

左邊 < 代表左邊接受從右邊輸入,右邊 <(command) 代表右邊shell(子shell)命令的輸出,將輸出輸出到左邊。


語法:

#? ?command? <? ? ?<(command)




注意:右邊的<和(之間不能有空格。


# while read var; do unset $var; done < <(env | grep -i proxy | awk -F= '{print $1}')


# passwd --stdin root <? ? <(echo "123456")



# mysql -u root < <(echo "select user,host from mysql.user;")



四、參考


Shell 輸入/輸出重定向

http://www.runoob.com/linux/linux-shell-io-redirections.html


shell中 1>&2 2>&1 &> 重定向的含義和區(qū)別是什么?

http://www.lxweimin.com/p/41c304016185


Linux 輸入輸出(I/O)重定向

https://www.cnblogs.com/divent/p/5773861.html


shell重定向

https://blog.csdn.net/fsx2550553488/article/details/80994277


linux shell輸入輸出重定向

https://www.xuebuyuan.com/745014.html


shell中while循環(huán)的陷阱

https://www.cnblogs.com/f-ck-need-u/p/7431578.html


What is the meaning of? < and << in UNIX /Linux?

https://unix.stackexchange.com/questions/114514/and-in-unix-linux


Correct textual name for <<

https://unix.stackexchange.com/questions/2888/correct-textual-name-for


Here Documents

https://en.wikipedia.org/wiki/Here_document


Here Strings

https://bash.cyberciti.biz/guide/Here_strings


What does "<<<" mean in linux shell script?

https://www.quora.com/What-does-mean-in-linux-shell-script


What does <<< mean?

https://unix.stackexchange.com/questions/80362/what-does-mean


How to execute multiple multiline mysql queries with a shell script?

https://superuser.com/questions/811973/how-to-execute-multiple-multiline-mysql-queries-with-a-shell-script


What are the shell's control and redirection operators?

https://my.oschina.net/u/553266/blog/2935635

https://unix.stackexchange.com/questions/159513/what-are-the-shells-control-and-redirection-operators

https://www.gnu.org/software/bash/manual/bashref.html#Redirections

https://unix.stackexchange.com/questions/114514/and-in-unix-linux

https://github.com/qinjx/30min_guides

https://stackoverflow.com/questions/1602904/how-do-you-run-a-single-query-through-mysql-from-the-command-line

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,716評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,706評(píng)論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,036評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評(píng)論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,203評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,725評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,451評(píng)論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,677評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,857評(píng)論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評(píng)論 1 295
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,407評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,643評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容