當前位置:首頁 » 網頁前端 » shell獲取執行腳本目錄
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

shell獲取執行腳本目錄

發布時間: 2022-12-09 01:24:02

『壹』 Shell腳本獲取自身路徑的方法

Shell中使用 pwd 命令可以獲得當前工作目錄,然而『當前工作目錄』可能並不是『腳本文件所在目錄』。

可以看出, pwd 獲取的『當前工作目錄』可能並不是『腳本文件所在目錄』。因此我們可以用以下方法獲取腳本文件所在目錄的絕對路徑:

『貳』 linux shell腳本怎麼獲取目錄下所有txt文件名稱

執行如下三條命令即可:
(1)、$script myresultfile
(2)、$ls -al *.txt
(3)、$exit

此時,該目錄下的所有 txt 文件名稱就會以長格式保存在 myresultfile 文件中了。

然後你再使用 SHELL 編程的功能把那些無用的列去掉即可。

『叄』 如何在shell腳本中執行系統命令 小小知識站

方法一:切換到shell腳本所在的目錄(此時,稱為目錄)執行shell腳本:碼碼如下:cd /data/shell./hello.sh./的意思是說在當前的目錄下執行hello.sh。如果不加上./,bash可能會響應找到不到hello.sh的錯誤。因為目前的目錄(/data/shell)可能不在執行程序默認的搜索路徑之列,也就是說,不在環境變數PASH的內容之中。查看PATH的內容可用 echo $PASH 命令。現在的/data/shell就不在環境變數PASH中的,所以必須加上./才可執行。方法二:以絕對路徑的方式去執行bash shell腳本:碼碼如下:/data/shell/hello.sh方法三:直接使用bash 或sh 來執行bash shell腳本:碼碼如下:cd /data/shellbash hello.sh或碼碼如下:cd /data/shellsh hello.sh注意,若是以方法三的方式來執行,那麼,可以不必事先設定shell的執行許可權,甚至都不用寫shell中的第一行(指定bash路徑)。因為方法三是將hello.sh作為參數傳給sh(bash)命令來執行的。這時不是hello.sh自己來執行,而是被人家調用執行,所以不要執行許可權。那麼不用指定bash路徑自然也好理解了啊,呵呵……。方法四:在當前的shell環境中執行bash shell腳本:碼碼如下:cd /data/shell. hello.sh或碼碼如下:cd /data/shellsource hello.sh前三種方行shell腳本時都是在當前shell(稱為父shell)開啟一個子shell環境,此shell腳本就在這個子shell環境中執行。shell腳本執行完後子shell環境隨即關閉,然後又回到父shell中。而方法四則是在當前shell中執行的。

『肆』 怎樣獲得當前運行的shell腳本所在目錄

pwd 在例2 例3時輸出 /root/ 和 /etc/
不是需要 print working directory,是需要print file directory

『伍』 shell腳本,獲取目錄的結構,保存到文件

使用遞歸的shell腳本沒有find效率高。find 是為目錄搜索而優化過的程序。

#!/bin/bash
DIR="$1"
if [ -z "$2"] ;then
echo "must set 2st argument for output file ." >& 2
exit 1
fi
OUT="$2"
DIR=$(readlink -m "$DIR")
#轉換成絕對路徑
find "$DIR" -type "d" >"$OUT"
#搜索目錄保存到輸出文件。

『陸』 怎麼讓shell腳本獲得自己所在目錄名

#!/bin/bash
pwd

把上面的命令保存成腳本
執行以下就行了

『柒』 linux shell 打開執行目錄

可以在shell中定義變數,然後使用變數,實現高效的跳轉到對應目錄,免去了輸入較長的地址。
比如我裝的LAMP環境,每次跑起環境都挺麻煩的。具體命令如下:
cd /opt/lamppsudo ./manager.run Linux命令需求可查詢「Linux命令大全」。

『捌』 如何獲得sh或source執行的shell腳本位置

1) 支持從其他目錄執行,如 source xxx/yyy/test.sh
1) 支持 sh 和 source 執行
2) 支持路徑中有空格
3) 支持 zsh 跟 bash
#!/bin/sh
if [ "$0" = "bash" ]; then
cd "$(dirname "$BASH_SOURCE")"
CUR_FILE=$(pwd)/$(basename "$BASH_SOURCE")
CUR_DIR=$(dirname "$CUR_FILE")
cd - > /dev/null
else
echo "$0" | grep -q "$PWD"
if [ $? -eq 0 ]; then
CUR_FILE=$0
else
CUR_FILE=$(pwd)/$0
fi
CUR_DIR=$(dirname "$CUR_FILE")
fi
echo $CUR_DIR

『玖』 shell編程中,如何獲取當前執行shell的路徑

常見的一種誤區,是使用pwd命令,該命令的作用是「print name of current/working directory」,這才是此命令的真實含義,當前的工作目錄,這里沒有任何意思說明,這個目錄就是腳本存放的目錄。所以,這是不對的。你可以試試bash shell/a.sh,a.sh 內容是 pwd,你會發現,顯示的是執行命令的路徑/home/june,並不是 a.sh 所在路徑:/home/june/shell/a.sh

另一個誤人子弟的答案,是$0,這個也是不對的,這個$0是Bash環境下的特殊變數,其真實含義是:

Expands to the name of the shell or shell script. This is set at shell initialization. If bash is invoked with a file of commands, $0 is set to the name of that file. If bash is started with the -c option, then $0 is set to the first argument after the string to be executed, if one is present. Otherwise, it is set to the file name used to invoke bash, as given by argument zero.

這個$0有可能是好幾種值,跟調用的方式有關系:

  • 使用一個文件調用bash,那$0的值,是那個文件的名字(沒說是絕對路徑噢)

  • 使用-c選項啟動bash的話,真正執行的命令會從一個字元串中讀取,字元串後面如果還有別的參數的話,使用從$0開始的特殊變數引用(跟路徑無關了)

  • 除此以外,$0會被設置成調用bash的那個文件的名字(沒說是絕對路徑)

  • 下面對比下正確答案:

  • basepath=$(cd `dirname $0`; pwd)

  • 在此解釋下basepath:

  • dirname $0,取得當前執行的腳本文件的父目錄


  • cd `dirname $0`,進入這個目錄(切換當前工作目錄)


  • pwd,顯示當前工作目錄(cd執行後的)

  • 由此,我們獲得了當前正在執行的腳本的存放路徑。

『拾』 如何運行shell腳本

編寫好的shell腳本(如:test),可以採取兩種方式進行運行: 一、 $ sh test 一般不採用這種調用方式,尤其不採用「sh<test」的調用方式,因為這種方式將禁止shell讀取標准輸入。 也可以採用 $ ksh test 這種方式要求shell具有「可讀」的訪問許可權。 二、直接運行可執行的shell腳本之前,首先應使用下列chmod命令,把shell腳本文件設置為可執行的文件。 chmod 755 test(除文件屬主可寫之外,每個用戶均具有讀和可執行的訪問許可權) chmod +rx test(同上) chmod u+rx test(只有文件屬主具有讀和執行的訪問許可權) 按照上述要求設置shell腳本文件的訪問許可權後,可採用下列方式,直接運行shell腳本了。 1、test(如果命令檢索路徑包含當前目錄) 2、./test(如果命令減縮路徑不包含當前目錄) *說明: sh test 方式調用一個shell叫蹦可能會禁止某些shell特定的擴展功能,因而可能引起腳本無法正確執行。