Bash基本功能

来源:互联网 发布:旅游大数据分析方案 编辑:程序博客网 时间:2024/06/05 05:02
  • 别名
    别名最大的好处就是省去一大堆写法,例如mac中没有”ll”的写法,alias ll 'ls -l' 这样的话,以后敲”ll”就可以得到当前目录文件的长格式显示而不必打”ls -l”

    修改别名使用alias进行快速修改,但是重启系统后就会失效,这是临时修改。
    如果想要永久修改,需要修改配置文件~/.bashrc,在里面对应处添加alias命令。
    想要让刚修改的.bashrc文件生效,执行source .bashrc将配置文件重新加载一遍就可以了。

    unalias ll 删除别名

  • 命令生效顺序
    如果你alias ls 'ls -ah',那么当你执行ls的时候是执行别名还是bash的基本命令呢?这里有一个执行优先级顺序:
    第一顺位执行绝对路径或者相对路径的命令
    第二顺位执行别名
    第三顺位执行Bash的内部命令
    第四顺位执行按照$PATH环境变量设置定义的目录顺序的第一个命令

  • 快捷键
    ctrl + c 强制终止
    ctrl + l 清屏相当于clear
    ctrl + a 光标快速回到行首(命令敲了一长串发现第一个字母打错了,光标瞬间回到最前面)
    ctrl + e 光标快速去到行尾(光标回到最后面)
    ctrl + u 从光标所在位置删除到行首(把当前一长串输入的命令清空)
    ctrl + z 把命令放入后台–这个命令很谨慎使用
    ctrl + r 历史命令搜索


  • 历史命令
    history [选项] [历史命令保存文件]
    -c 清空历史命令(一般不清空)
    -w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
基本调用:上下箭头来重复调用!n 来执行第n条历史命令(命令`history`显示历史命令,前面有个序号n)!! 重复执行上一条命令!字符串 重复执行后一个该串开头的命令(例如执行了`ls -a` `ls -ah`, 当你执行`!ls`,就是执行最近的一条即`ls -ah`)
# 直接cat ~./history时, 该文件下记录的命令是上次登录, 正确注销之后保存的# 使用history 命令查看的, 不止有之前保存下来的, 还有本次登录后新操作的命令, 这些命令只有本次正确退出之后才会写入 ~./bash_history#默认保存1000条#vi /etc/profile 环境变量配置文件HISTSIZE=1000  //更改历史命令默认保存数量

  • 输出重定向
    1. 命令 >(>>) 文件 2>&1 覆盖(追加)方式把命令的正确输出 输出到指定文件或设备中
    2. 命令 &>(&>>)文件 覆盖(追加)方式把命令的正确输出 输出到指定文件或设备中
    3. 命令 >>文件1 2>>文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中
    4. 命令 &> /dev/null 将命令的结果丢入null(作用类似于垃圾箱)中 只执行,不显示
解释:命令1和命令2的实现的效果是一样的。 >代表覆盖 >>代表追加

  • 管道符 “|”
    1. 铺垫:
      a. “;”连接命令 顺序执行
      b. “&&”连接命令 逻辑与 执行 第一条执行 第二条执行 第一条错误 第二条不执行
      c. “||”连接命令 逻辑或 执行 第一条执行 第二条不执行 第一条错误 第二条执行
      小技巧:脚本中的应用:命令 && echo yes || echo no 命令正确yes 错误no
    2. more [文件名] “分页显示文件内容”
    3. “|” 管道符: 命令1|命令2 命令1正确的结果 作为命令2的操作对象
    4. “|” 管道符 命令1|命令2 命令1正确的结果 作为命令2的操作对象
      例如 ls -l > /etc/ | more 用于分页显示命令执行结果
      netstat -an | grep ESTABLISHED | wc -l 用于查看当前连接本机的客户端 并 统计客户端数量”

-通配符

 主要针对的是文件名或目录名的搜索

1.? 匹配任意一个字符
2.* 匹配0个或任意多个字符
3.[] 匹配括号中任意一个字符
4.[-]匹配括号中任意一个字符,-代表一个范围
5.[^]匹配不是括号中任意一个字符

例如:ls abc* 查找以abc开头的文件或目录


  • Bash中其他特殊符号
'' 单引号,在单引号中左右的特殊符号,如$,&都没有特殊含义"" 双引号,在双引号中左右的特殊符号都没有特殊含义,但是“$”,"`","\"是例外。拥有“调用变量的值”,“引用命令”和“转义符”的特殊含义。例如:`aa = 123 && echo "$aa"``` 反引号,反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样。例如:`aa=`ls` && echo "$aa"`$() 用来引用系统命令例如:`aa=$(ls) && echo "$aa"`# 在Shell脚本中,#开头的行代表注释$ 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值\ 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出"$"符号
0 0