您的位置:首页 > 运维架构 > Shell

bash基本特性及基础命令

2019-02-20 21:53 113 查看
版权声明:欢迎转载,需注明出处 https://blog.csdn.net/Y1H2L/article/details/87805134

文章目录

  • 3.路径补全
  • 4.命令行展开
  • 5.命令的执行状态(结果)
  • 二、目录管理类命令
  • 三、文本文件查看类命令
  • 四、文件的时间戳管理工具
  • 一、bash特性

    1.命令历史

    • history命令

    环境变量:

    1. HISTSIZE:命令历史记录的条数
    2. HISTFILE:~/.bash_history
    3. HISTFILESIZE:命令历史文件记录历史的条数

    调用历史中的命令:
    !#:重复执行第#条指令
    !!:上一条命令
    !string:调用历史中最近一条字符串指令

    调用上一条命令的最后一个参数:

    1. !$(建议使用)
    2. ESC,.(先按esc再按点号) (建议使用)
    3. alt+.

    控制命令历史的记录方式:
    环境变量:HISTCONTROL

    1. ignoredups:忽略重复的命令;连续且相同方为“重复”
    2. ignorespace:忽略所有以空白开头的命令
    3. ignoreboth:相当于上边两条的综合使用

    修改环境变量值的方式:export 变量名=“值”
    变量赋值:把赋值符号后边的数据存储于变量名指向的内存空间

    2.命令补全

    2.1 bash执行命令方式

    1. 内部命令:自带命令
    2. 外部命令:bash根据PATH环境变量定义的路径,自作而右在每个路径搜寻以用户给定命令名命名的文件,第一次找到即为要执行的命令

    2.2 补全命令的方式

    • 直接补全:tab键;用户给定的字符串只有一条唯一对应的命令
    • 以用户给定的字符串为开头对应的命令不唯一。则再次tab会给出列表啊(按两次tab键)

    3.路径补全

    3.1 路径补全的原理

    把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名,如果唯一,则直接补全;否则按两次tab键给出所有符合条件的列表(操作跟命令补全类似)。

    4.命令行展开

    • ~:展开为用户的主目录
    • ~USERNAME:展开为指定用户的主目录
    • {}:可承载一个以逗号分割的列表,并将其展开为多个路径(注意展开列表的生效范围)

    比如:/tmp/{a,b}就相当于/tmp/a加/tmp/b
    练习:

    1. 创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b,/tmp/x/
      y2/a,/tmp/x/y2/b
      答:mkdir /tmp/x/{y1,y2}/{a,b}
    2. 创建x_m,y_m,x_n,y_n
      答:mkdir {x,y}_{m,n}
    3. 创建/tmp/bin,/tmp/sbin,/tmp/usr,/tmp/usr/bin,
      /tmp/usr/sbin
      答:mkdir -p /tmp/{bin,sbin,usr/{bin,sbin}}

    5.命令的执行状态(结果)

    • 成功
    • 失败

    bash使用特殊变量$?保存最近一条命令的执行状态结果:
    0:成功
    1-255:失败
    在命令行模式中输入:echo $?就可以查看特殊变量 $?的值

    二、目录管理类命令

    • cd:进入目录
    • pwd:显示当前目录
    • ls:显示目录内容
    • mkdir:创建目录

    使用语法:mkdir [OPTION] 路径
    注意点:

    1. 若是不加-p,创建的目标目录若是没有父目录则会报错
    2. 使用mkdir可以一次性创建多个目录:mkdir 目录1 目录2 目录3…
      OPTION:
    • -p 若是目标文件夹没有父目录,则创建
    • -v 显示详细信息
    • -m MODE:创建目录时直接指定权限
    • rmdir:删除目录

    使用语法: rmdir [OPTION] 路径
    注意点:只能用来删除空目录
    OPTION:

    • -p 若是目标文件夹没有子目录,则删除(递归删除)
    • -v:显示过程
    • tree:显示当前目录的树形结构

    显示目录的层级目录
    语法:tree [OPTION] 目录
    OPTION:

    • -d:只显示目录
    • -L level:指定显示的层级数目
    • -P pattern:只显示由指定pattern匹配到的路径

    三、文本文件查看类命令

    • cat:查看文本文件(内容比较少的时候适用)
    • tac:反序查看文本文件(刚好和cat命令的拼写也相反)
    • more:查看文本文件

    语法:more [OPTION] FILE…
    注意:不支持后退,但几乎不需要加参数,空格键是向下翻页,Enter键是向下翻一行,在不需要后退的情况下比较方便。
    -d:显示翻页及退出提示

    • less:查看文本文件

    语法:less [OPTION] FILE…
    注意:支持前后翻滚,既可以向上翻页(pageup按键),也可以向下翻页(pagedown按键)

    • tail:查看文本文件的结尾

    语法:tail [OPTION] FILE…
    -c #:指定获取后#个字节
    -n #:指定获取后#行
    -f:跟踪显示文件新追加的内容(一般用来查看日志文件,随日志文件内容的增加而跟踪读取)
    默认获取前十行(tail FILE)

    • head:查看文本文件的开头

    语法:head [OPTION] FILE…
    -c #:指定获取前#个字节
    -n #:指定获取前#行
    默认获取前十行(head FILE)

    四、文件的时间戳管理工具

    文件一般由两种数据组成:metadata(元数据)和data(数据)组成。查看文件状态用stat命令来查看。
    每一个文件都有三个时间戳:

    1. access time:访问时间,简写atime,读取文件内容
    2. modify time:修改时间,简写mtime,改变文件内容(数据)
    3. change time:改变时间,简写ctime,元数据发生改变
    • touch命令

    语法:touch [OPTION] FILE
    作用:修改atime和mtime
    OPTION:

    1. -a:only atime
    2. -m:only mtime
    3. -t:将时间戳修改为指定时间戳
    4. -c:如果文件不存在,则不会创建文件(若是不加-c则会创建文件)
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: