专业编程基础技术教程

网站首页 > 基础教程 正文

推荐几个linux简单实用的shell命令

ccvgpt 2024-08-18 14:43:27 基础教程 21 ℃

如果你是一个后端boy,或者做的工作与服务器运维密切相关,那么你注定要与linux开始一段密不可分的旅程。当你在linux里探索那未知的世界时,当你熟练使用那些炫酷的shell命令操作时,有没有那么一刻会让你感觉自己的逼格瞬间提高了?接下来,让我们直接上干货!

对于简单的shell命令,如:ls、cd、pwd、mkdir、touch、cp、mv、rm、chmod、find、tar、tail、cat、echo、man等,我们这里就直接跳过。

推荐几个linux简单实用的shell命令

在shell命令中,awk、sed、grep,人称“shell三剑客”。它们其实在我看来不应该说是命令了,而工具了,因它们的功能实现太强大了,无论是处理文件、搜索指定内容、还是字符串处理等等,都非常方便快捷。甚至,我们写的代码也会偶尔直接调用shell命令来帮我们获取想要的东西。总之,谁用谁知道。

awk

awk是一个强大的文本处理工具,可以用于从文件或者标准输入流中提取各处理数据。对于这些shell命令只要知道它的作用就足够了,在实际应用中,当我们需要使用它们时,再去查阅相关资料,了解更多的用法和选项。下面我们介绍它的一些简单用法。

打印文件内容:awk '{print}' test.c //'' 为单引号,print表示awk打印的动作,test.c为awk操作的文件。

对标准输入流进行分隔:cat test.c | awk -F " " '{print $2}'

解析:

1.'-F': 指定字段分隔符,-F后面的双引号里面就是分隔符,这里的分隔符是空格。

2.'$2': 表示每行数据的第二个字段的值。

3. 因此上面的shell可能理解为,首先获取test.c所有内容到标准输入流中,然后再通进管道(“|”实际为管道)传数据给awk,awk再根据空格作为分隔符对数据进行分隔,并打印出每行数据的第二个字段的值。如下图

sed

sed是一个强大的文本处理编辑器,它对文本的行,或者某个字符串,进行添加、删除、修改、打印等一系列操作。下面我们去了解它的一些用法:

1.:sed '2i\hello' test.c //解析:表示文件的第二行添加hello

2.:sed '/hello/d' test.c //解析:表示删除文件的第二行hello

3.:sed -i 's/val/p/g' test.c //解析:表示把文件中的val都改成p,并且-i表示要修改的覆盖原文件,g表示全文件修改

4.: sed -n '1,20p' test.c //解析:表示打印1到20行的代码

grep

grep命令就相对简单多了,主要对文件或者标准输入中的内容进行搜索匹配,并把匹配到的行在终端中打印出来。使用如下:

搜索匹配:grep "p" test.c //解析:对test.c文件进行搜索,并把含有"p"的行打印出来

strace

strace命令是一个查看程序运行时,程序用到的系统调用的工具。使用例子如下:

strace ./a.out //如图,a.out所用到的系统调用函数都被打印了出来。


chattr

chattr命令主要是用于改变文件系统对象的属性,通它设置了文件的特殊属性,让你的linux文件不可删除,不可修改等。它与chmod是不一样的,chmod是修改文件拥有者,拥有组,或者其他的可读可写权限。以下为chattr的基本用法:

1.设置文件只读:chattr +i test.c //+i表示只读

2.取消文件只读属性:chatt -i test.c //-i表示取消只读

通过上面的介绍,相信大家对”shell三剑客”(awk、sed、grep)、strace、 chatrr命令有了基本的认识。其实linux还有很多好用的shell命令,这些命令都在大的提高我们在开发和服务运维的效率。在这里就不再全部一一介绍了,但我们只需要掌握基本的用法,多加使用就可以。

同时我们也可以自己用c语言写一些自定义命令程序,再把程序放在“/usr/bin”目录下,就可以像shell命令一样来使用了。

关注我,让我们一起学习!

Tags:

最近发表
标签列表