当前位置: 首页>>技术教程>>正文


Linux命令-LinuxConfig.org

, ,

介绍

谁应该阅读本指南

您是GNU /Linux的初学者,并且希望超越普通的窗口拖动和鼠标单击外观吗?本指南面向希望学习GNU /Linux命令行基础知识的绝对初学者。本教程旨在遍历与导航,文件和目录管理,软件安装和基本系统故障排除相关的基本Linux命令。

什么是GNU /Linux命令行

机会是,每当您听到有人谈论GNU /Linux操作系统时,您也会听他们谈论命令行或Linux命令。运行该命令并执行该命令!对?

但是,为什么呢?为什么GNU /Linux操作系统几乎总是与命令和命令行链接?简单的答案是,命令行是GNU /Linux操作系统的组成部分,因此,它为用户提供了更有效,更准确地执行任务的可能性,最重要的是,它还提供了有关整个执行过程的其他见解信息。

linux command line terminal许多GNU /Linux的初学者都将命令行与Linux命令关联在一起,这些命令带有烦躁不安,high-level向导的魔术技能和不必要的开销。

让我们对自己诚实吧!不管您对GNU /Linux系统及其命令行有什么厌恶的理由,原因很可能与缺乏了解和不愿学习有关。

因此,我们不要将缺点归咎于GNU /Linux系统!无论您是初学者还是高级用户,它都能为您提供帮助。该系统可以为您提供多大程度的帮助,并不取决于您钱包的深度,因为某些其他专有操作系统就是这种情况!您从GNU /Linux系统获得的帮助量完全取决于您的学习意愿和决心。

在此阶段,我确定您要问自己的问题是:使用GNU /Linux操作系统是否需要学习GNU /Linux命令行和无数命令?快速的答案是不!安装了GUI的任何体面的GNU /Linux操作系统都不需要用户使用命令行来执行基本甚至高级任务。

您可能考虑学习GNU /Linux命令行的唯一原因是为了提高效率,以充分利用系统的大部分资源,并且如果前面的任务要求您这样做。请记住,许多GNU /Linux用户已经使用了多年甚至不知道命令行是什么!不知道Linux命令行是否完美就可以了,如果系统执行了您需要的操作,则即使是最基本的命令也不需要学习。

无论您使用哪种GNU /Linux操作系统,无论它是否具有图形用户界面,命令行始终以某种形式出现。




Command line terminal window on Ubuntu Linux Operating system

命令行终端Ubuntu Linux操作系统上的窗口

因此,如果您了解命令行基础知识,则无论使用什么系统,都仍会感到宾至如归。命令行通过使用各种命令,可以在没有GUI的情况下管理系统并甚至在任何GNU /Linux系统上执行最复杂的任务,以及远距离远程似乎使您感觉自己坐在正确的位置电脑正面。

但是,要做到这一点,至少需要对GNU /Linux命令行有基本的了解,并了解它提供的某些命令的一些基本用法。不要害怕,因为这正是您阅读此Linux命令教程将学到的内容。

什么是Linux命令

Linux命令是用于管理整个系统的整个GNU /Linux操作系统的本质。您可能不知道,但是在图形用户界面中运行的大多数应用程序都在后台为您执行Linux命令以完成给定的任务。

让应用程序为我们自动运行Linux命令有许多明显的好处。但是,缺点是,在许多情况下,我们无法自定义命令执行以使其达到期望的结果。此外,如果出了什么问题,用户很可能会被蒙在鼓里,甚至没有任何关于如何开始解决问题的提示。

现在您可能在想:好的,那很好多少个命令在那儿,我应该全部学习吗?GNU /Linux系统上可用的Linux命令数量无关紧要,因为系统之间的数量总是不同的。但是,如果您坚持要求确切的数字,请在终端中执行以下命令:


$ for i in ${PATH//:/ }; do ls $i; done | sort | uniq | wc -l
commands available on a default Ubuntu Desktop Linux installation

确实有2024年我的Ubuntu桌面Linux安装上可用的命令。

系统上可用的命令数量将有所不同。最重要的是,平均而言,GNU /Linux操作系统可能包含数千个命令,这些命令最终还会回答我们的下一个问题,即用户是否需要学习所有这些命令。好吧,您可以尝试,但是此任务注定要失败。

因此,最好的方法是从基础开始。绝对必须学习Linux命令,以帮助您导航GNU /Linux文件系统并执行基本的管理任务。一旦完成此任务并对Linux命令行充满信心,只需使用GNU /Linux系统即可轻松完成其余工作。您需要的是开放的胸怀和决心。

好的,这个闲聊已经足够,让我们开始吧!



基本的File-system和Navigation Linux命令

命令行参数,选项和参数

如果人们希望完全理解GNU /Linux命令行,那么了解Linux命令行参数,选项和参数之间的差异可能是最关键的部分。因此,请不要跳过本主题,而要确保在继续进行下一部分之前,您对本主题有充分的了解。

解释Linux命令行参数,选项和参数之间差异的最佳工具是ls命令。如果您不知道ls命令,因为此命令将在后面的部分中详细介绍。打开终端并运行以下命令。不要输入$符号,因为此符号仅用于通知您这是要在命令行上执行的命令,并且应以常规的非特权用户身份执行:


$ ls

键入上述命令并按Enter键后,该命令将列出当前目录中的所有文件和目录。现在,请忽略该命令的输出,请注意,该命令由单个参数组成,即该命令ls本身。我们称这个论点为论点0。接下来,尝试以下命令:


$ ls -a

上面的命令包含两个参数。第一个参数称为参数0是个ls命令本身,第二个参数编号为1是个ls命令的选项-a

命令选项允许用户修改命令输出。每个Linux命令都有一组不同的选项。命令选项是hard-coded放入命令本身。顾名思义,命令选项是可选的,不需要用户使用。在这种情况下ls命令的选项-a指示命令还打印位于我们目录中的隐藏文件或目录。

仍在主目录中时,运行以下命令:


$ ls -l .bashrc

如果您遵循,您已经知道上面的命令包含三个参数。首先,有0命令本身的参数。第二个论点,更确切地说,是1是个ls命令的选项-l指示ls命令产生长列表输出,为用户提供有关一个或多个文件的更多信息。最后,第三个参数编号2是提供给ls命令告诉命令仅对名为的单个文件起作用.bashrc

小建议:

请注意,在上述情况下.bashrc归档前缀.是文件名的一部分,它表示文件已隐藏。隐藏意味着ls默认情况下,该命令不会将此文件作为其输出的一部分列出,除非-a使用选项。

参数是命令行自变量,可为命令本身或其一个或多个选项提供附加信息。根据要执行的命令,可以提供一个或多个选项或参数。考虑以下示例:


$ ls -l -h .bashrc .bash_history

在这种情况下,我们的命令包含五个参数。有ls命令,两个选项,分别是-l-h最后有两个文件名作为参数,.bashrc.bash_history文件。

在命令行上提供所有参数的顺序取决于您正在执行的Linux命令。但是,建议的通用规则是在命令后提供所有必需的选项,后跟所有必需的参数。例如,下面的命令也是有效的命令,其产生的输出与上面的命令相同,但是,应避免这种命令语法:


$ ls .bashrc -l .bash_history -h

最后,为了缩短您的命令,使其更具可读性,大多数命令允许用户将多个选项组合为一个参数。意味着可以组合选项-l-h成为一个参数-lh。例如:


$ ls -lh .bashrc .bash_history

以下视频总结了整个部分。到目前为止,您应该对命令行参数,选项和参数有一个清晰的了解。



文件系统导航

本节涵盖Linux命令行的另一个重要部分,即文件系统导航。这些年来,我已经看到许多用户很难理解GNU /Linux文件系统导航,因为它与通常的导航法有很大的不同。C:要么D:驱动器。在本节中,您还将学习前两个Linux命令,它们是cd命令和pwd命令。

让我们从以下语句开始:把…忘了吧C:要么D:从其他专有操作系统中获得的驱动器。这些知识不适用于此处,只会使您感到困惑。 GNU /Linux文件系统允许从整个文件系统内的任何目录访问任何硬盘驱动器或分区。但是,在现阶段,我们不应该为此担心。

也许描述GNU /Linux文件系统的最好比喻是我已经使用的那个类比。Bash脚本教程。想象一下GNU /Linux文件系统是多层建筑。所谓的根目录(建筑物的入口门)由/提供整个文件系统(建筑物)的条目,因此可以访问所有目录(级别/房间)和文件(人员)。

要导航到3层的1号房,我们首先需要进入大门/,然后进入3级level3/然后从那里进入room1。因此,绝对路径建筑物中这个特定房间的位置是/level3/room1。从这里开始,如果我们也想在3楼同时访问room2,我们首先需要输入以下内容来离开当前位置:room1../然后输入房间名称room2。我们拿了一个相对路径到room2,在这种情况下是../room2。我们已经在3楼了,所以无需离开整座建筑物,而是通过正门走上绝对的路/level3/room2。令人困惑?在使用GNU /Linux命令行进行了几次会话后,请不要担心,知识会渗入其中,并成为您的第二天性。

信不信由你,GNU /Linux操作系统为所有用户提供了一个指南针,以以下形式帮助文件系统导航:pwd(pintw欧金directory)命令。每当您迷路时,只需输入pwd命令,它将向您显示路径。现在就试试。打开终端并输入pwd跟回车:


$ pwd
pwd command print current path

pwd命令示例以打印当前工作目录路径。

默认情况下,您的起始工作目录始终是您的主目录。每个非系统用户的目录都位于/home目录。如上图所示,用户主目录的绝对路径linuxconfig/home/linuxconfig。如果您的系统包括用户”john”,则该用户主目录的绝对路径为/home/john

小建议:

只有拥有该目录的实际用户和对GNU /Linux而言是管理员的管理员才可以访问任何用户主目录。root用户。

在这一阶段,我们应该知道如何在命令行上输入命令,并且我们也知道如何获取文件系统中的当前位置。现在是时候开始四处走动了。为此,我们使用cd(Changdirectory)命令。的cd命令允许用户在用户具有适当访问权限的情况下导航到文件系统上可用的任何目录。

通过执行以下命令来尝试它,不要害怕尝试。不要忘记您的个人指南针,pwd命令,以立即告诉您您当前的位置。请确保更换以下linuxconfig具有您自己的用户名的用户:

$ cd /home
$ cd linuxconfig
$ cd /
$ cd home/linuxconfig
$ cd ../linuxconfig
$ cd ../../etc
$ cd /home/linuxconfig

除了5号线6号线上面的命令应该是self-explanatory。上5号线我们使用了快捷方式../上移到父目录linuxconfig目录。上6号线我们向上移动了两个目录,最终导航到etc目录。

行使:

执行cd命令,不带任何参数,可以从任何位置立即导航到用户主目录。执行cd -在您最近访问的两个位置之间切换。执行后您最终在哪个目录中cd ~cd . 命令?

Linux command line navigation using the cd command.

Linux命令行导航使用cd命令。
行使:

你能说出两者之间的区别吗绝对相对的路径?查看上面的图片,您可以计算出使用导航文件系统时,我们使用绝对路径还是相对路径的次数。cd命令?
提示:绝对路径始终以/字符。

遍历GNU /Linux文件系统并理解绝对路径和相对路径之间的差异对于任何初学者而言都不是容易的话题。继续前进之前,请确保您对cdLinux命令和目录之间的导航,因为在接下来的部分中,这一知识将为您提供很好的服务。




列出目录内容

在这一点上,您应该对使用cd命令,并且您还对GNU /Linux命令行有基本的了解,包括命令行参数,选项和参数。到目前为止,我们已经学会了如何导航到任何目录,但是还没有学会如何列出目录内容。列出目录内容是本节的主题。

用于列出任何目录内容的工具是ls命令。现在就试试。打开终端并输入ls自己的主目录中的命令,没有任何选项或参数:


$ ls
Color highlighted vs regular ls command output.

颜色突出显示与常规ls命令输出。

通过执行ls如果命令没有任何选项或参数,该命令将列出当前工作目录的内容。许多现代终端通过将目录着色为蓝色,将常规文件着色为白色以及将可执行文件着色为绿色来向用户提供其他信息。请注意,您不会在许多终端上找到这种奢侈,因此,我们需要学习如何使用手动区分各种目录内容项。ls命令。

小建议:

大多数命令带有手册页,可用于了解其功能以及每个特定命令接受的参数。使用man命令以显示任何所需命令的手册页。例如,显示ls命令执行man ls。要退出手册页,请按q键。

正如我们在上一节中已经了解的那样,可以通过使用预编程的选项来修改命令的输出。在这种情况下-l选项也称为长列表,将更多信息添加到默认值ls输出:


$ ls -l
ALTTEXT

ls命令长列表选项-l提供有关每个目录项的其他信息。突出显示的是每个目录项的文件类型信息,其中d表示目录类型,-表示常规文件。

通过使用-l选项,ls该命令为用户提供了额外的信息,例如权限,用户或组的所有权,文件大小和修改时间。

另一个共同点ls命令选项是-a其中列出所有以及目录中的隐藏文件或目录。名称以开头的任何文件或目录.隐藏,因此不包含在默认值中ls命令输出。


$ ls -a

许多ls命令的选项仅与其他选项结合使用才有意义。例如,要显示任何选定文件的文件大小,用户可以提供ls与命令-l选项,并以实际的文件名作为参数。考虑以下ls命令示例以显示image.jpg文件:


$ ls -l image.jpg
Display the file size using the ls Linux command.

使用lsLinux命令。

默认情况下,ls命令显示文件大小(以字节为单位),除非-h(可读)选项。请注意-h除非与-l选项。

此时,请务必注意,通过使用参数,用户可以列出任何目录或查找有关整个文件系统上任何文件的信息,而无需离开其主目录。为此,只需供应绝对要么相对的您希望列出更多信息的文件或目录的路径参数ls命令。尝试以下ls命令示例:


$ ls /etc/systemd
$ ls -l ../
$ ls -lh /etc/services
Example of an absolute or relative path parameter with the ls command.

绝对或相对路径参数与ls命令。
行使:

使用ls命令的手册页,看看是否可以找到一种方法来显示/etc目录根据文件大小降序排列。



创建目录

目录的目的是保持文件系统,从而使我们的文件和系统文件井井有条。在本节中,您将学习如何使用mkdirGNU /Linux命令行上的命令。

在GNU /Linux系统上创建目录就像执行以下命令一样简单mkdir命令,同时直接指定所需的名称作为参数。现在就试试。打开终端并创建一个新目录,例如dir1在您的主目录中。


$ mkdir dir1
小建议:

避免在文件和目录中使用空格作为名称的一部分。在Linux中,可以通过用引号将名称或名称引起来来创建目录或文件名,并在其中留有空格。mkdir "my files",但是稍后可能会造成问题,因此请不惜一切代价避免!如果需要在文件或目录名称中使用空格,请使用下划线_代替。

接下来,使用ls命令以列出当前工作目录的内容,如果目录创建正确,则应该在命令输出中看到它。

与在当前工作目录中创建目录相同,您也可以在文件系统上的任何位置创建目录,前提是您拥有适当的权限。现在创建一个名为example/tmp目录。

现在有两种方法可以完成此任务。首先,我们可以导航到/tmp使用cd命令并在目录中执行一次mkdir命令,后跟新的目录名称。

另一种解决方案是通过仅在新目录名称前加上目录的正确绝对或相对路径作为前缀来创建目录example目录将被创建。因此,无需使用cd命令移至/tmp/之前的目录mkdir命令执行:


$ mkdir /tmp/example

关于mkdir命令。只要您理解了前面解释的绝对路径和相对路径之间的区别,就可以了。只有一种其他常用选项与mkdir命令,那就是-p选项。

假设您希望创建一个新目录dir2在现有目录中dir1以及创建新的dir3dir2。第一个解决方案是首先创建dir2然后执行第二个mkdir创建命令dir3dir2目录。但是,使用-p选项,这可以通过一个mkdir命令执行:


$ mkdir -p dir1/dir2/dir3
Creating directories using mkdir command on the GNU/Linux command line.

使用创建目录mkdirGNU /Linux命令行上的命令。
行使:

使用您的用户帐户,尝试创建一个名为my_dir/etc目录。它行得通吗?如果没有,为什么?



创建文件并读取文件内容

GNU /Linux系统以纯ASCII文本文件的形式存储有关设置,配置以及诸如日志之类的数据的大多数信息。因此,对于任何用户而言,至少必须对文本文件操作有基本的了解。

在本节中,您将学习如何创建文件,读取文件内容以及如何使用基于命令行的简单文本文件编辑器来编辑文本文件。

首先创建一个名为file1在我们的主目录中。为此,我们使用touch命令。打开您的终端并输入以下Linux命令:


$ touch file1

就这些!您现在已经成功创建了一个名为file1在您的主目录中。执行ls立即命令,您应该会看到这个新文件位于您的主目录中。

Create file by using the GNU/Linux command touch

使用GNU /Linux命令创建文件touch

也许,您可能已经注意到我们创建的文件没有扩展名,例如.txt要么.exe。请注意,GNU /Linux系统上的文件扩展名除了在执行ls命令列出所有文件和目录,很明显带有扩展名的文件.txt可能是ASCII文本文件,并且带有.png可能是图像文件。

在这一点上,必须指出,有许多方法可以在GNU /Linux操作系统上创建文件。实际上,几乎不需要像我们之前那样创建一个空文件。实际上,touch命令的主要目的不是创建文件,而是使用文件时间戳进行操作,这是另一个故事了。

由于文件的主要目的是存储数据,因此我们将这样做。让我们使用一个名为nano创建一个名为todo-list.txt包含一些任意文本。首先执行以下命令:


$ nano todo-list.txt

一旦执行nano命令,nano编辑器打开,让您编辑新内容todo-list.txt文件。在nano编辑器根据需要对文件内容进行任何修改。

准备好后,按CTRL+o其次是ENTER键来保存文件。此时,新todo-list.txt文件已创建。要退出nano编辑按CTRL+x组合键,如下图所示:

Open the nano editor. Enter the desired file name as parameter.

打开nano编辑。输入所需的文件名作为参数。
Edit the file content by entering the desired text. Once ready press the CTRL+o key combination to save the current file content.

通过输入所需的文本来编辑文件内容。准备好后,按CTRL+o组合键以保存当前文件内容。
Confirm the filename and press the ENTER key.

确认文件名,然后按ENTER键。



Continue editing and repeat the previous step or exit the nano editor by pressing the CTRL+x key combination.

继续编辑并重复前两个步骤,或退出nano编辑器,方法是按CTRL+x组合键。
The new file named todo-list.txt is now created and should be visible upon the ls command execution.

新文件名为todo-list.txt现在已创建,并且应该在ls命令执行。

您可以通过指定文件名作为参数来继续编辑任何现有文本文件。nano文本编辑器命令。

到目前为止,我们学习了如何创建文件以及如何使用命令行文本编辑器编辑现有或新的文本文件。我们还没有介绍的是如何读取文本文件的内容。好吧,说实话,没有什么可做的!您可以使用以下命令读取任何文件的内容catGNU /Linux命令。

现在就试试。执行cat命令并作为参数提供您要检查的文件的名称。例如:


$ cat todo-list.txt
Use the cat command to display a content of any text file. Simply supply the name of the file as a parameter.

使用cat命令以显示任何文本文件的内容。只需提供文件名作为cat命令参数。
行使:

有些文件可能跨越数千行。尝试查找内容/etc/services通过使用cat命令。某些终端的行数有限且没有滚动条。因此,仅通过使用cat命令。试验诸如less要么more阅读内容/etc/services文件。

在我们将此部分标记为“完成并删除”之前,您还应该熟悉一个命令。该命令称为file

请记住,以前我们曾讨论过,将文件名后缀带有扩展名不是必需的。好吧,如果是这样的话,我们将如何知道在此主目录或GNU /Linux文件系统上任何位置存储的文件类型?这是file命令变得很方便。的file命令输出提供给它的任何文件的文件类型作为参数。现在就试试:


$ file todo-list.txt
Obtain the file type information by using the file GNU/Linux command.

通过使用获取文件类型信息fileGNU /Linux命令。



重命名或移动文件和目录

另一个合理的步骤是学习如何重命名或移动文件和目录。至此,我们已经讨论了如何创建文件或目录,但是如何将现有目录或文件移动到另一个位置呢?好吧,您应该高兴地知道,在GNU /Linux系统下移动和重命名文件或目录在本质上是相同的。

重命名和移动GNU /Linux文件系统上的文件是一项简单的任务。所需要做的就是mv命令以及对绝对路径和相对路径的理解,如上文所述文件系统导航部分。

考虑以下示例:


$ touch file1
$ mkdir dir1

使用上面touchmkdir命令我们创建了一个名为file1和目录dir1。的用法touchmkdir命令之前已经介绍过,因此不需要进行解释。

前面的任务是重命名file1file2dir1dir2通过使用mv命令。为此,我们需要提供mv带有我们希望重命名的文件或目录的绝对或相对路径的命令作为第一个参数。第二个必需参数是文件或目录的绝对或相对路径,我们希望将文件或目录重命名为:


$ mv file1 file2
$ mv dir1 dir2

这里要了解的重点是GNU /Linux没有明确的命令来重命名文件。相反,mv(移动的缩写)命令用于在过程中更改文件或目录名称的同时将文件或目录从一个位置移动到另一位置。考虑以下示例:


$ mv file2 /tmp/file3
$ mv dir2 /tmp/dir2

第一条命令已移动file2进入目录/tmp/并将其重命名为file3。第二条命令已移动dir2进入/tmp/并且由于我们提供了相同的目标目录名,因此目录名保持不变。

因此,第二个命令实际上只是移动源dir2进入目标目录/tmp/因此,不需要用于说明新目录名称的第二个参数,可以将其简单地执行为:


$ mv dir2 /tmp/

了解以上内容至关重要mv命令,因为mv该命令还可以接受多个参数。这意味着可以通过执行单个目录来同时移动多个目录和/或文件mv命令:


$ mkdir dir4 dir5
$ touch file4 file5
$ mv file4 dir4 file5 dir5 /tmp
小建议:

唯一遵循多个的规则mv命令参数是:如果有多个源参数提供给mv命令最后提供的参数必须是目录。

以上mv命令已将多个文件和目录移动到新位置:/tmp目录。请务必在此处指出,无论您要提供给多少源文件或目录,mv命令作为参数最后提供的参数被视为目标。

在我们转向另一个主题之前,重要的是要提到一个可能会破坏事实的事实。mv命令。

警告
如果将目标文件参数提供给mv该命令已经存在,可能会在不发出警告的情况下被覆盖,因此此操作有可能不可逆地删除您的数据而无法恢复。考虑以下mv命令示例:


$ cat /tmp/sample.txt 
linuxconfig.org
$ touch sample.txt
$ mv sample.txt /tmp/sample.txt 
$ cat /tmp/sample.txt
$

如果不确定,请使用-i指示的选项mv命令以在目标文件已存在的情况下产生警报。例:


$ mv -i sample.txt /tmp/sample.txt 
mv: overwrite '/tmp/sample.txt'?

下图展示了mv如本节中所述执行命令:

Working example on how to move and rename files or directories under GNU/Linux by using the linux mv command.

有关如何使用GNU /Linux在GNU /Linux下移动和重命名文件或目录的工作示例mv命令。


复制文件和目录

在上一节中,我们讨论了如何通过使用文件和目录将文件和目录从一个位置移动到另一个位置。mvGNU /Linux命令。本节涵盖了有关如何通过使用cp命令。

从上一节中收集的大多数知识将有助于我们学习cpGNU /Linux命令作为两者的语法mvcp命令非常相似。主要区别在于,无需移动文件或目录,cp命令创建源文件或目录的精确副本。

就像是mv命令cp该命令至少需要提供两个参数。第一个参数是源文件或目录,第二个参数是目标文件或目录。

让我们从创建位于我们的主目录中的文件副本的简单示例开始。首先,我们使用touch命令创建一个新文件,名为file1,然后我们将其精确复制为file2


$ touch file1
$ cp file1 file2

此处显而易见的规则是,提供给cp命令不能相同:


$ cp file1 file1
cp: 'file1' and 'file1' are the same file

为源和目标参数提供完全相同的文件名的唯一方法是使用绝对路径或相对路径将文件复制到其他目录。下列cp命令示例复制了file1到目录/tmp


$ cp file1 /tmp/file1

但是,如果您无意更改文件名,则完全不需要提供文件名作为目标参数。因此,以上命令可以缩写为:


$ cp file1 /tmp/
行使:

通过执行单cp命令制作一份副本/etc/services文件到您的主目录并将其重命名为port-numbers.txt

您可以使用相同的cp命令语法还可以复制目录。但是,有一个显著的区别,那就是要复制目录,我们需要使用-r(递归)cp命令选项。考虑以下示例:


$ mkdir dir1
$ cp dir1 /tmp/
cp: -r not specified; omitting directory 'dir1'
$ cp -r dir1 /tmp

在GNU /Linux中也是如此mv命令,cp该命令还接受多个参数。这意味着可以通过执行单个文件来同时复制多个文件和目录cp命令。

规则是最后一个参数必须是目录。检查以下示例,我们首先在其中创建另一个示例目录和文件。接下来,我们将此目录以及其他两个文件复制到/tmp/目录:


$ mkdir dir2
$ touch file1 file2
$ cp -r dir2/ file1 file2 /tmp/
警告
如果将目标文件参数提供给cp该命令已经存在,可能会在不发出警告的情况下被覆盖,因此此操作有可能不可逆地删除您的数据而无法恢复。在某些情况下,此行为也对目录有效!考虑以下cp命令示例:


$ cat sample.txt 
linuxconfig.org
$ touch /tmp/sample.txt
$ cp /tmp/sample.txt sample.txt 
$ cat sample.txt 
$

如果不确定,请使用-i指示的选项cp命令以在目标文件已存在的情况下产生警报。例:


$ cp -i /tmp/sample.txt sample.txt 
cp: overwrite 'sample.txt'?

下图展示了cp如本节中所述执行命令:

GNU/Linux cp command examples to copy directories and file on GNU/Linux file-system using command line terminal.

cp使用GNU /Linux命令行终端在GNU /Linux file-system上复制目录和文件的GNU /Linux命令示例。



删除文件和目录

在此阶段,您应该对Linux命令行基础非常有信心。您可能还已经注意到使用命令的一种模式。您应该知道如何创建,移动和重命名任何文件或目录。但是,在不知道如何删除文件或目录的情况下,文件系统将填满,因此将失去存储更多数据的能力。

本节将介绍两个命令。第一个命令是rmdir第二个命令是rm。当看两个的名字rmdirrm命令,您可能会很快得出以下结论:rmdir用于删除目录,后一个命令rm用于删除文件,大多数情况下您是对的。让我们先来看一下rmdir首先命令。

对于我们的实验,我们将使用以下目录结构,其中包含多个sub-directories和文件。我们的目标是学习如何使用rmdirrm删除所有文件和目录的命令:

Practice directory structure to learn how to remove files and directories using rmdir and rm commands

练习目录结构,以了解如何使用以下命令删除文件和目录rmdirrm命令。

正如您已经学习的任何GNU /Linux命令一样,rmdir该命令还接受多个参数。例如,删除dir4我们需要做的就是提供rmdir命令目录,其中包含我们希望删除的目录名称作为参数:


$ rmdir my_files/dir4/

简单吧?现在让我们删除下一个目录dir1


$ rmdir my_files/dir1
rmdir: failed to remove 'my_files/dir1': Directory not empty

如您所见,上面rmdir命令无法删除dir1目录。的主要工作rmdir是删除目录,并且由于目录dir1包含文件,rmdir命令省略了该目录,并显示一条错误消息,提示该目录不为空。

逻辑是合理的!删除非空目录的唯一方法是使用rmdir相当长的命令行选项--ignore-fail-on-non-empty。但是,在这一点上,使用rm命令。的rm该命令具有正确的选项组合,能够删除任何数量的文件和目录,无论目录是空的还是由任意数量的文件和sub-directories填充。

首先,让我们测试rm删除名为my_file.txt


$ rm my_files/my_file.txt

用以下方式删除目录rm我们需要使用-r选项组合。选项-r代表递归,表示该命令将删除任何目录及其内容。以下命令将删除整个my_files/dir1目录,包括任何文件或sub-directory:

警告
使用删除文件rm命令是不可逆的动作。这意味着,根据所使用的文件系统和系统使用情况,您的数据无法恢复。确保使用时测量两次并切一次rmLinux命令。

$ rm -r my_files/dir1/

使用rm命令很简单。与许多其他Linux命令一样,它接受多个参数,因此可以轻松删除单个或任意数量的文件和目录。

rm and rmdir linux commands exercise

使用GNU /Linux命令删除文件和目录rmrmdir
行使:

执行单rm命令删除整个my_file目录位于您的主目录中。



搜索文件或目录

此时,您应该对file-system导航和文件/目录管理非常满意。在转到下一部分专门讨论基本GNU /Linux系统管理命令的部分之前,我们应该讨论如何在需要时查找文件。 Linux有两个主要命令,它们使用户可以搜索文件。即是locate命令和find命令。

find命令是一个功能强大的工具,因此使用起来可能有些困难,尤其是对于初学者而言。因此,我们涵盖了locate命令,因为它更容易使用。

的基本用法locateLinux命令非常简单。类型locate后跟文件或目录名称作为参数。例如,让我们搜索一个名为issue


$ locate issue

上面的命令在整个file-system中产生包含字符串的文件或目录的列表issue文件或目录名称中的任何位置。根据您要搜索的内容,此列表可能会增长到可观的规模。

因此,搜索精确的文件名匹配可能会产生输出,我们更倾向于寻找容纳的输出。为此,我们需要使用常用表达locate的命令行选项-r

正则表达式远远超出了本教程的范围。现在,我们只需要知道,要搜索确切的文件名或目录名,我们需要将字符串用/$。例如:


$ locate -r /issue$
Using the GNU/Linux command locate to search for files and directories

使用GNU /Linux命令查找要搜索的文件和目录

在您提升自己的地位之前locateLinux命令大师,让我们简要讨论一下如何locate命令运行。的locate该命令的搜索速度非常快,因为它仅查询每天使用一次更新的现有预构建数据库索引文件。updatedb命令。

缺点是locate该命令将不会拾取自上次创建以来创建的任何文件或目录updatedb命令已执行。但是,要包括任何新文件,用户可以选择运行updatedb手动命令如下图所示:


$ sudo updatedb
updatedb command usage example.

updatedb命令用法示例。
行使:

尝试玩locateLinux命令,看看是否可以找到一种方法来指示该命令仅在特定目录中搜​​索文件。



基本管理Linux命令

使用管理特权执行命令

您将运行的大多数Linux命令将在没有管理特权的情况下执行。实际上,仅在前面的任务需要执行命令的情况下才建议使用具有管理特权的命令执行命令。遵循这个简单的规则将有助于整体系统的完整性,并使用户在与Linux命令行交互时避免代价高昂和不必要的错误。

但是,很难想象完全避免以管理特权执行Linux命令。新软件安装,核心系统服务配置等需要管理特权。这是sudoLinux命令变得很方便。给任何Linux命令加上前缀sudo将确保以管理员身份(即root权限)执行命令。自己尝试:


$ sudo whoami
$ whoami
how to use sudo command on GNU/Linux system

whoami命令总是返回执行它的用户的用户名。在这种情况下,我们可以看到以whoamiLinux命令sudo命令确保whoami以root用户身份执行的命令。

默认情况下,5分钟sudo用户使用反复输入特权命令sudo第一次成功认证后不带密码的命令。

小建议:

每当您阅读任何与Linux相关的文档,要求您从终端运行Linux命令时,您都会看到所有带有前缀的命令$要么#。的$符号要求将任何给定的Linux命令作为常规非特权用户执行。另一方面,#指示给定的Linux命令将以root /管理特权直接执行,或者以root用户身份或通过使用sudo命令。

软件安装

您的GNU /Linux系统的默认安装可以是(通常)是自定义的,以包括其他满足您需要的软件。如果各种GNU /Linux发行版之间存在差异,则这是安装软件的方式。该软件以可从相关分发软件包存储库中获得的软件包的形式提供。

关于软件包管理,GNU /Linux发行版有两个主要分支。

即它们是DEB转速。第一个分支正在使用apt第二个分支正在使用yum命令以安装软件。当然,还有许多其他辅助命令可帮助安装或维护软件,但下面将说明基本知识。

首先,我们开始搜索要安装的软件的软件包名称。假设我们需要安装某种洪流客户端,以便能够下载洪流文件。首先,我们搜索一个包名称:


DEB GNU/LINUX SYSTEMS:
$ apt search torrent client
RPM GNU/LINUX SYSTEMS:
$ yum search torrent client

上面的命令将生成软件包名称及其相关描述的列表。阅读说明列,然后从左侧列中选择要安装的软件包。选择了要安装的软件包后,请再次执行相关的软件包管理命令以安装该软件包。

假设我们要安装的软件包称为bittorrent。要开始安装,必须按照上一节中所述的管理特权执行我们的命令。出现提示时,键入y执行安装:


DEB GNU/LINUX SYSTEMS:
$ sudo apt install bittorrent
RPM GNU/LINUX SYSTEMS:
$ sudo yum install bittorrent
using apt to install package on ubuntu linux

使用apt命令行软件包管理工具,用于在Ubuntu Linux系统上安装软件。
小建议:

执行apt search命令可能会产生一长串的软件包,这些软件包可能不适合您的终端屏幕。为了克服这种不便,请使用命令more然后使用空格键向下滚动列表。例:


$ apt search YOUR SEARCH KEYWORDS | more

放弃然后返回命令行q键。



检查磁盘空间使用情况

在本节中,您将学习如何检查目录和文件大小,以及如何获取有关当前磁盘空间使用情况的信息。我们将在本节中介绍的第一个Linux命令是df命令。命令名称df是单词的缩写dFree。

通过执行df如果命令没有任何参数,则该命令返回有关所有可访问分区的已用磁盘空间和可用磁盘空间的信息(以千字节为单位)。默认值df命令输出以千字节为单位打印磁盘使用情况信息。但是,可以通过使用-h选项:


$ df -h 

要检查任何所需目录的可用磁盘空间,只需将该目录的完整路径作为参数添加到df命令。例:


$ df -h /home
Check for free disk space within a /home directory.

使用以下命令检查可用磁盘空间df内的命令/home目录。

注意:使用以下命令检查目录的可用空间df该命令不会显示有关其大小的任何信息。的df命令仅输出有关目录所在分区磁盘空间使用情况的信息。要检查目录大小,请使用duLinux命令如下所述。

既然我们已经了解了如何检查可用磁盘空间,那么了解如何检索有关文件和目录大小的信息也很重要。

要获取有关human-readable格式文件大小的信息,我们可以使用上面介绍的内容ls结合命令-l(long-listing)和-h(human-readable)选项以及相关文件的完整或相对路径。例如下面ls命令将返回称为的文件的大小swapfile位于根目录中/


$ ls -lh /swapfile

与检查文件大小相同,我们可以使用du命令以检查目录大小。默认情况下du当提供目录参数时,命令将显示以下目录中所有目录的大小:


$ du -h /home/

要获取单个目录的总大小摘要,请使用-s选项。再次,如本节中所有上述示例一样,我们对human-readable输出感兴趣,因此可以使用-h选项:


$ du -sh /home/
Example of using the <code><noscript><img src=du Linux命令检查大小/home目录。”&gt;

使用示例duLinux命令检查大小/home目录。
行使:

跑过man ls命令以获得所有可能的快速概览ls命令选项。您能找到一种方法来使用ls命令列出所有文件的目录,按目录的磁盘大小降序排列?




文件和目录压缩

在本节中,我们将讨论如何在GNU /Linux系统上压缩和解压缩文件的几种方法。您将学习的第一个工具是targzip命令。的tar该命令通常用于将整个目录合并为一个文件,并在必要时在进程中选择压缩。

下列tar命令示例将合并整个目录my_dir放入一个称为my_dir.tar


$ tar cf my_dir.tar my_dir

要进一步压缩生成的文件,我们可以使用gzip命令生成一个压缩文件,称为my_dir.tar.gz


$ gzip my_dir.tar

但是,在大多数情况下,无论如何我们都需要压缩目录,因此可以结合使用targzip作为上述命令的替代工具:


$ tar cxf my_dir.tar my_dir

组合产生的文件targzip命令被称为gzip压缩包或简单地压缩包

要解压缩任何压缩包,我们可以简单地还原该过程,但是gzip我们将使用gunzip命令。例如,解压缩gzip tarballmy_dir.tar.gz我们可以使用gunzip命令:


$ gunzip my_dir.tar.gz

上面的命令将产生我们的原始文件my_dir.tar包含my_dir目录。使用tar命令,我们可以进一步解压缩此tarball来检索原始文件my_dir目录:


$ tar xf my_dir.tar
 using tar, gzip and gunzip Linux commands

使用压缩和解压缩文件和目录的示例targzipgunzipLinux命令。

关闭并重新启动

关于关闭和重新启动GNU /Linux操作系统,您只需要学习一个命令,即重新启动和关闭。该命令直观地称为shutdown

是的,确实可以使用以下方法重新启动系统:init 6要么reboot命令,但要学习shutdown命令为您提供更多功能和选项。下面有一些示例shutdown命令。

首先shutdown命令示例将在一分钟内重新引导系统:


$ sudo shutdown -r

要重新启动您的GNU /Linux系统,请立即执行:


$ sudo shutdown -r now

使用以下命令关闭系统shutdown命令遵循与上述重新启动命令相同的原理。以下两个示例显示如何在一分钟内立即关闭系统并延迟1.5小时(90分钟):


$ sudo shutdown
$ sudo shutdown now
$ sudo shutdown +90

如果您执行了延迟的系统关闭,则可以通过以下方式取消关闭过程:


$ sudo shutdown -c


高级Linux命令

排除Internet /网络连接故障

本节将向您介绍一些基本的网络技能。特别是,您将学习如何获取建立正确的Internet连接所需的服务的IP地址,以及如何对网络连接和Internet连接进行故障排除。

让我们开始使用以下网址获取本地IP地址:ip命令。的ip该命令具有许多选项,其中包括address要么a短选项,以显示分配给所有可用和已启用网络接口的IP地址:


$ ip a

上面的命令显示了系统当前使用的IP地址。请注意,您的网络接口名称可能不同。在下一个示例中,我们获取您的网关的IP地址。我们再次使用ip命令,但这一次与r(路线)选项:


$ ip r

下一个难题是DNS(域名服务器)IP地址。要检查您的系统使用哪个DNS服务器将主机名解析为IP地址,只需检查以下内容:/etc/resolv.conf文件使用cat如前所述的命令:


$ cat /etc/resolv.conf
Linux commands to obtain the basic network configuration information.

Linux命令获取基本的网络配置信息。

现在,一旦我们获得了最基本的网络配置信息,便可以使用它来解决许多网络连接问题,例如Internet连接。最好的工具是ping命令。

使用ping命令,我们可以测试与任何IP地址或主机的连接。的ping命令会将封包发送到任何所需的主机或IP地址,并将结果告知我们。默认情况下,ping命令将向您选择的IP地址或主机发送无尽的ping命令。中断连续ping按下CTRL+C组合键。或者,使用-c选项和数字的组合,表示您要发送的数据包计数。例如:


$ ping linuxconfig.org 
PING linuxconfig.org (104.24.11.18) 56(84) bytes of data.
64 bytes from 104.24.11.18 (104.24.11.18): icmp_seq=1 ttl=57 time=9.83 ms
64 bytes from 104.24.11.18 (104.24.11.18): icmp_seq=2 ttl=57 time=10.0 ms
64 bytes from 104.24.11.18 (104.24.11.18): icmp_seq=3 ttl=57 time=9.95 ms

--- linuxconfig.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 9.833/9.933/10.008/0.073 ms

$ ping -c 2 8.8.4.4 
PING 8.8.4.4 (8.8.4.4) 56(84) bytes of data.
64 bytes from 8.8.4.4: icmp_seq=1 ttl=121 time=10.3 ms
64 bytes from 8.8.4.4: icmp_seq=2 ttl=121 time=10.4 ms

--- 8.8.4.4 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 10.340/10.412/10.485/0.125 ms

如果遇到任何Internet连接问题,可以通过从本地IP地址或任何公共主机开始ping以上所有IP地址来排除网络连接故障。使用此策略将帮助您缩小可能导致网络连接问题的问题,如下图所示。

Troubleshooting the Internet connection using the <code><noscript><img src=ping Linux命令”&gt;

使用以下工具对Internet连接进行故障排除pingLinux命令。


更改权限和所有权

GNU /Linux文件系统中的每个文件或目录都可以由不同的用户以及不同的用户组拥有。此外,可以将每个文件或目录设置为符合一个或多个权限,例如读取,写入和执行。有关文件或目录的权限或所有权的主题可以涵盖一本小书。由于我们对基础知识感兴趣,因此这里有一些技巧可以帮助您入门。

首先,获取有关文件或目录权限的实际信息。为此,执行已经学习的ls用命令-l选项,并以文件或目录名称作为参数。例如:


$ ls -l dir/

下图显示了有关输出的详细信息。请花一些时间来消化信息,然后再继续:

ls command - long listing

详细的文件或目录信息由ls命令及其-l长列表选项。

如上图所示,共有三种权限类型:执行。下表列出了所有权限类型及其符号和八进制表示形式:

权限类型 八进制表示 符号表示
4 [R
2 w
执行 1个 X

更改GNU /Linux文件系统上的文件或目录权限的工具是chmod。有两种方法可以使用以下方式更改文件或目录权限chmod命令,即以八进制或符号表示。从这两种方法中,最好的方法是您最容易记住和使用的一种方法。

以下示例显示了如何使用chmod使用八进制和符号表示的命令来更改dir目录权限如下:

目标 需求 八进制表示 符号表示
用户(所有者) 读,写和执行 7之(4 + 2 + 1) u = rwx
读和写 6等于(4 + 2) g = rw
其他 没有权限 0 o =

以下两个chmod使用八进制和符号权限表示的linux命令可以互换,并且会更改dir目录权限符合以上要求:


OCTAL:
$ chmod 760 dir
SYMBOLIC:
$ chmod u=rwx,g=rw,o= dir

本节将介绍的最后一个工具是chown命令。的chown命令允许用户更改文件或目录的所有权。每个文件或目录都有两种类型的所有权。即,这些是用户和组的所有权。



通过使用更改所有权chown命令是一个相当简单的过程。更改文件或目录所有权的通用规则是提供chown命令带有两个参数。提供的第一个参数包含用户名和组名,我们希望此文件或目录归以.第二个参数代表相关文件或目录的名称。

下列chownLinux命令示例将更改名为file.txt由用户拥有lubos以及属于该组的所有用户linuxconfig


$ chown lubos.linuxconfig file.txt
注意:要成功更改文件或目录的所有权,请使用chownLinux命令适用以下两个规则。首先,用户和组必须存在,其次,将所有权从或更改为root用户或组需要管理权限。见上面sudo命令说明以获取更多信息。

下图是本节讨论内容的快速摘要:

Linux commands example usage.

chmodchownLinux命令示例用法。
行使:

试用chmodLinux命令的不同权限版本。您能解释一下将同一组权限应用于文件或目录有何不同?

检查系统的内核版本

有时您需要对GNU /Linux机器进行故障排除,因此您需要获取有关当前正在运行的Linux内核的信息。

使用uname命令结合-a将输出有关您的内核版本和体系结构的详细信息:


$ uname -a
你知道吗:

的Linux关键字实际上仅指系统的内核,而实际的操作系统命令基于GNU免费软件二进制文件,因此将整个操作系统称为GNU /Linux要么利尼克斯相对于简单地将其简称为的Linux

结论

就这些了!但是,不要使本文冗长,以至于让您认为没有其他东西需要学习。相反,本文的目的只是向读者介绍一些基本的GNU /Linux命令行技术,因此几乎没有涉及任何内容。

请在下面提供反馈,以帮助我改善本文。如果您还有其他问题或需要其他帮助,请访问LinuxConfig论坛

接下来您应该学什么?好吧,继续尝试基础知识,并每天尝试将新的Linux命令添加到您的库中。实践使完美!

熟悉基本的Linux命令后,请考虑Bash脚本教程让初学者了解如何结合使用Linux脚本和Shell脚本来自动执行任务。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9347.html,未经允许,请勿转载。