[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 basename命令的使用Linux
- Linux中的basename命令使用例項Linux
- Linux系統中的basename命令使用例項Linux
- basename函式函式
- linux `dirname $0`Linux
- Linux去掉檔名的目錄和字尾命令basenameLinux
- __dirname is not defined in ES module scope
- Nodejs 之 exports, require, module, __filename, __dirnameNodeJSExportUI
- Ubuntu設定目錄的讀寫許可權(Linux命令chmod 777 dirName)UbuntuLinux
- 常用find命令與xargs.txt
- node內建全域性變數之__dirname、__filename變數
- Nodejs中process.cwd()與__dirname的區別NodeJS
- [20130416]seq命令.txt
- tree和dir命令方便檔案整理txt
- [20190505]ts 命令在哪裡.txt
- [20170705]理解linux su命令.txtLinux
- [20160405]bbed的assign命令.txt
- 實驗-shell執行資料庫命令.TXT資料庫
- php中basename()函式返回路徑中的檔名部分PHP函式
- 利用Perl的File::Basename包解析全檔案路徑資訊
- [20140411]windows的forfiles命令.txtWindows
- [20210304]bbed的assign命令.txt
- [20211213]完善date命令別名.txt
- [20220329]windows xcopy命令問題.txtWindows
- oracle資料庫使用sqlldr命令匯入txt資料Oracle資料庫SQL
- [20160303]顯示bbed x命令格式.txt
- [20191128]date命令別名.txt
- [20190411]linux stat 命令疑問.txtLinux
- [20210410]關於time命令的解析.txt
- [20210920]bbed的assign命令.txt
- [20161129]奇怪的轉儲命令.txt
- [20180628]顯示bbed x命令格式.txt
- [20171205]uniq命令的輸入輸出.txt
- [20120612]linux的cloumn命令.txtLinux
- [20120608]linux的kill命令.txtLinux
- [20180627]測試bbed是否支援管道命令.txt