bash特性
一些关于bash的特性和用法
1.光标跳转
ctrl+a:跳到命令行首 ctrl+e:跳到命令行尾
ctrl+u:删除光标至行首 ctrl+k:删除光标至行尾
ctrl+←:向左跳一个单词 ctrl+→:向右跳一个单词
ctrl+l:清屏,clear
2.命令历史
用户每输入一次命令,都会被记录到命令历史中,命令历史默认记录的条数为1000条,暂存于内存中,当用户退出bash后,命令历史会被记录到用户家目录下的.bash_history文件下
1 2 3 4 | [root@localhost ~] # echo $HISTSIZE 命令历史缓冲区默认大小 1000 [root@localhost ~] # ls -la .bash_history 命令历史保存文件 -rw-------. 1 root root 1388 Dec 25 13:49 .bash_history |
history:查看命令历史
-c:清空命令历史
-d:删除指定序号的命令历史
1 2 3 4 | [root@bogon ~] # history -d 66 代表删除第66条命令历史 [root@bogon ~] # history -d 66 3 代表删除第66条命令历史后后面的2个 |
-w:保存命令历史到历史文件
命令历史的使用技巧:
!n:执行命令历史中的第n条命令
!-n:执行命令历史中的倒数第n条命令;感觉这个并不好用,可以用↑键去找
!!:执行上一条命令;这个也不好用,直接用上↑键就可以
!STRING:执行命令历史中最近一个以指定字符串开头的命令
!$:引用前一个命令的最后一个参数。或者也可以使用“按下ESC松开之后按‘.’”ESC .
3.命令别名
命令别名可以快速的执行一段长命令,或者你不习惯使用某个命令,可以直接定义命令别名来代替他。可以通过alias来查看所有已经定义的命令别名。
alias 别名='原命令 [选项] [参数]' 定义命令别名
unalias 别名 取消命令别名
\命令 直接使用原始命令
4.命令替换、变量替换
在一些时候,执行命令的时候,可能需要另一个命令的支持,例如我要新建一个现在时间的文件,命令替换可以用$()或反引号``完成。
1 2 3 4 5 6 7 8 | [root@bogon test ] # touch $(date +%y-%m-%d-%H-%M-%S).doc [root@bogon test ] # ls 17-12-27-00-27-15.doc 可以使用$() [root@bogon test ] # touch `date +%y-%m-%d-%H-%M-%S`.doc [root@bogon test ] # ls 17-12-27-00-27-15.doc 17-12-27-00-29-54.doc 也可以使用``反引号 |
变量替换可以使用${}完成,当不影响调用变量名称时,大括号{}可以省略
1 2 3 4 5 | [root@bogon ~] # a=bbb [root@bogon ~] # echo $a ;echo $aa ;echo ${a}a bbb bbba |
5.引号
三种引号的用法
` `:命令替换,$()同样可以使用命令替换
" ":弱引用,变量替换
' ':强引用,不完成变量替换
6.文件名通配符
通常在查找文件时,不能准确描述文件名,但知道文件名格式,可以用通配符来查找
*:匹配任意长度任意字符
?:匹配任意单个字符
[ ]:匹配中括号内的单个字符
[^ ]:匹配除了括号内的任意单个字符
[0-9] [[:digit:]] 数字
[a-z] [[:lower:]] 小写字母
[A-Z] [[:upper:]] 大写字母
[a-zA-Z] [[:alpha:]] 大小写字母
[a-zA-Z0-9] [[:alnum:]] 数字和大小写字母
[[:space:]] 空白字符
[[:punct:]] 标点符号
7.bash配置文件
全局配置文件:/etc/profile,/etc/bashrc和(etc/profile.d/*.sh这里面是各种shell脚本)
个人配置文件:~/.bash_profile,~/.bashrc
profile类文件用来在登入系统时设定环境变量,运行命令或脚本的
bashrc类文件是用来登入系统时设定本地变量,定义命令别名的
登录式shell读取配置文件过程:
/etc/profile->/etc/profilce.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc
非登录式shell读取配置文件过程:
~/.bashrc->/etc/basrc->/etc/profile.d/*.sh
最终都是以个人shell为标准
8.输入输出重定向
>:覆盖输出
>>:追加输出
2>:错误覆盖输出
2>>:错误追加输出
&>:正确错误都输出到一个文件
1 2 | [root@bogon ~] # ls -l > a 2> b ##这样正确输出给a,错误输出给b |
可以用set -C禁止对已经存在文件使用覆盖重定向,强制覆盖输出使用>| ,用set +C关闭上述功能。
<:输入重定向
1 2 | [root@localhost ~] # tr 'a-z' 'A-Z' < a ABCEDFG |
<<:此处输入文本,后缀即为结束符
1 2 3 4 5 6 | [root@localhost ~] # cat <<a > aaa > aa > a aaa aa |
|:管道符,将前一个命令执行的结果传递给下一个命令
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能