Bash中如何判斷一個(gè)命令是否存在

command 命令

#! /bin/bash
if command -v git >/dev/null 2>&1; then 
  echo 'exists git' 
else 
  echo 'no exists git' 
fi

type命令

#! /bin/bash
if type git >/dev/null 2>&1; then 
  echo 'exists git' 
else 
  echo 'no exists git' 
fi

hash命令

#! /bin/bash
if hash git 2>/dev/null; then 
  echo 'exists git' 
else 
  echo 'no exists git' 
fi

重定向

一般情況下,每個(gè) Unix/Linux 命令運(yùn)行時(shí)都會(huì)打開三個(gè)文件:

  • 標(biāo)準(zhǔn) 輸入文件(stdin):stdin的文件描述符為0,Unix程序默認(rèn)從stdin讀取數(shù)據(jù)。
  • 標(biāo)準(zhǔn)輸出文件(stdout):stdout 的文件描述符為1,Unix程序默認(rèn)向stdout輸出數(shù)據(jù)。
  • 標(biāo)準(zhǔn)錯(cuò)誤文件(stderr):stderr的文件描述符為2,Unix程序會(huì)向stderr流中寫入錯(cuò)誤信息。

默認(rèn)情況下
command > file 將 stdout 重定向到 file
command 2 > file 將 stderr 重定向到 file
command < file 將stdin 重定向到 file。
command > file 2>&1 將 stderr 和 stdout合并后重定向到 file
command > file1 < file2 將 stdout 重定向到 file1,stdin 重定向file2
command 2 >> file將 stderr 追加到 file末尾

/dev/null 文件

如果希望執(zhí)行某個(gè)命令,但又不希望在屏幕上顯示輸出結(jié)果,那么可以將輸出重定向到 /dev/null
command > /dev/null 2>&1屏蔽 stdout 和 stderr

參考:

http://c.biancheng.net/cpp/view/2738.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 為何叫做 shell ? shell prompt(PS1) 與 Carriage Return(CR) 的關(guān)系?...
    Zero___閱讀 3,324評(píng)論 3 49
  • 簡介 shell 是類 UNIX 系統(tǒng)的外殼,使用 shell 用于實(shí)現(xiàn)人機(jī)交互的目的,我們通過它可以與內(nèi)核之間進(jìn)...
    noparkinghere閱讀 833評(píng)論 0 1
  • 大多數(shù) UNIX 系統(tǒng)命令從你的終端接受輸入并將所產(chǎn)生的輸出發(fā)送回到您的終端。一個(gè)命令通常從一個(gè)叫標(biāo)準(zhǔn)輸入的地方讀...
    姜淑均閱讀 280評(píng)論 2 3
  • 本文筆記源自這里——[實(shí)驗(yàn)樓]歡迎大家在下面交流其中有問題的地方喜歡請(qǐng)點(diǎn)收藏,每日更新(全部已親自實(shí)踐). 一. ...
    東皇Amrzs閱讀 4,321評(píng)論 7 54
  • 二零一雞年,相信不少小伙伴和我們一樣,迎來了本命年?!澳銒?..逼你穿秋褲了嗎”?終于完美蛻變?yōu)椤澳銒?..逼你穿...
    acc61a9b8fdc閱讀 979評(píng)論 0 2

友情鏈接更多精彩內(nèi)容