2

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

 2 years ago
source link: https://os.51cto.com/article/706173.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
七个 GNU 工具,命令行的强大功能与终端亲密接触的必备工具-51CTO.COM
七个 GNU 工具,命令行的强大功能与终端亲密接触的必备工具
作者:Linux公社 2022-04-11 10:21:35
在 GNU 命令中的进步就是在拥有终端灵活性方面的进步。现在,让我们来了解 7 个必备的 GNU 工具吧。

644a84a760ad91b700c52917182773800f850e.jpg

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

d581e08344d721ba788671b103858bd9c6f60c.jpg

欲了解更多信息,请访问官方 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

842427317a6715b35c15076361fc4df0c6c173.jpg

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

a45741814ec89110e1607903726d3b9c5e5f68.jpg

欲了解更多信息,请访问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

c87924a8551637df8b7293c8aa7f41bdf482e1.jpg

该命令可根据 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

86f22480850ac4b40d51487088cdb138d32150.jpg

在 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]+'

29604de00628703f325606d46f9e7957b1ff1c.jpg

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

7. GNU Bash

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

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

18bc37a936ac491ee67294fc9a056614875e01.jpg

它有几个命令,例如: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,它们中的一些就无法工作。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK