A. linux sh腳本無法cd到某目錄:cd: can't cd to /opt/test
原因:不是直接在linux上touch建立的sh文件,是在外面新建的,導致無法識別
解決辦法:重新手動touch一個文件1.sh,並chmod 755 1.sh就可以運行了
B. linux中的cd "$(dirname "$0")"/是什麼意思呢
cd :切換文件夾
$: 返回該命令的結果
dirname :用於取指定路徑所在的目錄 ,如 dirname /home/ikidou 結果為 /home
$0: 表示當前動行的命令名,一般用於shell 腳本中
cd "$(dirname "$0")"/ 為【 切換到 腳本 所在的目錄】可參考《Linux就該這么學》了解更多Linux知識。
C. linux shell腳本執行命令詳解
在Linux下,如果你需要執行shell腳本,那麼應該使用那個命令呢?下面由我為大家整理了linux shell腳本執行命令的相關知識,希望對大家有幫助!
linux shell腳本執行
linux shell腳本執行方法一: 切換到shell腳本所在的目錄(此時,稱為工作目錄)執行shell腳本:
cd /data/shell
./hello.sh
./的意思是說在當前的工作目錄下執行hello.sh。如果不加上./,bash可能會響應找到不到hello.sh的錯誤信息。因為目前的工作目錄(/data/shell)可能不在執行程序默認的搜索路徑之列,也就是說,不在環境變數PASH的內容之中。查看PATH的內容可用 echo $PASH 命令。現在的/data/shell就不在環境變數PASH中的,所以必須加上./才可執行。
linux shell腳本執行方法二: 以絕對路徑的方式去執行bash shell腳本:
/data/shell/hello.sh
linux shell腳本執行方法三: 直接使用bash 或sh 來執行bash shell腳本:
cd /data/shell
bash hello.sh
或
cd /data/shell
sh hello.sh
注意,若是以方法三的方式來執行,那麼,可以不必事先設定shell的執行許可權,甚至都不用寫shell文件中的第一行(指定bash路徑)。因為方法三是將hello.sh作為參數傳給sh(bash)命令來執行的。這時不是hello.sh自己來執行,而是被人家調用執行,所以不要執行許可權。那麼不用指定bash路徑自然也好理解了啊。
linux shell腳本執行方法四: 在當前的shell環境中執行bash shell腳本:
cd /data/shell
. hello.sh
或
cd /data/shell
source hello.sh
前三種方法執行shell腳本時都是在當前shell(稱為父shell)開啟一個子shell環境,此shell腳本就在這個子shell環境中執行。shell腳本執行完後子shell環境隨即關閉,然後又回到父shell中。而方法四則是在當前shell中執行的。
D. linux 中「.」和「./」命令分別是什麼意思
.表示執行的意思,就是執行這個文件。
./呢就表示執行當前目錄下的某個文件,就比如當前目錄有一個腳本a.sh,那麼./a.sh就表示執行它。
不加參數時,默認切換到用戶主目錄,即環境變數HOME指定的目錄,如root用戶的HOME變數為/root,那麼cd命令不帶參數時便切換到/root目錄下。
絕對路徑是從跟目錄開始的,如/root或/home/sgl,相對路徑是相對於當前路徑來說的。
假如當前目錄在/home/guo下面,那麼前面的/home/sgl的相對路徑就是../sgl,即當前目錄的上級目錄下的sgl目錄。
(4)linux腳本cd擴展閱讀:
參數r是指連同源文件中的子目錄一同拷貝。熟悉dos的讀者用起這個命令來會覺得更方便,畢竟比在dos下面要少敲兩下鍵盤。
../ 和 ./ 代表的 是上級目錄以及當前目錄。
處在當前目錄復制當前目錄下文件到別的目錄。
cp_文件名稱_別的文件目錄路徑。"_"是空格
舉個例子:在orz文件夾下有兩個子文件夾a和b,a中有文件x.c,b中無文件。
E. Linux Shell腳本如何獲取當前路徑
解答如下:
獲取腳本運行所在目標。常用三個方法,推薦第三個
#!/bin/bash
Cur_Dir="$(pwd)"
Cur_Dir="$(cd`dirname$0`;pwd)"
Cur_Dir="$(cd-P"$(dirname"${BASH_SOURCE[0]}")"&&pwd)"
echo${Cur_Dir}
cd${Cur_Dir}
F. 有關linux shell的一個提問,為什麼cd 命令在shell腳本不起作用了
獲取的目錄是當前目錄下的路徑,當你時入第一個目錄時,再進入當前目錄的另一個路徑,怎麼可以跳得過去!
例如:當前目錄/home/mydir/ 獲取的是 ./tools 和 ./download 當先cd tools目錄下之後,再cd download路徑,肯定報No such file or directory
G. linux 寫一個計劃任務的腳本,在每個月1號的凌晨3點定時備份/boot、/etc、 /home、/root
mkdir /bakcup-dir
你頃迅編輯一個shell腳本:
cd ~/tmp
vim b.sh
#!/bin/bash
backups=`date +%H_%M-%m%d` # (1號鍵旁邊到符號` )
cd /backup-dir
tar zcf $backups.tar.gz /home /悔寬root /boot /etc
讓crontab來調用碧乎亮
crontab -e
* 3 1 * * sh ~/tmp/b.sh
H. linux裡面怎麼寫個切換目錄的腳本
通過腳本切換工作目錄,剛開始覺得很簡單,直接在腳本中寫一個cd語句就搞定了。
但是,其實不然。
執行腳本時候,只是在當前的shell下開了一個子進程,切換目錄的操作只對該進程中相關後續指令有效,但改變不了父進程的目錄。
因此,當你寫好了腳本,並且調用執行時,你的當前工作目錄並沒有變化。
那麼,解決方案呢?
有兩種方式解決(都是執行腳本的方式不同,腳本內容依然是一個cd語句。假定腳本為change.sh):
source change.sh
. ./change.sh
第一個點是bash的內部命令,表示在當前shell中運行
後面的「./change.sh」是命令的參數,即要執行的腳本(註:兩點之間要有空格)