您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > linuxShell
shell编程笔记(一)运行一个shell脚本一般我们建立一个shell脚本都建立为.sh为后缀,并且在脚本的开始写上#!/bin/bash,是这个脚本用bash来执行运行脚本的方法有:1、chomodu+xscript_file(为脚本添加执行权限)./script_file2、/bin/bashscript_file(直接用bash来运行脚本,/bin/bash为bash的路径)重要的Bash环境变量名称说明$0程序的名称$1~9命令行参数1~9$#命令行参数的个数$*所有命令行参数的值(不包含$0)$@所有命令行参数的值(不包含$0).当“$@”时,每个参数都被“”包裹。当“$*”时,把所有的参数值看作是一个字符串$$当前进程的ID号$?最后一次命令的退出状态(linux命令完成为0,否则为1,常用来判断命令的执行情况)$!最近一次后台进程的ID号shell编程笔记:shell命令(二)连载熟悉各种shell命令,shell编程才能行云流水。以下内容转载自:希望大家能够有所收获!所有Unix/Linux命令,都可以在shell中使用,而且是很方便的时候。如果你开发了一个新的程序,也可以在shell中直接使用。本章主要介绍Unix/Linux常用命令,并不详细介绍每个命令的每个参数使用,因为有了man命令,你可以通过man得到其他命令的解释。本章绝大部分都是通过网络找到得一些资料,加上了一些自己使用的心得。整理这些命令的目的,是为大家提供一个格式良好的参考和查询的地方。如果你学习shell编程,这一章你不必记住每个命令,只需要了解这些命令能完成那些功能,至于细节参数,到时候再去查阅不迟。at[语法]:at[-f命令文件][-m][-q队列]-t时间[说明]:at命令由cron管理,在未来一个指定的时间内执行一组命令,命令可以从指定文件读入,也可从键盘读入,从键盘读入时以EOF结束,(通常为CTRLD)-f从指定命令文件中读入命令-m命令执行完后给用户发邮件-q将命令放入指定队列-t指定时间指定的时间格式为[[CC]YY]MMDDhhmm[.ss],CC表示年的前两位,YY表示年的后两位,MM表示月,DD表示日,hh表示时,mm表示分,ss表示秒basenamebasename全路径名basename用来从全路径名中得到文件名。例如:basename/home/winter/first.txt你会得到first.txtbc[语法]:bc[-c][-l][文件...][说明]:bc是一个交互式的高精度计算工具,采用类似于C语言的语法,能够从指定文件指定文件中读出命令执行,然后再进入交互式执行,事实上,bc是dc的预编译器,它自动激活dc,将语句经预编译后传递给dc,退出bc的命令是quit,bc中的ibase,obase,scale分别表示输入基数,输出基数,小数点右边的位数。-cbc只编译,而不将编译结果送dc,将其送到标准输出上-l预定义一个数学函数库,可在bc中使用以下函数s(x)sinec(x)cosinee(x)exponentiall(x)loga(x)arctangentj(n,x)Bessel[例子]:bc-l进入bcscale=10将小数位定为10位e(1)计算e的小数点后10位quit退出bccal-显示日历举例:显示1998年全年日历:cal1998显示1998年8月日历:cal81998catcat用于显示文本,使用方法cat[-benstuv][file...]别看这么多参数,最常用的还是什么参数都没有,直接使用cat.cat可以用来合并多个文本文件。其格式为catfile1file2file3file4这就把file1file2file3的内容都放入file4中。当然,你可以合并更多的文件cat*.txtfile4相当于把所有以.txt结尾的文件的内容都输出到file4中。其中表示定向符,如果没有file4则会直接输出到终端。[语法]:cat[-u][-s][-v[-t][-e]]文件...[说明]:显示和连接一个或多个文件至标准输出-u无缓冲的输出(缺省为有缓冲输出)-s对不存在的文件不作提示-v显示出文件中的非打印字符,控制字符显示成^n,n为八进制数字,其他非打印字符显示成M-x,x为该字符低7位的8进制数值-t在使用-v选项时,将制表符(tab)显示成^I,将换页符(formfeed)显示成^L-e在使用-v选项时,在每一行的行尾显示$[例子]:catfile显示文件cat-s-v-efile1file2file3逐个显示文件file1file2file3cd[语法]:cd[目录][说明]:本命令用于改变当前的工作目录,无参数时使用环境变量$HOME作为其参数,$HOME一般为注册时进入的路径。[例子]:cd回到注册进入时的目录cd/tmp进入/tmp目录cd../进入上级目录chgrp[语法]:chgrp[-R]文件组文件...[说明]:文件的GID表示文件的文件组,文件组可用数字表示,也可用一个有效的组名表示,此命令改变一个文件的GID,可参看chown。-R递归地改变所有子目录下所有文件的存取模式[例子]:chgrpgroupfile将文件file的文件组改为groupchmod[语法]:chmod[-R]模式文件...或chmod[ugoa]{+|-|=}[rwxst]文件...[说明]:改变文件的存取模式,存取模式可表示为数字或符号串,例如:chmodnnnnfile,n为0-7的数字,意义如下:4000运行时可改变UID2000运行时可改变GID1000置粘着位0400文件主可读0200文件主可写0100文件主可执行0040同组用户可读0020同组用户可写0010同组用户可执行0004其他用户可读0002其他用户可写0001其他用户可执行nnnn就是上列数字相加得到的,例如chmod0777file是指将文件file存取权限置为所有用户可读可写可执行。-R递归地改变所有子目录下所有文件的存取模式u文件主g同组用户o其他用户a所有用户+增加后列权限-取消后列权限=置成后列权限r可读w可写x可执行s运行时可置UIDt运行时可置GID[例子]:chmod0666file1file2将文件file1及file2置为所有用户可读可写chmodu+xfile对文件file增加文件主可执行权限chmodo-rwx对文件file取消其他用户的所有权限chown[语法]:chown[-R]文件主文件...[说明]:文件的UID表示文件的文件主,文件主可用数字表示,也可用一个有效的用户名表示,此命令改变一个文件的UID,仅当此文件的文件主或超级用户可使用。-R递归地改变所有子目录下所有文件的存取模式[例子]:chownmaryfile将文件file的文件主改为marychown150file将文件file的UID改为150clear-清除屏幕直接使用clearcmp[语法]:cmp[-l][-s]文件1文件2[说明]:比较两个文件,若文件1为-,则使用标准输入,两个文件相同则无提示,不同则显示出现第一个不同时的字符数和行号。-l显示每个不同处的字节数(10进制)和不同的字节(8进制)-s不作任何提示,只返回码[例子]:cmpfile1file2比较文件file1和file2cmp-lfile1file2比较文件file1和file2的每处不同cp[语法]:cp[-p][-r]文件1[文件2...]目标[说明]:将文件1(文件2...)拷贝到目标上,目标不能与文件同名,若目标是文件名,则拷贝的文件只能有一个,若目标是目录,则拷贝的文件可以有多个,若目标文件不存在,则建立这个文件,若存在,则覆盖其以前的内容,若目标是目录,则将文件拷贝到这个目录下。-i在覆盖已存在文件时作提示,若回答y则覆盖,其他则中止-p不仅拷贝文件内容,还有修改时间,存取模式,存取控制表,但不拷贝UID及GID-r若文件名为目录,则拷贝目录下所有文件及子目录和它们的文件,此时目标必须为目录[例子]:cpfile1file2将文件file1拷贝到文件file2cpfile1file2/tmp将文件file1和文件file2拷贝到目录/tmp下cp-r/tmp/mytmp将目录/tmp下所有文件及其子目录拷贝至目录/mytmpdate[语法]:datedatemmddhhmm[yy][说明]:date无参数时用于显示系统时间,修改时间时参数形式为月日时分[年]df[语法]:df[-t][文件系统][说明]:显示剩余i节点和块数,使用-t选项,还显示总块数和i节点数[例子]:df-tdiff[语法]:diff[-be]文件1文件2[说明]:本命令比较两个文本文件,将不同的行列出来-b将一串空格或TAB转换成一个空格或TAB-e生成一个编辑角本,作为ex或ed的输入可将文件1转换成文件2[例子]:difffile1file2diff-bfile1file2diff-efile1file2edscriptdirnamedu[语法]:du[-ars][目录][说明]:显示磁盘空间专用情况-r提供无法打开的文件信息-s仅显示指定目录所占空间的总和-a显示文件大小及目录总空间,其后可根文件名作参数echoexprfile[语法]:file[-f文件名文件]文件...[说明]:file对指定文件进行测试,尽量猜测出文件类型并显示出来-f文件名文件文件名文件是一个包含了文件名的文本文件,-f选项测试文件名文件中所列出的文件[例子]:file*显示当前目录下所有文件的类型find[语法]:find路径名...表达式[说明]:find命令递归地遍历指定路径下的每个文件和子目录,看该文件是否能使表达式值为真,以下n代表一个十进制整数,+n代表打印n,-n代表小于n,下面是合法表达式说明:-name模式文件名与模式匹配则为真,(\为转意符)-perm[-]八进制数文件存取模式与八进制数相同则为真若有-选项,则文件存取模式含有八进制数规定模式即为真-sizen[c]文件块长度为n则真(一块为512字节),若有c选项,则文件字节长度为n则真-atimen若文件的最近访问时间为n天前则为真,find命令将改变其访问的目录的访问时间-mtimen若文件的最近修改时间为n天前则为真-ctimen若文件状态为n天前改变则为真-exec命令{}\;若命令返回值为0则真,{}内为命令参数,此命令必须以\;为结束-ok命令{}\;与exec相同,只是在命令执行前先提示,若回答y则执行命令-print显示输出使表达式为真的文件名-newer文件若文件的访问时间比newer指定的文件新则真-depth先下降到搜索目录的子目录,然后才至其自身-mount仅查找包含指定目录的文件系统-local文件在当前文件系统时为真-typec文件类型为c则真,c取值可为b(块文件)c(字符文件)d(目录)l(符号链接)p(命名管道)f(普通文件)\(表达式\)表达式为真则真-linksn文件链接数为n时为真-user用户当文件属于用户时为真,用户可用数字表示UID-nouser当文件不属于/etc/passwd中的一个用户时为真-group文件组当文件属于文件组时为真,文件组可用数字表示GID-nogroup当文件不属于/etc/group中的一个组时为真-fstype类型当文件所属文件系统类型为指定类型时真-inumn当文件i节点号为n时为真-prune当目录名与模式匹配时,不再搜索其子目录可以用逻辑操作符将简单表达式连接成复杂表达式逻辑操作符有!表示非操作,-o表示或操作,两个表达式并列则表示与操作[例子]:find/-namefind*-print从根目录开始搜索文件名如find*的文件并显示之find./-execsleep{1}\;-pr
本文标题:linuxShell
链接地址:https://www.777doc.com/doc-4946752 .html