From a5fdf4cce39bddc178dca6c29f31813637e55872 Mon Sep 17 00:00:00 2001 From: lazydooog Date: 2020年12月18日 01:11:01 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E6=A0=BC=E5=BC=8F=E4=BB=A5=E5=8F=8A=E7=BB=86?= =?UTF-8?q?=E8=8A=82=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/commandLine/shell_first_view.md | 58 ++++++++++++++-------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/docs/commandLine/shell_first_view.md b/docs/commandLine/shell_first_view.md index de21ebe..dee273a 100644 --- a/docs/commandLine/shell_first_view.md +++ b/docs/commandLine/shell_first_view.md @@ -116,7 +116,7 @@ cd 命令可以直接使用,不加任何参数,此时会默认切换到当 本节首先来学习一下查看文件与目录信息的相关命令。ls 命令最基本的形式会显示当前目录下的文件和目录。 -注意,ls 命令输出的列表是按字母排序的(按列排序而不是按行排序)。可用带-F 参数的 ls 命令轻松区分文件和目录。 +注意,ls 命令输出的列表是按字母排序的(按列排序而不是按行排序)。可用带 -F 参数的 ls 命令轻松区分文件和目录。 ```bash $ ls -F @@ -134,13 +134,13 @@ Pictures/ F 参数在目录名后加了正斜线(/),以方便用户在输出中分辨它们。类似地,它会在可执行文件(比如上面的 my_script 文件)的后面加个星号,以便用户找出可在系统上运行的文件。 -Linux 经常采用隐藏文件来保存配置信息。在 Linux 上,隐藏文件通常是文件名以点号开始的文件。这些文件并没有在默认的 ls 命令输出中显示出来,因此我们称其为隐藏文件。要把隐藏文件和普通文件及目录一起显示出来,就得用到-a 参数。,使用`ls -a`,所有以点号开头的隐藏文件现在都显示出来了。 +Linux 经常采用隐藏文件来保存配置信息。在 Linux 上,隐藏文件通常是文件名以点号开始的文件。这些文件并没有在默认的 ls 命令输出中显示出来,因此我们称其为隐藏文件。要把隐藏文件和普通文件及目录一起显示出来,就得用到 -a 参数。,使用`ls -a`,所有以点号开头的隐藏文件现在都显示出来了。 --R 参数是 ls 命令可用的另一个参数,叫作递归选项。它列出了当前目录下包含的子目录中的文件。如果目录很多,这个输出就会很长。注意,首先-R 参数显示了当前目录下的内容,也就是之前例子中用户 home 目录下的那些文件。另外,它还显示出了用户 home 目录下所有子目录及其内容。如果当前路径下的目录有更多的子目录,-R 参数会继续进行遍历。正如你尝试的,如果目录结构很庞大,输出内容会变得很长。 +-R 参数是 ls 命令可用的另一个参数,叫作递归选项。它列出了当前目录下包含的子目录中的文件。如果目录很多,这个输出就会很长。注意,首先 -R 参数显示了当前目录下的内容,也就是之前例子中用户 home 目录下的那些文件。另外,它还显示出了用户 home 目录下所有子目录及其内容。如果当前路径下的目录有更多的子目录,-R 参数会继续进行遍历。正如你尝试的,如果目录结构很庞大,输出内容会变得很长。 命令行的多个选项一般并不一定要分开输入:`ls -F -R -a`。它们可以进行如下合并:`ls -FRa`。 -在基本的输出列表中,ls 命令并未输出太多每个文件的相关信息。要显示附加信息,另一个常用的参数是-l。-l 参数会产生长列表格式的输出,包含了目录中每个文件的更多相关信息。这种长列表格式的输出在每一行中列出了单个文件或目录。除了文件名,输出中还有其他有用信息。输出的第一行显示了在目录中包含的总块数。在此之后,每一行都包含了关于文件(或目录)的下述信息: +在基本的输出列表中,ls 命令并未输出太多每个文件的相关信息。要显示附加信息,另一个常用的参数是 -l。-l 参数会产生长列表格式的输出,包含了目录中每个文件的更多相关信息。这种长列表格式的输出在每一行中列出了单个文件或目录。除了文件名,输出中还有其他有用信息。输出的第一行显示了在目录中包含的总块数(block)。在此之后,每一行都包含了关于文件(或目录)的下述信息: ```bash $ ls -l @@ -155,8 +155,8 @@ drwxr-xr-x 4 wallen wallen 4096 Dec 14 22:50 Pictures drwxr-xr-x 2 wallen wallen 4096 Dec 13 11:28 Videos ``` -- 文件类型,比如目录(d)、文件(-)、字符型文件(c)或块设备(b) -- 文件的权限 +- 文件类型,比如目录(d)、文件(-)、字符型文件(c)或块设备(b); +- 文件的权限; - 文件的硬链接总数; - 文件属主的用户名; - 文件属组的组名; @@ -166,12 +166,12 @@ drwxr-xr-x 2 wallen wallen 4096 Dec 13 11:28 Videos -l 参数是一个强大的工具。有了它,你几乎可以看到系统上任何文件或目录的大部分信息。在进行文件管理时,ls 命令的很多参数都能派上用场。如果在 shell 提示符中输入 man ls,就能看到可用来修改 ls 命令输出的参数有好几页。别忘了可以将多个参数结合起来使用。你不时地会发现一些参数组合不仅能够显示出所需的内容,而且还容易记忆,例如 ls -alF。 -由前面的例子可知,默认情况下,ls 命令会输出目录下的所有非隐藏文件。有时这个输出会显得过多,当你只需要查看单个少数文件信息时更是如此。幸而 ls 命令还支持在命令行中定义过滤器。它会用过滤器来决定应该在输出中显示哪些文件或目录。这个过滤器就是一个进行简单文本匹配的字符串。可以在要用的命令行参数之后添加这个过滤器:当用户指定特定文件的名称作为过滤器时,ls 命令只会显示该文件的信息。有时你可能不知道要找的那个文件的确切名称。ls 命令能够识别标准通配符,并在过滤器中用它们进行模式匹配: +由前面的例子可知,默认情况下,ls 命令会输出目录下的所有非隐藏文件。有时这个输出会显得过多,当你只需要查看单个或者少数文件信息时更是如此。幸而 ls 命令还支持在命令行中定义过滤器(filter)。它会用过滤器来决定应该在输出中显示哪些文件或目录。这个过滤器就是一个进行简单文本匹配的字符串。可以在要用的命令行参数之后添加这个过滤器:当用户指定特定文件的名称作为过滤器时,ls 命令只会显示该文件的信息。有时你可能不知道要找的那个文件的确切名称。ls 命令能够识别标准通配符,并在过滤器中用它们进行模式匹配: - 问号(?)代表一个字符; - 星号(\*)代表零个或多个字符。 -在过滤器中使用星号和问号被称为`文件扩展匹配`(file globbing),指的是使用通配符进行模式匹配的过程。通配符正式的名称叫作`元字符通配符`(metacharacter wildcards)。除了星号和问号之外,还有更多的元字符通配符可用于文件扩展匹配。可以使用中括号。 +在过滤器中使用星号和问号被称为`文件扩展匹配`(file globbing),指的是使用通配符进行模式匹配的过程。通配符正式的名称叫作`元字符通配符`(metacharacter wildcards)。除了星号和问号之外,还有更多的元字符通配符可用于文件扩展匹配,例如可以使用中括号: ```bash $ ls -l my_scr[ai]pt @@ -179,7 +179,7 @@ $ ls -l my_scr[ai]pt -rwxrw-r-- 1 christine christine 54 May 21 11:26 my_script ``` -在这个例子中,我们使用了中括号以及在特定位置上可能出现的两种字符:a 或 i。中括号表示一个字符位置并给出多个可能的选择。可以像上面的例子那样将待选的字符列出来,也可以指定字符范围,例如字母范围[a - i]。 +在这个例子中,我们使用了中括号以及在特定位置上可能出现的两种字符:a 或 i。中括号表示一个字符位置并给出多个可能的选择。可以像上面的例子那样将待选的字符列出来,也可以指定字符范围,例如字母范围[a - i]: ```bash $ ls -l f[a-i]ll @@ -188,7 +188,7 @@ $ ls -l f[a-i]ll -rw-rw-r-- 1 christine christine 0 May 21 13:44 fill ``` -另外,可以使用感叹号(!)将不需要的内容排除在外。 +另外,可以使用感叹号(!)将不需要的内容排除在外: ```bash $ ls -l f[!a]ll @@ -197,25 +197,25 @@ $ ls -l f[!a]ll -rw-rw-r-- 1 christine christine 0 May 21 13:44 full ``` -在进行文件搜索时,文件扩展匹配是一个功能强大的特性。它也可以用于 ls 以外的其他 shell 命令。随后的部分会有到更多相关的例子。 +在进行文件搜索时,文件扩展匹配是一个功能强大的特性。它也可以用于 ls 以外的其他 shell 命令。随后的部分会有更多相关的例子。 ## 文件的处理 ### touch 创建文件 touch 命令用于创建空白文件。如果作用于一个已有文件,可以更改其修改时间。 -如果只想改变访问时间,可用-a 参数 +如果只想改变访问时间,可用`-a`参数: ```bash $ touch -a test_one ls -l --time=atime test_one ``` -如果只使用 ls -l 命令,并不会显示访问时间。这是因为默认显示的是修改时间。要想查看文件的访问时间,需要加入另外一个参数:--time=atime。有了这个参数,就能够显示出已经更改过的文件访问时间。 +如果只使用 ls -l 命令,并不会显示访问时间。这是因为默认显示的是修改时间。要想查看文件的访问时间,需要加入另外一个参数:--time=atime。有了这个参数,就能够显示出已经更改过的文件的访问时间。 ### cp 复制文件 -复制文件的格式为 +复制文件的格式为: ```bash $ cp source destination @@ -223,7 +223,7 @@ $ cp source destination 当 source 和 destination 参数都是文件名时,cp 命令将源文件复制成一个新文件,并且以 destination 命名。新文件就像全新的文件一样,有新的修改时间。 -如果目标文件已经存在,cp 命令可能并不会提醒这一点。最好是加上-i 选项,强制 shell 询问是否需要覆盖已有文件。 +如果目标文件已经存在,cp 命令可能并不会提醒这一点。最好是加上`-i`选项,强制 shell 询问是否需要覆盖已有文件。 也可以将文件复制到现有目录中。 @@ -231,7 +231,7 @@ $ cp source destination $ cp -i test_one /home/christine/Documents/ ``` -新文件现就在目录 Documents 中了,和源文件同名。 +新文件就出现在目录 Documents 中了,和源文件同名。 上面的例子在目标目录名尾部加上了一个正斜线(/),这表明 Documents 是目录而非文件。这有助于明确目的,而且在复制单个文件时非常重要。如果没有使用正斜线,子目录/home/christine/Documents 又不存在,就会有麻烦。在这种情况下,试图将一个文件复制到 Documents 子目录反而会创建一个名为 Documents 的文件,连错误消息都不会显示! @@ -243,16 +243,16 @@ $ cp -i test_one /home/christine/Documents/ $ cp -i /etc/NetworkManager/NetworkManager.conf . ``` -cp 命令的-R 参数威力强大。可以用它在一条命令中递归地复制整个目录的内容 +cp 命令的 -R 参数威力强大。可以用它在一条命令中递归地复制整个目录的内容: ```bash -$ ls -Fd *Scripts #-d选项只列出目录本身的信息,不列出其中的内容。一般可与l选项搭配显示目录自身详情 +$ ls -Fd *Scripts #-d选项只列出目录本身的信息,不列出其中的内容。一般可与 l 选项搭配显示目录自身详情 $ cp -R Scripts/ Mod_Scripts ``` 在执行 cp -R 命令之前,目录 Mod_Scripts 并不存在。它是随着 cp -R 命令被创建的,整个 Scripts 目录中的内容都被复制到其中。注意,在新的 Mod_Scripts 目录中,所有的文件都有对应的新日期。Mod_Scripts 目录现在已经成为了 Scripts 目录的完整副本。 -也可以在 cp 命令中使用通配符。 +也可以在 cp 命令中使用通配符: ```bash $ cp *script Mod_Scripts/ @@ -284,15 +284,15 @@ $ mv fzll Pictures/ #把文件fzll从/home/wallen移动到了/home/wallen/Pir ``` 注意,mv 将文件名从 fall 更改为 fzll,但 inode 编号和时间戳保持不变。这是因为 mv 只影响文件名。 -和 cp 命令类似,也可以在 mv 命令中使用-i 参数。这样在命令试图覆盖已有的文件时,你就会得到提示。 +和 cp 命令类似,也可以在 mv 命令中使用`-i`参数。这样在命令试图覆盖已有的文件时,你就会得到提示。 -也可以使用 mv 命令移动文件位置并修改文件名称,这些操作只需一步就能完成 +也可以使用 mv 命令移动文件位置并修改文件名称,这些操作只需一步就能完成: ```bash $ mv /home/wallen/Pictures/fzll /home/wallen/fall ``` -也可以使用 mv 命令移动整个目录及其内容 +也可以使用 mv 命令移动整个目录及其内容: ```bash $ mv Mod_Scripts Old_Scripts @@ -319,14 +319,14 @@ rm 命令的另外一个特性是,如果要删除很多文件且不受提示 ### ln 链接文件 -链接文件是 Linux 文件系统的一个优势。如需要在系统上维护同一文件的两份或多份副本,除了保存多份单独的物理文件副本之外,还可以采用保存一份物理文件副本和多个虚拟副本的方法。这种虚拟的副本就称为`链接`。链接是目录中指向文件真实位置的占位符。在 Linux 中有两种不同类型的文件链接: +链接文件是 Linux 文件系统的一个优势。如需要在系统上维护同一文件的两份或多份副本,除了保存多份单独的物理文件副本之外,还可以采用保存一份物理文件副本和多个虚拟副本的方法。这种虚拟的副本就称为"链接"。链接是目录中指向文件真实位置的占位符。在 Linux 中有两种不同类型的文件链接: - 符号链接(Symbolic link) - 硬链接(hard link) -`符号链接`就是一个实实在在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件。这两个通过符号链接在一起的文件,彼此的内容并不相同。 +"符号链接"就是一个实实在在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件。这两个通过符号链接在一起的文件,彼此的内容并不相同。 -要为一个文件创建符号链接,原始文件必须事先存在。然后可以使用 ln 命令以及-s 选项来创建符号链接。 +要为一个文件创建符号链接,原始文件必须事先存在。然后可以使用 ln 命令以及`-s`选项来创建符号链接: ```bash $ ln -s data_file sl_data_file @@ -334,9 +334,9 @@ $ ln -s data_file sl_data_file lrwxrwxrwx 1 christine christine 9 May 21 17:29 sl_data_file -> data_file ``` -在上面的例子中,注意符号链接的名字 sl_data_file 位于 ln 命令中的第二个参数位置上。显示在长列表中符号文件名后的->符号表明该文件是链接到文件 data_file 上的一个符号链接。 +在上面的例子中,注意符号链接的名字 sl_data_file 位于 ln 命令中的第二个参数位置上。显示在长列表中符号文件名后的`->`符号表明该文件是链接到文件 data_file 上的一个符号链接。 -另外还要注意的是,符号链接的文件大小与数据文件的文件大小。符号链接 sl_data_file 只有 9 个字节,而 data_file 有 1092 个字节。这是因为 sl_data_file 仅仅只是指向 data_file 而已。它们的内容并不相同,是两个完全不同的文件。 +另外,还要注意的是符号链接的文件大小与数据文件的文件大小。符号链接 sl_data_file 只有 9 个字节,而 data_file 有 1092 个字节。这是因为 sl_data_file 仅仅只是指向 data_file 而已。它们的内容并不相同,是两个完全不同的文件。 另一种证明链接文件是独立文件的方法是查看 inode 编号。文件或目录的 inode 编号是一个用于标识的唯一数字,这个数字由内核分配给文件系统中的每一个对象。要查看文件或目录的 inode 编号,可以给 ls 命令加入-i 参数。 @@ -346,13 +346,13 @@ $ ls -i *data_file 296891 sl_data_file ``` -从这个例子中可以看出数据文件的 inode 编号是 296890,而 sl_data_file 的 inode 编号则是 296891。所以说它们是不同的文件。 +从这个例子中可以看出数据文件的 inode 编号是 296890,而 sl_data_file 的 inode 编号则是 296891,所以说它们是不同的文件。 当含有一连串符号链接的链接串时,不必一个一个用 ls 查看其链接关系,可以直接使用 `readlink -f filename` 指令查到当前符号链接串的尽头是什么。 --- -`硬链接`会创建独立的虚拟文件,其中包含了原始文件的信息及位置。但是它们从根本上而言是同一个文件。引用硬链接文件等同于引用了源文件。要创建硬链接,原始文件也必须事先存在,只不过这次使用 ln 命令时不再需要加入额外的参数了。 +"硬链接"会创建独立的虚拟文件,其中包含了原始文件的信息及位置。但是它们从根本上而言是同一个文件。引用硬链接文件等同于引用了源文件。要创建硬链接,原始文件也必须事先存在,只不过这次使用 ln 命令时不再需要加入额外的参数了。 ```bash $ ln code_file hl_code_file From c6303c701c1a022dced2e24a83ace3ddbd164fc5 Mon Sep 17 00:00:00 2001 From: lazydooog Date: 2020年12月18日 01:17:10 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8DREADME=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index fe355a5..75ce1a5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,7 +6,7 @@ - 无废话 不会像很多撑时长的教程一样浪费你的时间 - 只介绍高频常用的用法,阅读性价比高。对于更详细的,不常用的用法,请自行查阅 man 手册、tldr 命令或者通过互联网查询 - 文中`群主`即为`作者`,电报群组:[篝ノ雾枝的咕咕小屋](https://t.me/kdwu1fan) QQ 群:[Linux 二次元交流群](https://jq.qq.com/?_wv=1027&k=5hTGQRy) - - 只要群主健在 就会一直更新 [鼓励志愿者提交更新](/contribution.md) + - 只要群主健在 就会一直更新 [鼓励志愿者提交更新](/docs/contribution.md) 学习本书的前置条件是你已经拥有一个安装好的 Linux 系统,实体机或者虚拟机的安装均可。建议使用 Ubuntu 或者 Arch Linux。即使命令行在各个 Linux 发行版上基本通用,但是本书还是会针对 Arch Linux 添加更多内容,建议有能力的同学尽量使用 Arch Linux。对于 Arch Linux,可阅读学习同系列教程:[Arch Linux 安装使用教程](https://ArchLinuxStudio.github.io/ArchLinuxTutorial/#/)。同时没有接触过 Linux 的同学,强烈建议先学习一些 Linux 基础概念再进行本书的学习。 From 2c2b158027b00a72156e04a7168020c7154f7f51 Mon Sep 17 00:00:00 2001 From: wallena3 Date: 2020年12月18日 11:01:37 +0800 Subject: [PATCH 3/3] rm wrong link --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 75ce1a5..fe355a5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,7 +6,7 @@ - 无废话 不会像很多撑时长的教程一样浪费你的时间 - 只介绍高频常用的用法,阅读性价比高。对于更详细的,不常用的用法,请自行查阅 man 手册、tldr 命令或者通过互联网查询 - 文中`群主`即为`作者`,电报群组:[篝ノ雾枝的咕咕小屋](https://t.me/kdwu1fan) QQ 群:[Linux 二次元交流群](https://jq.qq.com/?_wv=1027&k=5hTGQRy) - - 只要群主健在 就会一直更新 [鼓励志愿者提交更新](/docs/contribution.md) + - 只要群主健在 就会一直更新 [鼓励志愿者提交更新](/contribution.md) 学习本书的前置条件是你已经拥有一个安装好的 Linux 系统,实体机或者虚拟机的安装均可。建议使用 Ubuntu 或者 Arch Linux。即使命令行在各个 Linux 发行版上基本通用,但是本书还是会针对 Arch Linux 添加更多内容,建议有能力的同学尽量使用 Arch Linux。对于 Arch Linux,可阅读学习同系列教程:[Arch Linux 安装使用教程](https://ArchLinuxStudio.github.io/ArchLinuxTutorial/#/)。同时没有接触过 Linux 的同学,强烈建议先学习一些 Linux 基础概念再进行本书的学习。

AltStyle によって変換されたページ (->オリジナル) /