Shell笔记.docx
《Shell笔记.docx》由会员分享,可在线阅读,更多相关《Shell笔记.docx(12页珍藏版)》请在冰豆网上搜索。
Shell笔记
Shell编程指南(Linux与UNIX)
学习笔记
一系统指令
1文件与权限管理
文件管理
指令选项
选项说明
遍历目录下的文件
ls-l
返回当前路径
pwd
进入路径
cd<路径名>
~表示$HOME;.表示当前;/根路径
创建文件
touch<文件名>
创建目录
?
删除文件
rm<文件名>
改变文件或目录的权限
chmod<用户范围ugoa><增减+-><权限:
rwx><文件名/目录名>
设置执行文件在执行过程中的权限委托suid/guid
chmodu+s<文件名>
改变文件的属主
chown–R–h<用户名><文件名/目录>
-R针对目录下的子目录执行相同的改变;-h针对连接文件不影响目标文件
改变文件所属的组(组代表权限)
chgrp–R–h<组名><文件名/目录>
确定当前用户属于哪一个组
id
查看其他用户属于哪一个组
id<用户名>
设置创建文件和目录的缺省权限
umasknnn
nnn可以换算为文件或目录的缺省权限值,参见资料
建立对源文件的链接文件
ln[-s]<源文件><链接文件>
显示系统进程
psax
显示当前用户
who
文件和目录的权限:
权限表示
设置范围
权限
代码
绝对值
文件属主
同组用户
组外用户
读取
r
4
改写
w
2
执行
x
1
委托
s
2查找文件
find<路径名><-选项><文件名/通配符>[-print-exec-ok]|[xargs]
-print:
将查找到的文件名列表输出到标致输出
-exec:
将查找到的文件拿来执行shell命令,如删除它们
-ok:
是-exec的安全模式,在做shell命令时要求确认
xargs:
将输出进行整体处理。
相比exec,xargs只有一个进程
查找方式
指令选项
选项说明
按文件名查找
-name
按文件权限查找
-perm
按文件属主查找
-user
按文件所属组查找
-group
按文件的更新时间查找
-mtime–n+n
-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。
按文件类型查找
-type
文件类型有:
b-块设备文件。
d-目录。
c-字符设备文件。
p-管道文件。
l-符号链接文件。
f-普通文件。
按文件大小查找
-sizen[c]
示例:
主题
说明
命令
查找后执行
查找更改时间在5日以前的文件并删除它们
find.-typef-mtime+5-execrm{}\;
xargs
3系统后台调度任务
调度任务:
调度方式
命令
说明
周期性调度
cron/crontab
指定时间点调度
at
后台临时任务
后台执行方式
命令
说明
临时短暂后台执行
&
永久后台执行
nohup
4通配符
通配符
说明
示例
*
匹配任何字符串,包括空字符串
?
匹配任何单个字符
[…]
匹配[]中所包含的任何字符
[!
...]
匹配[]中非感叹号!
之后的字符
5shell输入与输出
输入输出图示:
命令:
命令
说明与选项
示例
echo
显示
显示文本或变量到屏幕、或重定向到文件
“-e”选项是在Linux下使转义符有效
echo–e“asdfasdfasdf”到屏幕
echo–e“adfasdf”>myfile覆盖
echo–e“adfasd\na”>>myfile追加
read
读取变量
从键盘或文件的一行读到变量
readnamesexage
suman男20
cat
读取文件
显示文件内容
“-v”显示控制字符
catmyfile|more
显示myfile内容,并将内容通过管道发送给more命令来分页显示
cat>myfile1
输入一些文字
按住Ctrl+D结束输入
从键盘输入,并保存到myfile1文件中
命令1|命令2
管道输入
将一个命令的输出,给另一个命令作为输入
catmyfile|more
显示myfile内容,并将内容通过管道发送给more命令来分页显示
试用与管道的命令:
sed、awk、grep、more
tee
标准输出与文件保存
将内容显示在标准输出上,同时保存到文件
“-a”表示追加到文件尾
转义符:
转义符号
说明
\n
换行
\c
不换行
\t
跳格Tab
\f
进纸
重定向:
类型
符号
说明
重定向输出
>
ls–l>myfile将ls–l命令的输出重定向到myfile文件中
>>
ls–l>>myfile相比>,>>是追加到文件尾
重定向输入
<
cat<<
cat<重定向错误信息的输出
2>
cat“adfasdf”2>myfile将错误信息重定向输出到myfile文件中
2>>
cat“adfasdf”2>>myfile相比2>,2>>是追加到文件
文件描述符与标准输出:
文件描述符
说明
示例
0
标准输入
1
标准输出
cat“adfasdfas”1>myfile等同于cat“adfasdfas”>myfile
2
标准错误
cat“adfasdfa”2>myfile错误输出到myfile中
结合使用
cat“adfasdf”1>myfile2>myfile1没错输出到myfile,错误输出到myfile1
合并使用
cat“aaa”>>myfile2>&1没错和有错,都输出到myfile中
exec与文件描述符:
?
6Shell或命令的逻辑执行
方式
说明
示例
命令1&&命令2
命令1执行成功后执行2,否则不执行2
cat“a”>myfile&&echo“ok”
命令1||命令2
命令1执行错误后执行2,否则不执行2
cat“a”>myfile||echo“ok”
可以使用()将多个命令组合起来,全部成功才是成功
{}也可以,但{}是将括起来的命令作为一个整体在子Shell中执行
二字符操作
1正则表达式
基本元字符:
元字符
说明
示例
.句点
任意一个ASCII字符和数字
“…x..x..x”,”abcxdexaax”是匹配的
^行首
匹配^后字符为行首的
^p,”pabd”、”p09834”都是匹配的
^.p,”apaadd”、”0pfsd”都是匹配的(结合使用)
$行尾
匹配$前所有字符为结尾的
table$,”asdfatable”、”098table”都是匹配的
…le$,””(结合使用)
*重复
匹配*前的字符n次
compu*er,”computer”、”compuuuter”都是匹配的
\屏蔽特殊
屏蔽特殊字符
.^\$等字符时特殊字符, “\^“将作为 ^字符
[]字符范围
匹配[]所包含的单个字符
[Cc][0-9][A-Za-z0-9]
\{\}重复n次
AB\{n\},B重复n次的匹配
AB\{n,\}\,B重复至少n次的匹配
AB\{n,m\},B重复n到m次的匹配
[0-9]\{4\}XX[0-9]\{4\},2345XX6547的匹配
正则表达式的应用:
分类
应用名
表达式
日期格式dd-mm-yyyy
[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}
IP地址格
[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}
匹配任意行
[^.*$]
匹配只有一个.的行
^.$
以xxx开头的行
^[xxx]
以xxx结尾的行
[xxx]$
非数字或字母
[^0-9A-Za-z]
2grep查询文件内容
grep[选项]基本正则表达式[文件名]
选项:
选项
说明
示例
-c
只输出匹配行的计数
grep–c“^00”“data.f”
-i
不区分大小写(只适用于单字符)
-h
查询多文件时不显示文件名
-l
查询多文件时只输出包含匹配字符的文件名
-n
显示匹配行及行号
-s
不显示不存在或无匹配文本的错误信息
-v
显示不包含匹配文本的所有行
注:
grep有点像SQL语言中的select语句。
基本正则表达式中,字符串或变量一定要用“”引起来,正则式模式用‘’单引号引起来。
grep查询时比较字符串是大小写敏感的。
-i可以不区分大小写。
主题示例:
分类
主题
示例
查询多个文件
grep“查询内容”*.doc
grep“查询内容”data1.docdata2.doc
运用选项
查询匹配的行数
grep–c“查询内容”data1.doc
查询匹配行的行号及内容
grep–n“查询内容”data.doc
查询不匹配的行内容
grep–v“查询内容”data.doc
精确匹配
grep“查询内容<分段控制符>”data.doc
正则表达式
模糊匹配
grep‘正则表达式’data.doc(注意是单引号)
运用类名替代正则表达式:
作为管道的运用:
(查询前面的命令的输出)
运用
示例
说明
查询指定的系统进程
psax|grep“named”
查询目录ls–l
ls–l|grep“^d”
只查询目录
ls–l|grep“^[^d]”
只查询文件
egrep(extendgrep扩展grep):
运用
示例
说明
用文件作为条件输入
egrep<条件文件名><文件名>
条件文件中保存查询条件
多个条件(使用|符号)
egrep(条件1|条件2)<文件名>
条件1和条件2都可以
3awk抽取文本内容
将文本文件中的内容以行(换行符分割)和列(指定的分隔符分割)划分,就像二维表一样,使用列内容之间的关系进行查询行记录,并输出报文。
有点像SQL中select语句中的聚合函数。
awk[-F :
<分隔符>]‘<域比较条件表达式>’<文件名>
4sed文本编辑器
将输入文件编辑后输出到文件
sed<输入文件>><输出文件>
5sort排序
6uniq去除重复行
7join连接两个文本行
8cut和paste文本
9split分割文本
10tr字符转换
三系统环境设置
1系统启动设置
登录过程
文件/etc/passwd
$HOME.profile
定制$HOME.profile
2环境变量
3注意引号
三