linux - bash 别名中允许使用哪些字符

标签 linux macos bash

<分区>

我最近添加了

alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'

到我的 bash_aliases 文件。玩这个,我注意到虽然别名 .. 是允许的,但别名 . 是不允许的。 bash 别名中还允许使用哪些其他标点符号?

最佳答案

使用函数总是更安全:

function .. { cd '..'; }
function ... { cd '../..'; }
function .... { cd '../../..'; }

或者对于保守的偏好:

..() { cd '..'; }
...() { cd '../..'; }
....() { cd '../../..'; }

What is safer about doing it this way?

别名影响一级语法(if、case 等),其命令使用引号指定。这就像不必要地使用 eval 一样。另一方面,使用函数很简单,而且您确切地知道参数是如何扩展的。 TL;DR 别名是一个黑客。当您可以简单地定义一个函数时,这就像在 C 中使用 #define 语句。这是初学者喜欢创作的东西。

如果有人想为命令定义默认参数,您可以使用 command 使函数调用外部命令以避免递归。这是正确的做法。例如。 函数 grep { 命令 grep --color=auto "$@"; }

关于linux - bash 别名中允许使用哪些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24690640/

相关文章:

bash - 如何在通过命令行运行/bin/bash 时将 $TERM 设置为一个值?

bash - 如何使用我在 github 中放置的 bash 脚本执行 chsh?

bash - 执行exec.Command似乎无法将信息通过管道传输或附加到.txt文件。我的语法错误吗?

linux - rsync 在启动时不工作?

python - 在 zipfile 中从 URL 读取 shapefile 时,错误为初始值不是 str

linux - 查看linux下当前设置的JAVA_OPTS

Java错误: java -v command throws errors

objective-c - 向 NSOutlineView 添加标签元素

linux - 如何在 CentOS 5 上更新/usr/lib/libstdc++.so.6?

linux - Linux 桥接器在 2 个 TAP 接口(interface)之间需要 IP 吗?