博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux基础 Bash Shell特性
阅读量:6292 次
发布时间:2019-06-22

本文共 3335 字,大约阅读时间需要 11 分钟。

hot3.png

1 一些内置命令

    echo 输出字符串并换行  -n 不换行 -e 启用转义字符

    printf 类似C语言的格式输出

    read 读取变量 -p STRING 显示提示 -s 不回显 -t 输入时限

    source FILE 或者一个点[.]代替source 读取文件中的脚本并执行

    hash 检查命令缓存和击中次数

    type CMD 检查命令类型并显示信息

        -t 仅显示命令类型[file|alias|butltin]

        -a 搜索$PATH 显示CMD命令

        -p 如果CMD为外部命令 才显示完整文件名

    ulimit [options] [配额]

        -a 显示所有限制额度

        -H 严格设置 用户无法超出此值

        -S 警告设置 用户超出此值会被警告

        -c 限制core file最大容量[进程发生错误时生成的文件]

        -f 创建的最大文件容量

        -d 最大断裂内存(segment)的容量

        -l 锁定(lock)的内存量

        -t 可使用的最大CPU时间 单位为秒

        -u 用户可使用的最大进程(process)数量

2 bash变量

    env 列出所有环境变量

        $_ 上一次命令的最后一个参数或者命令本身

        $TERM 终端环境类型

        $SHELL shell类型

        $HISTSIZE 命令历史条目数

        $USER 用户名

        $MAIL 邮箱目镜

        $PATH 命令搜索路径

        $PWD 当前目录(pwd命令取出)

        $LANG 语言和编码

        $HOME 家目录

    set 列出所有环境变量以及自定义变量[当前bash有效]

        $HOSTNAME 主机名

        $HOSTTYPE 硬件架构

        $HISTFILE 命令历史记录文件

        $$ bash的PID

        $? 上一个命令的状态码

        $PS1 命令提示符

        $PS2 多行命令提示符

    export 显示所有环境变量的定义

    export VAR 将自定义变量升级为环境变量

    locale 显示语言和编码 -a 显示所有系统支持的语言和编码

    $RANDOM 随机生成一个0-32767的数的变量

    unset 删除变量

3 命令特性和历史

    \ 延续命令多行输入

    [TAB]命令补全

    [TAB][TAB]路径补全

    Ctrl+c 终止当前命令

    Ctrl+d 输入EOF

    Ctrl+z 将当前命令暂停[调入后台]

    Ctrl+a 跳到命令行首

    Ctrl+e 跳到命令行尾

    Ctrl+u 删除光标至命令行首的内容

    Ctrl+k 删除光标至命令行尾的内容

    Ctrl+l 清屏 (clear命令)

    Ctrl+m 等同于ENTER

    Ctrl+s 暂停屏幕输出

    Ctrl+q 恢复屏幕输出

    history 显示命令历史

        -c 清空命令历史

        -d N 删除指定位置N的命令

        -w 保存命令历史至历史文件中

    !string 执行命令历史中最近一个以指定字符串开头的命令

    !$/Esc, . 引用前一个命令的最后一个参数

    !n 执行命令历史中的第n条命令

    !-n 执行命令历史中的倒数第n条命令 

    !! 执行上一条命令 (UP ENTER)

 

4 命令替换和别名

    alias CMDALIAS='CMD [options] [arguments]' 设定命令别名

    ualias CMDALIAS 取消命令别名

    "" 双引号 弱引用 可以实现变量替换

    '' 单引号 强引用 不能实现变量替换

    $(CMD)|`COMMAND` 命令替换

    {} 花括号同级展开 例子 mkdir ./test/{a,b,c} mkdir ./test/{a,b}{c,d}

    - 上一个工作目录 ~ 当前家目录 ~root ROOT家目录

    echo ~+ 显示$PWD

    echo ~- 显示$OLDPWD

    echo ~+N  显示dirs中第N+1个内容 索引基于0

    echo ${!PWD} 显示PWD的变量名 而不是它的值

    echo ${!P*} 显示所有以P开头的环境变量名

    echo $((16#32)) 十六进制的32 输出50 双圆括号算数展开

    echo $[1+4] 输出1+4的值5 方括号算数展开

    命令替换时的特性

    ${#STRING} 求STRING的长度

    ${STRING:POSITION} 求从POSITION开始的子串

    ${STRING:POSITION:LENGTH} 求从POSITION开始长度为LENGTH的子串

     

 

5 文件名通配(globbing)

    * 任意长度的任意字符

    ? 任意单个字符

    [] 匹配指定范围内的任意单个字符

    [^] 匹配指定范围外的任意单个字符

    [abc],[a-z],[0-9a-zA-Z] 常用检测字符组

    [[:space:]] 空白字符

    [[:punct:]] 标点符号

    [[:lower:]] 小写字母

    [[:upper:]] 大写字母

    [[:alpha:]] 大小写字母

    [[:digit:]] 数字

    [[:alnum:]] 数字和大小写字母

    匹配4个字符的文件名

        ls ????

    匹配字母|下划线开头 数字结尾的文件名

        ls [a-zA-Z_]*[0-9]

    匹配非数字开头 非字母结尾的文件名

        ls [^0-9]*[^[:alpha:]]

 

6 重定向和管道和命令连用

    && 同时执行命令

    || 上一个命令不执行时执行

    ; 分步执行命令

    && || 相当于一个if else控制流程结构

    < 重定向标准输入

    << EOF 重定向大段标准输入 EOF结尾

    > 重定向标准输出[覆盖方式]

    >> 重定向标准输出[追加方式]

    2> 重定向错误输出[覆盖方式]

    2>> 重定向错误输出[追加方式]

    &> 重定向标准输出和错误输出 [覆盖方式]

    &>>  重定向标准输出和错误输出 [追加方式]

    管道 前一个命令的输出 作为后一个命令的输入

    格式 CMD1 | CMD2 | CMD3 | ...

    set -C 禁止对已经存在文件使用覆盖重定向 强制覆盖输出使用 >|

    set +C 关闭上述功能

 

7 相关配置文件

    /etc/sysconfig/i18n 语言和编码配置文件

    ~/.bash_history 命令历史文件

    ~/.bash_logout 注销时执行的文件

    /etc/issue 登陆显示信息的文件

    /etc/motd 远程连接登陆显示信息的文件

    /etc/profile bash总体配置文件

    /etc/inputrc 输入特性文件

    /etc/profile.d/*.sh 被/etc/profile调用

    ~/.bash_profile 个人配置文件

        如果没有~/.bash_profile 则会读取~/.bash_login或者~/.profile

    ~/.bashrc 个人配置文件 被~/.bash_profile调用

    /etc/bashrc REDHAT系列独有的文件 设置一些属性

    /etc/man.config 设置man page的搜索路径的文件

    bash配置文件的登陆调用流程 非登陆式切换用户则从~/.bashrc开始调用

 

8 其他

    如果不喜欢默认终端机的特性 可以使用stty和set来设置终端机的特性

    echo 字符串中的特殊属性

        \033[0m 关闭所有属性 

        \033[1m 设置高亮度 

        \033[4m 下划线 

        \033[5m 闪烁 

        \033[7m 反显 

        \033[8m 消隐 

        \033[30m -- \033[37m 设置前景色 

        \033[40m -- \033[47m 设置背景色 

        \033[nA 光标上移n行 

        \033[nB 光标下移n行

        \033[nC 光标右移n行 

        \033[nD 光标左移n行 

        \033[y;xH设置光标位置 

        \033[2J 清屏 

        \033[K 清除从光标到行尾的内容 

        \033[s 保存光标位置 

        \033[u 恢复光标位置 

        \033[?25l 隐藏光标 

        \033[?25h 显示光标

        echo -e "\033[42;36m hello \033[0m" 绿底蓝字例子

        颜色特性中 0~7颜色分别为 黑红绿黄蓝紫青白

转载于:https://my.oschina.net/nichijou/blog/745399

你可能感兴趣的文章
!important 和 * ----hack
查看>>
聊天界面图文混排
查看>>
控件的拖动
查看>>
svn eclipse unable to load default svn client的解决办法
查看>>
Android.mk 文件语法详解
查看>>
QT liunx 工具下载
查看>>
内核源码树
查看>>
Java 5 特性 Instrumentation 实践
查看>>
AppScan使用
查看>>
Java NIO框架Netty教程(三) 字符串消息收发(转)
查看>>
Ucenter 会员同步登录通讯原理
查看>>
php--------获取当前时间、时间戳
查看>>
Spring MVC中文文档翻译发布
查看>>
docker centos环境部署tomcat
查看>>
JavaScript 基础(九): 条件 语句
查看>>
Linux系统固定IP配置
查看>>
配置Quartz
查看>>
Linux 线程实现机制分析
查看>>
继承自ActionBarActivity的activity的activity theme问题
查看>>
设计模式01:简单工厂模式
查看>>