bash的常见特性及文本查看命令

(一)bash的基础特性

  • 命令补全
    • shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符串会被当作命令;
    • 命令查找机制:shell首先会在内部命令中匹配查找,如果没有找到,则会在PATH环境变量设置的目录中,自左向右逐个搜索目录下的文件名
    • 补全:如果给定的打头字符串可以唯一的标识某命令程序文件,则按“tab”键直接补全;否则需要按两下“tab”键,给出列表
  • 路径补全
    • 在给定的起始路径下,以对应路径下的打头字串来逐一匹配起始路径下的每个文件。
    • 如果能唯一标识,则按“tab”键直接补全;否则需要按两下“tab”键,给出列表
  • 命令行展开
    • ~:展开为用户的家目录,或指定的用户的家目录
    • {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径。例如:/tmp/{a,b}相当于/tmp/a,/tmp/b
  • 命令的执行状态结果
    • bash通过状态返回值来输出此结果
      • 成功:0
      • 失败:1-255
    • 命令执行完成之后,其状态返回值会保存于bash的特殊变量“$?”中。可以用“echo $?”查看。
    • 命令的返回值和命令的执行状态返回值不是一回事儿
  • 引用
    • 强引用:单引号'',其内部的任何字串都直接显示,不做任何替换
    • 弱引用:双引号"",其内部的变量引用会做变量替换
    • 命令引用:反引号``或者$()。例如mkdir $(date +%H-%M-%S)
  • 快捷键
    • ctrl+a:跳转至命令行首部
    • ctrl+e:跳转至命令行尾部
    • ctrl+u:删除行首至光标所在处之间的所有字符
    • ctrl+k:删除光标所在处至行尾之间的所有字符
    • ctrl+l:清屏,相当于clear

(二)目录管理类的命令

  • mkdir:创建目录/make directories
    • 命令的操作对象为路径的基名,基名之前的路径名必须要存在
    • -p:会创建缺失的父目录
    • -v:显示创建的详细过程,比如创建了哪些父目录/verbose
    • -m MODE:创建目录时直接给定权限,否则则为默认权限
  • rmdir:删除空目录/remove empty directories
    • 目录不空会报错
    • -p:迭代删除空目录
    • -v:显示删除过程

问题1:如何创建四个路径:/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b?

答案:mkdir -pv /tmp/x/{y1/{a,b},y2}

问题2:如何创建四个路径:a_c, a_d, b_c, b_d?

答案:mkdir -v {a,b}_{c,d}

  • tree:显示目录的树状结构,例如tree /tmp/x
    • -L #:指定要显示的树的深度

(三)文本查看类命令:cat,tac,head,tail,more,less

  • 分屏查看命令:more和less,
    • more
      • more FILE
      • 翻屏至文件尾部后自动退出
    • less
      • less FILE
      • man命令内部调用的就是less命令
    • 空格往后翻,b往前翻,等等
  • head命令
    • 查看文件的前n行,默认十行
    • 例如:head -n 20 /etc/rc.d/init.d/functions,或者可以把-n 20直接写成-20
  • tail命令
    • 与head用法一样,查看文件的后n行
    • -f:命令执行完不退出,跟随显示新增的行,可以用来显示日志新增的行
  • stat命令
    • 显示文件或文件系统的状态
    • stat FILE
    • 文件包含两类信息
      • 元数据:metadata。stat命令看到的是元数据,cat等命令看到的是数据。
      • 数据:data
    • 时间戳
      • 最近访问/Access Time:打开读取的时间
      • 最近更改/Modify Time:改变数据,此时元数据一定改变
      • 最近改动/Change Time:改变元数据
  • touch命令
    • 改变文件的时间戳
    • touch FILE:三个时间戳都会变
    • 如果文件不存在,会创建一个空文件
    • -c:不创建空文件
    • -a:仅修改access time
    • -m:仅修改modify time
    • -t time:将时间戳改为指定的时间,[[CC]YY]MMDDhhmm[.ss],例如:touch -m -t 0212010303.03 /tmp/functions。注:此时元数据变为当前时间,而不是改的那个时间。

 

posted on 2017-10-01 16:41  小兔无情  阅读(501)  评论(0编辑  收藏  举报