zoukankan      html  css  js  c++  java
  • 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.自动补全

        制表符 四个空格键

    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

  • 相关阅读:
    一本通1559跳跳棋
    一本通1558聚会
    一本通1555【例 4】次小生成树
    P1880 [NOI1995]石子合并
    P2066 机器分配
    P2073 送花
    P1886 滑动窗口
    P1637 三元上升子序列
    P1533 可怜的狗狗
    P1631 序列合并
  • 原文地址:https://www.cnblogs.com/lyali/p/11307879.html
Copyright © 2011-2022 走看看