Linux命令说明

Linux命令说明

ls -l | grep -v '^d' | sort -g -r -k 5 | head -2:我使用此命令写入文本文件。

我在网上研究了一下,我认为这些命令的意思是:

  1. grep:在字符串中搜索特定模式的搜索

  2. -v:grep 的一个选项,告诉它查找并显示所有不匹配的行

  3. '':不确定单引号的用途

  4. ^d:插入符号表示行的开头,是dgrep 正在搜索的模式。这在使用时有效ls -l

  5. sort按数字方式对文本文件的内容进行排序

  6. -g按数值比较不确定这到底是什么意思

  7. -r反转比较结果。如果我知道比较的目的,这就更有意义了。

  8. -k 5开始一个键POS1-不确定这意味着什么,这是否意味着我的文本文件第一行的第 5 个字符会发生某些事情?

  9. head -2显示我的文本文件的前两行。

有人可以帮助澄清我不确定的部分吗?

答案1

您已经掌握了大部分技术细节,但我认为您缺少整个事情的语义。

单引号可以'^d'防止运行该管道的任何 shell 将正则表达式(即'^d')中的字符视为“特殊”。例如,$是表示“行尾”的正则表达式。 Shell 还用于$将下一个标记标记为 shell 变量,其值将被插入到字符串中。是^的古老同义词|,将左侧的管道 stdout 插入右侧的 stdin。单引号不会^被特殊对待。

语义是不传递任何ls -l标记为目录的输出行。ls -l将“d”作为与目录相关的任何行的第一个字符。

选项-g使sort命令在键字段中查找数字的表示形式,并根据数值而不是字符串进行排序。默认排序顺序是从最小到最大,因此该-r选项会导致它从最大到最小排序。表示-k 5使用字段 #5 作为关键字段。sort默认情况下,使用空白字符(空格、制表符等)将一行文本划分为“字段”。在我的 Arch Linux 机器上,第 5 个空格分隔的字段ls -l是文件的大小(以字节为单位)。

这里的语义是按大小(以字节为单位)对文件进行排序,最大的在前。

您按字节大小对文件(不是目录)进行排序,并将最大的两个文件的信息放入文本文件中。

从编辑角度来说,解析 ; 的输出通常被认为是不好的形式ls。看为什么不应该解析 ls(1) 的输出。历史上,ls不同的机器上有不同的格式,假设文件大小为字段 5 的脚本在另一台机器上会出现难以理解的问题。所以要小心。

答案2

单引号 '' 用于指示字符的开始和结束。

-g 标志按照一般数值进行排序比较。

-r 选项使输出从最高到最低排序,因为排序的默认输出是从最低到最高。

如果我们想对文本文件行中的列或单词位置进行排序,则使用 -k 选项。

相关内容