之所以用到命令行参数,关键在于shell脚本需要与运行脚本的人员进行交互.
bash shell提供了命令行参数添加在命令后面的数据值)、命令行选项修改命令行为的单字符值)和直接读取键盘输入.
①.、命令行参数
向shell脚本传递数据的最基本方式是使用命令行参数.
①.)读取参数
读取输入的参数的变量为位置参数,位置参数通过标准数字表示,
shell脚本自动将命令行参数赋值给各个位置变量.
同时输入多个参数可以是数值也可以是字符串)时,必须使用空格分隔要想在参数值中包含空格,就必须使用单引号或双引号)
传递给变量$0的字符串实际上是程序的路径根据调用方法决定是相对还是绝对路径).
使用basename命令可以去掉路径前缀,只获得程序名称名字中不 可以有空格).
当脚本认为应该包含参数,却实际上没有数据时,就会出错.
好的方法是对参数进行检查来保证使用参数前确实存在数据,可以使用-n参数来检查.
例子:if [ –n "$1" ] then .. else .. fi
用于跟踪命令行参数
①.)参数计数
使用特殊变量$#测试执行脚本时包含的命令行参数个数.脚本中任何位置都可以 使用$#
可以使用${!#}来返回最后一个命令行参数当无参数时,$#为0,而${!#}为程序名)
变量$*将命令行中提供的所有参数作为一个单词处理,它将多个参数看成 一个参数.
shift命令能够改变命令行参数的相对位置.默 认将每个参数变量左移一个位置变量$0不变,把$1丢弃,注意不可以恢复了!)
在不清楚参数数目情况下,这是一个迭代参数的好办法.
可以为shift提供一个参数,来实现多位移变化.
选项是由破折号引导的单个字母,用于更改命令的行为.
①.,找出选项
①.)处理简单选项
可以使用处理命令行参数相同的方法处理选项,抽取时使用case语句进行判断是否符合选项格式.
同时使用选项和参数时,可以使用--指示选项列表的结束.发现--后,shell就知道后面的是普通参数了,停止使用case处理选项.
选项后紧跟参数值,一种方法是在case中对应选项后使用shift和读后一位参数的方法处理.更好的方法如 下:
getopt命令在处理选项和参数时非常方便.它对参数进行重新组 织,以便于解析
①.)命令格式
getopt可以接受任意形式的选项和参数列表,并自动将它们转换为适当的格式.
命令格式为: getopt options optstring parameters
选项字符串(opstring)用于定义命令行中的有效选项字母,以及哪些选项字母需要参数值.
需要使用set命令将现有的命令行选项和参数替换为getopt命令生成的 格式化形式.
但是getopt命令不能很好的处理带有空格的参数值,它将空格解析为参数分隔符,而不是将双引号引起来的两个 值合并成一个参数.解决办法如下:
getopts命令顺序的对现有的shell参数变量进行处理,每调用一次,只处理命令中检测到的参数中的一个.处理完所有参数后,以大于0的退出 状态退出.
非常适宜于在循环中解析所有命令行参数
格式为: getopts optstring variable
$optarg包含需要参数值的选项要使用的值,$optind包含getopts停止处理时在参数列表中的位置.
注意:当getopts处理时,会将选项前的-去掉,所以对应的case中不需要破折号.
好的特性:
①.)可以在参数值中包含空格
有一些字母选项具有标准含义.最好按照标准含义定义选项意义
-a –c –d –e –f –h –i –l –n –o –q –r –s –v- x –y
当需要在执行过程中获得执行脚本人员的输入,使用read命令
①.)基本读取
read命令接受标准输入或其他文件描述符输入.读入后将数据放入 一个标准变量中.
-p 允许在read命令行中直接指定一个提示.
可以指定多个变量,也可以不指定将放置在reply环境变量中)
使用-t指定一个计时器,计时数满还未输入,read返回一个非0的退出状态.
使用-n指定输入的字符个数,输入达到预定数目时,就自动结束输入
使用-s使输入不显示在终端例如输入密码)
最常用的方法是使用cat命令,并通过管道传给包含read的while语句.
具体步骤如下:
①.、首先我们在命令行运行程序需要借助jdk的环境依赖,打开jdk包.
是这样的
首先要保证你安装的是正确的,接着保证你的这个可执行文件有当前登录账号的执行权限,可以用ls -al查看一下
如果,你可以使用如下方式执行:
①.、./tlesp (如果后面又参数,你可以根据需要添加参数)
ps 命令的作用是显示进程信息的;
| 符号,是个管道符号,表示ps 和 grep 命令同时执行;
grep 命令是查找(Global Regular Expression Print),能使用正则表达式搜索文本,然后把匹配的行显示出来;
ps命令有一些参数:
-e : 显示所有进程
-f : 全格式
-h : 不显示标题
-l : 长格式
-w : 宽输出
a :显示终端上的所有进程,包括其他用户的进程.
r :只显示正在运行的进程.
u :以用户为主的格式来显示程序状况.
x :显示所有程序,不以终端机来区分.
结果信息从前到后依次是:
UID PID PPID C STIME TTY TIME CMD
Linux中的top命令显示系统上正在运行的进程.它是系统管理员最重要的工具之一.被广泛用于监视服务器的负载.top命令是一个交互命令.在运行top的时候还可以运行很多命令.
N – 以 PID 的大小的顺序排列表示进程列表
P – 以 CPU 占用率大小的顺序排列进程列表
M – 以内存占用率大小的顺序排列进程列表
q – 退出 top
h – 帮助
①. 系统运行时间和平均负载
第二行显示的是任务或者进程的总结.进程可以处于不同的状态.这里显示了全部进程的数量.除此之外,还有正在运行、睡眠、停止、僵尸进程的数量(僵尸是一种进程的状态).这些进程概括信息可以用't'切换显示.
下一行显示的是CPU状态. 这里显示了不同模式下的所占CPU时间的百分比.这些不同的CPU时间表示:
us, user: 运行(未调整优先级的) 用户进程的CPU时间
sy,system: 运行内核进程的CPU时间
ni,niced:运行已调整优先级的用户进程的CPU时间
wa,IO wait: 用于等待IO完成的CPU时间
hi:处理硬件中断的CPU时间
si: 处理软件中断的CPU时间
st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的).
此时此刻呢两行显示内存使用率,有点像'free'命令.第一行是物理内存使用,第二行是虚拟内存使用(交换空间).
物理内存显示如下:全部可用内存、已使用内存、空闲内存、缓冲内存.相似地:交换部分显示的是:全部、已使用、空闲和缓冲交换空间.
PID 进程ID,进程的唯一标识符
USER 进程所有者的实际用户名.
PR 进程的调度优先级.这个字段的一些值是'rt'.这意味这这些进程运行在实时态.
NI 进程的nice值(优先级).越小的值意味着越高的优先级.
VIRT 进程使用的虚拟内存.
RES 驻留内存大小.驻留内存是任务使用的非交换物理内存大小.
SHR SHR是进程使用的共享内存.
S 这个是进程的状态.它有以下不同的值:
D – 不可中断的睡眠态.
R – 运行态
S – 睡眠态
T – 被跟踪或已停止
Z – 僵尸态
%CPU 自从上一次更新时到现在任务所使用的CPU时间百分比.
%MEM 进程使用的可用物理内存百分比.
TIME+ 任务启动后到现在所使用的全部CPU时间,精确到百分之一秒.
COMMAND 运行进程所使用的命令.
注意 :不同发行版的top命令在各种细节有不同,如果发现不同时,请读你的帮助手册和命令内的帮助.)
tail -n 1000:显示最后1000行
tail -n +1000:从1000行开始显示,显示1000行以后的
head -n 1000:显示前面1000行
cat a.txt 显示文件
在根目录模糊查找名字含java的文件
服务器端常有很多压缩过的日志文件,当需要查找日志中某些特定信息的时候,为了避免解压文件,可以使用zgrep,zcat等命令查找、查看压缩文件中的信息
zgrep ' 输入你要查找的东东' /目录 /文件 .gz 或者.log (当日)
grep ' 输入你要查找的东东' /目录 /文件 .gz 或者.log (非当日的压缩文件)
rpm包安装的,可以用 rpm -qa 看到,如果要查找某软件包是否安装,用 rpm -qa | grep "软件或者包的名字"
以deb包安装的,可以用 dpkg -l 看到.如果是查找指定软件包,用 dpkg -l | grep "软件或者包的名字"
yum方法安装的,可以用 yum list installed 查找,如果是查找指定包,用 yum list installed | grep "软件名或者包名"
以上就是土嘎嘎小编为大家整理的linux接收命令运行相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!