(Mac) 如何在终端中创建包含用户输入的别名?

4
在 Mac OS 终端中,我正在学习 Unix 的基础知识。我遇到了一个希望很容易解决的问题,但是不知道从哪里开始寻找解决方案。
cd __________ && ls

这对我来说是一个相当常见的模式,用来检查并查看我正在工作的文件夹。为了节省键入,我想在我的 .profile 中创建一个别名。

alias cd='cd && ls'

现在,显而易见的缺陷(对我来说并不明显)是我将无法给它一个实际要改变到的目录。

cd ~/Documents/ && ls

这是我想做的事情,但不想输入最后四个字符。有没有什么建议可以将用户输入(也许是某种 $(pbpaste)选项)融入其中?
如果有任何帮助或建议,将不胜感激。
1个回答

7

您需要先创建一个BASH函数来替代别名:

mycd() { cd "$1"; ls; }
alias cd='mycd '

然后像这样使用它:
cd ~/Documents/

1
然后,您可以创建函数的别名:D - gtgaxiola
1
+1 很好。对于 OP,我建议不要覆盖 cd 命令 :P - gtgaxiola
1
一个替代alias的方法是cd () { builtin cd "$1" && ls; },尽管@gtgaxiola建议不要覆盖内置命令是个好主意。 - chepner
谢谢!好的,我正在尝试。当我这样做时覆盖cd似乎是个坏主意(在源代码之后陷入一个文件夹)。这很有帮助! - asshah4
1
最常见的用途是查找哪个Mac进程正在使用端口,我在我的~/.bash_profile中实现了它,写入以下内容:get_tcp_port() { lsof -i tcp:"$1"; } alias who_is_using="get_tcp_port",然后刷新终端以使用新的bash_profile,使用source ~/.bash_profile,然后像普通别名一样在终端中使用它,例如:who_is_using 8080 - Shrikant Prabhu

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