文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-02 04:06

关注

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

来源:聆听世界的鱼内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯