0标准输入,1标准输出,2标准出错
输出重定向:如ls -al > output.txt,此时文件output.txt文件如果存在,则内容被覆盖,如果不想被覆盖,可以采用>>方式。
对标准出错进行重定向,必须在符号>前面写上2,例子:
kill -l 1234 2>error.txt
也可以同时将输出和出错输出同时重定向,如:
kill -l 1234 >out.txt 2>error.txt
也可以将它们同时重定向到同一个文件中,如:
kill -l 1234 >out.txt 2>&1
2、管道
利用连接符|来连接进程,如:
ls -al | more ls -al | sort等
3、在linux中对于文件的后缀名并不重要,如果想确定文件的类型,通过命令file查看即可,语法:
file 文件名
4、创建shell脚本
第一行一般都是指定执行该程序的shell,如:#!/bin/sh
执行shell脚本有两种方式:
方式一:在调用shell时,将脚本文件作为参数传递,如 /bin/sh 脚本文件
方式二:通过“chmod +x 脚本文件”,使得文件可以被所有用户执行,但是此时直接输入脚本文件也不能运行,因为在$PATH文件中并没有指定当前路径,通过./脚本文件来运行。
5、变量
(1)要访问变量中的内容,使用$变量名即可,如果要对变量赋值,则不需要$,可以通过echo $变量名 将它的内容输出到终端。如:
在此需要注意两个地方:一是如果赋值的字符串中含有空格,则应该将字符串用双引号括起来,二是在等号的两边不能有空格。
(2)可以通过命令read向一个变量读入一个字符串,语法为: read 变量名
(3)引号的使用:当把一个带有$字符的变量放在双引号中,程序会替换成变量的值,如果是在单引号中,则不会替换,还可以在$前使用\来取消$的特殊意义。如:
(4)环境变量
环境变量 |
说明 |
$HOME |
当前用户的主目录 |
$PATH |
以冒号分隔的用来搜索命令的目录列表 |
$PS1 |
命令提示符,通常是$ |
$PS2 |
二级提示符,通常是>字符 |
$IFS |
输入域分隔符,通常是空格,制表符和换行符 |
$0 |
Shell脚本的名字 |
$# |
传递给脚本的参数个数 |
$$ |
Shell脚本的进程号 |
(5)参数变量
参数变量 |
说明 |
$1, $2, $3….. |
脚本程序中的参数 |
$* |
在一个变量中列出所有的参数,以IFS的值作为分隔 |
$@ |
也是输出所有参数,但是它不受IFS值的影响 |
例子:
脚本源码:
结果:
6、条件
(1)利用test或[]来实现判断,但[]内必须要留有一个空格
(2)控制结构
if condition
then
statement
else
statement
fi
(3)另一种变形
if condition
then
statement
elif
then
statement
else
statement
fi
(4)当我们利用变量与某个值进行比较,为了避免没有给变量输入值带来的影响,因此在判断时,一般用双引号将变量括起来,如if ["$value"="yes"]。
例子:
7、for语句
语法:
for 变量 in 变量值
do
statement
done
例子:
8、while语句
语法:
while condition
do
statement
done
9、until语句
语法:
until condition
do
statement
done
10、case语句
语法:
case 变量 in
pattern [ | pattern]...) statements;;
pattern [ | pattern]...) statements;;
....
esac
例子:
也可以将yes,y合并成一条,no和n合并成一条
11、命令列表
AND列表:statement1 && statement2 && statement3 &&...., 只有前面所有命令都执行成功的情况下才执行后一条命令。
OR列表:statement1 || statement2 || statement3 ||....,允许执行一系列命令直到有一条命令成功为止。
12、语句块:通过花括号实现。{语句块}
13、函数
函数名()
{
statements
}
14、命令
break命令:用这个命令在控制条件未满足之前,跳出for,while,或until循环。还可以为break提供一个额外的数值参数来表明要跳出的循环层数。
:命令:是一个空命令。比如while :实现一个无限循环。
continue命令:可以带一个可选的参数以表示希望继续执行的循环嵌套层数。
.命令:用来执行当前shell中的命令。
echo命令
eval命令:允许对参数进行求值。
注意使用了eval和不使用的情况输出的结果。
exec命令
exit n命令:在shell脚本编程中,退出码0表示成功,退出码1—125是脚本程序使用的错误代码,其余数字有保留含义:126表示文件不可执行,127表示命令未找到,128及以上表示出现一个信号。
15、find命令:查找文件
语法:find [path] [options] [tests] [actions]
path:是指路径,分别可以是绝对或相对路径。
options: -depth表示在查看目录本身之前先搜索目录的内容;-follow表示跟随符号链接;-maxdepth N表示最多搜索N层目录;-mount(或-xdev表示不搜索其他文件系统中的目录)。
tests: -atime N表示文件在N填之前被访问过;-mtime N表示文件在N天之前被修改过;-name pattern表示文件名匹配提供的模式pattern,pattern总是用引号括起;-newer otherfile表示文件要比otherfile文件更新;-type c表示文件的类型为C,C可以是一个特殊类型,最普通的是d(目录)和f(文件);-user username表示文件的拥有者是指定的用户username。
actions: -exec command表示执行一条命令;-ok command与-exec类型,但它在执行命令之前会针对每个要处理的文件,提示用户进行确认;-print表示打印文件名;-ls对当前文件使用命令ls -dis。
16、grep命令:在文件中搜索字符串
语法:grep [options] pattern [files]
options:-c表示输出匹配行数目,而不是输出匹配的行;
-E表示启用扩展表达式;
-h表示压缩每个输出行的普通前缀为匹配查询模式的文件名
-i表示忽略大小写
-l表示只列出包含匹配行的文件名,而不输出真正的匹配行
-v表示对匹配模式取反,即搜索不匹配行而不是匹配行
阅读(2035) | 评论(0) | 转发(1) |