打印终端别名命令并执行

9
作为一个终端小白,我已经为几乎所有的操作创建了别名。问题是由于这样做,我开始忘记我所知道的一些命令。另外,有时候我需要编辑先前命令中的一个变量。
因此,当我使用别名时,我希望打印出来的第一行是实际代表该别名的命令,并继续执行该命令。由于按上箭头和 !! 只会重新打印别名,我不太确定如何获取对底层命令的引用。
谢谢。

1
但是你知道吗,如果你写alias your_alias,这个别名会被打印出来吗? - fedorqui
哈!就这样做。我只需创建别名函数(或者叫什么都可以),并将其作为第一行。如果你认为这样会起作用,那么请随意将其发布为答案。 - willlma
它确实有效。感谢您的帮助。 - willlma
3个回答

13

您可以始终使用以下方式:

  • alias 列出所有别名,或者
  • alias name 显示别名 name 的规范。

因此实际上您可以将您的别名定义为

alias myalias="alias myalias; <do stuff>"

我也认为chepner的答案,使用Alt-Control-e更实用,但我发布这篇文章是为了完整性。


10
在输入别名后,敲击回车之前,您可以键入Meta-Control-e(可能是Alt-Control-e,但也可能是Esc-Control-e),以展开您已经输入的内容;这将展开任何别名和历史扩展,以便您可以看到您已经输入的 "长" 形式。

我在配置文件中有这个:**alias es2="ember server -p 4202"**,但是当我扩展它时,我只得到了 ember - Nikos

0

您可以在别名中使用变量以获得干净的输出:

alias test='_TMP="pushd /home/a/b/c";echo $_TMP; eval $_TMP'

如果你想避免别名出现消息,你可以这样做

_TMP="pushd /home/a/b/c >/dev/null 2>&1"

它确实添加了一个名为_TMP的环境变量。

旧帖子中有错误。


很高兴能找到这篇文章,但是其中的建议对我没有用。我使用的是Mac上的zsh,这有关系吗?在我的.zshrc文件中插入test='$_TMP="php artisan serve";echo $_TMP;$_TMP'后,在终端窗口中返回的是zsh: php artisan serve not found。我期望看到的是php artisan serve,然后跟着服务器启动。任何指导将不胜感激。 - mann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接