Bash基础特性

Bash基础特性

bash的基础特性:

  • 命令历史: shell进程会在其会话中保存此前用户提交执行过的命令

    • history
    • 上下键
    • history会保存在文件中,登出了也还会存在
    • 定制history的功能,可通过环境变量实现
      • HISTSIZE :命令历史的条数
      • HISTFILE :在管理员家目录下 la -a : .bash_history
      • HISTFILESIZE: 历史文件大小
    • 命令用法: help history
      • -d :从指定位置删除历史
      • -c: 删除所有条目
      • -w : 将当前历史写入历史文件中
      • -r : 从历史文件中读回来
      • history 10 :显示最近10条命令
      • !5 :再一次执行历史列表中的第5条命令
      • !STRING :执行最近以STRING开头的命令 :重复执行需要依赖幂等性(多次执行结果相同)
      • 调用上一个命令的最后一个参数 esc + . (很好用的技巧) !$ 也可以
      • 控制命令历史记录的方式 : HISTCONTROL :
        • ​ 默认特性(忽略重复 ignordups)
        • ignorespace :忽略以空格开头的命令
        • ignoreboth :以上俩这同时生效
  • 命令补全

    • shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符串会被当做命令
    • 命令处理机制
      • 查找内部命令
      • 根据PATH环境变量中设定的目录,自左而右的查找命令
      • 按俩下tab :查找以指定字符开头的命令
      • 按一下tab:给定的打头字符串如果能唯一的标识某命令程序文件,则直接补全
    • 路劲补全:
      • 根据给定的起始路径来补全
    • 目录管理类的命令
      • mkdir :创建目录 mkdir /tmp/x/y/z
        • -p : 当路径不存在时,创建父目录
        • -v :显示详细过程
      • rmdir :仅用于删除空目录
        • -p : rmdir -p /tmp/x/y :先删除y,如果其父目录为空,再删除父目录
      • ~ :自动展开为用户的家目录,或指定用户的家目录
      • {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径
        • 例如: /tmp/{a,b} 相当于 /tmp/a /tmp/b
        • [root@csm ~]# mkdir -v /tmp/{a,b}_{c,d}
          mkdir: 已创建目录 “/tmp/a_c”
          mkdir: 已创建目录 “/tmp/a_d”
          mkdir: 已创建目录 “/tmp/b_c”
          mkdir: 已创建目录 “/tmp/b_d”
      • tree :显示目录结构 : list contents of directories in a tree-like format.
        • 参数(OPTIONS)
          • -L (level) :指定要显示的层级
    • bash的基础特性: 命令的执行状态结果(bash通过状态返回值来输出此结果)
      • 成功 : 0
      • 失败 :1-255
      • 命令执行完成之后,其状态返回值保存于bash $? 中。 echo $?
    • 命令正常执行时,有的还有命令返回值
      • 引用命令的执行结果 $(command) 或者 command mkdir $(date +%H-%M-%S) :执行结果
    • bash的基本特性: 引用
      • 强引用 ’ ’
      • 弱引用:" "
      • 命令引用:``
    • bash的基本特性:快捷键
      • ctrl+a :跳转到命令行首部
      • ctrl+e :跳转到命令行尾
      • ctrl +u :删除行首到光标所在处之间的所有字符
      • ctrl +k :删除光标到行位的所有字符
      • Ctrl+l : 想当于clear
    • 文本查看类命令:cat ,tac ,less ,more,tail,head,
      • 分屏查看命令:more less
        • more :只能向后分屏,翻屏到文件尾部后自动退出
        • less : man命令支持的就是less命令
      • head:查看文件的前n 行
      • tail :查看文件的后n 行(默认10行)
        • -n #
        • -# :显示指定行
        • -f : 查看文件尾部内容结束后不退出,跟随显示新增的行
    • stat命令:display file or file system status (查看文件的元数据)
      • stat FILE
      • [root@csm tmp]# stat /tmp/functions
        文件:"/tmp/functions"
        大小:15131 块:32 IO 块:4096 普通文件
        设备:fd01h/64769d Inode:393264 硬链接:1
        权限:(0644/-rw-r–r--) Uid:( 0/ root) Gid:( 0/ root)
        access time:2020-03-31 09:04:01.854932173 +0800
        modify time:2020-03-31 09:04:00.703888368 +0800
        change time:2020-03-31 09:04:00.703888368 +0800
        创建时间:-
      • 文件:俩类数据
        • 元数据:mtadata (例如书的目录,书名)
        • 数据:data (书的内容)
    • touch 命令可以改变文件的时间戳 : touch - change file timestamps
      • 经常用来创建空文件
      • -c :不创建文件 :指定文件路径不存在时不创建
      • -a change only the access time
      • -m change only the modification time
      • -t :改成指定的时间 [YYMMDD]
  • 文件管理工具: cp,mv ,rm

    • cp命令:copy
      • 源文件 :目标文件
      • 复制指的是复制文件的数据
      • 单源复制 :cp [OPTION]… [-T] SOURCE DEST
        多源复制: cp [OPTION]… SOURCE… DIRECTORY
        多源复制:cp [OPTION]… -t DIRECTORY SOURCE…
      • 如果DEST不存在:则事先创建此文件,并复制源文件的数据流到DEST中
      • 如果DEST存在:
        • 如果DEST是非目录文件:覆盖DEST文件
        • 如果DEST是目录文件: 则现在DEST目录下创建一个与源文件同名的文件,并复制数据流至目标文件
      • 如果SOURCE是目录:略过目录
      • 多源复制:
        • 如果DEST不存在: 不允许
        • -i :覆盖之前提醒用户确认
        • -f : 强制覆盖目标文件
        • -r ,-R :recursive :递归复制目录
        • -d :复制符号链接文件本身,二非其指向的源文件
        • –preserv= :保留云文件的时间戳
          • node :权限
          • timestamps:时间戳
          • xattr:扩展属性
          • all :上述所有属性
        • -a :保留源文件的所有属性
    • mv :移动文件和重命名
      • mv hello hello.txt :重命名 ,当源文件和目标文件在同一个目录下
      • 不在同一个目录下就是移动
      • 常用选项
        • -i :交互式
        • -f :强制覆盖
    • rm :删除文件
      • linux系统没有回收站,找回文件非常困难
      • rm [OPTION] FILE
      • 常用选项:
        • -r 递归删除
        • -f :强制删除
      • 可以自建一个回收站,把不用的文件都移动到回收站去,尽量不要删文件
        • 危险操作:rm -rf /*
  • 变量: 命名的内存空间

    • 变量类型:整型,浮点型,字符型,布尔型,日期时间型
      • 字符型
      • 数值型
        • 精确数值
        • 近似数值
      • 存储格式,数据范围,参与运算:
        • 8 :1000
        • 16 : 10000
        • ASCII 码 :128个
  • globbing:文件名匹配机制(整体文件名匹配)

    • 匹配模式:所有的文本文件,文件名当中只包含数字的文件
    • 元字符:
      • *:匹配任意长度的任意字符
      • ?: 匹配任意单个字符 pa? p?a
      • []:匹配指定范围内的单个字符 啊[a-z] [0-9] [a-z0-9] [abcxyz] pa[0-9]
      • 特殊的格式:[[:upper:]] :表示所有大写字母 [[:lower:]]
      • [^] :匹配指定外的任意单个字符

    IO重定向及管道

    • 程序:指令+数据

    • 程序:IO

    • 重定向:

      • 可用于输入的设备:键盘,文件,磁盘设备,网卡等
      • 可用于输出的设备:文件,显示器,常规文件,网卡
    • 输入的数据流:<–标准输入(stdin) 键盘

    • 输出的数据流 --> 标准输出(stdout) 显示器

    • 错误输出流 --> 标准输出(stderr) 显示器

    • fd :file descriptor :文件描述符 (windows中交句柄)

      • 标准输入通常用 0 来表示
      • 标准输出 :1
      • 错误输出 :2
    • IO重定向 :将标准输入输出给改变

      • 输出重定向: > 特性:覆盖输出 >> 追加输出重定向
      • set -C :(j仅对当前有效)进制覆盖以存在的文件 强行覆盖: >|
      • set +C :关闭特性
    • 错误输出流重定向 : 2>

      • 合并正常输出流和错误输出流 : &> > /path/to/somefile 2>&1
    • 输入重定向: <

      • tr 命令的使用: 把输入的数据当中的字符,凡是在set1定义的范围内出现的,通通对位转换成SET2出现的字符 : tr abc ABC
      • 快捷键: backspace 用不了时 : 加上Ctrl建就可以了
      • -d :tr -d [A-Z] < /etc/issue 删除文件中的大写字母显示在屏幕上
      • << :here Document : 屏幕输入保存到文件中: cat > /tmp/cat.out <<END
    • 管道: 把一个命令的执行结果,输入给另一个程序 |

      • tee 命令:完成俩次输出(文件和屏幕)
      • cat /etc/issue |tee /etc/issue.tee | tr ‘a-z’ ‘A-Z’ 保存在文件issue.tee中,并且输出给 tr一份
    • 特殊设备: /dev/null :任何数据传给它都被丢弃

      • 没用的数据(或者不需要输出,就可以丢给它 &> /dev/null)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值