bash的基础特性(第二周作业2、3)

bash:

对于一个操作系统来说,shell相当于内核kernel外的一层外壳,作为用户接口。
一般来说,操作系统的接口分为两类:
 CLI:command line interface 命令行接口
  常见的有:shell、csh、ksh、zsh、bash、tcsh
 GUI: graphical user interface 图形化用户接口
  常见的有:Gnome 、KDE、 Xfce

bash及其特性:
1、bash是指一个可执行程序,一个用户的工作环境。
2、在每个shell下可以再打开一个shell,新打开的shll可以成为子shell,每一个shell之间是相互独立的。
3、可以使用pstree命令查看当前shell下的子shell个数。

bash的基础特性:
1、命令历史:
shell进程会在其会话中保存此前用户提交执行过的命令:

[root@centos7mage app]# history

定制history的功能,可通过环境变量实现:
 HISTSIZE:shell进程可保留的命令历史的条数:

[root@centos7mage app]# echo $HISTSIZE
1000

HISTFILE:持久保存命令历史的文件

[root@centos7mage app]# echo $HISTFILE
/root/.bash_history

HISTFILESIZE:文件保存的命令历史的条数

[root@centos7mage app]# echo $HISTFILESIZE
1000

调用历史命令列表中的命令:
!#:再一次执行历史列表中的第#条命令;
!!:再一次执行上一条命令;
!SREING:再一次执行命令历史列表中最近一个以STRING开头的命令。

条用上一条命令的最后一个参数:
快捷键:ESC+
字符串:!$

控制命令历史记录的方式:
 环境变量:HISTCONTROL

[root@centos7mage app]# echo $HISTCONTROL
ignoredups  忽略重复命令(ignorespace:忽略以空格字符开头的命令; ignoreboth:以上两者同时生效)

修改变量的值:

[root@centos7mage app]# HISTCONTROL=ignorespace
[root@centos7mage app]# echo $HISTCONTROL
ignorespace

2、命令补全
  shell程序在接收到用户执行命令的要求,分析完成后,最左侧的字符串会被当做命令;
  命令处理机制:
   查找内部命令;
   根据PATH环境变量中设定的目录,自左而右之歌搜索目录下的文件名;
  给定的打头字符串如果能唯一标识某命令程序文件,则直接补全;
  若给定的打头字符串不能唯一标识某命令程序文件,再敲击tab键一次,会给出列表;

3、路径补全
 在给定的起始路径下,与对应路径下的打头字符串来匹配路径下的每个文件;
 tab:
  如果能唯一标识,则直接补全;
  否则,再一次tab,给出列表;

4、命令行展开
~:自动展开为用户的家目录,或指定的用户的家目录;
{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
 例如:/tmp/{a,b} 相当于/tmp/a /tmp/b
 例一:如何创建/tmp/x/y1 , /tmp/x/y2 , /tmp/x/y1/a , /tmp/x/y1/b

[root@centos7mage tmp]# mkdir -pv /tmp/x/{y1/{a,b},y2}

例二:如何创建a_c , a_d , b_c , b_d

[root@centos7mage tmp]# mkdir -pv {a,b}_{c,d}

例三:创建如下目录结构:
/tmp/mysysroot/
├── bin
├── etc
│ └── sysconfig
│ └── network-scripts
├── sbin
├── user
│ ├── bin
│ ├── lib
│ ├── lib64
│ ├── local
│ │ ├── bin
│ │ ├── etc
│ │ ├── lib
│ │ └── sbin
│ └── sbin
└── var
├── cache
├── log
└── run

[root@centos7mage tmp]# mkdir -pv /tmp/mysysroot/{bin,sbin,etc/sysconfig/network-scripts,user/{bin,sbin,local/{bin,sbin,etc,lib},lib,lib64},var/{cache,log,run}}
[root@centos7mage tmp]# tree /tmp/mysysroot/
/tmp/mysysroot/
├── bin
├── etc
│   └── sysconfig
│       └── network-scripts
├── sbin
├── user
│   ├── bin
│   ├── lib
│   ├── lib64
│   ├── local
│   │   ├── bin
│   │   ├── etc
│   │   ├── lib
│   │   └── sbin
│   └── sbin
└── var
    ├── cache
    ├── log
    └── run
19 directories, 0 files

5、命令的执行状态结果
 命令执行的状态结果,bash通过状态返回值来输出此结果:成功为0、失败为1-255。
 命令只想完成后其状态返回值保存在bash的特殊变量$?中:

[root@centos7mage tmp]# ls /etc
[root@centos7mage tmp]# echo $?
0
[root@centos7mage tmp]# ls /etccccc
ls: cannot access /etccccc: No such file or directory
[root@centos7mage tmp]# echo $?
2
[root@centos7mage tmp]# lss /etc
-bash: lss: command not found
[root@centos7mage tmp]# echo $?
127

6、引用命令的执行结果:
$(COMMAND)

[root@centos7mage ~]# mkdir $(date +%Y-%m-%d)
[root@centos7mage ~]# ls
2018-10-11

强引用:''
弱引用:""
命令引用:``

7、快捷键:
Ctrl + a:跳转至命令行首部;
Ctrl +d:跳转至命令行尾部;
Ctrl +u:删除命令行首到光标之间的所有字符;
Ctrl +k:删除光标所在处至行位的所有字符;
Ctrl +l:清屏,相当于clear命令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值