Linux 命令行界面简介:Linux CLI 指南
让我们来了解一下 Linux 命令行界面 (CLI)。
简介
Linux 命令行是您计算机的文本界面。
也称为 shell、终端、控制台、命令提示符等等,它是一个旨在解释命令的计算机程序。
允许用户通过在终端手动键入来执行命令,或者能够自动执行在“Shell 脚本”中编程的命令。
一点历史
Bourne Shell (sh) 最初由 Stephen Bourne 在贝尔实验室工作时开发。
于 1979 年在 Version 7 Unix 版本中发布,并分发给学院和大学。
Bourne Again Shell (bash) 被编写为 Bourne Shell 的免费开源替代品。
鉴于 Bash 的开放性,随着时间的推移,它已被大多数 Linux 系统采用为默认 shell。
初识命令行
现在我们已经介绍了一些基础知识,让我们打开一个终端窗口,看看它是什么样子!
当终端打开时,它会向您显示一个提示符。
让我们分析上面的截图
第 1 行:shell 提示符,它由 username@hostname:location$
组成
- 用户名:我们的用户名是“john”
- 主机名:我们登录的系统的名称
- 位置:我们所在的当前工作目录
- $: 分隔提示符的结尾
在 $
符号之后,我们可以键入一个命令并按 Enter 键来执行该命令。
第 2 行:在提示符之后,我们键入了命令 whoami
,它代表 “who am i(我是谁)”,并在键盘上按了 [Enter] 键。
第 3 行:显示了我们之前发出的 whoami
命令的结果,也称为命令输出。此命令只是打印出当前用户的用户名。
第 4 行:显示了另一个基本命令的示例,称为 pwd
,它代表 print working directory(打印工作目录)。
第 5 行:如前所述,此行显示了先前发出的命令的结果。/tmp
是我们的工作目录。
第 6 行:向我们显示一个新的提示符,并等待我们键入新的命令。
命令语法
命令可以单独运行,也可以接受参数来改变其行为。
典型的语法可能类似于这样
command [-argument] [--long-argument] file
示例
首先,我们输入了命令 ls
,它代表 list(列表)。默认情况下,此命令将打印当前目录的内容。
其次,我们通过键入一个空格和 -l
为 ls
添加了一个参数。此参数正在更改 ls
的输出格式,代表 “long listing format(长列表格式)”。
接下来,我们添加了另一个参数 -h
,它代表 “human(人类可读)”,此参数指示 ls
命令以人类可读的格式打印文件大小。
稍后,我们将两个参数 -l
和 -h
组合在 -lh
中,这给了我们相同的结果,并且我们给 “ls” 提供了一个文件名。结果只显示作为最后一个参数传递的文件。
作为最后一个示例,我们用其等效的长参数形式 --human-readable
替换了短参数 -h
。如您所见,命令的输出没有改变。
使用 Linux shell 时,有几件重要的事情要记住
- 它区分大小写
在 Linux shell 中,命令、文件和目录名称区分大小写,这意味着键入 pwd
将打印当前工作目录,而键入 PWD
将返回类似于 -bash: PWD: command not found
的错误
/
(正斜杠)是一个特殊字符,用作目录分隔符
Linux CLI 充满了特殊字符,我们将更详细地介绍这个主题。目前,请记住这一点。
- 文件扩展名无关紧要
如果您来自 Windows 背景,则带有 .exe 扩展名的文件意味着它是可执行文件。在 Linux CLI 中,文件类型是自动确定的。(通过读取文件头)。
- 几乎每个 Linux 命令都支持
--help
参数
在您使用 CLI 的旅程中,您经常会想知道“我需要什么参数才能执行 X?” 答案就在 --help
旁边。
基本命令
太棒了,您已经走到这一步了。您已经证明了您的动力!
在使用 CLI 时,即使是最专业的用户也会经常使用一些基本命令。
这些命令使我们能够执行基本操作,例如在文件夹结构中移动、收集信息、执行更改。
我们已经见过其中一些命令了,例如我们使用了 pwd
来打印工作目录,并使用了 ls
来列出目录的内容,但现在让我们扩展我们的命令列表!
pwd
正如我们之前看到的,pwd
将简单地打印出当前工作目录。
ls
我们之前已经使用过此命令,并且我们已经知道它的作用。它列出给定目录的内容。此命令的特殊之处在于它支持各种参数。
file
如果您阅读了前面的注释,我们说过 Linux 不依赖文件扩展名来了解它正在处理的文件类型。
此命令将显示作为参数传递的文件类型。
在下面的示例中,我们看到带有 “.exe” 扩展名的 john_file,file
命令输出实际的文件类型,在本例中是一个简单的文本文件。
cat
cat
命令将打印出作为参数给出的文本文件的内容。
cd
cd
命令,代表 Change Directory(更改目录),会将您的工作目录更改为作为参数传递的目录。
请注意提示符也发生了变化。
clear
使用终端一段时间后,您的屏幕会看起来混乱且令人困惑。
要清除屏幕并重新开始,请键入 clear
命令。
history
history
命令将显示终端会话中输入的命令的历史列表。
cp
cp
命令,代表 copy(复制),用于创建文件/目录的副本。
要创建 john_file
的副本并将我们的副本命名为 copy_of_john_file
,我们将使用 cp
命令。
cp
命令不会产生任何输出,但我们的操作已按预期执行。
mv
mv
命令,代表 move(移动),将文件/文件夹移动到新位置,或重命名它。
要将文件 copy_of_john_file
重命名为 john_file_renamed
,我们将使用 mv
。
要将文件 john_file_renamed
移动到 john_directory
中,我们仍然会使用 mv
。
注意:在终端中指定文件时,尾部的正斜杠 “/” 表示它是一个目录。
与 cp
类似,即使我们的操作已成功执行,mv
命令也不会产生任何输出。
rm
我们今天文章的最后一个但并非最不重要的命令是 rm
,它代表 remove(删除)。
它用于删除文件,但如果指示这样做,也可以删除目录。
现在让我们尝试删除所有文件和我们创建的文件夹。
如您所见,起初我们尝试一起删除所有内容。与之前的命令一样,rm
命令通常不会产生任何输出,除非生成错误。
我们的命令产生了一个错误,指出 john_directory
是一个目录,默认情况下不会被删除。两个文件(john_file
和 john_file_renamed
)被删除,因此操作部分执行,唯一的例外是屏幕上显示的错误。
通过向 rm
添加两个参数,我们也可以实现文件夹的删除。
这两个参数是 -r
(递归)和 -f
(强制)。第一个参数使操作在作为参数传递的目录中递归包含的每个文件和文件夹上工作,而后者强制操作忽略错误并禁用任何确认提示。