您好我正在尝试使用gitbash
在以下别名中建立,但不能:
alias dirpwd='$(`pwd | xargs dirname | xargs basename -a`)' && echo -e $dirpwd;
输出结果为:
bash: c: command not found
为什么?
谢谢大家!!
答案 0 :(得分:4)
会发生什么:
反引号和$()
以相同的方式工作。它们内部的命令被执行,结果输出被视为直接键入它。
假设你在/top/c/bottom
。
反引号内的pwd | xargs dirname | xargs basename -a
部分输出c
。
Bash用其输出替换反引号部分,从而生成命令$(c)
。
现在bash尝试在$(...)
内执行命令,但c
不是命令,因此错误bash: c: command not found
。
首次修复:
我想你只想写
alias dirpwd="pwd | xargs dirname | xargs basename -a"
<强>错误:强>
有一个隐藏的错误。 xargs
在空格处分割,可以将多个参数传递给dirname
和basename
。
示例:假设您在/top/a b c/
。 xarg
创建以下命令并输出
dirname "/top/a" "b" "c/"
/top
.
.
第二次修复:
使用$()
代替xargs
。
alias dirpwd='basename "$(dirname "$PWD")"'
答案 1 :(得分:0)
尝试解决方案:
alias dirpwd="pwd | xargs dirname | xargs basename -a"