我正在使用仅使用本地访问 SSH 的 Ubuntu 服务器,但是当我发出命令时,dir
我得到的只是一个没有详细信息的文件和文件夹列表,但使用dir -l
给了我一个很长的列表,但与使用相比仍然没有任何内容,ls -l
后者显示与权限相对应的颜色,如何使用 获得相同的显示dir
,而不必继续附加命令行开关?例如dir -l
。
以前使用dir
会自动显示长列表,但随着时间的推移和大量更新,dir
现在不再有自动显示长列表的功能。
答案1
你可以为 .bashrc 添加一个别名,以便告诉服务器上的 shellls -l
无论何时你输入什么都运行dir
,基本上只需以下一行:
alias dir='ls -l'
保存并退出,然后运行source .bashrc
重新加载。
答案2
如果您要创建dir
别名,我建议alias dir='dir --color=auto -l'
。这可能就是您正在寻找的行为。这样做的好处是保留了与 的dir
不同之处ls
,并且不依赖于ls
您可能拥有的任何别名,甚至不受其影响。
您可以定义与外部命令同名的别名和 shell 函数(例如ls
和dir
),并且可以定义它们来调用该外部命令并向其传递附加选项。这就是上面建议的别名的作用。所以也许您曾经有一个dir
运行 的别名(或 shell 函数)dir -l
。
当不是但完成后,dir
就像这样ls -Cb
。ls
和命令dir
不同。dir
命令的目的是成为一个类似于的命令ls
,其行为不受是否在终端中运行的影响。 因此,您可以考虑不是根本不创建dir
别名,而只是使用ls
或ll
代替。ll
是的常用别名ls -l
。
虽然别名扩展不是由输出是否为终端决定的,但它主要由运行命令的 shell 是否是交互式的决定。(有办法覆盖这一点,但通常你不想这样做。)此外,只有--color=auto
当输出设备是终端时才会着色,这样如果你(例如)将输出重定向到文件,你就不会得到通常不想要的颜色代码。
但是,如果你想要改变运行时发生的情况dir
,那么我建议将其设为别名的原因dir --color=auto -l
是添加您所要求的选项,同时仍隐式使用-C
和-b
。 的存在-C
并不重要,因为它被 覆盖-l
。-C
表示以列形式显示,-l
表示以详细列表形式显示。 它不能同时执行这两项操作,因此它会执行 的任何操作最后的您传递给它的选项告诉它要做什么。但-b
仍然很重要;它会导致文件名中的奇怪字符被转义,这样您通常可以将显示的文件名复制到终端命令中而无需修改。
当然,您也可以改用alias dir='ls -bl --color=auto'
。这将达到相同的效果(您不需要包含,-C
因为它无论如何都会被覆盖-l
,如上所述)。或者至少如果您没有ls
别名,它会达到相同的效果。别名扩展不是完全递归的,这就是为什么您可以将别名设置ls
为以 开头的命令ls
(或dir
以 开头的命令dir
)。但别名扩展仍会继续,直到结果不是别名或进一步扩展会产生递归循环。定义您的dir
别名不是就使ls
您免受任何ls
可能被别名化所导致的意外影响而言。
至于别名定义放在哪里,你当然能将其直接放在.bashrc
你的主目录中的文件中,如下所示mikewhatever 建议。在这种情况下,这样做的好处是,您几乎肯定已经ls
在该文件中拥有别名定义,您可以将dir
别名放在那里附近。您的.bashrc
文件甚至可能已经有注释掉的#
别名(带有),您可以取消注释并使用它们。
但是,我建议将新的别名定义(您自己编写的)放入 中.bash_aliases
。Ubuntu 中的默认.bashrc
文件将获取该文件(如果存在)。也就是说,.bashrc
通常包含:
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
如果由于某种原因您的.bashrc
文件没有该内容,那么您可以添加它(或者#
如果您不想重复注释,则只添加不以 开头的行)。