basename和dirname:您应该知道的两个命令

终端外壳Linux命令

有时,有些教程旨在解释一些更奇特的命令和奇怪的命令,另一方面,有些教程包含串行发行版,不如cd,ls,cat等流行,但它们是实用的。 在本教程中,我将向您展示使用其中两个命令可以完成的操作: 基本名告诉我.

也许是先验的,他们对您来说似乎很荒唐,没有用,但是他们 相当实际的应用 在某些情况下,例如在脚本中,有必要提取路径的某些部分,例如文件名或目录,以便对此执行另一命令...

他们是干什么的

这些命令是非常基本的,并且 它的功能 是:

  • 基本名:用于从路径中提取文件名。
  • 目录名:用于从路径中提取目录名称。

用法示例

在这里你可以看到一些 Ejemplos 如何使用它们:

  • 例如使用 基本名 使用/ 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.   格雷戈里·罗斯

    这些事情的一个很好的例子是,当您学习时,您会发现没用,但是当您学习该主题时,您会发现它们是多么实用。