basename命令詳解


 

基礎命令學習目錄首頁

 

    • 摘要:前言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來獲取末尾的文件名或目錄名

    • 以上是

linux命令詳解:basename命令

      的內容,更多

Linux 葉子 元素

      的內容,請您使用右上方搜索功能獲取相關信息。

 

首先使用 --help 參數查看一下。basename命令參數很少,很容易掌握。
 
 
 
 
  1. $ 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去掉。
示例:
 
 
  1. $ basename /tmp/test/file.txt
  2. file.txt
  3. $ basename /tmp/test/file.txt .txt
  4. file
 
注意點:
1、如果像下面腳本中傳遞參數給basename,參數為空,basename會將參數左移
2、basename最多接受兩個參數,如果設置的參數多於兩個,會提示錯誤。
 
 
以下是一個簡單的腳本,測試了一下basename:
  1. #!/bin/bash
  2. # basename.sh
  3. echo Testing basename
  4. echo -------------
  5. echo "basename \$1/\$2 .txt; suffix is .txt"
  6. filename=`basename $1/$2 .txt`
  7. echo $filename
  8. echo -------------
  9. echo "basename ab.c .c; suffix is .c"
  10. basename ab.c .c
  11. echo "basename ab b; suffix is b" 
  12. basename ab b
  13. echo -------------
  14. echo Testing \$\@ and \$\#
  15. echo Output \$\@
  16. echo $@
  17. echo Output \$\#
  18. echo $#
  19. # end of basename.sh
腳本運行結果:
 
  1. 沒有參數傳遞的情況:
  2. $./basename.sh
  3. Testing basename
  4. -------------
  5. basename $1/$2 .txt; suffix is .txt
  6. /
  7. -------------
  8. basename ab.c .c; suffix is .c
  9. ab
  10. basename ab b; suffix is b
  11. a
  12. Testing $@ and $#
  13. -------------
  14. Output $@
  15. Output $#
  16. 0
  17. 傳遞參數的情況:
  18. $ ./basename.sh 1.txt 2.txt
  19. Testing basename
  20. ------------
  21. basename $1 .txt; suffix is .txt
  22. 1
  23. -------------
  24. basename ab.c .c; suffix is .c
  25. ab
  26. basename ab b; suffix is b
  27. a
  28. Testing $@ and $#
  29. -------------
  30. Output $@
  31. 1.txt 2.txt
  32. Output $#
  33. 2
 
 
額外補充:
1、$@
$@ 為傳遞的參數
2、$#
$# 為傳遞參數的數量
 
就像腳本執行后的結果:
 
 
  1. Testing $@ and $#
  2. -------------
  3. Output $@
  4. 1.txt 2.txt
  5. Output $#
  6. 2
3、$? 
    是shell變量,表示"最后一次執行命令"的退出狀態,一般0表示成功,非0數值表示沒有成功。
 
切記:
$?永遠表示shell命令最后一次執行后的退出狀態,當函數執行完畢后,如果又執行了其它命令,則$?不再表示函數執行后的狀態,而表示其它命令的退出狀態. 
4、$!
    代表pid,進程id
 
5、$$
    代表ppid,父進程id
 
  1. $ ./skype &
  2. [2] 13549
  3. $ echo $!
  4. 13549
  5. $ echo $$
  6. 13032
  7. $ ps -ef | grep skype
  8. luck 13549 13032 4 19:19 pts/0 00:00:00 skype

原文鏈接:https://blog.csdn.net/wutao_water/article/details/39478631


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM