shell:bash基本特性

时间:2019-08-06
本文章向大家介绍shell:bash基本特性,主要包括shell:bash基本特性使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.命令历史

  作用:查看之前使用的命令

  命令历史记录在那个文件:家目录下的.bash_history,在关机的时候会自动写入一次(history -r 手动将内存中的命令历史写入文件)

    useradd xls-1

    echo “123456” | passwd --stdin “xls-1”

    cd /home/xls-1

    ls -a

    

  关于命令历史的变量(环境变量):

    env //查看环境变量

    set //查看更详细的环境变量参数

    HISTSIZE=1000    数量

    HISTCONTROL=ignoredups

      忽略重复的历史命令

      ignorespace 忽略空白开头的历史命令

      ignoreboth 两者都生效

    HISTFILE=/root/.bash_history

  history的常见操作

    查看命令历史

      !#  #表示数值,执行#行的命令

      !string 匹配最近一次的字符串

      !!上一条命令

      !$ 上一条命令的最后一个参数

          ls /etc

          ls !$

          ESC+.

      常见的选项:

        -a 添加

        -d 删除

        -c 清空

        history # 显示最近#行的命令

    PATH只是环境变量的一种

2.命令补全

  tab键

    1.提示2.自动补全

    制表符 \t 四个空格键

3.目录补全

  tab键

    1.提示 2.自动补全

4.命令展开

  {}

  Linux的目录需要遵循什么规则?--FHS目录规则

    mkdir -pv mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,

  属性1  属性2

      a    1

      b    2

  mkdir -pv /var/{a,b}-{1,2}

  基于date命令创建目录

    date + %F  改变日期输出时间

    date + %F + %H   年月日时

    date + %F + %H + %M   年月日时分

    date + %F + %H + %M + %S   年月日时分秒

      %F  CCYY-mm-dd

      %T  hh:MM:ss

      %M  MM

      %H  hh

      %S  ss

    练习:通过for语句循环创建一个月的日志文件;.log 2019-08-06.http.log

      for i in {1..30};do

        touch `date + %Y-%m-$i`.http.log

      done

    tar

      压缩工具

        【压缩这个操作只能对文件进行操作,不能对目录进行操作】

        gzip

        bzip2

        xz

        zcat //查看压缩文件且不解压

      tar的常见参数:

        tar  归档工具 【可以对目录进行操作】 

          -j  bzip2

          -J  xz

          -z  gzip

          -c create  去创建压缩  //必须指定工具去压缩

          -x  extract  解压  //可以不用指定解压的工具

          -f  指定文件名

          -v 显示详细信息  verbose

          -t  不解压直接查看里面的内容和zcat一样

        tar cjvf 2019-08.http.log.bz2 2019-08-*.http.log

        tar xvf 2019-08.http.log.bz2 -C abc  解压

        编写脚本,每天02:20备份/etc/目录中所有文件,名称为当天日期,且保存文件为压缩文件;

          crontab -- 20 02 * * */root/xxx.sh

          编写xxx.sh

          vim xxx.sh

            #!/bin/bash

            #

            tar cjvf /var/`date+%F`.xz /etc/

          chmod +x xxx.sh

        补充:

          clock / hwclock查看硬件时钟  (如何同步系统时钟与硬件时钟)

          cal  日历  cal 1998

  date

  clock

  hwclock

5.命令的执行状态

  在linux中,每一条命令执行后都会有两个结果:

    命令本身放回的内容

    其次,命令执行的结果状态

  $?变量,就是用来存放命令执行状态的变量

    0 表示成功状态

    1-255  表示失败状态

    [$? -eq 0] && exit 0 || exit 1

6.命令的快捷键

  ctrl + l  //清屏

  ctrl + c  //退出

  ctrl + u  //删除光标前的字符

  ctrl + k  //删除光标后的字符

  ctrl + a  //跳到光标头

  ctrl + e  //跳到光标尾

  ctrl + w  //以空格为分隔符,去删除文件

  ctrl + r  //进入一个交互界面,搜索最近一次使用的命令(需要输入一个字符串)

7.alias别名

  系统启动时读取一些特殊文件的顺序

  alias cdnet="cd /etc/sysconfig/network-scripts/"  给这条命令给一个别名,运行别名的时候就是运行了这条命令,这种方式定义的别名只能在当前shell中生效(pstree查看当前shell)

  所有人都可以使用   

  /etc/profile  :定义环境变量 --EXPORT HISTCONTROL == XXX

  /etc/bashrc  :定义本地变量

  自己可用

  ~/.bash_profile  :定义环境变量 写在谁的家母录下就是谁可用

  ~/.bashrc  :定义本地变量  写在谁的家母录下就是谁可用

  sources /etc/profile 或者 ./etc/profile

8.文件通配符 --globbing

  【文件通配符不是正则表达式】

  ?  任意单个字符

  *  任意长度的任意字符

  []  指定范围内的任意一个字符

  ^   [^]指定范围以外的任意字符

  [^0-9A-Za-z]

  指定字符类  

    [:alnum:]字母加数字

    [:alpha:]

    [:cntrl:]

    [:digit:]

    [:graph:]

    [:lower:]

    [:print:]

    [:punct:]

    [:space:]

    [:upper:]

    [:xdigit:]

    用的时候:再加一层中括号

练习:

1.显示/var目录下所有以1开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录;

ls /var/ 1*[0-9]*[a-z]

2.显示/etc目录下,以任意以为数字开头,且以非数字结尾的文件或目录

ls /etc/ [0-9]*[^0-9]

3.显示/etc目录下,以非字母开头,后面跟了一个字母及其他任意长度任意字符的文件或目录

ls /etc/ [[:alpha:]][A-Za-z]*

4.复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/test目录中

cp /etc/ m*[0-9] /tmp/test

5.复制/etc目录下,所有以.d结尾的文件或目录至/tmp/test.com目录中

cp /etc/ *.d /tmp/test.com

6.复制/etc目录下,所有.conf结尾,且以m n r p开头的文件或目录至/tmp/test.com目录中

cp /etc/ [mnrp]*.conf /tmp/test.com

原文地址:https://www.cnblogs.com/lyali/p/11307879.html