每个 Linux 用户都应该知道的 31 条命令

2022-11-24 18:49


哪些是最基本的 Linux 的命令?

经常有读者问我这个问题,我一直试图避免回答这个问题。

为什么呢?我不知道 Linux 命令吗?不是的。这不是原因。而是因为很难对它们进行分类。对我来说必不可少的东西对你来说可能并不重要。

但我想这适用于所有的东西,我们网站上的每一个这样的推荐应用程序列表也都是这样。

这就是为什么我最终放弃了,并创建了这个基本但重要的 Linux 命令列表,它应该对作为 Linux 用户的你有所帮助。这更多的是针对 Ubuntu 这样的桌面用户,但如果你把 Ubuntu 作为服务器使用,它们也应该对你有所帮助。

Linux 的基本命令

我在这里列出的每个命令都有多个选项和多种用途。如果我尝试给出每个命令的最常见的例子,它将很容易变成一本超过一万字的口袋书。

我不会详述这些命令中的任何一个。我将列出每个命令的目的及其基本语法。你可以从这些命令的链接教程中阅读更多关于使用这些命令的信息。

在你开始阅读列表之前推荐阅读:

还有一件事。我在这里更多地使用了文件夹这个术语,而不是目录

在 Linux 中文件夹被称为目录,有些人可能不喜欢这样。然而,我相信对于初学者来说,这更容易掌握。

1、ls 命令:列出一个文件夹的内容

这是一个新的 Linux 用户最先学会的几个命令之一。这个命令可以让你看到当前文件夹里有哪些文件和文件夹。

ls

你可以使用长列表选项 ls -l 来查看细节,如文件大小、权限、修改时间等。如果你想,你可以对这些选项进行排序和控制。

ls -l

ls 命令

推荐阅读:

ls 命令示例

2、cd 命令:改变目录

默认情况下,你从你的主目录下开始。你经常需要改变目录并移动到另一个目录。

例如,你下载了一个 deb 文件或脚本。现在你想运行它。你可以通过提供完整的路径从你现在的工作目录运行它,但是切换到下载的位置会让事情更简单。

cd 命令代表“改变目录change directory”,你可以改变你的位置,移动到另一个目录。

cd 命令示例

在这一点上,我强烈建议阅读关于 Linux 中路径的概念,这样在 Linux 命令行中浏览目录时,事情就容易理解了。

推荐阅读:

cd 命令示例

3、cat 命令:读取一个文本文件

如果你想在 Linux 中快速查看一个文本文件的内容,cat 是你需要使用的命令。它在屏幕上显示内容。

cat filename

cat 命令示例

你也可以使用 cat 命令来创建新的文件或给现有文件添加更多的文本。

推荐阅读:

cat 命令的例子

4、less 命令:读取一个大的文本文件

cat 命令对于查看小的文本文件已经足够了。但是,如果你有一个有数百行的巨大文本文件,我不建议使用 cat。它将用所有的文本淹没你的屏幕,而你将很难处理它。

这就是 less 命令有用的地方。当你用 less 打开一个文件时,它会分页打开文件。你可以向上/向下滚动,寻找文本等等。

用 less 命令阅读大文件

一旦你读完了文件,你可以按 Q 键退出 less 视图。你会注意到,屏幕上什么都没有显示。你的屏幕是干净的。

推荐阅读:

less 命令示例

5、touch 命令:创建新文件

在 Linux 终端中,有多种创建新文件的方法。你在上面看到的 cat 命令也可以创建新文件。

然而,我更喜欢用 touch 命令来实现这一目的。

touch new_file_name

touch command ubuntu

如果你对现有的文件使用它,它们的时间戳会被修改。

推荐阅读:

touch 命令示例

6、mkdir 命令:创建新的文件夹

虽然没有创建新文件的特定命令,但有一个专门的命令用于创建新的文件夹(或目录,我们在 Linux 中称之为“目录”)。

mkdir new_dir

mkdir 命令示例

推荐阅读:

mkdir 命令示例

7、cp 命令:复制文件和文件夹

在命令行中复制文件和文件夹也是你会遇到的常见任务之一。cp 命令是“复制Copy”的简称,用于这一目的。

想象一下,你必须修改一个配置文件。一个聪明的做法是用另一个名字复制该文件。这样一来,你就有了一个文件的备份。

cp existing_file.txt existing_file.back

你也可以使用同样的 cp 命令来复制目录。为此,你必须指定递归选项 -r

cp -r dir another_location

cp 命令示例

推荐阅读:

cp 命令示例

8、mv 命令:剪贴或重命名文件和文件夹

mv 命令是 “移动Move” 的意思。当你把一个文件复制到另一个地方时,它仍然保留在原来的地方。

mv 命令将文件和文件夹移动到另一个位置。你可以把它看作是一个剪切-粘贴的操作。

mv file.txt /another/location

你也可以使用 mv 命令来重命名文件。

mv file.txt new_file.txt

同样的 mv 命令也可以移动或重命名文件夹,不需要任何特殊的选项。

mv 命令示例

推荐阅读:

mv 命令示例

9、rm 命令:删除文件和文件夹

要在 Linux 终端中删除文件,你可以使用 rm(“删除Remove”的缩写)命令。

rm filename

在命令行中删除文件后,没有撤销选项。这就是为什么你在删除文件时要非常小心。如果你害怕删除错误的文件,可以使用选项 -i 的交互式模式,它给你一个额外的提示来确认操作。

rm -i filename

使用递归选项 -r,你也可以使用相同的 rm 命令来删除文件夹。

rm 命令示例

推荐阅读:

rm 命令示例

10、nano 命令:编辑文件

迟早有一天,你会被要求对一个文件的内容进行修改。想象一下,你必须改变 SSH、Grub 或其他一些应用程序的配置文件。

有一些 基于命令行的 文本编辑器可以达到这个目的。Ubuntu 预装了 Nano 编辑器,它比 Vim、Emacs 等更容易使用。

如果你好奇它们有什么不同,请阅读我们的 Nano vs. Vim 对比 文章。

更容易使用并不意味着和基于 GUI 的文本编辑器一样舒适。你将不得不使用键盘快捷键来移动、修改、保存和退出文件。

要用 nano 打开一个新的、未命名的文件,请使用:

nano

要在 nano 中编辑一个现有的文件,请使用:

nano filename

在这两种情况下,你都应该看到一个类似这样的界面。

nano 命令示例

要保存(或放弃修改)并退出编辑器界面,请使用 Ctrl+x 键。

请参考我之前创建的 nano 初学者指南 来适应它。

11、clear 命令:清除终端屏幕

Nano 感觉很复杂,对吗?让我来分享一个简单的命令。

clear 命令可以清除终端。就是这样。

clear

你为什么需要这样做呢?嗯,如果你的终端屏幕充斥着随机的东西,而你想做一些新的事情。清理终端就像清理黑板或在你的笔记本上打开一个新页。

12、ps 命令:检查和管理进程

ps 命令是用来管理你系统上运行的进程的。每个进程都有一个相关的 ID,称为 PID,它可以用于各种目的,例如 终止一个进程

~$ ps
    pid tty time cmd
  15358 ?        00:00:00 bash
  15404 ? 00:00:00 ps

这里,

  • PID:进程 ID
  • TTY:与进程相关的控制终端(现在已经不那么重要了)
  • TIME:总的 CPU 使用时间
  • CMD:运行该进程的命令名称

但一个系统不可能只运行两到三个进程,不是吗?要查看所有用户运行的所有进程,请使用:

ps aux

这将给出一个庞大的进程列表和关于它们的更多细节。如果你运行这个命令,现在将是使用 clear 命令的绝佳时机。

进程列表

推荐阅读:

ps 命令示例

13、top 命令:系统监控

ps 命令给你提供了所有正在运行的进程,而 top 命令给你提供了进程和系统资源消耗的实时视图。

top

把它看作是 Linux 中任务管理器的终端版本。通过 top 命令,你会看到很多有趣的细节。

我主要使用 top 命令来检查哪个进程占用了太多的 CPU 或内存。如果你有兴趣做实验,还有 更好的 top 替代品

top 命令

要 停止运行的 top 命令,请使用 Ctrl+C 键盘快捷键。

推荐阅读:

有效使用 top 命令作为任务管理器

14、lsblk 命令: 列出磁盘和分区

lsblk 命令列出了你系统中所有的块设备。用非常简单(技术上不完全准确)的术语来说,它显示的是磁盘和分区。

~# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
loop0     7:0    0 79.9M  1 loop /snap/lxd/22923
loop1     7:1    0  103M  1 loop /snap/lxd/23541
loop2     7:2    0 63.2M  1 loop /snap/core20/1623
loop3     7:3    0   48M  1 loop /snap/snapd/17336
loop4     7:4    0   48M  1 loop /snap/snapd/17029
loop6     7:6    0 63.2M  1 loop /snap/core20/1634
vda     252:0    0   25G  0 disk 
├─vda1  252:1    0 24.9G  0 part /
├─vda14 252:14   0    4M  0 part 
└─vda15 252:15   0  106M  0 part /boot/efi
vdb     252:16   0  466K  1 disk 
~#

15、fdisk 命令:列出并管理磁盘和分区

另一个类似但更好的命令是 fdisk 命令。它可以让你操作磁盘的分区。这意味着你可以用这个命令创建新的分区,删除和调整现有分区的大小。

你还可以用它来列出系统中所有的块设备,包括 回环设备

sudo fdisk -l

如果你有许多分区、磁盘和回环设备(由 Snap 应用程序创建),输出结果可能是巨大的。我在这里展示的是输出的相关部分:

Disk /dev/vda: 25 GiB, 26843545600 bytes, 52428800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0B7C796D-51CD-4DD4-962A-7D94B31690E2

Device      Start      End  Sectors  Size Type
/dev/vda1  227328 52428766 52201439 24.9G Linux filesystem
/dev/vda14   2048    10239     8192    4M BIOS boot
/dev/vda15  10240   227327   217088  106M EFI System

16、find 命令:搜索文件

即使作为一个桌面用户,你也会遇到在 Linux 命令行中搜索文件的情况。

find 命令是一个用于此目的的广泛而通用的命令。它有 50 多个选项,而你可能永远不会需要所有的选项。

下面是一个 find 命令的例子,它将给你提供当前目录中所有以 .txt 扩展名结尾的文件。

find . -type f -name "*.txt"

其他常见的例子包括按大小、修改时间等查找文件。你可以 将 find 与 exec 或 xargs 结合起来,对 find 命令的结果采取行动。例如,你可以寻找所有的 .txt 文件并选择删除它们。

推荐阅读:

find 命令示例

17、grep 命令:在文件内容中搜索

find 命令根据文件的名称和类型来搜索文件。如果你想根据文件的内容进行搜索,你可以使用 grep命令。

因此,与其寻找所有以 .txt 结尾的文件,不如用 grep 寻找所有包含文本 foss 的文件。

grep -ri search_term

grep 命令示例

想学习更多吗?这里有一些更多的 grep 命令示例。方便的 grep 速查表 应该可以帮助你。

18、kill 命令:终止进程

暴力不是答案......它是解决方案。

开个玩笑!

如果你有一个行为不端的进程,占用了太多的系统资源,你可以 找到它,然后终止 它,使用 kill 命令 就行。

sudo kill -9 process_ID_or_Name

正如你在上面的命令中看到的,你需要知道进程 ID(PID)或进程名称来终止它。你可以使用 ps 或 top 命令来获得 PID或确切的进程名称。

ps aux | grep -i “name of your desired program”

你注意到 grep 命令的使用了吗?你已经在利用这个列表中提到的命令了。

find kill process

我不知道你怎么想的,但是当我寻找流氓进程来终止时,我觉得自己就像 《飓风营救》中的连姆·尼森

Taken meme find you kill you

19、history 命令:回头看看你过去运行了哪些命令

比如,你在几天前使用了一个特定的 Linux 命令。现在你需要再次运行它,但你不能正确地想起它。

你可以按上下方向键。

这对许多 Linux 用户来说是一个熟悉的场景:这就是 history 命令的作用。

在 Ubuntu 中,你的 Shell 会保存你所运行的命令的历史。在终端输入 history,你会看到你过去运行的命令的历史。

history 命令

你可以选择从历史记录中运行一个条目,使用其编号,像这样。

!number

但即使是历史记录也可能是巨大的,所以(再次)使用 grep 命令来过滤你的搜索词。

~$ history | grep aux
 1915  ps aux
 1952  ps aux | grep -i spotify
 1955  ps -aux | grep -i calculator
 1957  ps -aux | grep -i calculator
 1959  ps -aux | grep -i calculator
 1970  history | grep aux

还有一种方法可以进入命令历史并进行搜索。按 Ctrl+R,然后输入搜索词。

推荐阅读:

history 命令示例

20、chmod 命令:改变文件权限

我强烈建议在这个阶段阅读有关 Linux 文件权限。这将有助于你更好地理解,而不是盲目地运行 chmod 命令

chmod(“改变模式change mode”)命令是用来改变文件的权限的。

这个命令最常见的用途是当你想让一个文件可执行时。有一个Shell脚本?像这样让它可执行:

chmod u+x file-executable

还有更多的使用情况,使 chmod成为 Ubuntu 用户必须知道的命令。

有趣的事实chmod 777 命令为所有用户提供了所有的权限。这代表了我们的座右铭是 “让每个人都能获得知识”。

21、lshw 命令:获取硬件细节

在 Linux 中,有大量的命令行 工具可以用来获取硬件细节 和其他系统信息。

可能预装在 Ubuntu 上的是 lshw(“列出硬件list hardware”的缩写)。

现在,默认情况下,它显示了大量关于所有硬件组件的详细信息,相信我,这不是很容易理解。

lshw

你可能会感到在这里使用 grep 的诱惑,但没有必要这样做。lshw 的输出被分成几类,你可以用它来显示一类硬件的细节。

想知道你的网络适配器的制造商?使用这个:

lshw -C network

lshw 命令示例

22、sudo 命令:以 root 权限运行命令

你一定注意到,我在之前讨论的一些命令中使用了 sudo 作为前缀。

默认情况下,在 Ubuntu 中,sudo 的配置方式是,它允许你(默认的管理用户)以 root 权限运行任何命令。

你被要求输入一个密码,而且是你的用户账户密码。当你输入密码时,屏幕上没有任何显示。新用户对此感到困惑,但这是 UNIX/Linux 的预期行为。你输入密码并按回车键。

使用 sudo 的例子

推荐阅读:

Ubuntu 中的 root 用户

23、apt 命令: 安装、删除和管理 .deb 包

在 Ubuntu 中,apt 命令被用来管理软件包。你必须和 sudo 一起使用它,因为这些是管理任务。

要安装一个软件包,请使用:

sudo apt install package_name

要删除一个安装软件,请使用:

sudo apt remove package_name

要一次性用所有可升级的软件包更新你的 Ubuntu 系统:

sudo apt update && sudo apt upgrade

apt update 和 upgrade 的区别 是:update 会刷新软件包的缓存,而 upgrade 则是实际安装更新。

apt 命令还有很多内容。你可以阅读 这个详细的 apt 命令指南

24、add-apt-repository 命令:添加和删除 PPA

好吧,这个命令已经不像十年前那么流行了。你仍然会在这里和那里遇到 add-apt-repository 命令。它是用来管理你系统中的 PPA(非官方的、用户生成的软件库)。

在跟随网络上的教程时,你可能会遇到由三行组成的安装说明:

sudo add-apt-repository ppa:dr-akulavich/lighttable
sudo apt update
sudo apt install lighttable-installer

第一个命令是添加 PPA(外部资源库)。你已经熟悉了下面两条,它们用于更新软件包缓存和安装你刚刚添加的 PPA 仓库提供的软件。

要删除一个 PPA,你应该首先删除你从它那里安装的软件,然后像这样删除它:

sudo add-apt-repository -r ppa:dr-akulavich/lighttable

我有一篇 关于 PPA 的完整指南,可以了解关于这个主题的更多细节。

25、snap 命令:安装、删除和管理 Snap 包

到目前为止,你知道 apt 软件包和它们的管理。然而,Ubuntu 也使用并积极推荐使用其 Snap 打包格式。

学习一些基本的 snap 命令将帮助你有效地管理这些软件包。

要找到一个软件包,请使用:

snap find search_term

要安装一个软件包,请使用:

sudo snap install package_name

要列出已安装的 Snap 应用程序:

snap list

要删除一个已安装的 Snap 应用程序,请使用:

sudo snap remove package_name

26、ip 命令:检查 IP 地址和其他信息

ip 命令可以让你 检查你的 IP 地址。你还可以查看和操作路由、网络设备等。

ip a

ip 地址检查

27、ping 命令:检查远程系统是否可达

ping 是另一个你应该知道的 Linux 网络命令。要检查一个远程系统是否可用,把它的 IP 地址给 ping 命令:

ping ip_address

你也可以用它来检查一个网站是否关闭,尽管现在它不是很准确。

ping command ubuntu

使用 Ctrl+C 来停止运行的 ping 命令。

推荐阅读:

ping 命令示例

28、ssh 命令:连接到远程系统

我对把 ssh 添加到必须知道的 Linux 命令列表中持怀疑态度。许多桌面用户可能不需要它。SSH 被用于从你的终端连接到其他 Linux系统。

ssh user@address_of_remote_system

当然,你需要知道远程系统的用户和密码。

如果你有云服务器或家庭设置,其中有其他 Linux 系统,你可以用它从你的主系统连接到它们。

29、scp 命令:在远程系统之间复制文件

既然我在列表中包括了 ssh,那么包括一些 通过 SSH 连接在远程系统之间传输文件的命令 才是公平的。

scp 命令的工作原理与你之前看到的 cp 命令差不多。

下面是一个例子,它把文件从远程系统上的用户的主目录复制到你本地登录系统的当前目录。

scp user@remote_address:/home/username/filename .

推荐阅读:

scp 命令示例

30、exit 命令:关闭终端

Linux 的基本命令列表就要结束了。那么让我们来谈谈退出终端的问题。这很简单。只要输入

exit

如果你正在使用另一个用户或 Shell,你就会从那里注销。

你也可以使用 Ctrl+D 键来退出终端。

31、shutdown 命令:关闭或重启系统

好了。如果你还没有退出终端,让我分享一个最后的命令。

从命令行中 关闭你的系统 怎么样?

使用 shutdown 命令 来达到这个目的:

shutdown

上述命令 安排在一分钟内关机。你可以用以下方法让它立即关闭:

shutdown -now

你也可以使用同样的关机命令来 重启你的 Ubuntu 系统

shutdown -r now

更多:man 命令:详细了解命令

还有一个,这也是最后一个,我保证。所有的 Linux 系统都有一个命令的手册。它被称为手册页,你可以通过以下方式访问已安装命令的手册页:

man command_name

了解手册页 对于新用户来说,可能会让人不知所措,但它却很方便。它为你提供了一个命令的通用语法和所有选项的描述。

当你对使用一个命令没有把握时,可以先查看它的手册页,然后再在网上搜索它。

总是有更多……

这只是大约 30 个命令。而且这还不到 Linux 命令的20%。我还没有涉及很多网络命令。我甚至没有涉及用户管理命令。

我在写这篇文章时,考虑到了普通的 Ubuntu 桌面用户。这些是你更可能使用的命令。从长远来看,掌握一些这方面的知识会很有帮助。

除此以外,学习是没有止境的。即使是最老练的 Linux 用户也会不断发现和学习新东西。

考虑到你对学习 Linux 命令感兴趣,让我推荐一些 好的 Linux书籍 和资源。

  • Linux 如何工作:解释了 Linux 如何工作,而不是命令。
  • William Shotts 的《Linux 命令行》:可以合法地免费下载 PDF 格式的文件。
  • Daniel J Barrett 的《Linux口袋指南》:将 Linux 命令分为不同的类别,并通过小例子进行简单的解释。
  • 快速学习 Linux:完全专注于 Linux 命令,有适当的例子和练习。

除此之外,你还可以从 Linux Journey 和 Linux Handbook 等网站学习。

我知道你已经读了很久了,但这还不到冰山一角。总有更多的东西需要学习,但也不是说如果你不知道所有的 Linux 命令,你就必须感到痛苦。

没有人知道所有的东西。

现在,轮到你了。你觉得这份 Linux 命令列表有帮助吗?

如果你要在其中增加一些命令,会是什么?评论区是你的


via: https://itsfoss.com/essential-ubuntu-commands/

作者:Abhishek Prakash 选题:lkxed 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出