如何为特定文件或目录设置别名?

如何为特定文件或目录设置别名?

我经常使用几个文件。例如一些配置文件或日志文件。比方说 Apache 日志文件。我经常想要tailgrep它。而不是写:

tail -50 /var/log/apache2/error_log

我更喜欢写

tail -50 apachelog

因此它apachelog充当该文件名的别名。但是如果我在 my 中定义一个别名bashrc,它需要是一个完整的命令;它(显然)不能是文件名的别名,以便您稍后可以引用它。有办法实现这一点吗?

注意:我有各种各样的文件和想要运行的各种各样的不同命令,因此为所有这些不同选项创建函数或别名不会是我的首选解决方案。

答案1

您可以定义一个变量,并使用 a$来调用它的值:

apachelog=/var/log/apache2/error_log
tail -50 $apachelog

你不会在 bash 中做得更好。在 zsh 中,您可以定义全局别名,这些别名在命令行中的任何位置展开:

alias -g apachelog=/var/log/apache2/error_log
tail -50 apachelog

但我不推荐它,因为现在如果您想将字符串apachelog作为参数传递给命令,您需要记住引用它。

答案2

您可以创建一个函数并“向后”编写命令

apachelog() {
  "$@" /var/log/apache2/error_log
}

apachelog tail -50

答案3

目录的别名是 link。这就是为什么一种可能性是在一个目录中创建一堆指向感兴趣文件的链接。然后将 rtail 别名为 tail,以便它在该目录中查找文件。

答案4

把这个放在你的~/.bashrc

 alias tailapache='tail -50 /var/log/apache2/error_log'

执行source ~/.bashrc或开始一个新的 bash 会话...

那么你只需要输入tailapache

相关内容