Linux主要shell命令Word格式.docx
《Linux主要shell命令Word格式.docx》由会员分享,可在线阅读,更多相关《Linux主要shell命令Word格式.docx(55页珍藏版)》请在冰点文库上搜索。
//注意符号是两个;
2)
younumberis2"
[3-9])
younumberis$ans"
*)//*通配符
others"
esac
1.5比较运算符
运算符描述示例
文件比较运算符
-efilename如果filename存在,则为真[-e/var/log/syslog]
-dfilename如果filename为目录,则为真[-d/tmp/mydir]
-ffilename如果filename为常规文件,则为真[-f/usr/bin/grep]
-Lfilename如果filename为符号链接,则为真[-L/usr/bin/grep]
-rfilename如果filename可读,则为真[-r/var/log/syslog]
-wfilename如果filename可写,则为真[-w/var/mytmp.txt]
-xfilename如果filename可执行,则为真[-L/usr/bin/grep]
filename1-ntfilename2如果filename1比filename2新,则为真[/tmp/install/etc/services-nt/etc/services]
filename1-otfilename2如果filename1比filename2旧,则为真[/boot/bzImage-otarch/i386/boot/bzImage]
字符串比较运算符(请注意引号的使用,这是防止空格扰乱代码的好方法)
-zstring如果string长度为零,则为真[-z"
$myvar"
]
-nstring如果string长度非零,则为真[-n"
string1=string2如果string1与string2相同,则为真["
="
onetwothree"
string1!
=string2如果string1与string2不同,则为真["
!
="
算术比较运算符
num1-eqnum2等于[3-eq$mynum]
num1-nenum2不等于[3-ne$mynum]
num1-ltnum2小于[3-lt$mynum]
num1-lenum2小于或等于[3-le$mynum]
num1-gtnum2大于[3-gt$mynum]
num1-genum2大于或等于[3-ge$mynum]
1.6bash中几种循环
6.1.forname[inword];
dolist;
done
6.2.for((expr1;
expr2;
expr3));
done//注意有2层括号
6.3while[expr]dolist;
其中list简单说就是一串由操作符(operator;
、&
&
、||)
分各给出一个简单例子:
1.
forfilenamein$(ls)
do
cat$filename
done
2.
for((i=0;
i<
10;
i++))
echo$i
3.
x=1
sum=0
while[$x-le10]//注意[]两边的空格
letsum=sum+$x//shell中算术计算使用let
letx=x+1
echo$sum
1.7shell编程中使用到得if语句内判断参数
–b当file存在并且是块文件时返回真
-c当file存在并且是字符文件时返回真
-d当pathname存在并且是一个目录时返回真
-e当pathname指定的文件或目录存在时返回真
-f当file存在并且是正规文件时返回真
-g当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
-h当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
-k当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
-p当file存在并且是命令管道时返回为真
-r当由pathname指定的文件或目录存在并且可读时返回为真
-s当file存在文件大小大于0时返回真
-u当由pathname指定的文件或目录存在并且设置了SUID位时返回真
-w当由pathname指定的文件或目录存在并且可执行时返回真。
一个目录为了它的内容被访问必然是可执行的。
-o当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。
UNIXShell里面比较字符写法:
-eq
等于
-ne
不等于
-gt
大于
-lt
小于
-le
小于等于
-ge
大于等于
-z
空串
=
两个字符相等
!
=
两个字符不等
-n
非空串
-------------------------------------------------------------------------
更为详细的说明:
运算符
描述
示例
文件比较运算符
-efilename
如果filename存在,则为真
[-e/var/log/syslog]
-dfilename
如果filename为目录,则为真
[-d/tmp/mydir]
-ffilename
如果filename为常规文件,则为真
[-f/usr/bin/grep]
-Lfilename
如果filename为符号链接,则为真
[-L/usr/bin/grep]
-rfilename
如果filename可读,则为真
[-r/var/log/syslog]
-wfilename
如果filename可写,则为真
[-w/var/mytmp.txt]
-xfilename
如果filename可执行,则为真
filename1-ntfilename2如果filename1比filename2新,则为真[/tmp/install/etc/services-nt/etc/services]
filename1-otfilename2
如果filename1比filename2旧,则为真
[/boot/bzImage-otarch/i386/boot/bzImage]
-zstring
如果string长度为零,则为真
[-z$myvar]
-nstring
如果string长度非零,则为真
[-n$myvar]
string1=string2
如果string1与string2相同,则为真
[$myvar=onetwothree]
=string2
如果string1与string2不同,则为真
[$myvar!
=onetwothree]
num1-eqnum2
等于
[3-eq$mynum]
num1-nenum2
不等于
[3-ne$mynum]
num1-ltnum2
小于
[3-lt$mynum]
num1-lenum2
小于或等于
[3-le$mynum]
num1-gtnum2
大于
[3-gt$mynum]
num1-genum2
大于或等于
[3-ge$mynum]
脚本示例:
/bin/bash
#Thisscriptprintsamessageaboutyourweightifyougiveityour
#weightinkilosandhightincentimeters.
if[!
$#==2];
then
Usage:
$0weight_in_kiloslength_in_centimeters"
exit
fi
weight="
$1"
height="
$2"
idealweight=$[$height-110]
if[$weight-le$idealweight];
Youshouldeatabitmorefat."
Youshouldeatabitmorefruit."
#weight.sh70150
Youshouldeatabitmorefruit.
#weight.sh7015033
Usage:
./weight.shweight_in_kiloslength_in_centimeters
位置参数$1,$2,...,$N,$#代表了命令行的参数数量,$0代表了脚本的名字,
第一个参数代表$1,第二个参数代表$2,以此类推,参数数量的总数存在$#中,上面的例子显示了怎么改变脚本,如果参数少于或者多余2个来打印出一条消息。
执行,并查看情况。
#bash-xtijian.sh60170
+weight=60
+height=170
+idealweight=60
+'
['
60-le60'
]'
+echo'
Youshouldeatabitmorefat.'
Youshouldeatabitmorefat.
其中-x用来检查脚本的执行情况。
1.8DOS/Windows和Linux/Unix间文件格式和字符集转换
DOS/Windows和Linux/Unix的文件换行回车格式不同,基于DOS/Windows的文本文件在每一行末尾有一个CR(回车)和LF(换行),而UNIX文本只有一个换行。
1)、把Dos/Windows下的文件移至Linux/Unix系统
虽然很多程序不在乎DOS/Windows格式的CR/LF文本文件,但是有几个程序却在乎——最著名的是bash,只要一遇到回车,它就会出问题。
以下sed调用将把DOS/Windows格式的文本转换成可信赖的UNIX格式:
$sed-e'
s/.$//'
mydos.txt>
myunix.txt
该脚本的工作原理很简单:
替代规则表达式与一行的最末字符匹配,而该字符恰好就是回车。
我们用空字符替换它,从而将其从输出中彻底删除。
如果使用该脚本并注意到已经删除了输出中每行的最末字符,那么,您就指定了已经是UNIX格式的文本文件。
也就没必要那样做了!
2)、把Linux/UNIX文本移至Windows系统,使用以下脚本执行必需的格式转换:
s/$/\r/'
myunix.txt>
mydos.txt
在该脚本中,'
$'
规则表达式将与行的末尾匹配,而'
\r'
告诉sed在其之前插入一个回车。
在换行之前插入回车,立即,每一行就以CR/LF结束。
请注意,仅当使用GNUsed3.02.80或以后的版本时,才会用CR替换'
.
1.9iconv的使用方法
iconv---编码转换
用法:
iconv[选项...][文件...]
有如下选项可用:
输入/输出格式规范:
-f,--from-code=名称原始文本编码
-t,--to-code=名称输出编码
信息:
-l,--list列举所有已知的字符集
输出控制:
-c从输出中忽略无效的字符
-o,--output=FILE输出文件
-s,--silent关闭警告
--verbose打印进度信息
-?
--help给出该系统求助列表
--usage给出简要的用法信息
-V,--version打印程序版本号
例子:
iconv-c-futf-8-tgb2312aaa.txt>
bbb.txt
这个命令读取aaa.txt文件,从utf-8编码转换为gb2312编码,忽略无效的字符,其输出定向到bbb.txt文件。
utf-8和
gb2312在windows上看是一样的。
在linux下是有区别的。
粘贴、复制utf-8编码的字都会改变其编码,变为gb2312(windows下)。
只有通过ftp才能保证它的编码不变化
1.10命令格式:
ftp[-v][-d][-i][-n][-g][-s:
filename][-a][-w:
windowsize][computer]
说说他们的含义吧。
-v不显示远程服务器响应
-n禁止第一次连接的时候自动登陆
-i在多个文件传输期间关闭交互提示
-d允许调试、显示客户机和服务器之间传递的全部ftp命令
-g不允许使用文件名通配符,文件名通配符的意思是说允许在本地文件以及路径名中使用通配字符
-s:
filename指定包含ftp命令的文本文件。
在ftp命令启动后将自动运行这些命令。
在加的参数里不能有空格。
-a绑定数据连接时,使用任何的本地端口
-w:
windowsize忽略默认的4096传输缓冲区
computer指定要连接的远程计算机的ip地址
1)?
说明:
显示ftp命令的说明。
后面可以加参数,是加需要解释的命令名,不加则显示包含所有命令列表。
2)!
说明:
功能是在本地计算机上运行指定命令。
如!
command其中command就是你要运行的命令,如果不加command这个参数的话,则显示本地命令提示,这时你输入exit命令就能返回到ftp了。
3)$macro-ame[args]
执行宏定义macro-name。
4)append
使用当前文件类型设置,将本地文件附加到远程计算机中。
大概格式是appendlocal-file[remote-file]其中local-file是说指定要添加的本地文件。
remote-file是说指定要将local-file附加到远程计算机文件,要是省了这个,则是使用本地文件名做远程文件名。
5)account[password]
提供登录远程系统成功后访问系统资源所需的补充口令。
6)ascii
默认情况下,将文件传输类型设置为ASCII
7)bell
响玲开关,意思是文件传输完成后是否有玲声提醒。
默认是关闭的。
8)binary
将文件传输类型设置为二进制。
9)bye
结束和远程计算机的ftp会话,也就是安全断开,退出ftp.
10)cd
更改远程计算机上的工作目录。
如cddata其中data是要进入的远程计算机的目录。
12)cdup
进入远程主机目录的父目录。
13)chmodmodefile-name
将远程主机文件file-name的存取方式设置为mode。
如chmod777a.out。
14)cr
使用asscii方式传输文件时,将回车换行转换为回行。
15)close
结束与远程服务器的ftp会话,并返回命令解释程序。
16)dir
显示远程的文件以及子目录列表。
如dirdatalocal-file其中data是指定要查看列表的目录,没指定的话就是当前目录。
local-file是指定要保存列表的本地文件,不指定的话就在屏幕输出。
17)debug
调试开关,打开的时候打印每个发送到远程计算机的命令,命令前有——>
默认情况是关闭的。
18)disconnnect
与远程计算机断开连接,但还保持着ftp命令提示符。
19)deleteremote-file
删除远程主机文件。
20)disconnection
同close。
21)formformat
将文件传输方式设置为format,缺省为file方式。
22)get
使用当前文件传输类型,把远程的文件拷贝到本地计算机上。
如getremote-filelocal-fileremote-file是指定要复制的文件,local-file是指定本地计算机上的文件名,没有指定的话则个remote-file同名。
23)glob
文件名通配开关
24)hash
转换每个传输数据快的散列标记打印(#).数据快的大小是2048字节。
默认情况下是关闭的,
25)help
显示ftp命令的解释,如helpcommmand其中command就是你要解释的命令,如果不加command这个参数的话就会显示所有命令的列表
26)idle[seconds]
将远程服务器的休眠计时器设为[seconds]秒。
27)image
设置二进制传输方式(同binary)
28)lcd
更改本地计算机的本地目录,在默认的时候是启动ftp的目录.这个不要觉得没用啊,在你使用ftp的时候为了传递文件不是常改变本地和远程计算机的目录吗?
如lcd[directory]其中[directory]是指定要进入的本地计算机的目录,如果你不加这个参数,就会显示出本地计算机的工作目录.
29)literal
向远程ftp服务器发送协商参数,报告.
如lireralargument[...]其中argument是指定要发送给远程服务器的协商参数。
30)ls
显示远程目录的文件和字目录.
如lsremote-directorylocal-file其中remote-directory是指要查看的列表的目录,不指定的话显示的是当前工作目录。
local-file是指定要保存列表的本地文件.不指定的话是在屏幕上输出.
2Shell基本命令
2.1ls列出目录下的文件,不同类型的文件颜色不同,例如蓝色是文件夹,白色是文件
[root@restoretmpsteph]#ls
file.htmlpublic_htmltest
[root@restoretmpsteph]#
参数:
ls-a列出所有文件,包括隐藏文件
[root@restoretmpsteph]#ls-a
....bash_logout.bash_profile.bashrcfile.htmlpublic_htmltest
ls-l列出所有者size文件权限修改日期
ls-R递归列出所有子目录的内容
2.2cd转移目录
cd/home/steph将转移到/home/steph
cd..上移一个目录
cd回到根目录
cddir改变目录位置至dir目录下。
cduser改变目录位置至用户的工作目录。
cd..改变目录位置至当前目录的父目录。
cd../user改变目录位置至相对路径user的目录下。
cd/../..改变目录位置至绝对路径的目录位置下。
2.3建立新文件和文件夹
touchnew-filename建立新文件
mkdirnew-directory建立新目录
2.4删除文件和目录
rm-rfilename删除名为filename的文件
rmdirfoldername删除名为foldername的目录
rm–rfile?
删除文件名中有五个字符且前四个字符为file的所有文件。
rm–rf*删除文件名中以f为字首的所有文件。
2.5修改文件夹权限
1.改变文件或目录的读、写、执行权限
语法:
c