bash shell:如何正确编写别名

时间:2013-12-04 21:21:38

标签: linux bash shell

我正在尝试在涉及xclip的Bash中写下一些别名。 我的想法是,我想将'pwd'的输出复制到剪贴板缓冲区, 在一堆目录更改后,我想回到我输入'pwd'的地方。

我在.bashrc文件中记下了一些内容:

alias putclip='xclip'
alias getclip='xclip -o'
alias wd="pwd | putclip"
alias dw="cd `getclip`"

所以在终端中,'wd'意味着我将当前目录复制到剪贴板中,然后'dw'应该让我回到那个目录。

然而,这在我的终端中不起作用。

以下代码始终有效:

$ pwd | xclip
$ cd ***
$ cd ***
$ cd `xclip -o`

任何想法如何解决这个问题? 谢谢!

更新:

  • by“not not working”我的意思是没有错误信息,但是'dw' 把我送到了家里。
  • 我知道pushd / popd,但事实并非如此 为我的目的服务。得到的东西对我来说很重要 通过剪贴板s.t.转移其他软件/应用程序可以得到 参与。
  • 双引号是拼写错误,只是修正了它们。

更新2:    使用单引号为wd / dw修复了问题!

2 个答案:

答案 0 :(得分:3)

使用pushddirspopd有更好的方法:

  • 如果您想要记住当前目录以便以后轻松返回,而不是使用cd更改目录,请使用pushd
  • pushd bash内置更改目录,如cd,但它将当前目录推送到“目录堆栈”。
  • dirs bash builtin显示您在目录堆栈上推送的目录。
  • popd bash builtin将目录更改回最近在堆栈上推送的目录,并将其从堆栈中删除。

它的工作原理如下:

$ pwd
/i/am/here
$ pushd /tmp
$ cd /some/where       # do some work
$ cd /etc/other/place  # do some work
$ popd     # back to where I did pushd last time
$ pwd
/i/am/here

答案 1 :(得分:3)

您需要使用单引号声明别名,否则在声明别名时将执行xclip命令。