为常见的 bash 命令编写自定义别名

为常见的 bash 命令编写自定义别名

[最佳实践问题]

我刚刚开始使用 unix - 我发现一些常见的操作(例如创建符号链接ln -s 或重命名文件)mv不直观。

我正在争论是否要定义我自己的别名renamesymlink例如 。

这是一个坏主意吗?为什么不)?


笔记:我不做系统管理工作,只是在我自己的个人计算机上使用 UNIX 终端来提高工作效率。

澄清:我的意思是定义我自己的语法任何不直观的内置 bash 命令 - 这样我可以更好地理解它们 - 但它是我控制的机器所独有的(访问我的别名)

答案1

这绝对是一个偏好问题。在我看来,直接学习命令有更多优点:

  • 一致性/可靠性-每当您使用新计算机时,了解和理解诸如ln和 之类的命令都会有所帮助。mv虽然返回并找到您的设置、复制它们或查找您想要的内容并不困难,但了解基本命令总是会为您节省一点时间。访问内置手册 ( man mv) 也始终是一个好处。另外,ln -s击键次数比symlink;)少
  • 学习能力/灵活性- 如果您专注于学习基本命令并熟悉它们的工作方式作为命令,您将更容易理解不同标志的工作原理,它们如何链接在一起等。虽然symlink对于创建符号链接很有帮助,但如果您想创建硬链接或替换现有文件,则必须使用ln无论如何。简而言之,您的自定义别名不如基本命令那么灵活。

考虑到这些,我建议不要用别名替换单个命令。然而,在很多情况下,别名命令都很有意义。一些例子:

  • 您经常执行的特定任务- 例如scp -r /home/user/project/logs [email protected]~/logs/`date %F`
  • 将许多命令串在一起的任务- 例如cat /var/logs/websites | grep 502 > /home/user/logs/502

我希望这有助于您了解如何最大限度地发挥别名的用处!不过,归根结底,这是你的决定,通过实践你将比阅读任何旧的堆栈交换评论了解更多有关 linux/unix 的知识 :P 制作这些别名并在你不再需要它们的一年内替换它们是一个很棒的选择学习方式。

答案2

当我开始时,我也遇到了类似的问题。

对我来说,主要的问题是记住名称和选项。如果您使用它们一段时间,您就会习惯它们(除了git)。

至于直觉。如果您对命令的作用模型不正确,那么命令就不直观。

例如

mv不重命名,而是将文件移动到新的目录条目。这可以是同一目录中的新名称、不同目录中的相同名称或不同目录中的不同名称。

rm不要删除,它会删除目录条目。文件由引用计数垃圾收集器删除(当文件没有保留目录条目,并且文件没有被任何进程打开时)。

为别名选择错误的名称可能会使其更难掌握,并导致误解和错误。

答案3

简单最终会变得舒适。

当您在终端上花费一些时间(并且它是单独的)时,您可能会明白最常用的命令长度为 2 个,最多 3 个字母是多么舒服。然后您意识到您不想为打字而烦恼symlink,并且您会欣赏打字的简单性ln -s。尤其是当你谈论,就像您的问题已被标记一样。

mv而像, ls, ln,这样的程序名称rm实际上只是缩写词,例如ve、st,nk 和reover 以便于记忆。

它是助记符,所以当你忘记符号链接的命令时,你只需说你需要“nks象征性的”并ln -s浮现在脑海中。

在我看来,如果别名缩短了长命令,而不是更长的短命令,那么它们就会变得有用。

答案4

取决于您使用的是什么系统。例如,在 CentOS 8 上,您可以添加全局别名,/etc/profile.d/global_alias.sh每次通过 SSH 登录时都可用。如果该文件不存在,只需创建它。您必须重新连接才能使它们在您的会话中可用,或者直接在命令行上键入它们以仅在当前会话中处于活动状态。在旧版本的 CentOS (RHEL) 上,您可以将它们放入文件中/root/.bashrc

在文件中您可以放置​​以下内容:

alias clear="clear; printf '\033[3J' "
alias logs='cd /var/log/; clear; ll;'
alias edit='nano -w -S -T 4'
alias dirsize='du -h -x --max-depth=1'

我个人会使用别名而不是创建符号链接来为命令提供不同的名称。

相关内容