Linux shell 查詢可執行檔案

2021-09-29 21:44:26 字數 1784 閱讀 4147

前言

當你從命令中執行乙個程式的時候,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...