Linux基础教程:5、shell入门前的准备

linux还是喜欢shell语句啊,相比与C语言shell还是很相似的,学习之前我们先要对shell进行一个了解,以及一些必要知识的扩充:

1、重定向、管道、连接符和文本分析器(awk)

那么现在我们开始讲一些比较高级的linux命令了,首先是重定向,什么是重定向?

重定向就是将文件的输入输出重新定义到一个新的位置,重定向又有三种:输出重定向(>或者>>)、输入重定向(<)、错误重定向(2>或者2>>)。

这里的>> 和 << 表示的是追加数据,< 和> 表示的是全部替换,想要了解重定向,我们现需要了解linux的三种输入输入:

标准输入:输入文件的标号是0,也就是0代表着标准输入,默认的是键盘,在命令执行的时候读取输入文件的数据;

标准输出:标号为1,默认设备是显示器,命令执行之后将其输入结果发送到标准的输出文件;

标准错误:标号为2,默认设备也是显示器,命令执行之后将错误信息发送到标准错误文件;

所以这就是为什么错误重定向就是在输入重定向前面加上一个2的原因;

1、输出重定向:

ls >> 文件名

这个命令就是将ls执行之后的结果输出到standard.c文件里面,可以很明显的看到我们当前文件夹下面的文件和文件夹结果就展示在standard.c文件内容中;同样,举一反三,我们如果是ll命令也好,其他具有输出功能的命令也好,都是将结果输出到后面的文件中;

2、输入重定向

输入重定向就是反过来,我们就可以将某一个文件的内容当成命令的输入,比如一些需要输入的指令,grep,cat:

grep pro < 文件名

这里就是将standard文件中带有pro字符的内容抓取出来;

3、错误重定向

这个其实就是抓取错误用的,用法和输出重定向类似,我们首先得有一个错误程序,比如下面的错误代码:

我在lesson01.c文件中写了这样的代码,其实后面没有分号,然后编译时就会报错,我们可以将错误信息输出到standard.c文件中,是使用>>追加输入:

gcc -c 要编译的文件 2> 输出的文件

这里可以看到standard.c文件中就多出了编译lesson01.c文件时报的错误信息;

4、管道

管道使用符号是|,他的作用就是将一个命令的输出作为另一个命令的输入内容,比如我们grep命令和cat命令结合使用:

cat 文件 | grep 关键字

这里实现的就是将cat出来的内容作为grep的抓取对象,可以很明显的看到这里输入了一条带有init的记录,其实就是/etc/passwd中的一条记录;

5、连接符

连接符有三种:;(分号),&&(逻辑与),||(逻辑或)

分号;:

因为有时候我们想要执行的命令很多,如果我们一条一条执行的话太过繁琐,不如我们一次性写一堆让它自己慢慢执行:

命令1;命令2;

这个可以接很多命令,但是都是顺序执行的,也就是不管失败与否都会执行一遍;

逻辑与&&:

命令1&&命令2

这个语句是有判断能力的,只有前面一条语句执行成功之后才会执行后面的,可以看到我们执行ll成功之后还会执行ls,但是执行s失败之后就不会再执行ls了;

逻辑或||:

这个其实就是和逻辑与反过来的,就是之后前面一个失败后面一个才会执行:

命令1 || 命令2

可以看到当第一条指令执行完成之后并没有执行第二条指令;

6、文本分析器awk

这个指令和grep类似,都是用来抓取我们想要的数据的,不过这个指令的选项多一些,功能更好、更强大一点,我们来看他的规则:

awk -F 分隔符 '条件{printf 列和格式}' 文件

这里的意思就是我们在一个文件中,他的内容是这样的:

分隔符的意思就好比我们取文件的界限,比如这里我们可以去空格,如果小明和数学之间是;的话,我们就可以取分号,如果不设置,也就是缺省的话默认就是空格,这样就将第一行的数据分成了三列,也就是小明 、数学和89三列,分别使用$1,$2,$3表示,后面还有数据的话依次类推,条件的话我们可以设置( $2=="数学"),这样的,意思就是筛选出第二列是数学的记录,格式就是我们想要添加的字符样式之类的:

可以看到这里就输出了我们想要的内容;

2、第一个shell程序

shell脚本是linux中常用到的纯文本文件,可以用它来执行一些我们想要执行的shell程序,我们在学习之前先来入个门;

创建一个hello.sh文件,在里面输入:

这里的#就是注释的意思,echo就是答应的意思,date是打印时间,写好文件保存然后可以使用三种方式来执行它:

sh 文件名
bash 文件名
./文件名 (前提是需要使用chmod更改文件为可执行文件)

一般来说bash要比sh更加常用,因为改变权限太麻烦,而且执行文件的方式又多,这里我就不一一介绍了,感兴趣的小伙伴可以自行尝试;

猜你喜欢

转载自blog.csdn.net/aiwanchengxu/article/details/127549227
今日推荐