在Bash脚本中,如何将目录更改为文件';使用函数“dirname”的目录路径?

在Bash脚本中,如何将目录更改为文件';使用函数“dirname”的目录路径?,bash,alias,cd,dirname,positional-parameter,Bash,Alias,Cd,Dirname,Positional Parameter,我想通过定义别名将目录更改为文件目录: alias direc=`cd | echo dirname "$1"` 但这不起作用。我很感激你能给我提供任何重组的建议。你在倒退。dirname的结果应该是cd的参数,而不是试图使用cd的输出的dirname 此外,请使用函数而不是别名 direc () { cd "$(dirname "$1")" } 这个别名有什么用?它和dirname完全一样?为什么不直接使用“dirname”呢?嗨,我实际上想把目录改成文件的目录。这样,我设想通过执行d

我想通过定义别名将目录更改为文件目录:

alias direc=`cd | echo dirname "$1"`

但这不起作用。我很感激你能给我提供任何重组的建议。

你在倒退。
dirname
的结果应该是
cd
的参数,而不是试图使用
cd
的输出的
dirname

此外,请使用函数而不是别名

direc () {
  cd "$(dirname "$1")"
}

这个别名有什么用?它和dirname完全一样?为什么不直接使用“dirname”呢?嗨,我实际上想把目录改成文件的目录。这样,我设想通过执行
direc path/to/file
自动更改为它。我更新了问题,对不起,这是否回答了你的问题?您不能将参数传递给别名,只能传递给函数,但如果需要,您可以创建一个调用函数的别名。我将函数定义为
function direct{cd“$(dirname“$1”)”}
。这是否等同于上述内容?是的,但它使用的是非标准语法,在新版本中没有存在的真正原因。使用我所展示的函数定义的标准形式。(我的理解是,
function
关键字主要是为了简化为
ksh
编写的代码的使用,尽管我甚至不确定
ksh
是否对这两种形式进行了区分。)@user321627您需要添加空格和分号:
function direct{cd$(dirname“$1”);}
,或者,如前所述,
direct()