技术源于努力
努力实现梦想

bash特性:命令历史记录、命令别名、命令行操作、文件名通配、命令替换和补全 linux入门

在linux中有一个特别牛逼的shell,也是安装操作系统后,会默认打开的shell,就是bash,但是shell不仅仅有bash
shell种类:bash、zsh、sh、ksh、csh、bsh、tcsh
shell有这么多的种类,不是所有的种类的shell都可以使用,如果要使用zsh,就需要先安装zsh,然后才能使用zsh
商业shell:ksh
免费shell:bash、sh、tcsh定义每个用户使用的不同的shell,在/etc/passwd中进行定义:

  1 root:x:0:0:root:/root:/bin/zsh
  2 bin:x:1:1:bin:/bin:/sbin/nologin

在该文件的最后一列就是定义用户使用shell的路径:root账号的bash是/bin/bash 而用户的bash路径是:/usr/bin/bash
bash的特性:
1、支持命令历史:在linux中键入的命令历史都会记录在该用户的.bash_history文件中,使用history进行操作核实
history 查看命令历史
history –c 清空命令历史,这里的清空只是清空缓存中的命令历史,~/.bash_history还是存在的
history –d 10 删除第10个命令
history –d 30 10 删除第30开始向后10个命令
history –w 保存命令历史至历史文件中,默认在退出shell的时候也会自动保存到.bash_history文件中。
HISTSIZE=num 设置在内存中缓存num条命令,用户命令历史默认是保存在内存的缓冲区的,但是这个缓存区不是无限大,可通过echo $HISTSIZE进行查看。
日志命令是可以服用的,也就是说保存在缓存中的日志是可以调出来重新执行的,而不需要再手动输入,使用!来调用
!num 执行命令历史中的第num条命令
!-num 执行命令历史中倒数第num条命令
!! 执行上一次命令
!string 执行命令历史中最近一个以指定string开头的命令,例如:!v 那么就调出最近执行的、以v开头的命令
command !$ 引用前一个命令的最后一个参数

[root@ebs-44991 bdidq]# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
From 192.168.243.124 icmp_seq=1 Destination Host Unreachable
^C
--- 192.168.1.1 ping statistics ---
1 packets transmitted, 0 received, +4 errors, 100% packet loss, time 2999ms pipe 4
[root@ebs-44991 bdidq]# echo !$ 这里就引用了上一条命令的参数
echo 192.168.1.1
192.168.1.1

command a/t+. 引用前一个命令的最后一个参数,在远程终端不支持,只在tty中支持
2、命令别名(alias):我们在Windows下用惯了cls来清屏,但是在linux下用的clear来清屏,我们为了方便就给clear取个别名即可,别名的操作使用alias进行操作
alias:查看这个shell中定义了的别名

[root@ebs-44991 bdidq]# alias
alias cp='cp -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

alias 别名=’command 设置别名 [option] [arguments]’

alias cls=clear
alias rm=’rm –I’

unalias 别名 取消别名

unalias cls 这样就取消了cls的别名设置
unalias rm 这样就取消了rm别名的别名设置

注意:
*我们定义的别名只在当前shell的生命周期中有效,别的shell不能用
*在shell中定义了别名,这个别名和命令名重名的时候,我们要向直接使用命令本身而非别名的时候,我们可以这样\+COMMAND,比如上边的rm,我们设置别名后执行rm实际上执行的是rm –i 而我们只需执行rm的时候就可以用>\rm即可
3、命令行编辑:
ctrl+a命令光标跳转到行首
ctrl+e 命令光标跳转到行尾
ctrl+u 删除光标至命令行首的内容
ctrl+k 删除光标至命令行尾的内容
trl+左右箭头 可以向左或向右跳转一个单词
ctrl+l 清屏
4、命令行展开:

同时在/目录下创建几个目录,test1,test2,test3,test4
mkdir /test{1,2,3,4} //这里要取相同的部分,和数学中的乘法展开是一样的

5、文件名通配符:又可以叫文件名展开。bash支持的有~展开,命令展开,和这里的文件名展开不一样
文件的通配需要通配符:

*:匹配任意长度的任意字符
?:匹配单个字符
[]:匹配指定范围内的任意单个字符
		[ABC]:从ABC随便选择一个字符
		[a-z]:从a-z中任意选择一个字符
		[A-Z]:从大写中任意选择一个字符
		[0-9]:从数字中任意选择一个字符
		[A-Za-z]:从大小写中任意选择一个字符
		[0-9a-zA-Z]:从数字或者字母中任意选择一个字符
		[^]:匹配指定范围之外的任意单个字符
		[:space:]:空白字符
		[:punct:]:标点符号
		[:lower:]:小写字母
		[:upper:]:大写字母
		[:alpha:]:大小写字母
		[:digit:]:数字
		[:alnum:]:数字和大小写字母
通过man 7 glob来获取这些列表
注意:在[:alpha:]本就表示一个集合,在这两边再加上[]表示的一个取值集合,同时这个方式也支持取反,就是在[^[:alpha:]],表示非字母
例如:ls [a-zA-Z]*[0-9] 以字符开头-中间是任意数据,结尾是数字的表示
ls [^0-9]* 以非数字开头的文件表示历史
touch ‘a b’ 创建一个包含空白字符的文件,还有一种写法touch “a b”
ls [[:alpha:]]*[[:space:]]*[[:alpha:]] 以字母开头,以字母结尾,中间包含空格的表示
ls *[^[:space:]]*[0-9] 显示所有以数字结尾且文件名不包含空白的文件
ls *[^[:alnum:]]* 显示文件名中包含了非字母或者数字的特殊符号的文件

6、命令替换:把命令中某个子命令替换为其执行结果的过程,通常用的是$(COMMAND)或者用反引号`COMMAND`(波浪线~同一个键)

例如:现在需要显示一个当前位置的命令
echo “the current directory is $(pwd) .”
echo “the current directory is `pwd` .”
例如:现在需要创建一个文件,但是这个文件的名字是:File2-当前时间特殊格式年-月-日-时-分-秒.txt
touch file1-“$(date +%F-%H-%M-%S).txt”
touch file1-“`date +%F-%H-%M-%S`.txt”

6、命令补全:命令补全就是在命令行下给了命令开头部分用tab键补全
7、路径补全:路径补全就是在路径下用打头部分用两次tab键补全
注意:
“:命令替换,于波浪线~同一个键,这里是反引号,表明要执行引号内的命令
“”:弱引号,可以实现变量的替换,及将变量名替换成变量值
‘’:强引用,就是和冒号“”同一个键,不完全变量替换

赞(0) 感谢小主打赏
未经允许不得转载:新域软件科技 » bash特性:命令历史记录、命令别名、命令行操作、文件名通配、命令替换和补全
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏