shell是一个作为用户与linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令。
在嵌入式linux中,shell脚本会带来很多方便。比如工作中用到的从服务器上捉特定版本的code,进行编译,输出结果(包括编译中的log信息)。因为有时候版本很多,可以在下班的时候跑这个脚本,第二天就可以看到结果。
输入输出重定向和管道
重定向输出:
ls -al > a.txt
将ls命令的输出保存到文件a.txt中
ls -al >> a.txt
>>操作符将输出内容附加到一个文件中。上面的命令将ls的命令的输出附加到a.txt文件的稳步。
kill -HUP 1234 > killout.txt 2>killerr.txt
该命令将标准输出和标准错误输出分别重定向到不同的文件。
(
文件描述符0代表一个程序的标准输入,1代表标准输出,2代表标准错误输出。
)
如果想将两组输出都重定向到一个文件中,可以用>&操作符来结合两个输出:
kill -l 1234 >killouterr.txt 2>&1
将标准输出重定向到文件killouterr.txt中,然后将标准错误输出重定向到与标准输出相同的地方。
管道:
管道可以把一系列命令连接起来,这意味着第一个命令的输出会作为第二个命令的输入通过管道传给第二个命令,第二个命令的输出又会作为第三个命令的输入,以此类推。显示在屏幕上的是管道行中最后一个命令的输出(如果命令行中未使用输出重定向)。
ps | sort | more
ps输出当前运行的进程,然后sort排序,将排序结果在屏幕上分页显示。
几个非常常用的命令和正则表达式:
find命令:
find命令的完整语法格式如下所示:
find [path] [options] [tests] [actions]
如:find / -name test -print
find . -newer while2 -print
grep命令:
grep是General regular expression parser的简写(通用正则表达式解析器)
使用find命令在系统中搜索文件,而使用grep命令在文件中搜索字符串。
grep命令使用一个选项、一个要匹配的模式和要搜索的文件
grep [options] PATTERN [FILES]
如:
grep -c word txt.txt
正则表达式:
正则表达式的应用极为复杂,简单写下
常见的特殊字符:
^ 指向一行的开头
$ 指向一行的结尾
. 任意单个字符
[] 方括号内包含一个字符范围
如:grep e$ word.txt
在稳定中找以字符e结尾的行。
shell的语法其实和一般的程序语言比较类似,在工作中,需要写shell脚本的时候,我们需要man和google的帮忙~~