basename和dirname:您應該知道的兩個命令

終端外殼Linux命令

有時有些教程旨在解釋一些更奇特的命令和奇怪的命令,另一方面,有些教程包括串行發行版,不如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


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責資料:AB Internet Networks 2008 SL
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   格雷戈里·羅斯 他說:

    這些事情的一個很好的例子是,當您學習時,您會發現沒用,但是當您學習該主題時,您會發現它們是多麼實用。