七个 GNU 工具,命令行的强大功能与终端亲密接触的必备工具

系统 Linux
在 GNU 命令中的进步就是在拥有终端灵活性方面的进步。现在,让我们来了解 7 个必备的 GNU 工具吧。

GNU 项目是一个自由软件组织,它创造了开源这个术语,今天它被许多公司广泛使用。

GNU 是 GNU, is Not Unix 的缩写,这意味着:

Unix© 的命令非常成功,许多程序员和公司都想“复制它们”。而且大多数公司的名称本身就包含了 Unix© 这个名字,例如:HP Unix, Berkeley Unix,等等。

但是,Unix©及其名称的版权所有者AT&T已经禁止将 Unix© 名称用于类似的项目。

所以GNU想出了一个用这个名字做讽刺的主意,但说它不是Unix©。😛

另一件事是 Unix© 程序的源代码不可用,即便如此,当用于学习目的时,加州大学伯克利分校(后来创办BSD)也有限制性许可证。

因此,GNU 创造了替代方案,也就是说,除了拥有一个许可(由他们创建的 GPL )甚至允许重新发布的许可之外,这些程序做了同样的事情,并且有可用的源代码。

根据GNU 通用公共许可证 (GNU GPL) 的条款,分发由 GNU 项目创建的软件的组织是自由软件基金会。

GNU 软件最大的区别之一是它使用 POSIX 标准,这使得它可以移植到任何操作系统。

在 GNU 命令中的进步就是在拥有终端灵活性方面的进步。现在,让我们来了解 7 个必备的 GNU 工具吧。

1. GCC

GCC代表G NU C ompiler C ollection,是各种编程语言的编译器和优化器的集合,其中包括:C、C++、Java、Go、Fortran、Ada、D、Objective-C、Objective-C++ 等。

GCC 拥有近2000 万行代码,是世界上最大的免费程序之一。

它拥有最广泛的架构支持,包括:

AArch64, Alpha, ARM, AVR, Blackfin, eBPF, Epiphany (GCC 4.8), H8/300, HC12, IA-32 (x86), IA-64 (Intel Itanium), MIPS, Motorola 68000, MSP430, Nvidia GPU, Nvidia PTX、PA-RISC、PDP-11、PowerPC、R8C/M16C/M32C、RISC-V、SPARC、SuperH、System/390/zSeries、VAX、x86-64、68HC11、A29K、C6x、CR16、D30V、DSP16xx、 ETRAX CRIS、FR-30、FR-V、IBM ROMP、IP2000、M32R、MCORE、MIL-STD-1750A、MMIX、MN10200、MN10300、摩托罗拉 88000、NS32K、RL78、Stormy16、V850、Xtensa、Cortus APS3 、ARC、AVR32、C166 和 C167、D10V、EISC、eSi-RISC、Hexagon[73]、LatticeMico32、LatticeMico8、MeP、MicroBlaze、MRISC32、MSP430、Nios II 和 Nios、OpenRISC , PDP-10, PIC24/dsPIC, PIC32, Propeller, Saturn (HP48XGCC), System/370, TIGCC (m68k variant), TMS9900, TriCore, Z8000 等等。

GCC 有一个超过500 名贡献者的列表,所有的名字都可以在这里访问。

几家公司在许多自由软件项目中使用 GCC,其中最著名的有:NASA、Google、IBM等。

GCC 最大的竞争对手是 Clang/LLVM,它也是一个很棒的编译器,尽管它是从头开始编写的,但根据它自己的创建者Chris Lattner在一些采访中说,他最大的参考是 GCC,所以 Clang 拥有所有使用的参数GCC,也是出于兼容性原因。

要安装 GCC,您可以使用系统的包管理器或在此处下载 GCC 。

相关教程:如何在 Ubuntu 20.04/22.04 上安装 GCC 编译器  https://www.linuxmi.com/ubuntu-20-04-22-04-gcc.html

使用示例

编译用C语言编写的程序:

gcc main.c
./a.out # 运行的二进制

用C++编译程序:

g++ main.cpp
./a.out # 运行的二进制

用Java编译程序:

gcj -C Hello.java # 编译成 Hello.class
gij Hello # 运行 Hello.class

gcc是目前参数最丰富的程序之一。要了解所有参数,请使用手册:

man gcc

欲了解更多信息,请访问官方 GCC 页面。

2.GNU Sed

GNU Sed是一个命令行文本流编辑器,它使用一种简单而紧凑的编程语言来解析和转换文本。

Sed 有几个版本,GNU Sed 就是其中之一。例如,在使用 GNU Sed 和macOS中的 Sed 时,您可能会遇到两者之间的许多差异,并注意到 GNU Sed 的可用性更优越并且具有更多参数。

基本使用示例

在文本文件中用单词LinuxMi替换和修改所有出现的单词Title:linuxmi.txt

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                    
sed -i 's/Title/LinuxMi/' linuxmi.txt

欲了解更多信息,请访问官方 GNU Sed 页面。

相关:

Linux中的Grep,Awk,Sed命令 https://www.linuxmi.com/linux-grep-awk-sed.html

3.GNU awk

GNU awk 是特定领域的语言变体之一:AWK。与 GNU Sed 一样,它的主要区别在于它具有我们在介绍中提到的 POSIX 标准。

它还广泛用于通过命令行进行文本编辑和数据过滤。最基本的用法示例是:

仅列出命令生成的文本文件的第一列ls -l > linuxmi.txt。

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                    
ls -l > linuxmi.txt

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                    
awk '{print $1}' linuxmi.txt

欲了解更多信息,请访问GNU Awk 官方页面。

相关:

为什么说每个 Linux 极客都需要了解 Sed 和 Awk https://www.linuxmi.com/linux-sed-awk.html

4. GNU Make

GNU Make是一个构建自动化工具,它通过读取名为Makefiles的文件自动从源代码创建可执行程序和库,该文件指定如何派生目标程序。

尽管集成开发环境和特定语言的编译器功能也可用于管理构建过程,但 GNU Make 仍然被广泛使用。

某些版本的 make命令是GNU Make使用的命令,但是,在许多系统上,它只是原始命令所在的GNU Make的别名,其中原始命令是gmake,这个符号链接可以通过将另外两个GNU工具(GNU Coreutils)与以下命令结合使用来发现:

ls -l $ (which make) 。

当你有一个正确创建的 Makefile,编译它只需运行命令:

make

该命令可根据 Makefile 文件自定义参数。

欲了解更多信息,请访问GNU Make 官方页面。

5. GNU findutils

GNU findutils是一个包含以下命令的软件包:find、locate和.updatedbxargs

其中,日常生活中使用最广泛的当然是find. GNUfind命令比 Unix© 命令对用户更友好。例如:

要使用GNU findutils查找主目录中的所有.txt文件,只需运行以下命令:

linuxmi@linuxmi /home/linuxmi/www.linuxmi.com                                    
find ${HOME} -name *.txt

在 Unix©find中,您需要将搜索目标显式地括在引号中,而在 GNU 中find,带或不带引号的工作方式相同。以及许多其他差异。

我们有一篇文章,其中包含多个使用该find命令的示例,可以通过以下链接访问:https://www.linuxmi.com/linux-find-mingling-shiyong.html。

欲了解更多信息,请访问GNU findutils 官方页面。

相关:

如何在Linux中使用find根据时间戳查找文件 https://www.linuxmi.com/linux-find-files-timestamp.html

6.GNU grep

GNU grep是一个命令行实用程序,用于在纯文本数据集中搜索与正则表达式匹配的模式。

该命令有多种变体,grep例如:egrep和fgrep. 这些命令的许多可用性是特定于GNU grep的。

GNU grep与RegEx结合使用变得非常强大。

一个基本的使用示例是,例如,使用以下命令列出您的用户所属的系统组:

grep "$USER" /etc/group | egrep -o '^[a-z]+'

欲了解更多信息,请访问官方 GNU grep 页面。

7. GNU Bash

GNU Bash是对 Unix© Sh的改进。GNU Bash使得在Shell中自动化命令变得更加简单和容易,因为它相对于它的选项也很稳定。

它是世界上采用最多的,并具有许多使其与众不同的现代功能。它是由程序员Brian J. Fox创建的。

它有几个命令,例如:if, [[ ]], for, while,... 可以直接在Shell中使用,也可以作为脚本语言组合在任何扩展名的文件中,但最常用的扩展名是.sh和.bash。

有关更多信息,请访问GNU Bash 官方页面,这是我读过的最好的软件文档之一。

相关文章:

  • GNU/Bash 5.1 发布,带来新的增强型随机数生成器  https://www.linuxmi.com/gnu-bash-5-1.html
  • 如何在 Bash 脚本中使用 Linux test 命令 https://www.linuxmi.com/bash-linux-test-command.html
  • Linux Bash 终端命令键盘快捷键备忘 https://www.linuxmi.com/linux-bash-terminal-shortcuts.html
  • 将 bash/shell 脚本编译为二进制文件 https://www.linuxmi.com/shc-bash-shell.html

结论

事实上,GNU 项目还有其他几种解决方案,例如GNU Glibc,它是 Linux 内核运行的接口,并允许杂项:程序、图形界面、窗口管理器和桌面环境以出色的性能工作,以及大多数如果没有GNU Glibc,它们中的一些就无法工作。

责任编辑:庞桂玉 来源: 聆听世界的鱼
相关推荐

2024-09-29 13:25:56

2014-01-03 11:28:29

命令行工具

2009-12-24 11:13:21

2014-10-31 10:50:28

Linux命令行工具

2017-04-20 18:00:59

Linux命令行工具系统信息

2019-05-30 10:40:04

ddgrLinuxDuckDuckGo

2009-05-15 08:59:32

Windows 7微软操作系统

2023-04-12 08:14:10

mysql关联字段索引

2014-02-12 13:30:16

Linux命令行终端工具

2020-12-24 17:08:52

安全工具NoSql注入接口工具

2018-08-16 11:30:12

JavaCPU缓存

2023-12-01 15:10:56

2011-01-18 19:11:26

Postfix命令行

2010-03-19 16:08:07

Python 代码开发

2011-06-17 16:49:05

Cocoa苹果

2015-07-29 10:34:50

Linux系统命令行工具

2018-05-02 08:06:12

2015-07-30 11:04:08

Linux命令行工具

2015-07-30 11:24:47

Linux 系统命令行工具

2020-03-30 12:57:50

Linux命令行Markdown
点赞
收藏

51CTO技术栈公众号