很多時候,在編寫Shell腳本時,需要根據檔案是否存在來執行操作。那麼如何檢查文件是否存在?以下這篇文章就來帶大家了解如何使用test指令來檢查Bash中是否存在檔案或目錄,希望對大家有幫助。
test指令
#在Bash中,可以使用test指令檢查檔案是否存在並確定文件的類型。
test指令採用以下語法形式之一:
test EXPRESSION [ EXPRESSION ] [[ EXPRESSION ]]
如果希望腳本是可移植的,那麼應該偏好使用在所有POSIX shell上都可用的舊test [ 指令。在大多數使用bash、zsh和ksh作為預設shel的現代系統上,都支援測試指令[[(雙括號)的新升級版本。
test指令的File運算子
##test指令包括以下File操作符,允許測試特定類型的檔案: ● -b FILE :如果FILE存在且為區塊特殊文件,則為True。 ● -c FILE :如果FILE存在且為特殊字元文件,則為True。 ● -d FILE :如果FILE存在且為目錄,則為True。 ● -e FILE :如果FILE存在且為文件,則為True,無論類型(節點,目錄,套接字等)如何。 ● -f FILE :如果FILE存在且為常規檔案(不是目錄或裝置),則為True。 ● -G FILE :如果FILE存在且與執行命令的使用者俱有相同的群組,則為True。 ● -h FILE :如果FILE存在且為符號鏈接,則為True。 ● -g FILE :如果FILE存在且設定了set-group-id(sgid)標誌,則為True。 ● -k FILE :如果FILE存在且設定了黏滯位標誌,則為True。 ● -L FILE :如果FILE存在且為符號鏈接,則為True。 ● -O FILE :如果FILE存在並且由執行該命令的使用者擁有,則為True。 ● -p FILE :如果FILE存在且為管道,則為True。 ● -r FILE :如果FILE存在且可讀,則為True。 ● -S FILE :如果FILE存在且為套接字,則為True。 ● -s FILE :如果FILE存在且非零大小,則為True。 ● -u FILE :如果設定了exists和set-user-id(suid)標誌,則為True。 ● -w FILE :如果FILE存在且可寫,則為True。 ● -x FILE :如果FILE存在且可執行,則為True。如何檢查檔案是否存在?
在檢查檔案是否存在時,最常用的FILE運算子是-e和-f。第一個操作符將檢查檔案是否存在,而不管檔案類型如何;第二個操作符將僅在檔案是常規檔案(不是目錄或裝置)時傳回true。 檢查檔案是否存在時,最可讀的選項是結合使用test指令和if語句。以下任何程式碼片段都會檢查/etc/resolv.conf檔案是否存在:FILE=/etc/resolv.conf if test -f "$FILE"; then echo "$FILE exist" fi
FILE=/etc/resolv.conf if [ -f "$FILE" ]; then echo "$FILE exist" fi
FILE=/etc/resolv.conf if [[ -f "$FILE" ]]; then echo "$FILE exist" fi如果要根據檔案是否存在執行不同的操作,只需使用if / then結構:
FILE=/etc/resolv.conf if [ -f "$FILE" ]; then echo "$FILE exist" else echo "$FILE does not exist" fi
附註:在處理名稱中包含空格的檔案時,請務必使用雙引號以避免問題。
也可以使用不帶if語句的test指令。只有當測試命令的退出狀態為true時,才會執行&&運算子後的命令,test -f /etc/resolv.conf && echo "$FILE exist"
[ -f /etc/resolv.conf ] && echo "$FILE exist"
[[ -f /etc/resolv.conf ] && echo "$FILE exist"如果要在&&運算子之後運行一系列命令,只需將命令括在以“;”或“&&”分隔的大括號中即可。
[ -f /etc/resolv.conf ] && { echo "$FILE exist"; cp "$FILE" /tmp/; }與&相反,||運算子後面的語句只在測試指令的退出狀態為false時執行。
[ -f /etc/resolv.conf ] && echo "$FILE exist" || echo "$FILE does not exist"
如何檢查目錄是否存在?
-d運算子允許測試檔案是否為目錄。 例如,要檢查/etc/docker目錄是否存在,需要使用:FILE=/etc/docker if [ -d "$FILE" ]; then echo "$FILE is a directory" fi
[ -d /etc/docker ] && echo "$FILE is a directory"同樣,也可以使用雙括號[[而不是單一括號[。
如何檢查檔案是否不存在?
FILE=/etc/docker if [ ! -f "$FILE" ]; then echo "$FILE exist and it is a directory" fi與上述相同:
[ ! -f /etc/docker ] || echo "$FILE does not exist"
如何檢查是否存在多個檔案?
如果存在多個文件,可以使用-a(或&&with[])來測試,而不是使用複雜的嵌套if/else構造:FILE=/etc/docker if [ -f /etc/resolv.conf -a -f /etc/hosts ]; then echo "$FILE is a directory" fi
FILE=/etc/docker if [ -f /etc/resolv.conf && -f /etc/hosts ]; then echo "$FILE is a directory" fi不使用IF語句的等效變體:
[ -f /etc/resolv.conf -a -f /etc/hosts ] && echo "both files exist"
[[ -f /etc/resolv.conf && -f /etc/hosts ]] && echo "both files exist"相關影片教學推薦:《
Linux教學》
以上就是本篇文章的全部內容,希望能對大家的學習有幫助。更多精彩內容大家可以追蹤php中文網相關教學欄位! ! !以上是如何檢查Bash中是否存在檔案或目錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!

linux设备节点是应用程序和设备驱动程序沟通的一个桥梁;设备节点被创建在“/dev”,是连接内核与用户层的枢纽,相当于硬盘的inode一样的东西,记录了硬件设备的位置和信息。设备节点使用户可以与内核进行硬件的沟通,读写设备以及其他的操作。

区别:1、open是UNIX系统调用函数,而fopen是ANSIC标准中的C语言库函数;2、open的移植性没fopen好;3、fopen只能操纵普通正规文件,而open可以操作普通文件、网络套接字等;4、open无缓冲,fopen有缓冲。

在linux中,eof是自定义终止符,是“END Of File”的缩写;因为是自定义的终止符,所以eof就不是固定的,可以随意的设置别名,linux中按“ctrl+d”就代表eof,eof一般会配合cat命令用于多行文本输出,指文件末尾。

端口映射又称端口转发,是指将外部主机的IP地址的端口映射到Intranet中的一台计算机,当用户访问外网IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上;可以通过使用动态或固定的公共网络IP路由ADSL宽带路由器来实现。

手机远程linux工具有:1、JuiceSSH,是一款功能强大的安卓SSH客户端应用,可直接对linux服务进行管理;2、Termius,可以利用手机来连接Linux服务器;3、Termux,一个强大的远程终端工具;4、向日葵远程控制等等。

linux查询mac地址的方法:1、打开系统,在桌面中点击鼠标右键,选择“打开终端”;2、在终端中,执行“ifconfig”命令,查看输出结果,在输出信息第四行中紧跟“ether”单词后的字符串就是mac地址。

linux中,lsb是linux标准基础的意思,是“Linux Standards Base”的缩写,是linux标准化领域中的标准;lsb制定了应用程序与运行环境之间的二进制接口,保证了linux发行版与linux应用程序之间的良好结合。

在linux中,rpc是远程过程调用的意思,是Reomote Procedure Call的缩写,特指一种隐藏了过程调用时实际通信细节的IPC方法;linux中通过RPC可以充分利用非共享内存的多处理器环境,提高系统资源的利用率。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

禪工作室 13.0.1
強大的PHP整合開發環境