Linux bash 的基础特性

本文详细介绍了Linux bash的各种基础特性,包括命令历史、命令补全、命令行展开、执行状态结果、引用、变量类型、快捷键、通配符机制、IO重定向、管道符、hash命令、多命令执行、逻辑运算、配置文件以及算术运算。通过这些特性,用户能更高效地操作和交互于Linux命令行环境。
摘要由CSDN通过智能技术生成

bash基础特性之一:命令历史

命令历史是指:shell进程会其会话中保存此前用户提交执行过的命令。

命令:
# history

history 功能定制:
# 定制history的功能,可通过如下环境变量实现:
	1、HISTSIZE:shell进程可保留的命令历史的条数
	2、HISTFILE:持久保存命令历史的文件
		.bash_history:存放于 home directory 下
	3、HISTFILESIZE:命令历史文件的大小
# 可修改环境变量的值(注意只对当前shell有效):
	NAME='VALUE'              
# 修改环境变量示例:
	~# export HISTSIZE=10000
	~# echo $HISTSIZE
	10000
命令用法:
	history [-c] [-d 偏移量] [n] 
	或 history -anrw [文件名] 
	或 history -ps 参数 [参数...]

常用选项:
	-c: 清空命令历史
	-d offset:删除指定命令历史
		# history -d  999 6 从history历史中第999条开始,删除6条命令
	-r: 从文件读取命令历史至历史列表中
	-w:把历史列表中的命令追加至历史文件中
	-a:把历史列表中的命令追加至历史文件中
	history #:显示最近的#条命令	
调用命令历史列表中的命令:
	!#:再一次执行历史列表中的第#条命令
	!!:再一次执行上一条命令
	!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令
		注意:命令的重复执行有时候需要依赖于幂等性(重复执行多次,结果是一样)

示例:
# cat 1.txt 
1
2
# !!
cat 1.txt 
1
2
# history 
1  history 
2  cat /etc/passwd
 3  cat /etc/shadow
4  cat 1.txt 
5  history 
# !4
cat 1.txt 
1
2
# !cat	
cat 1.txt 
1
2
调用上一条命令的最后一个参数:
	快捷键:ESC, .   
		# 按一下 ESC 后,然后再按 . ,就会调用上一条命令的最后一个参数(很常用)
	字符串:!$  

示例:
# ls /etc/systemd/
bootchart.conf  journald.conf  logind.conf ...
# ls !$                   # 调用上一条命令的最后一个参数
ls /etc/systemd/
bootchart.conf  journald.conf  logind.conf ...
# ls /etc/systemd/        # 按 “ESC .” 键调用上一条命令的最后一个参数
bootchart.conf  journald.conf  logind.conf ...
控制命令历史记录的方式:
	环境变量:HISTCONTROL
		ignoredups:忽略重复的命令
		ignorespace:忽略以空白字符开头的命令
		ignoreboth:以上两者同时生效

示例:
# echo $HISTCONTROL
ignoreboth
# export HISTCONTROL=ignoredups
# echo $HISTCONTROL
ignoredups

bash基础特性之二:命令或路径补全

  • 命令补全
shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符串会被当作命令。

命令查找机制:
	1、查找内部命令。
	2、根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名。
	
TAB键动作如下:
	1、给定的打头字符串如果能惟一标识某命令程序文件,按TAB键则直接补全。
	2、不能惟一标识某命令程序文件,再击TAB键一次,会给出列表。
	
PATH环境变量查看:
	# echo $PATH
	/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • 路径补全
在给定的起始路径下,以对应路径下的打头字串来逐一匹配起始路径下的每个文件。
			
TAB键动作如下:
	1、如果能惟一标识,则直接补全。
	2、否则,再一次TAB,给出列表。

bash基础特性之三:命令行展开

~:自动展开为用户的家目录,或指定的用户的家目录		
{ }:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径
	# 例如:/tmp/{a,b} 相当于 /tmp/a 和 /tmp/b
示例:
# mkdir -pv /tmp/x/{y1/{a,b},y2}
mkdir: created directory '/tmp/x'
mkdir: created directory '/tmp/x/y1'
mkdir: created directory '/tmp/x/y1/a'
mkdir: created directory '/tmp/x/y1/b'
mkdir: created directory '/tmp/x/y2'

# mkdir -v {a,b}_{c,d}
mkdir: created directory 'a_c'
mkdir: created directory 'a_d'
mkdir: created directory 'b_c'
mkdir: created directory 'b_d'

tree 命令介绍:

tree:tree [options] [directory]
	-L level:指定要显示的层级

示例:
# tree /tmp/
/tmp/
├── systemd- ...
│   └── tmp
└── x
    ├── y1
    │   ├── a
    │   └── b
    └── y2
7 directories, 0 files

bash基础特性之四:命令的执行状态结果

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

示例:
# cat 1.txt           # 命令执行成功
1
2
# echo $?             # 状态返回值为 0,达标执行成功
0
# cat 1.txt.txt       # 命令执行失败
cat: 1.txt.txt: No such file or directory
# echo $?             # 状态返回值非 0 ,代表命令执行失败
1
  • 大家注意区分 “命令的执行结果” 和 “执行命令的状态结果
命令的执行结果引用,有如下两种格式:
1、$(COMMAND)
2、`COMMAND`  (反引号,不是单引号,是 TAB 键上的反引号)

示例:
# cat 1.txt                  # 执行命令
1
2
# echo $(cat 1.txt)          # 引用命令执行结果
1 2
# echo `cat 1.txt`           # 引用命令执行结果
1 2
# echo $?                    # 输出执行命令的状态结果
0

bash基础特性之五:引用

引用一般分为以下三种:
	1、强引用:''
	2、弱引用:""
	3、命令引用:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值