是否可以更改命令的默认行为?

Dan*_*ris 3 linux command-line ls

是否可以更改命令的默认行为?

我认为这个问题很简单,但让我举个例子。

虽然通过选项卡通过 SSH 自动完成连接到某些服务器不起作用,但使长命令变得冗长乏味。例如这里是一个 ls 命令:

ls -lah --group-directories-first
Run Code Online (Sandbox Code Playgroud)

这就是说以人类可读的格式在从上到下的列表中列出所有文件,包括隐藏文件,同时从目录中排序文件,使目录排在第一位。

有没有一种方法可以配置此 ls命令以通过简单地输入ls. 默认情况下列出ls所有文件。'ls' 命令必须有一个位置,这样当你运行它时系统知道去哪里寻找它,看看它的默认行为是什么,然后根据提供的 'ls' 的规范运行它命令。

最终我可以更改 ls 命令的输出或默认功能吗?

Ste*_*itt 9

在 Unix 或 Linux 风格的系统上执行此操作的典型方法是使用 shell 别名:

alias ls='ls -lah --group-directories-first'
Run Code Online (Sandbox Code Playgroud)

请注意,这将覆盖任何现有ls别名,因此您可能需要检查输出

alias ls
Run Code Online (Sandbox Code Playgroud)

首先并结合以上内容;例如

alias ls='ls -lah --group-directories-first --color=tty'
Run Code Online (Sandbox Code Playgroud)

要使其永久化,请将其添加到您.bashrc的主目录中的文件中(假设您正在使用 Bash,如果您发现所有这些,您可能会使用 Bash)。

以如此广泛的方式改变默认行为最终会令人困惑,所以我建议使用别名创建一个新命令;我有

alias l='ls -lah --group-directories-first'
Run Code Online (Sandbox Code Playgroud)

例如。这也允许构建其他别名:此l别名使用定义为 的任何内容ls,如果这是别名,则习惯了(因此--color=tty在这种情况下无需重复该选项)。

要删除别名,请使用unalias

unalias ls
Run Code Online (Sandbox Code Playgroud)