linuxshell.docx
- 文档编号:7022364
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:13
- 大小:29.01KB
linuxshell.docx
《linuxshell.docx》由会员分享,可在线阅读,更多相关《linuxshell.docx(13页珍藏版)》请在冰豆网上搜索。
linuxshell
LinuxStudy
第一部分1
一UNIXShell概述1
1.1什么是Shell1
1.2Shell的双重性2
1.2.1命令解释程序(命令解释器)2
1.2.2程序设计语言2
1.3Shell的种类:
2
二Shell的命令简介3
2.1命令的一般格式3
2.2Shell常用的命令4
2.3Shell的内部命令(Buildincommand)4
2.4命令的查询4
2.5元字符和文件名生成5
2.6管道和命令表5
2.7命令组合6
2.8命令替换6
2.9输入、输出重定向7
第二部分9
文件安全与权限9
find命令10
第一部分
一UNIXShell概述
1.1什么是Shell
Shell就是UNIX提供用户的使用界面。
Shell处在内核与外层应用程序之间,起着协调用户与系统的一致性、在用户与系统之间进行交互的作用,即Shell为用户提供了输入命令和参数并可得到命令执行结果的环境。
Shell本身并不神秘,只是一个普通的应用程序,所不同的是Shell进程的功能比较特殊。
系统层次结构图
1.2Shell的双重性
1.2.1命令解释程序(命令解释器)
Shell解释用户输入的命令行,提交系统内核处理,并将结果返回给用户;Shell与UNIX命令一样都是实用程序,但有区别。
一旦用户注册到系统后,Shell就被系统装入内存,并一直运行到用户退出系统之止;而一般命令仅当被调用时,才由系统装入内存执行。
Unixshell进程的启动:
1在用户登陆的时候:
Init进程getty进程login进程shell进程,getty进程退出,login进程成为shell进程的父亲。
在/etc/passwd文件中指定要启动的Shell。
root:
x:
0:
1:
superuser:
/:
/sbin/sh
nsadmin:
x:
201:
starf:
/home:
/bin/csh
2在命令行的方式下:
在系统中可能有多种版本的Shell存在,可通过相应的命令来启动,如:
cshkshshbash
1.2.2程序设计语言
Shell本身也是一种可编程的程序设计语言。
Shell允许通过编程来完成复杂的功能处理,但其作为语言与高级语言比较具有不同的特点:
Shell是解释性的,多数高级语言是编译性的;
Shell语言与高级语言处理的对象不同;
Shell与系统有密切的关系;
Shell易编写、调试、灵活性较强,但速度低;
Shell作为命令级语言,命令组合功能很强。
1.3Shell的种类:
●sh:
BourneShell,是最常用的Shell,标准shell(有时安装成bsh)。
●ksh:
KornShell,由BourneShell通过增加History和命令行编辑功能演变而来。
●Sh:
POSIXShell,与KornShell相似,是BourneShell的高级版本。
POSIX标准要求被安装成sh。
●csh:
CShell,是基于C语言的Shell。
●bash:
BornAgainShell(bash),是KornShell的超集,又包括不少CShell语法。
但不常用。
RedhatLinux缺省的shell。
●tcsh:
CShell的一个版本,包括交互式的命令行编辑。
●zsh:
ZShell是复杂的,但却具有优良特性的Shell。
它能模拟Korn、C或POSIXShell。
也不常用。
Shell类别
易学性
编辑
快捷
可移植性
Bourne(sh)
容易
较差
较差
好
Korn(ksh)
较难
好
较好
较好
BourneAgain(bash)
难
好
好
较好
POSIX(psh)
较难
好
较好
好
C(csh)
较难
较好
较好
差
TC(tcsh)
难
好
好
差
Z(zsh)
难
好
好
差
常用Shell在交互式使用方面的比较
Shell有两种主要语法类型:
Bourne和C,彼此不兼容,
Bourne家族:
shkshbashpshzsh
C家族:
cshtcsh
其中:
bash和zsh在不同程度上支持csh的语法。
二Shell的命令简介
2.1命令的一般格式
UNIX系统命令的一般格式为:
command[options][arguments][filenames]
options常带有一个连字号“-”
字符标志位,以此扩展命令的特性或功能;
arguments
表示命令的自变量(参数);
filenames
表示文件或目录的名字。
2.2Shell常用的命令
UNIX有丰富的Shell命令,大致划分为以下几类:
目录操作与管理、文件操作与管理命令、系统管理与维护、用户管理与维护、系统状态、进程管理、通讯命令、其它命令。
例:
awk
bcbg
catchmodchowncpcron
datedfdiffdu
echoexpr
filefindfg
grep
init
kill
lnlogin
lsmailmakemanmkdirmkfsmountmv
nohup
pgpwdpsprpwd
readrm
sedsortsync
tailtee
wc
2.3Shell的内部命令(Buildincommand)
出于运行效率的考虑,将一些命令构造在Shell的内部。
这些命令比非内部命令执行速度快。
Shell常用的内部命令有:
用于结构分支及控制:
ifelseforcasewhileuntilcontinuebreak
其它:
readcdechoevalexecexitexportreadonlysetshifttesttimetrapunsetumaskwait
2.4命令的查询
环境变量PATH的构成决定了寻找Shell命令和其它程序的途径,是影响Shell程序效率的主要因素之一。
PATH变量设置要考虑以下几点:
常用目录放在PATH变量中,使用频度高的目录排在前面;
PATH应尽可能地短,不要出现重复的目录;
尽量避免查询大目录,如需设置,将其路径放在PATH路径的最后位置。
例:
PATH=/bin:
/usr/bin:
/etc:
.
2.5元字符和文件名生成
UNIX元字符(通配符)的定义
*匹配任何字符串,包括空字符串;
?
匹配任何单个字符;
[…,-,!
] 按照范围“-”、列表“...”或不匹配“!
”等形式匹配指定的字符;
\转意符,使元字符失去其特殊的含义。
例:
[a-d,x,y] 匹配字符a、b、c、d、x、y;
z*匹配以字符z开始的任何字符串;
x?
y匹配以x开始、以y结束、中间为任何单个字符的字符串;
[!
Z] 匹配不为Z的单个字符。
元字符作为文件扩展名的使用
例:
[a-f]*匹配字符a到字符f开头的文件名;
abcd2e3.cf.dat
*z匹配以字符z结尾的任何字符串;
win.zcore.zza-c_5z
rc?
.d匹配以rc开始、以.d结束、中间为任何单个字符的文件名;
rc0.drc2.drcS.d
*[!
o]匹配不以o结尾的文件名;
2.6管道和命令表
管道的概念
管道:
是一个命令的标准输出与另一个命令的标准输入之间的连接,不经过任何中间文件;
管道线:
是由管道操作符分隔的一个命令序列,最简单的管道线是一个简单命令;
管道操作符:
用符号“|”表示。
例:
who|wc-l
ps-ef|grepftp
ls-l
命令表的概念
命令表:
一串管道线(命令)构成了一个命令表,最简单的命令表是一个管道线(即一个简单命令)。
管道线(命令)分隔符:
分隔命令表元素,确定管道线执行的条件,含义如下:
;或换行符:
表示按顺序执行管道线;
&&:
表示根据条件(true),执行其后面的管道线;
||:
表示根据条件(false),执行其后面的管道线;
&:
表示前面的管道线在后台(异步)执行。
例1:
四个管道线构成一个命令表
ls-l/bin/usr/bin
who|wc-l
a|b|c|d
ps
例2:
与例1等价
ls-l/bin/usr/bin;who|wc-l;a|b|c|d;ps
例3:
sys_account&
例4:
查询指定的文件是否存在,给出相应信息
test-f$1&&echo“$1exists”
test-f$1||echo“$1notexists”
2.7命令组合
命令组合有两种形式:
{命令表}由当前Shell来执行命令表。
例:
{cdmydoc;rmjunk;}
(命令表)
当前Shell派生一个子Shell进程来执行命令表。
例:
(cdmydoc;rmjunk;)
bash中支持(命令表)这种方式
2.8命令替换
用命令的执行结果来替换这个字符串本身。
注意反撇号与单引号的区别。
例1:
#now=‘date’单引号
#echo$now
date
#now=`date`单撇号
#echo$now
1999年12月8日星期三19时51分56秒CST
例2:
#count=10
#count=`expr$count+1`
#echo$count
11
2.9输入、输出重定向
使用标准改向符进行重定向(改向)
<输入改向
<<输入改向(here文件)
>输出改向
>>追加输出改向
(用标准文件描述字进行重定向(改向))
在UNIX系统中,使用了文件描述字来定义输入、输出的标准文件,其中:
0:
标准输入1:
标准输出2:
标准错误输出
标准输入的改向(<、<<)
command command< > : : >EndOfMarker 例1: sort 例2: cat< eof >Hellow! >ok! ! >! eof 标准输出的改向(>、>>) command>file command>>file 例1: date>myfile 例2: ls-l>>myfile 例3: catfile*>myfile 例4: ps-ef|grepftp>myfile 标准错误输出的改向(>、>>) command2>file command2>>file 例1: 将错误输出改向到err_file文件。 myprog2>err_file 例2: 将标准输出和错误输出改向out文件。 myprog>out2>>out(两种方法等价) myprog>out2>>&1(改向处理从左至右) 例3: 错误输出被显示,标准输出改向out文件 myprog2>&1>>out 第二部分 文件安全与权限 ☉文件权限(chown,chmod,chgrp,umask) >符号模式: chmoda+x…(u-r,g-w,a-x) >绝对模式: chmod644…(rwx->7) eg: drwxrwxr-x2nsadminnsadmin4096Sep508: 52sbin eg: drwsrwsr-x2nsadminnsadmin4096Sep508: 52sbin >suidandguid chmod+s… chmod+4xxx…设置suid chmod+6xxx…设置guid ☉符号链接(ln) >硬链接: Inode(1234) filename 1234 linkname ….. Data Data Data 删除源文件或者任何一个链接,数据块还存在并可以访问到。 data data >软链接: Inode(321) filename … Path/filename Inode(333) Linkname … 软链接删除和源文件没有任何关系,但是源文件删除了,软链接就玩完了。 -f,--forceremoveexistingdestinationfiles -i,--interactivepromptwhethertoremovedestinations -s,--symbolicmakesymboliclinksinsteadofhardlinks … find命令 >格式: findpathname–option[-print–exec–ok] 选项说明: -name按照文件名查找文件 $find.–name“*.txt”-print -perm按照文件权限查找文件 $find.–perm755-print -prune不在指定的目录查找 $find.–name“./wzf”–prune–o-print -user按照文件属主查找文件 $find.–groupnsadmin–print $find.–nogroup-print -group按照文件属组查找文件 $find.–usernsadmin–print $find.–nouser-print -mtime $find/-mtime–5–print更改时间在五日以内的文件 -newer $find.–newerwzf.txt! –newerwangzf.txt–execls–l{}\; 更改时间比文件wzf.txt新但比文件wangzf.txt旧的文件 -size $find.–size+100c-print 查找大于100字节的文件 -depth $find/-name“abc.conf”-depth-print 深入目录查找 -mount $find.–name“*.txt”–mount–print 在当前文件系统查找所有以.txt结尾的文件 >使用exec或者ok来执行shell命令 $find.–typef–execrm{}\; >使用xargs来执行shell命令 $find.–name“*.txt”–print|xargsrm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linuxshell
![提示](https://static.bdocx.com/images/bang_tan.gif)