热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LinuxShell编程(1)Bash的基本功能:别名、快捷键、历史命令、输出重定向、管道符、Shell中特殊符号

Bash的基本功能一、命令别名1.命令生效的顺序执行使用绝对路径或相对路径执行的命令执行别名执行Bash内部命令执行按照$PATH环境变量定义的目录顺序查找到的第一个命令2.查看别
Bash 的基本功能

一、命令别名

1. 命令生效的顺序

  1. 执行使用绝对路径或相对路径执行的命令
  2. 执行别名
  3. 执行Bash内部命令
  4. 执行按照 $PATH 环境变量定义的目录顺序查找到的第一个命令

2. 查看别名

命令格式

alias [别名]

实例

[vagrant/tmp] ]$alias
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -AlhF --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
[vagrant/tmp] ]$alias ls
alias ls='ls --color=auto'
[vagrant/tmp] ]$alias cp
-bash: alias: cp: not found

3. 设置别名

命令格式

alias 别名='命令 参数'

实例

[vagrant/tmp] ]$alias cat='cat -n'
[vagrant/tmp] ]$alias less='less -mN'
[vagrant/tmp] ]$alias
alias cat='cat -n'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias less='less -mN'
alias ll='ls -AlhF --color=auto'
alias ls='ls --color=auto'
alias vi='vim'

设置别名永久生效

在上面的命令行中那样设置别名,别名只能在当前bash中使用,且一旦退出登录,别名便会失效。
若要使别名永久生效,需要将该别名添加到 ~/.bashrc 配置文件中。

  • ~/.bashrc 文件

# some more ls aliases
alias grep='grep --color=auto'
alias ll='ls -AlhF --color=auto'
alias la='ls -A'
alias l='ls -CF'
alias vi='vim'
alias cat='cat -n'
alias less='less -mN'

4. 删除别名

命令格式

unalias 别名

实例

[vagrant/tmp] ]$alias
alias cat='cat -n'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias less='less -mN'
alias ll='ls -AlhF --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
[vagrant/tmp] ]$unalias grep
[vagrant/tmp] ]$unalias cat
[vagrant/tmp] ]$alias
alias l='ls -CF'
alias la='ls -A'
alias less='less -mN'
alias ll='ls -AlhF --color=auto'
alias ls='ls --color=auto'
alias vi='vim'

删除别名永久生效

与设置别名一样,若要永久删除别名,将该别名从 ~/.bashrc 配置文件中删除即可。

二、常用快捷键

Ctrl + c :强制停止当前命令

Ctrl + l :清屏

Ctrl + a :光标移到命令行首

Ctrl + e :光标移到命令行尾

Ctrl + u :从光标所在位置删除到行首

Ctrl + z :发命令放入后台执行

Ctrl + r :在命令历史中搜索

三、历史命令

1. 命令格式

history [选项] [历史命令保存文件]

2. 选项

-c 清空历史命令

-w 把缓存中的历史命令写入历史命令保存文件
~/bash_history

3. 历史保存条数

  • 历史命令默认会保存1000条,可以在环境变量配置文件 ~/.bashrc 中进行修改

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

4. 历史命令的调用

  • 使用上、下箭头调用以前的历史命令
  • 使用 !n 重复执行第n条历史命令
  • 使用 !! 重复执行上一条命令
  • 使用 !字符串 重复执行最后一条以该字符串开头的命令

四、输出重定向

1. 标准输入与输出

设备设备文件名文件描述符类型
键盘/dev/stdin0标准输入
显示器/dev/stdout1标准输出
显示器/dev/stderr2错误输出

2. 输出重定向

标准输出重定向

  • 命令 > 文件

以覆盖的方式,把命令的正确输出存储到指定的文件或设备中。

  • 命令 >> 文件

以追加的方式,把命令的正确输出存储到指定的文件或设备中。

错误输出重定向

  • 错误命令 2> 文件

以覆盖的方式,把命令的错误输出存储到指定的文件或设备中。

  • 错误命令 2>> 文件

以追加的方式,把命令的错误输出存储到指定的文件或设备中。

正确输出与错误输出同时保存

  • 命令 > 文件 2>&1

以覆盖的方式,把命令的正确输出和错误输出都存储到指定的文件中。

  • 命令 >> 文件 2>&1 (常用)

以追加的方式,把命令的正确输出和错误输出都存储到指定的文件中。

  • 命令 &> 文件

以覆盖的方式,把命令的正确输出和错误输出都存储到指定的文件中。

  • 命令 &>> 文件 (常用)

以追加的方式,把命令的正确输出和错误输出都存储到指定的文件中。

  • 命令 >> 文件1 2>> 文件2 (常用)

把命令的正确输出追加到文件1中,把错误输出追加到文件2中。

# 将 shell.sh 运行的正确输出存储到 access.log 文件,错误输出存储到 error.log 文件
shell.sh >> access.log 2>> error.log

3. 输入重定向

  • 命令 <文件

把文件内容作为命令的输入

# 在mysql中执行sql文件中的语句
mysql -uroot -p # 统计 access.log 文件的行数,单词书,字符数
wc 4 24 130
# 实际上该命令不加 <也可以执行
wc access.log
4 24 130 access.log

  • 命令 <<标识符 ... 标识符

命令 <<标识符
...
标识符

将两个相同标识符之间的内容作为命令的输入。
类似PHP中的heredoc语法。

五、多命令顺序执行

1. 多命令顺序执行

多命令执行符格式作用
;命令1 ; 命令2多命令顺序执行,命令之间没有任何逻辑关系
&&命令1 && 命令2逻辑与
当命令1正确执行时,命令2才会执行
当命令1执行不正确时,命令2不会执行。
||命令1 || 命令2逻辑或
当命令1正确执行不正确时,命令2才会执行
当命令1正确执行时,命令2不会执行。

# 根据两次日期输出的差值,计算中间压缩命令执行的时间
date; tar -zcvf etc.tar.gz /etc; date
# 根据输出 yes 还是 no,判断第一条命令是否正确执行
ls && echo yes || echo no

2. 管道符

命令格式

命令1 | 命令2

将命令1的正确输出作为命令2的操作对象

# 使用 less 命令查看 /etc/ 下目录或文件信息
ll /etc/ | less -mN
# 查看当前建立连接的端口数量
netstat -an | grep ESTABLISHED | wc -l
# 去掉配置文件中的注释和空行,并生成一个新的配置文件
cat /etc/redis/redis.conf | grep -v "#" | grep -v "^$" > /etc/redis/redis6379.conf
# 在/home目录下查找包含“max_children”的文件
sudo find /home -type f -name '*' | xargs grep "max_children"

六、Shell中特殊符号

1. 通配符

通配符作用
匹配一个任意字符
*匹配0个或任意过个任意字符,也就是可以匹配任何内容
[]匹配中括号中任意一个字符。例如:[abc]代表匹配a/b/c中的任意一个字符
[-]匹配中括号中任意一个字符。- 代表一个范围。例如:[a-z]代表匹配任意一个小写字母
[^]逻辑非,匹配不是中括号中任意一个字符。例如:[^0-9]代表匹配任意一个不是数字的字符

[vagrant/tmp] ]$ll
total 0
-rw-rw-r-- 1 vagrant vagrant 0 May 3 02:21 ab1
-rw-rw-r-- 1 vagrant vagrant 0 May 3 02:21 ab2
-rw-rw-r-- 1 vagrant vagrant 0 May 3 02:21 ab3
-rw-rw-r-- 1 vagrant vagrant 0 May 3 02:21 abc
-rw-rw-r-- 1 vagrant vagrant 0 May 3 02:21 abc.log
-rw-rw-r-- 1 vagrant vagrant 0 May 3 02:21 abd
-rw-rw-r-- 1 vagrant vagrant 0 May 3 02:21 abe
[vagrant/tmp] ]$ls abc
abc
[vagrant/tmp] ]$ls abc*
abc abc.log
[vagrant/tmp] ]$ls ab?
ab1 ab2 ab3 abc abd abe
[vagrant/tmp] ]$ls ab[0-9]
ab1 ab2 ab3
[vagrant/tmp] ]$ls ab[0-9a-z]
ab1 ab2 ab3 abc abd abe
[vagrant/tmp] ]$ls ab[^a-z]
ab1 ab2 ab3

2. Bash中其他特殊符号

符号作用
''单引号。
单引号中所有特殊符号,如 $ 和 ` (反引号) 都没有特殊含义
""双引号。
双引号中特殊符号都没有特殊含,但是 $ ` (反引号) 、和 \ 是例外,分别拥有“调用变量的值”、“引用命令”、“转义符”的特殊含义
`` 反引号。
反引号中的内容是系统命令,在Bash中会先执行它。
$()和反引号作用一样,用来引用系统命令。不过推荐使用$(),因为反引号非常容易看错。
#在Shell脚本中,#开头的行代表注释
$用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值
\转义符。
跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出$符号,而不是当做变量引用

推荐阅读
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • (九)Docker常用安装
    一、总体步骤1、搜索镜像2、拉取镜像3、查看镜像4、启动镜像5、停止镜像6、移除镜像二、安装tomcat1、dockerhub上面查找tomcat镜像 dockersearchto ... [详细]
  • 玩转直播系列之消息模块演进(3)
    一、背景即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了新款奇骏的两个让人上瘾的功能,分别是智能互联系统和BOSE音响。通过对新款奇骏的配置和功能进行评测,探讨了这两个新增功能的使用体验和优势。此外,还介绍了新款奇骏的其他配置和改进,如增加的座椅和驾驶辅助系统,以及内饰的舒适性提升。对于喜欢音响的消费者来说,BOSE音响的升级也是一个亮点。最后,文章提到了BOSE音响的数字还原能力,以及7座版无法配备BOSE音响的原因。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 本文介绍了一道经典的状态压缩题目——关灯问题2,并提供了解决该问题的算法思路。通过使用二进制表示灯的状态,并枚举所有可能的状态,可以求解出最少按按钮的次数,从而将所有灯关掉。本文还对状压和位运算进行了解释,并指出了该方法的适用性和局限性。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 对于一般的扩展包,我们一般直接pipinstallxxx即可安装,但是unrar直接安装后,发现并不能通过Python程序实现解压的功能& ... [详细]
  • PHP连接MySQL的2种方法小结以及防止乱码【PHP】
    后端开发|php教程PHP,MySQL,乱码后端开发-php教程PHP的MySQL配置报错信息:ClassmysqlinotfoundinAnswer:1.在confphp.ini ... [详细]
author-avatar
wsl伊人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有