Linux Shell脚本的名称和名称是什么?方法

Linux Shell脚本的名称和名称是什么?方法,linux,bash,unix,Linux,Bash,Unix,有人能告诉我这个命令是什么意思吗 selfDir=$(cd "$(dirname "$0")"; pwd) ? 我知道 $0=正在运行的脚本名称 pwd=当前工作方向 cd=更改目录 我需要的是什么dirname?最后是什么意思?使这一行完全可以理解。dirname命令从名称中删除尾随/组件,并打印剩余部分。如果名称不包含/component,则会打印“.”(表示当前目录) Dirname命令示例: 从绝对路径中删除文件名 假设我的目录路径是/usr/local/bin/add.sh。现在

有人能告诉我这个命令是什么意思吗

selfDir=$(cd "$(dirname "$0")"; pwd) ?
我知道

  • $0
    =正在运行的脚本名称
  • pwd
    =当前工作方向
  • cd
    =更改目录

我需要的是什么dirname?最后是什么意思?使这一行完全可以理解。

dirname命令从名称中删除尾随/组件,并打印剩余部分。如果名称不包含/component,则会打印“.”(表示当前目录)

Dirname命令示例:

从绝对路径中删除文件名

假设我的目录路径是/usr/local/bin/add.sh。现在我想删除/add.sh并只显示/usr/local/bin,然后我们可以使用dirname命令

dirname /usr/local/bin/add.sh
/usr/local/bin
名称

dirname
-从文件名中去掉非目录后缀

简介

dirname NAME 
dirname OPTION 
说明

删除尾随/组件后打印名称;如果名称不包含/,则输出“.”(表示当前目录)

编辑:
另外,一些字符在linux命令中具有特殊功能
我几乎接受了答案,因为示例很清楚,但我认为您忘了告诉最后是什么“?”事实上,“pwd”将是什么do@Elvin在linux命令中,问号(?)和星号(*)用作通配符。它们可以用来定义与许多文件或方向匹配的参数。不过,问号似乎有点奇怪。除非当前目录中有一个单字符的可执行文件,否则将产生“未找到命令”错误。如果有的话,有一个命令执行它匹配的任何东西,而不是一个显式的命令名,这似乎也很奇怪。@chepner:我认为问号是一个闯入者。但是,如果它确实是行的一部分,则赋值将创建一个环境变量
selfDir
,其值如主命令中所述,然后从$PATH上的目录运行一个命令,该目录的名称与当前目录中的第一个单字符文件名相同,使用其他单字符文件名作为参数(若并没有这样的文件名,则在路径上的某个位置查找命令
,若并没有这样的命令,则无法执行-可能不会)。之后,
selfDir
被取消设置(或保持不变)。@JonathanLeffler:如果忽略这个?然后呢,;是什么意思?我知道pwd意味着什么,但这里它正在做什么