前言
當你從命令中執行乙個程式的時候,linux系統會搜尋一系列目錄查詢可執行檔案。-x 比較是判斷特定的檔案是否有可執行許可權的乙個簡單方法。
檢查檔案是否可以執行
當你在shell指令碼中執行大量的指令碼,它就會發揮作用。下面來執行乙個例子,檢查當前檔案是否存在,並可執行。
#! /bin/bashif[
-x test1.sh ]
then
echo
"you can the script:"
./test1.sh
else
echo
"sorry,you are unable to execute the script"
fi
輸出結果
示例中shell指令碼用 -x比較來測試是否有許可權執行 test1.sh指令碼,如果有許可權(chmod u+x test1.sh) 。會執行這個指令碼。
查詢可執行檔案
前言也說過,命令在執行乙個程式的時候,linux系統會搜尋查詢對應的檔案。這些目錄被定義在環境變數path中。如果要想找出系統中有哪些可執行檔案供使用,只要掃瞄path環境變數中所有目錄就就行,如果要徒手查詢的話,時間上會非常耗時,所以,這點上,可以考慮寫乙個小指令碼,輕而易舉的搞定這件事。
首先需要建立乙個 for迴圈,對環境變數path中的目錄進行迭代。這個時候可以使用ifs設定分隔符。
ifs=:
for folder in $path
現在將path各個目錄中變數存放在$folder中,可以在使用另乙個for迴圈迭代特定的目錄中的所有檔案。
for file in $folder/*
最後就是最重要的乙個,就是檢查各個檔案是否具有有執行許可權:
if
[-x $file
]then
echo
" $file"
fi
下面來組合完整的指令碼:
#! /bin/bash
#finding file in the path
ifs=:
for folder in $path
doecho
"$folder:"
for file in $foler/*
doif
[-x $file
] then
echo
" $file"
fidone
done
輸出結果:
ifs ( 內部字段分隔符 ) 提示
在處理**量較大的檔案中,可以在乙個地方需要修改ifs的值,然後忽略這次修改,在指令碼的其他地方繼續沿用ifs的預設值。
還有其他一些ifs環境變數的巧妙用法,假定你要變數乙個檔案中用冒號分隔的值,比如:path中的目錄、/etc/passwd檔案中。你要做的就是將ifs的值設定為冒號。
linux 查詢可執行檔案
linux下如何查詢可執行檔案,作為乙個linux小菜剛剛有了這個問題,在windows中,可以通過字尾名判斷是否是可執行檔案,比如.exe,bat等是可執行檔案,但是在linux下呢?linux下不能簡單根據檔案字尾判斷是否可執行。linux下判斷乙個檔案是否可執行,關鍵看是否有可執行許可權 比如...
linux Shell 查詢服務執行狀態相關命令
ps ef grep servername.jar grep v grep awk 備註 grep v grep 含義是過濾掉grep 程序 awk 含義是按空格或tab分割,輸出第2項 kill 9 pid ps ef grep servername.jar grep v grep wc l 備註...
OJ演算法可執行
oj演算法題共10個篇幅,不定期在篇幅裡增加題目 篇幅不增加 個人水平有限,如有錯誤和可以改進的地方,非常期待批評指正,謝謝!題目描述 計算a b 輸入第乙個數為資料組數n,接下來n行,每行2個整數a,b 保證a,b,a b在int範圍內 輸出對於每組資料,輸出一行,為 a b 的值 輸入樣例 21...