[20230514]basename dirname命令.txt
[20230514]basename dirname命令.txt
--//工作需要,有時候知道一個檔案的全路徑名字,需要快速的進入該目錄,copy and paste時僅僅選取路徑部分,比較麻煩。
--//能不能直接寫一個人簡單的指令碼實現這個功能。我以前就知道basename取檔名部分,而如何實現取路徑部分呢?看了檔案發現很簡
--//單,dirname就可以實現,順便還學習readlink命令的使用。
$ dirname /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_11013.trc
/u01/app/oracle/diag/rdbms/book/book/trace
$ dirname test.txt
.
--//簡單測試:
$ cd $(dirname /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_11013.trc)
$ pwd
/u01/app/oracle/diag/rdbms/book/book/trace
-//建立指令碼如下:
# cat /usr/local/bin/cdf
#! /bin/bash
cd $(dirname $1)
# cat /usr/local/bin/cdf
# chmod 775 /usr/local/bin/cdf
$ hash -r
$ cd
$ cdf /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_11013.trc
$ pwd
/home/oracle
--//可以發現不行,因為執行cdf指令碼僅僅作為子程式退出會到原來的環境設定。
# cat /usr/local/bin/cdf
#! /bin/bash
echo cd $(dirname $1)
cd $(dirname $1)
pwd
exec bash -i
$ cdf /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_11013.trc
cd /u01/app/oracle/diag/rdbms/book/book/trace
/u01/app/oracle/diag/rdbms/book/book/trace
--//這樣可以實現我的需求,但是產生新的bash shell,要退出兩次,如果多次使用產生一堆bash shell程式。
--//想到alias,但是裡面有$1,看了一些檔案可以使用裡面建立函式的方式實現例子:
$ alias lcd='tt() { cd $(dirname $1); }; tt'
$ lcd /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_11013.trc
$ pwd
/u01/app/oracle/diag/rdbms/book/book/trace
$ tt /home/oracle/
$ pwd
/home
--//實際上自己搞複雜了,就建立一個函式cdf就ok了。
cdf ()
{
echo cd $(dirname $1)
cd $(dirname $1)
}
--//我個人的工作習慣在/etc/profile.d/目錄下建立一個alias.sh檔案,放入自己工作需要的別名,將上述內容加入。
# rm //usr/local/bin/cdf
$ . /etc/profile.d/alias.sh
$ cdf /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_11013.trc
cd /u01/app/oracle/diag/rdbms/book/book/trace
--//補充測試:
--//如果寫成這樣:
# cat /usr/local/bin/cdl
#! /bin/bash
echo cd $(dirname $1)
cd $(dirname $1)
$ cd
$ cdl /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_11013.trc
cd /u01/app/oracle/diag/rdbms/book/book/trace
$ pwd
/home/oracle
--//這樣不行的.
--//開頭加入. 或者source 就是相當於在當前bash shell程式中執行:
$ cd
$ . cdl /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_11013.trc
cd /u01/app/oracle/diag/rdbms/book/book/trace
$ pwd
/u01/app/oracle/diag/rdbms/book/book/trace
--//或者執行:
$ cd
$ source cdl /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_11013.trc
cd /u01/app/oracle/diag/rdbms/book/book/trace
$ pwd
/u01/app/oracle/diag/rdbms/book/book/trace
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2952015/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux常用基本命令(rename,basename,dirname)Linux
- Shell中常用的系統函式basename和dirname函式
- Linux中dir和dirname命令Linux
- 如何理解shell命令 cd $(dirname $0)
- Linux中的basename命令使用例項Linux
- Linux系統中的basename命令使用例項Linux
- __dirname is not defined in ES module scope
- [20191128]date命令別名.txt
- [20190505]ts 命令在哪裡.txt
- [20210920]bbed的assign命令.txt
- [20210304]bbed的assign命令.txt
- Nodejs 之 exports, require, module, __filename, __dirnameNodeJSExportUI
- [20190411]linux stat 命令疑問.txtLinux
- [20191119]探究ipcs命令輸出.txt
- [20211213]完善date命令別名.txt
- [20220329]windows xcopy命令問題.txtWindows
- [20180628]顯示bbed x命令格式.txt
- [20200224]windows命令學習筆記.txtWindows筆記
- [20180302]使用find命令小錯誤.txt
- [20230323]ps命令檢視thread.txtthread
- [20210410]關於time命令的解析.txt
- [20201123]timeout 命令學習筆記.txt筆記
- [20190301]簡單測試linux fsfreeze命令.txtLinux
- [20180627]測試bbed是否支援管道命令.txt
- [20200107]vim的特殊功能g命令.txt
- [20191112]flock控制命令執行順序.txt
- [20191119]探究ipcs命令輸出2.txt
- Nodejs中process.cwd()與__dirname的區別NodeJS
- [20231109]bbed p命令dba引數問題.txt
- [20230922]dc命令複雜學習3.txt
- [20210618]記錄bash shell執行的命令.txt
- __dirname, __filename, path.resolve, path.join, process.cwd
- [20250118]find命令檔案統配符使用引號.txt
- [20191113]一行命令瞭解rac執行狀態.txt
- [20210804]oracle rac執行命令crs_stat -t -v緩慢的分析.txtOracle
- [20210106]vim syntax txt.vim.txt
- [20230323]sqlplus #.txtSQL
- [20181203]bash here $.txt