有時有些教程旨在解釋一些更奇特的命令和奇怪的命令,另一方面,有些教程包括串行發行版,不如cd,ls,cat等流行,但它們卻很實用。 在本教程中,我將向您展示使用其中兩個命令可以完成的操作: 基本名告訴我.
也許他們對您來說似乎是荒謬的,毫無用處,但是他們有 相當實際的應用 在某些情況下,例如在腳本中,您需要提取路徑的某些部分,例如文件名或目錄,以便另一個命令對此起作用。
他們是乾什麼的
這些命令是非常基本的,並且 它的功能 聲音:
- 基本名:用於從路徑中提取文件名。
- 目錄名:用於從路徑中提取目錄名稱。
用法示例
在這裡你可以看到一些 例子 如何使用它們:
- 例如,使用 基本名 使用/ etc / passwd,並在其輸出中返回文件名,在這種情況下為passwd:
basename /etc/passwd
- 您還可以指定 擴展 這樣就可以為您提供不帶擴展名的文件名。 例如,假設您要提取不帶jpg擴展名的圖像/home/media/test.jpg的名稱(它將返回 prueba):
basename -s .jpg /home/media/prueba.jpg
- 你甚至可以 一次處理多條路線 單獨地,為此,您必須使用-a選項:
basename -a /etc/passwd /var/log/boot.log
- 要執行相反的操作,並給您目錄的名稱,而不提供文件名,則必須使用 目錄名。 例如,如果要在/var/spool/mail/test.txt路徑中使用它,並使其返回/ var / spool / mail,請使用:
dirname /var/spool/mail/prueba.txt
至於一個 腳本中的實用程序,這裡有另一個例子。 假設您有一個簡單的腳本,並且其中有一個可變的路徑。 但是,您希望它顯示包含文件的目錄,而不管文件是什麼,在這種情況下,您可能會遇到以下情況:
pathname="/home/usuario/data/fichero" result=$(dirname "$pathname") echo $result
顯然,在此腳本中,“路徑名”始終是常量開頭所聲明的靜態變量,但是在某些情況下,路徑名可能不是 它變得實用。 例如:
/*script para convertir una imagen gif en png*/ #!/bin/sh for file in *.gif;do #Salir si no hay ficheros if [! -f $file];then exit fi b='basename $file .gif' echo NOW $b.gif is $b.png giftopnm $b.gif | pnmtopng >$b.png done
這些事情的一個很好的例子是,當您學習時,您會發現沒用,但是當您學習該主題時,您會發現它們是多麼實用。