GNU coreutils是GNU项目的一部分,它是一组基本的命令行工具集,用于操作和管理Linux和其他类Unix系统中的文件和数据流。这些工具被广泛用于终端和脚本中,提供了许多常用的功能和实用程序。Linux和其他类Unix系统的GNU coreutils 知多少?了解它有助你熟悉常用的linux命令。
官网地址:Coreutils - GNU core utilities
这张图很牛炸,瞧瞧上面列出的命令行程序,是不是很容易帮助记忆。
常用命令行程序
以下是一些常见的GNU coreutils工具及其功能:
1. ls
:列出目录中的文件和子目录。
2. cp
:复制文件和目录。
3. mv
:移动或重命名文件和目录。
4. rm
:删除文件和目录。
5. mkdir
:创建新目录。
6. rmdir
:删除空目录。
7. cat
:将文件内容输出到终端或文件。
8. head
:显示文件的前几行。
9. tail
:显示文件的后几行。
10. grep
:根据模式匹配搜索文件中的文本。
11. wc
:统计文件中的字数、行数和字符数。
12. sort
:对文件的行进行排序。
13. uniq
:从文件中删除重复的行。
14. chmod
:更改文件或目录的权限。
15. chown
:更改文件或目录的所有者。
16. chgrp
:更改文件或目录的所属组。
17. find
:在文件系统中搜索文件和目录。
18. du
:估算文件或目录的磁盘使用情况。
19. df
:显示文件系统的磁盘空间使用情况。
20. ln
:创建硬链接或符号链接。
21. basename
:从文件路径中提取文件名部分。
22. dirname
:从文件路径中提取目录部分。
23. tee
:将标准输入内容复制到标准输出和文件。
24. cut
:从文件的每一行中提取指定的字段。
25. paste
:将多个文件的内容按列合并。
26. sed
:基于规则进行文本替换和转换。
27. awk
:处理和分析文本数据。
28. tar
:创建、提取和管理tar归档文件。
29. gzip
:压缩文件。
30. gunzip
:解压缩文件。
GNU coreutils和GNU Binary Utilities区别
GNU Binary Utilities(GNU二进制工具)和GNU coreutils(GNU核心工具集)是GNU项目中的两个不同的软件集合,它们具有不同的功能和目的。
1. GNU Binary Utilities(GNU二进制工具): GNU Binary Utilities是一组用于处理二进制文件的工具。它们主要用于开发和调试可执行文件、库文件和目标文件。
Binutils- GNU Project - Free Software Foundation
这些工具包括:
- as
:汇编器,将汇编语言源代码转换为可执行文件格式。
- ld
:链接器,将多个目标文件和库文件链接为一个可执行文件。
- objcopy
:用于复制、转换和操作目标文件的工具。
- objdump
:用于反汇编目标文件并显示其内容。
- readelf
:用于显示和分析ELF格式的目标文件信息。
2. GNU coreutils(GNU核心工具集): GNU coreutils是一组基本的命令行工具,用于操作和管理Linux和其他类Unix系统中的文件和数据流。它们主要用于终端和脚本中,提供了许多常用的功能和实用程序。一些常见的GNU coreutils工具已在前面的回答中提到,如 ls
、 cp
、 mv
、 rm
、 mkdir
等。
总结:
- GNU Binary Utilities是一组用于处理二进制文件的工具,主要用于开发和调试可执行文件、库文件和目标文件。
- GNU coreutils是一组基本的命令行工具,用于操作和管理文件和数据流,主要用于终端和脚本中。
GNU coreutils核心程序
对代码阅读有帮助提高c/c++语言
源码地址:
git clone git://git.sv.gnu.org/coreutils
GNU软件源码
下载地址:https://ftp.gnu.org/gnu/
stc-c++官方手册地址 (学习c++新特性的一手资料):
https://gcc.gnu.org/onlinedocs/libstdc++/
libstdc++ Source: Main Index
大名鼎鼎的GCC
GCC, the GNU Compiler Collection- GNU Project
https://gcc.gnu.org/onlinedocs/gcc-13.2.0/gcc.pdf
好玩的东西
想要了解这些实用程序的资深开发人员可能想从这里开始他们的旅程。
琐事
最短的实用程序:false(2 行 - 与 arch、dir 和 vdir 相关)
最短的独立实用程序:true(80 行) -第一个版本几乎是一个最小的 C 程序!
最长的实用程序:ls(5308 行)
- 许多实用程序都可以追溯到 20 世纪 70 年代的 Research UNIX。少数甚至可以追溯到 Multics
- 最古老的精神祖先是 CTSS LISTF命令(~1963)。值得庆幸的是短接到ls
- LISTF是1962年设计论文中最初的18个实用程序之一
- dd实用程序的独特语法让人想起 OS/360作业控制语言(20 世纪 60 年代初)。
- 排序程序是唯一利用多线程的实用程序
- fmt实用程序演示了使用特征成本优化行和段落
- 看似简单的yes实用程序使用页对齐内存缓冲区具有高性能输出
- df实用程序比du更快。前者使用设备元数据,后者检查所有文件
- cksum包括两个入口点,一个用于正常操作,一个用于生成 CRC-32 表
- echo实用程序没有失败条件
- test和expr实用程序的设计与典型实用程序有很大不同
- su最初由 coreutils/shellutils 维护
有趣的实现
coreutils 中有一些独立的代码片段值得研究:
- shuf和shred使用的随机数ISAAC密码
- shuf使用的油藏采样
- sum中使用的旧版System V和BSD校验和
- expr中使用的左关联表达式求值
- shred实用程序使用的安全覆盖
- 由cksum实用程序计算的CRC -32 校验和
- 合并排序适合排序
- 因子背后的一连串数学魔法
其他资源
Free Software Directory
util-linux - Debian Package Tracker
Software- GNU Project - Free Software Foundation
Boost.SmartPtr: The Smart Pointer Library - 1.83.0
Boost C++ Libraries