Red Hat linux 6.5 学习使用笔记《四》bash特性详解

本文深入讲解了Bash shell的功能和特性,包括命令历史、补全、管道、重定向、别名、编辑、展开、文件名通配、环境变量、命令替换等内容。同时介绍了如何使用这些特性提高日常操作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《四》bash特性详解
shell是用户和计算机内核交互的桥梁,shell是内核的外壳
每一个shell终端都是一个进程,进程可以嵌套表示一个子进程(子shell)

进程:在每个进程看来,当前主机上只存在内核和当前进程
进程是程序的副本,进程是程序执行实例

1. 命令提示符

  • #:超级用户
  • $:普通用户
[kevin@localhost ~]$ 
[root@localhost ~]# 

2. bash功能:
1、命令历史、命令补全
2、管道、重定向
3、命令别名
4、命令行编辑
5、命令行展开
6、文件名通配
7、变量
8、编程

3. 命令行编辑快捷键:
Ctrl+a:跳到命令行首
Ctrl+e:跳到命令行尾
Ctrl+u: 删除光标至命令行首的内容
Ctrl+k: 删除光标至命令行尾的内容
Ctrl+l: 清屏

4. 查看命令历史:history
-c:清空命令历史
-d OFFSET [n]: 删除指定位置的命令
-w:保存命令历史至历史文件中
命令历史的使用技巧:
!n:执行命令历史中的第n条命令;
!-n:执行命令历史中的倒数第n条命令;
!!: 执行上一条命令;
!string:执行命令历史中最近一个以指定字符串开头的命令
!$:引用前一个命令的最后一个参数;
Esc, .
Alt+.

[root@localhost ~]# history
  436  mkdir -p fk newk6
  437  ls
  438  tree /root
  439  tree
[root@localhost ~]# history -d 438
  436  mkdir -p fk newk6
  437  ls
  438  tree
  439  ls
  [root@localhost ~]# !437
ls
anaconda-ks.cfg  install.log    testfile     upgrade.log.syslog   date.txt   install.log.syslog  upgrade.log

...................
...................
...................
[root@localhost ~]# history
  447  history -w
  448  history
  449  ls
  450  ls -l
  451  !hi
  452  history
[root@localhost ~]# !-3
ls -l
总用量 88
-rw-------. 1 root root  1537 12月  4 23:11 anaconda-ks.cfg
-rw-r--r--. 1 root root    20 11月 11 11:52 date.txt
-rw-r--r--. 1 root root 54203 12月 12 2012 install.log
-rw-r--r--. 1 root root 11287 12月  4 23:08 install.log.syslog
-rw-r--r--. 1 root root    88 12月  6 15:23 testfile
-rw-r--r--. 1 root root    36 11月 11 21:07 upgrade.log
-rw-r--r--. 1 root root     0 11月 11 21:07 upgrade.log.syslog
[root@localhost ~]# ls date.txt 
date.txt
[root@localhost ~]# touch !$
touch date.txt
[root@localhost ~]# !!
touch date.txt

5. 环境变量:
PATH:命令搜索路径
HISTSIZE : 命令历史缓冲区大小【默认一千条历史命令】

6. 命令补全,路径补全
命令补全:搜索PATH环境变量所指定的每个路径下以我们给出的字符串开头的可执行文件,如果多于一个,两次tab,可以给出列表;否则将直接补全;
路径补全:搜索我们给出的起始路径下的每个文件名,并试图补全;

7. 命令别名

[root@localhost ~]# help alias

alias: alias [-p] [name[=value] … ]
定义或显示别名。

-p 打印所有别名定义一个可重用的格式

在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;

ualias CMDALIAS

不显示别名:\CMD,比如:ls默认显示颜色,ls则在命令行不显示颜色

[root@localhost ~]# alias ls
alias ls='ls --color=auto'
[root@localhost ~]# \ls
[A????????	 date.txt     install.log.syslog  upgrade.log
anaconda-ks.cfg  install.log  testfile		  upgrade.log.syslog

8. 命令替换:
$(COMMAND), 反引号:‘COMMAND’
把命令中某个子命令替换为其执行结果的过程

[root@localhost ~]# touch file-`date '+%y-%m-%d-%H-%M-%S'`.txt 
[root@localhost ~]# ls
file-16-12-06-20-16-23.txt 

[root@localhost ~]# touch file-$(date '+%y-%m-%d-%H-%M-%S').txt 
[root@localhost ~]# ls
file-16-12-06-20-18-25.txt 

9. bash支持的引号:
``: 命令替换
“”: 弱引用,可以实现变量替换
‘’: 强引用,不完成变量替换

10. 文件名通配, globbing
*: 任意长度的任意字符
?:任意单个字符
[]:匹配指定范围内的任意单个字符
[abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z]
[:space:]:空白字符
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]: 大写字母
[:alpha:]: 大小写字母
[:digit:]: 数字
[:alnum:]: 数字和大小写字母
【 可以再命令man 7 glob查到】
【也可以在tr --help中查到】

  [:alnum:]	所有的字母和数字
  [:alpha:]	所有的字母
  [:blank:]	所有呈水平排列的空白字符
  [:cntrl:]	所有的控制字符
  [:digit:]	所有的数字
  [:graph:]	所有的可打印字符,不包括空格
  [:lower:]	所有的小写字母
  [:print:]	所有的可打印字符,包括空格
  [:punct:]	所有的标点字符
  [:space:]	所有呈水平或垂直排列的空白字符
  [:upper:]	所有的大写字母
  [:xdigit:]	所有的十六进制数
  [=字符=]	所有和指定字符相等的字符

11. [^]: 匹配指定范围之外的任意单个字符

[root@localhost ~]# ls file*
file1  file-16-12-06-20-18-23.txt  file2  file3  file4
[root@localhost ~]# ls file[[:digit:]]
file1  file2  file3  file4
[root@localhost ~]# 
[root@localhost ~]# ls [[:alpha:]]* 
file-16-12-06-20-18-23.txt  file4   date.txt     file2     file1  file3    
[root@localhost ~]# ls [^[:alpha:]]*
123.txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值