- 摘要:前言bashname命令用於獲取路徑中的文件名或路徑名(獲取的時候葉子節點的元素內容)常見用法舉例basenamepath獲取末尾的文件名或路徑名1:[aliyunzixun@xxx.comlianxi]#basename/etc/passwd2:passwd3:[aliyunzixun@xxx.comlianxi]#basename/etc/man.config4:man.config5:[aliyunzixun@xxx.comlianxi]#basename/etc/6:
- 前言
bashname命令用於獲取路徑中的文件名或路徑名(獲取的時候葉子節點的元素內容)
basename path
獲取末尾的文件名或路徑名
1: [aliyunzixun@xxx.com lianxi]# basename /etc/passwd
2: passwd
3: [aliyunzixun@xxx.com lianxi]# basename /etc/man.config
4: man.config
5: [aliyunzixun@xxx.com lianxi]# basename /etc/
6: etc 去掉末尾的指定字符
如果我們不需要擴展名或是末尾的子字符串的時候,第二個參數指定其即可取消。
取消擴展名
1: [aliyunzixun@xxx.com lianxi]# basename /etc/man.config
2: man.config
3: [aliyunzixun@xxx.com lianxi]# basename /etc/man.config .config
4: man
取消指定的字符
總結如下,要取消db.data,包括了擴展名在內
1: [aliyunzixun@xxx.com lianxi]# ls namedb.data
2: namedb.data
3: [aliyunzixun@xxx.com lianxi]# basename namedb.data db.data
4: name
通過basename來獲取末尾的文件名或目錄名
以上是
-
的內容,更多
-
的內容,請您使用右上方搜索功能獲取相關信息。
首先使用 --help 參數查看一下。basename命令參數很少,很容易掌握。
- $ basename --help
用法示例:
$ basename /usr/bin/sort 輸出"sort"。$ basename ./include/stdio.h .h 輸出"stdio"。為basename指定一個路徑,basename命令會刪掉所有的前綴包括最后一個slash(‘/’)字符,然后將字符串顯示出來。
basename命令格式:
basename [pathname] [suffix]basename [string] [suffix]suffix為后綴,如果suffix被指定了,basename會將pathname或string中的suffix去掉。
示例:
- $ basename /tmp/test/file.txt
- file.txt
- $ basename /tmp/test/file.txt .txt
- file
注意點:
1、如果像下面腳本中傳遞參數給basename,參數為空,basename會將參數左移2、basename最多接受兩個參數,如果設置的參數多於兩個,會提示錯誤。
以下是一個簡單的腳本,測試了一下basename:
- #!/bin/bash
- # basename.sh
- echo Testing basename
- echo -------------
- echo "basename \$1/\$2 .txt; suffix is .txt"
- filename=`basename $1/$2 .txt`
- echo $filename
- echo -------------
- echo "basename ab.c .c; suffix is .c"
- basename ab.c .c
- echo "basename ab b; suffix is b"
- basename ab b
- echo -------------
- echo Testing \$\@ and \$\#
- echo Output \$\@
- echo $@
- echo Output \$\#
- echo $#
- # end of basename.sh
腳本運行結果:
- 沒有參數傳遞的情況:
- $./basename.sh
- Testing basename
- -------------
- basename $1/$2 .txt; suffix is .txt
- /
- -------------
- basename ab.c .c; suffix is .c
- ab
- basename ab b; suffix is b
- a
- Testing $@ and $#
- -------------
- Output $@
- Output $#
- 0
- 傳遞參數的情況:
- $ ./basename.sh 1.txt 2.txt
- Testing basename
- ------------
- basename $1 .txt; suffix is .txt
- 1
- -------------
- basename ab.c .c; suffix is .c
- ab
- basename ab b; suffix is b
- a
- Testing $@ and $#
- -------------
- Output $@
- 1.txt 2.txt
- Output $#
- 2
額外補充:
1、$@$@ 為傳遞的參數2、$#$# 為傳遞參數的數量
就像腳本執行后的結果:
- Testing $@ and $#
- -------------
- Output $@
- 1.txt 2.txt
- Output $#
- 2
3、$?
是shell變量,表示"最后一次執行命令"的退出狀態,一般0表示成功,非0數值表示沒有成功。切記:$?永遠表示shell命令最后一次執行后的退出狀態,當函數執行完畢后,如果又執行了其它命令,則$?不再表示函數執行后的狀態,而表示其它命令的退出狀態.4、$!代表pid,進程id5、$$代表ppid,父進程id
- $ ./skype &
- [2] 13549
- $ echo $!
- 13549
- $ echo $$
- 13032
- $ ps -ef | grep skype
- luck 13549 13032 4 19:19 pts/0 00:00:00 skype
原文鏈接:https://blog.csdn.net/wutao_water/article/details/39478631