shell基础语法备忘录二

时间:2021-06-19 19:36:57   收藏:0   阅读:0

2021-06-19

关键字:


 

1、shell中的文件描述符

与Linux文件系统一样,shell中也有文件描述符的概念,且每一个shell进程中都默认有三个已打开的文件描述符。它们分别代表“标准输入”、“标准输出”与“错误输出”,对应的文件描述符号分别为 0、1、2。描述符号3及以后的正整数值可自由使用。

 

从一个shell中以新进程的形式启动的子shell会继承父shell中的三个默认文件描述符。

 

shell中文件描述符的使用通常是在需要重定向流的走向时。重定向语法格式如下所示:

#output
[n]>

#input
[n]<

n代表非负整数值。n是可选的,如果不填,则输出时代表标准输出(即描述符为1),输入时代表标准输入(即描述符为0),以下是一些示例语句:

#将命令执行结果保存到文件
ls -l /etc > ls.record

#将命令执行结果输出到屏幕,错误信息保存到文件
ls -l /etc 2> ls.error

#将命令执行结果及错误信息均保存到文件
ls -l /etc > ls.record 2> ls.error

#将标准输出和错误输出同时重定向,与上一条命令等价
ls -l /etc &> ls.output

#追加内容到已存在文件
ls -l /etc 1>> ls.record #从指定文件中查找内容
grep name 0< names.txt #与上一条命令等价 grep name < names.txt

 

如果想快速创建一个空文件,则可以使用以下命令:

> new.file
:> new.file

 

 

2、将错误输出重定向到标准输出

语法如下:

ls -l /etc > ls.record 2>&1

 

 

3、半永久式重新分配文件描述符

使用exec命令可以在本shell登录中永久改变描述符流向,具体如下表所示:

重定向方式 含义
exec 2> file 将所有命令的错误输出重定向到文件file
exec n< file 以只读的方式打开名称为file的文件,并使用文件描述符n,n是大于3的整数。
exec 2> file 以写的方式打开名称为file的文件,并使用文件描述符n。
exec n<>file 以读写的方式打开文件file,并使用文件描述符n。
exec n>&- 关闭文件描述符n
exec n>&m 使得文件描述符n成为文件描述符m的副本,即将文件描述符m复制到n
   
   

 

4、根据进程名查询运行状态及进程号

使用 pidof 命令可以实现此目的。具体语法如下:

pidof [option] program

option可以不填。一般的用法是pidof 后加要查询的进程名称,查询成功返回0值且打印相应进程号,多个进程号以制表符隔开。若指定进程未在运行则返回1值。

 

 

5、查询当前shell的层级

在shell中可以嵌套登录到另一个shell,通过以下命令可以查询到当前的shell登录级数:

echo $SHLVL

 

 

6、临时开启子shell执行命令

可以使用圆括号来实现,圆括号中的所有命令均会在子shell中以新进程的身份执行。具体语法如下所示:

(command1;command2;command3...)

(
command1
command2
...
)

 

 

7、bash shell的常用内部命令

如下表:

内部命令 含义
. 加载库脚本文件进本shell中执行。简单理解成是读取shell脚本中的内容进来本shell中执行即可。
alias 设置命令别名。函数是将一组命令打包设置一个别名,alias则是针对一个命令打包设置别名。
bg 将作业置于后台运行。
cd 改变当前工作目录。
echo 打印指定的文本。
eval 将参数作为shell命令来执行。用引号包括住命令及其参数。
exec 将指定的程序取代shell或者永久改变当前shell的流方向。
exit 退出shell
export 将变量声明为环境变量。
fc 与命令历史一起运行。
fg 将作业置于前台运行。
getopts 处理参数中的选项内容。
history 显示命令历史
jobs 显示在后台运行的作业。
kill 向进程发送信号。
logout 从shell中注销。
pwd 显示当前的工作目录
set 设置shell环境变量。
shift 变换命令行的参数,将参数往左移一位,最左边的参数将被删除。
   

 

 

8、bash shell中的常用保留字段

如下表:

保留字段 含义
!  

:

 
break  
case  
continue  
declare  
do  
done  
elif  
else  
esac  
for  
let  
local  
read  
return  
test  
then  
until  
wait 等待后台作业完成。
while  

 

 


 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!