Linux(五)第五章理解shell

》shell的类型
在/etc/passwd中第七个字段列出了默认的shell程序

使用软连接将默认的系统shell设置为bash shell
示例:
ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Oct 15  2017 /bin/sh -> bash

》shell的父子关系
所启用的默认的交互shell,是一个父shell;
在CLI提示符后输入/bin/bash命令或其他的等效bash命令时,会创建一个新的shell程序,被称为子shell。

ps -f 显示shell进程

ps --forest 展示了这些子shell之间的嵌套关系

bash中可用的命令行参数:P90

》进程列表
可以在一行中指定要依次运行的一系列命令,只需要在命令之间加入分号(;)即可。
示例:
pwd ; ls ; cd /etc ; pwd ;ls ;echo $BASH_SUBSHELL

命令列表要想成为进程列表,这些命令需用包含在括号里
(pwd ; ls ; cd /etc ; pwd ;ls ;(echo $BASH_SUBSHELL))

echo $BASH_SUBSHELL:返回值大于0,则表示存在子shell

》探索后台模式
sleep 3 说明:将会话暂停3秒,然后返回shell提示符

将命令置于后台模式,可以在命令末尾加上字符&
示例:
sleep 3&

再用ps -f命令查看

jobs:用来显示后台作业信息,可以显示出当前运行在后台模式中的所有用户的进程(作业)

[1]+  Running                 sleep 3 &
表示运行状态

[1]+  Done                    sleep 3
表示作业完成,Done表示结束状态

创建备份文件是有效利用后台进程列表的实用的例子:
(tar -cf Rich.tar /home/rich ;tar -cf My.tar /home/christine)&

》协程
在后台生成一个子shell,并在这个子shell中执行命令

示例:
coproc sleep 3
或者
coproc My_job { sleep 3; }

注意:生成子shell的成本不低,速度慢。

》理解shell的内建命令

》外部命令(非内建命令)
也称为文件系统命令,是存在于bash shell之外的程序。
外部命令通常位于/bin、/usr/bin、/sbin、/usr/sbin中

ps就是一个外部命令。可以使用which和type命令找到它
示例:
[root@joincomputer usr]# which ps
/usr/bin/ps
[root@joincomputer usr]# type -a ps
ps is /usr/bin/ps

当外部命令执行时,会创建出一个子进程。这种操作称为衍生。

》内建命令
区别在于:内建命令不需要使用子进程来执行

cd和exit命令都内建于bash shell 。可以用shell命令来了解某个命令是否是内建

[root@joincomputer usr]# type cd
cd is a shell builtin

要查看命令的不同实现,使用-a参数

[root@joincomputer usr]# type -a cd
cd is a shell builtin
cd is /usr/bin/cd

 type -a显示了每个命令的两种实现;which命令只显示出外部命令文件
 
》history命令 
查看最近使用过的命令列表
》!!
唤出刚刚用过的那条命令来使用(会显示出刚刚的命令,然后再执行)

注意:命令历史纪录被保存在隐藏文件.bash_history中,位于用户的主目录内。历史纪录是先放在内存中,当shell退出时才被写入历史文件

shell推出前强制写入.bash_history中,可以使用history -a命令(也可以理解为命令保存)

唤回历史纪录中的任意一条命令,输入!和编号
示例:
  359  cd /
  360  lsof -i:22
  361  cd usr/
  362  ls
  363  yum install lsof
  364  lsof -i:22
  365  lsof -i:8989
  366  lsof -i:3306
  367  which ps
  368  type -a ps
  369  clear
  370  type -a cd
  371  type cd
  372  pwd
  373  history 
  374  cat .bash_history
  375  cd /root
  376  ls
  377  du -sh*
  378  du -sh *
  379  cat .bash_history
  380  history -a
  381  cat .bash_history
  382  history 
[root@joincomputer ~]# !359
cd /
[root@joincomputer /]# 

》命令别名
查看当前可用的别名:alias -p
创建属于自己的别名:alias li='ls -li'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值