【问题标题】:bash shell: how to write the alias correctlybash shell:如何正确编写别名
【发布时间】:2013-12-04 21:21:37
【问题描述】:

我正在尝试在 Bash 中写下一些涉及 xclip 的别名。 这个想法是我想将'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`

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

更新:

  • “没用”我的意思是没有错误消息,但“dw”只是 把我送到家目录。
  • 我知道 pushd/popd,但它不知道 为我的目的服务。拿东西对我来说很重要 通过剪贴板传输其他软件/应用程序可以获得 参与。
  • 双引号是错别字,刚刚修正。

更新 2: 对 wd/dw 使用单引号解决了这个问题!

【问题讨论】:

  • 什么是“没用”?是否有错误消息或什么也没发生?你还记得source ~/.bashrc吗?
  • 我使用单引号作为别名。可能是这个原因,只是猜测。

标签: linux bash shell


【解决方案1】:

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

【讨论】:

  • 刚刚修正了报价,请再看一下?我不明白如何将 cd xclip -o 翻译成正确的 Bash 脚本...
  • @galactica 你还没有修正所有的双引号!还有一些双引号。
【解决方案2】:

使用pushddirspopd 有更好的方法:

  • 如果您想记住当前目录以便以后轻松返回,而不是使用cd 更改目录,请使用pushd
  • pushd bash 内置函数会像 cd 一样更改目录,但会将当前目录推送到“目录堆栈”。
  • dirs bash 内置显示您已推送到目录堆栈中的目录。
  • popd bash 内置函数将目录更改回最近压入堆栈的目录,并将其从堆栈中删除。

它是这样工作的:

$ 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 2018-09-14
    相关资源
    最近更新 更多