Xshell学习第一课:bash的基本特性

  1. 命令历史

        作用:查之前使用的命令

        关于命令历史的文件

                每个用户家目录下面的.bash_history

                在关机的时候,会自动写入一次(history -r将内存中的命令历史手动写入文件)

                env //查看环境变量

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

                HISTSIZE=1000  记录了数量

                HISTCONTROL=ignoredups 

                                lgnoresdups 忽略重复的历史命令

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

                                lgnoreboth  两者都生效

                history的常见操作:

                         查看命令历史

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

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

                         !! 上一条命令

                         !$   上一条命令的最后一个参数(ESC+.)

                         常见的选项:

                         -a:手工追加当前会话的命令历史到历史文件中去

                         -d:删除指定的命令

                         -c:清空命令

                         History #显示最近#行的命令

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

2.命令补全

     Tab键:制表符    代表四个空格

        作用:1.提示

              2.自动补全

  1. 目录补全

      Tab:1.提示(目录路径)

           2.自动补全

  1. 命令展开—date命令

     {}创建文件或者拷贝文件时候使用

 

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

属性1   属性2

A         1

B         2

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

这就创建了四个文件了

     ---FHS的目录规则

     date:查看系统时间(date +%F)(date +%F-%H)

 

 

%F CCYY-mm-dd

%H hh

%M MM

%S ss

%D: mm/dd/YY

%Y YY

%T hh:MM:ss

 

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

Touch `Date +%F`.http.log

for I in {1..30};do

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

done

 

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

压缩工具:(gzip)(bzip2)(xz)【压缩这个操作,只能对文件进行才做,不能对目录进行操作】

压缩:

 

解压:

 

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

Ctontab –20 2 * * * /root/xxx.sh

Vim xxx.sh

#!/bin/bash

Tar cJvf /var/`date +%F`.xz /etc/

Chmod +x xxx.sh

补充俩个命令:

     Clock/hwclock 查看硬件时钟(如果同步洗头膏时钟与硬件时钟)

     (cal):日历

  1. 命令的执行状态

在Linux中,每条命令执行后都会有俩个结果:

          命令本身返回的内容

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

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

0         表示成功状态(和python相反)

1-255 表示失败状态

127—命令找不到

2—文件或目录不存在

13—没有权限

  1. 命令的快捷键

Ctrl + l

Ctrl + c

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

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

Ctrl + a  //跳光标头

Ctrl + e  //跳光标尾

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

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

  1. Alias别名

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

     Aliasd:alias cdnet=”cd /etc/sysconfig/network-scriptes”  //这种方式定义的alias只能在当前shell生效

/etc/profile:定义环境变量(所有用户)---EXPORT HISTCONTROL=XXX

/etc/bashrc:定义本地变量—alias(所有用户)

~/etc/bash_profile:定义环境变量(指定用户)

~/.bashrc:定义本地变量—alias(指定用户)

Sources /etc/profile 或者./etc/profile

  1. 文件通配符 ---globbing

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

?  任意单个字符

   *:任意长度的任意字符

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

^:1.以什么开头

2.[^]指定范围以外的任意一个字符

   [^0-9-A-Za-z]

指定字符类 :

 ^*[[:space:]]*$----------空白行(有空格键的空行)

字符标识
[:digit:]
任意数字, 相当于0-9
[:lower]
任意小写字母
[upper:]
任意大写字母
[alpha:]
任意大小写字母
[:alnum:]
任意数字或字母
[:blank:]
水平空白字符
[:space:]
水平或垂直空白字符
[punct:]
标点符号
[print:]
可打印字符
[:cntrl:]
控制(非打印)字符
[:graph:]
图形字符
[xdigit:]
十六进制字符

练习:

  1. 显示/var目录下所有以1开头,以一个小字母结尾,且中间出现至少一位数字的文件或目录;ls /var/^1*[0-9]*[a-z]$
  2. 显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录

         Ls /etc/^[0-9]*[^0-9]$

  1. 显示/etc目录下,以非字母开头,后面跟了一个字母及其他任意长度任意字符的文件或目录;ls /etc/^[^[:alpha:]]{[:alpha:]]*
  2. 复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/test目录中;

         Cp -a/etc/^m*[^0-9]$ /tmp/test

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

         Cp -a /etc/*.d$ /tmp/test.com

  1. 复制/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/test.com目录中;    cp -a /etc/[mnrp]*.conf /tmp/test.com
原文地址:https://www.cnblogs.com/huangchuan/p/11311818.html