[Linux] "ll" 不是一个命令

大家好,
我是系统解决方案部门的Naka。即使是炎热的天气,如果没有毯子垫在肚子下,我也会感到不自在。

那些负责构建和运维基础设施环境的人员很可能有很多机会使用Linux。
(当然,也存在纯Unix和纯Windows环境。)

其中,我认为最常用的命令可能是用于列出文件的“ls”命令,但我
也认为很多人使用“ll”作为“ls”命令的更高级的替代方案。

本文解释说
“ll”不是命令,了解它在某种程度上是有益的,因为它并非总是可以使用的!

本文的观点是:“这没什么大不了的,但有些人并不了解,所以我想解释一下。”

执行环境

【说明】
●Linux 环境组

操作系统:Ubuntu 20.04.5 LTS(WSL2 环境)
Shell:Bash
语言环境已更改为日语

操作系统:CentOS 7.9 (2009) (WSL2 环境)
・Shell:Bash

【补充说明】
●Windows 环境
:操作系统:Windows 11(版本:21H2)
Shell:命令提示符
语言设置已更改为日语

“ll”通常是指“ls -l”的别名。

“ll”不是命令,而是一个“别名”,它被注册并定义为特定命令的替代名称,就像快捷方式一样。

我相信它通常被认为是“ls -l”的缩写形式并被广泛使用。

使用别名命令进行检查

简要解释别名命令。

,用于临时注册一个“别名”。Bash shell 中的一个内置命令
由于它不是 Linux 命令,请注意,在其他 shell 中可能不存在类似的命令,或者其行为可能有所不同。

*这只是暂时的,重启电脑后就会消失,所以如果想永久注册,需要将其写入 shell 配置文件。

如果输入此命令时不带任何参数,则可以看到当前设置的“别名”。

●CentOS7.9(2009) $ alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

如您所见,在 CentOS7 的默认状态下,“ll”指的是“ls -l --color=auto”。

在大多数现代发行版中,“ll”通常被设置为默认值。
这有时会导致误解,但重要的是要记住,它是一个“别名”,而不是一个“命令”。

为什么了解这些细节很重要

A1. 根据生产环境的不同,“别名”可能不会被设置。

,这可能是因为担心设置别名后可能会执行意外命令
在某些环境下,根本不会注册别名
*请注意,在某些发行版和版本中,别名可能默认未注册。

如果你因为不熟悉常用的命令和选项而遇到困难,那就很麻烦了。
似乎有些人因为不知道“ll”是一个“别名”而无法使用它,所以感到困惑,因此最好记住它。

A2. 有些事情是不能写进工作程序手册里的。

虽然工作程序手册的最佳实践可能因每家公司的文化和现场操作规则而异,但
通常的做法是避免使用相对路径和避免使用“alias”设置的别名。

不言而喻,使用“rm”命令时,相对路径特别容易导致重大事故。

“别名”设置的存在与否取决于环境,默认内容也因发行版而异,因此最好避免在说明手册中将其用作通用语言。

A3. 即使没有规则,你也可能会收到警告

这与 A2 的答案类似。我刚入职的时候,在程序手册里写了“ll”,当时我的上司告诉我:“那是别名,所以不要在程序手册里使用它。”

有些人认为由于文化和习俗的原因,这是不可能的。

然而,本文并没有说你永远不应该使用它,而是指出“你应该意识到这是一个别名,其含义会根据环境而改变”。

根据分发情况的不同,所登记的定义也各不相同。

我曾写道,最好避免在程序手册中将其用作通用语言,因为有些情况下,其定义截然不同。

●Ubuntu 20.04.5 LTS $ alias | grep ll alias ll='ls -alF'
●CentOS7.9(2009) $ alias | grep ll alias ll='ls -l --color=auto'

直到我为撰写本文进行研究时才知道,但
正如上文所述,在 Ubuntu 20.04.5 LTS 中,命令是“ls -alF”,其中“-a”表示隐藏文件,“-F”表示类型标识符。

因此,如果您只使用此发行版,并且已经习惯于使用“ll”而没有意识到它是一个别名,那么
在使用不同的服务器时可能会遇到问题,例如由于您在使用“ll”时没有使用“-a”和“-F”选项而无法看到隐藏文件。

实际上,“ll”本身并没有太大的影响,但它是一种比喻,表明“最好不要在程序手册中使用不确定的东西”。

附注:Windows PowerShell 中的别名

别名不仅存在于 Linux 中,也存在于 Windows PowerShell 中,默认情况下,它们配置为允许使用常见的 UNIX 命令。

UNIX 命令/PowerShell cmdlet:
cd → Set-Location
ls → Get-ChildItem

参考资料:https://learn.microsoft.com/ja-jp/powershell/scripting/learn/shell/using-aliases?

如上所示,当您输入 cd 时,相应的 PowerShell cmdlet“Set-Location”将被执行。

*请注意,在 PowerShell 中,命令被称为“cmdlet”而不是“命令”。

概括

就这样。

我并不是一个“真正的”警察,而是在反思自己时想到了这个话题,我想:“有些东西,当你经常使用它们时,你不会注意到它们”,以及“让我们想想我们
每天都在使用的东西”。

每个命令都有令人惊讶的实用选项和
意想不到的用途,因此大家仔细研究一下它们可能会很有趣,就从“ll”开始吧。

这篇文章有点长,感谢您读到这里!

参考资料

alias(1p) - Arch 手册页 (Archwiki)
https://man.archlinux.org/man/core/man-pages/alias.1p.en

使用别名(Microsoft:PowerShell 官方文档)
https://learn.microsoft.com/ja-jp/powershell/scripting/learn/shell/using-aliases?view=powershell-7.4

如果您觉得这篇文章对您有帮助,请点个“赞”!
24
加载中...
24票,平均分:1.00/124
53,127
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

里面

以中级员工的身份加入 Beyond 公司,
目前在系统解决方案部门工作。
我持有 LPIC-3 304 和 AWS SAA 认证。