文档章节

Linux基础 Bash Shell特性

hakase
 hakase
发布于 2016/09/11 14:25
字数 1701
阅读 12
收藏 1

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颜色分别为 黑红绿黄蓝紫青白

© 著作权归作者所有

hakase
粉丝 7
博文 39
码字总数 23663
作品 0
南京
私信 提问
《Linux基础知识及命令》系列分享专栏

《Linux基础知识及命令》系列分享专栏 本专题详细为大家讲解了Linux入门基础知识,思路清晰,简单易懂。本专题非常适合刚刚学习Linux的小白来学习,通过学习该专题会让你由入门达到中级的水平...

kaixin_code
2018/12/01
0
0
一、Linux Shell基础

1.1、shell基础 Bash 是一个与Bourne Shell兼容的、执行从标准输入设备文件读取的命令的语言解释器。Bash是Bournae-Again Shell的缩写。Bash与原来的Unix sh Shell向后兼容,并且融合了一些有...

运维菜鸟丶
2017/06/25
0
0
Linux之Bash基础特性配置文件(4)

前言 在bash进程中,读取到bash进程内存中的数据,在bash进程终止时,进程中的数据会被操作系统回收,变量也是定义在当前shell进程内存空间的数据。在shell终止时,变量也会失效 作用 选项:...

余二五
2017/11/15
0
0
bash的环境配置文件加载原理

一、环境配置文件概述 在Linux上开发或者部署应用时,免不了要设置配置文件,比如安装JDK,需要为java可执行文件配置环境变量。 大多数时候我们不需要关注shell,但是当你执行"sudo su" 命令...

dragon_tech
01/17
0
0
如何在 Linux 中不安装软测试一个软件包

出于某种原因,你可能需要在将软件包安装到你的 Linux 系统之前对其进行测试。如果是这样,你很幸运!今天,我将向你展示如何在 Linux 中使用 Nix 包管理器来实现。Nix 包管理器的一个显著特...

10%
2018/06/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

代码持续自动发布

需求: 自动更新私人gitbook项目代码 如果代码没更新,不做务必要的构建操作 思路 定时任务加shell脚本,无论更新没更新都执行git pull。 优点:能满足需求 资源浪费,代码仓库不更新也执行p...

阿dai学长
13分钟前
0
0
sparkstreaming原理

Spark Streaming是Spark生态系统当中一个重要的框架,它建立在Spark Core之上,下面这幅图也可以看出Sparking Streaming在Spark生态系统中地位。 Spark Streaming是Spark Core的扩展应用,它...

七旬少女
33分钟前
0
0
springmvc集成cas,并解决前后端分离情况

1.最近项目需要集成已经存在的cas系统。 但是目前已集成的系统都是jsp。而我们项目是前后端分离开发(伪),没有分开部署。 2.cas原理就不介绍了 网上例子很多。基本都是使用302重定向实现的...

起名字什么的太麻烦了
48分钟前
4
0
HDFS-原理

1. 写操作

叶枫啦啦
今天
3
0
聊聊elasticsearch的MembershipAction

序 本文主要研究一下elasticsearch的MembershipAction MembershipAction elasticsearch-6.7.1/server/src/main/java/org/elasticsearch/discovery/zen/MembershipAction.java public class M......

go4it
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部