现在的位置: 首页 > 综合 > 正文

shell收集

2014年03月19日 ⁄ 综合 ⁄ 共 2931字 ⁄ 字号 评论关闭

1.1   bash版本

$echo $BASH_VERSION 

$bash –v

1.2   用内置的setshopt命令设置bash选项

内置set格式

 set –o option #  turn on the option

 set +o option #  turn off the option

 set – [a-z]    #  abbreviation for an option ; the minus turns it on .

set + [a-z]    #  abbreviation for an option ; the minus turns it on .

例: $ set –o   # 列出所有当前设置的和复位的选项

     $ set –o noclobber # 设置noclobber选项,禁止你在重定向时重写文件。没有设置noclobber>号后面的文件若存在,会被覆盖,不存在则会被创建。

内置shopt2.x以上版)

Shoptshell options)内置命令是set命令的一个替代,但它为配置shell增加了更多的选项。

$shopt –p # 打印所有可获得的选项设置

$shopt –s # 显示所有已设置的选项

$shopt –u # 显示所有复位(未设置)的选项

$shopt –s cdspell # 设置cdspell选项

$shopt –u cdspell # cdspell选项复位

1.3   提示符

用专用转义序列设置提示符:

反斜杠序列      含义

"u               当前的用户名

"h               主机名

"w               当前的工作目录

"W               当前工作目录的基名

"t                当前时间是HH:MM:SS格式   

"d                日期是“星期 日”的格式(如Tue May 26

"s                shell的名字

"#                命令编号

"!                 命令的历史编号

"$                 如果有效的UID0,是一个#号,否则是$

""                 反斜杠

"v                 bash的版本号,如2.03

"V                 bash的发行号和路径级,如2.03.0

例: $ PS1=”["u@"h "w ]"$” 

$ PS1=”"W:"d> ”

$PS1=” $(uname -n) > ”

1.4   命令行

 

处理命令的顺序:

别名关键词(如iffunctionwhileuntil---函数---内置命令----可执行文件和脚本

内置命令属于shell的一部分(内置在系统中)。如果用一个简单文件名作为命令,shell将首先检查它是否是某条内置命令的名字。如果是内置命令名称,那么shell将其作为调用进程的一部分执行,也就是说shell并不会创建新的进程执行内置命令。shell并不需要在文件结构中搜索内置命令程序,这是因为shell可以立即访问它们。

如果用户输入的简单文件名不是内置命令,shell将使用PATH变量作为指南,搜索目录结构,以查找用户想要的程序。如果shell找到这个程序,那么它将创建一个新的进程以执行这个程序。

 

内置Type命令判断命令类型;

$ type pwd

 pwd is a shell builtin

$ type clear

clear is /usr/bin/clear

$ type if

 if is a shell keyword

内置help命令列出所有内置命令或一个特定内置命令的描述;

$ help

$ help help

$ help pwd

改变命令行的处理顺序

bash提供了3个内置命令可忽视命令行处理顺序: commandbuiltinenable

command内置命令将别名和函数从处理顺序中去掉,只处理搜索路径中的内置命令和可执行程序;

builtin 命令只查找内置命令,忽略在路径中找到的函数和可执行程序;

enable可以打开和关闭内置命令,默认时,内置命令是打开的,使用-n开关可以关闭内置命令。不带任何参数,enable命令将列出所有的内置命令。

$ enable –n test   # 关闭内置命令test

$ function cd { builtin cd ; echo $PWD; } # 防止引起无穷的递归循环

退出状态:

退出状态为0,表示命令执行成功;非0,表示命令执行失败。

如果shell没有找到命令,返回的状态是127,如果是一个致命的信号引起命令终止,退出状态是128加上引起它死亡的信号的编号。

$ grip ellie /etc/passwd

 bash : grip : command not found

$ echo $?

 127

$ find / -name core ^C 

$ echo $?

 130

命令的有条件执行:&&||

 

1.5   作业控制

缺省时,已经设置作业控制(一些老版本的UNIX不支持这个特性),如果没有设置,可以用如下命令重置:

set –m  # set job control in the .bashrc file

set –o monitor # set job control in the .bashrc file

例:

-bash-3.00$ vi       # 按下^Z(control -Z)vi回话暂停

[1]+ Stopped                 vi

-bash-3.00$ sleep 25&

[2] 4354            # 标记[2]表示这是第2个在后台运行的作业,它的PID4354

-bash-3.00$ jobs      #列出所有正在运行的作业

[1]+ Stopped                 vi

[2]- Running                 sleep 25 &

-bash-3.00$ jobs –l    #列出所有正在运行的作业及其作业号,进程号

[1]+ 4353 Stopped (user)          vi

[2]- 4354 Running                 sleep 25 &

-bash-3.00$ jobs %%   #显示最近一个放入作业表中的作业

[1]+ Stopped                 vi

作业控制命令

命令             含义

jobs            列出所有作业

^Z             终止(暂停)作业

bg             启动被终止的后台作业

fg              将后台作业调入前台

stop            暂停一个后台作业 

sty tostop       当后台作业向终端发送输出时就暂停它

kill             向指定作业发送kill信号

wait [n]         等待一个指定的作业并返回它的退出状态,这里n是一个PID或作业号

jobs命令的参数   含义

%n             作业号n

%string          string开头的作业名

%string       作业名包含string

%%            当前作业

%+             当前作业

-r              列出所有运行的作业

-s              列出所有暂停的作业

 

抱歉!评论已关闭.