bash的基本特性

  1. 命令历史

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

关于命令历史的文件

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

(给用户写密码)

chroot切换根文件系统

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

env 查看环境变量

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

HISTSIZE = 1000    数量1000

HISTCONTROL=ignoredups    (三个值ignoredups ignorespace ignoreboth)

HISTFILE=/root/.bash_history

HISTFILESIZE=1000

history的常见操作

+编号:查看编号行命令历史

+string 匹配最近一次字符串

!! 上一条命令

$=(快捷键esc+.上一条命令的最后一个参数

常见选项

-a 将历史命令缓冲区中的命令写入历史文件

-d 删除

-c 清空历史命令

history # 显示最近#行的命令

path是环境变量的一种

  1. 命令补全

tab键(作用:提示、自动补全)

拓展:tab键是制表符   \t = 四个空格

  1. 目录补全

tab键(作用:提示和自动补全)

  1. 命令展开

data命令

{,}

Linux的目录要遵循FHS目录规则

属性1  属性2

  a      1

b      2

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

date   基于date命令创建目录

date +

%F年月日

%H 小时

%M 分钟

%m 月份

%S 变秒

%T 时分秒

%D 月日年

%Y

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

touch‘date +%F’.http.log

atcrontab

 

for i in {1...30};do

touch  ‘date+%Y -%m-$i’.http.log;

done

压缩工具:gzip bzip2 xz

Tar 归档(压缩与解压缩 )zcat不解压看压缩包里文件

压缩只能对文件进行操作而不能对目录进行操作,归档可以对目录进行操作

常见参数

-j bzip2

-J xz(效率最高)

-z gzip

-c creat创建

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

-f 指定文件名

-v 显示详细信息

-t 不解压查看内容,和zcat一样

tar cjvf 2019-08.http.log.bz2 2019-08-*.http.log(* 通配符)

tar xvf 2018-08.http.log.bz2 -C abc

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

crontab -e -- 20 2 * * * /root/xxx.sh  

vim xxx.sh

#!/bin/bash

#

tar cJvf  /var/’date +%F’ .xz /etc/

chmod +x xxx.sh

补充:

clock / wclock:查看硬件时钟(如果同步系统时钟与硬件时钟)

cal 日历

  1. 命令的执行状态

 Linux中每条命令执行后都会有两个结果:命令本身放回的内容,命令执行的结果状态

 $? 变量,存放命令执行状态的变量0表示成功1-255表示失败

127命令找不到

2文件或目录不存在

13没有权限

.

.

程序执行时可用exit手动指定放回的状态码return是函数中指定的返回码

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

  1. 命令的快捷键

ctrl + l

   + c 停止进程

   + u 删除光标前字符

   +k 删除光标后字符

   + a 跳到光标头

   + e跳到光标尾

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

+z 锁屏

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

  1. alias别名

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

全局配置文件:

/etc/profile :定义环境变量(所有用户)

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

在用户的家目录下,自己使用重启后依然有效:

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

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

export  HISTCONTROL= xxx   导入环境变量(通过sources /etc/profile . /etc/profile导入)

 

alias cdnet=cd /etc/sysconfig/network-scripts/(=两边不能有空格)

只能在当前shell执行

文件通配符 --globbing

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

? 任意单个字符

* 任意长度的任意字符

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

^ 1、 以什么开头

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

指定字符类[^0-9A-Za-z]

指定字符类:

[:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:],

        [:punct:], [:space:], [:upper:], and [:xdigit:]

 

^[[:space:]]*$   //有空格键的空行(正则表达式)

 

9、练习

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

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

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

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

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

ls /etc/[^[:alpha:]][[:alpha:]]*

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

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

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

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

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

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

posted @ 2019-08-07 09:07  Youngstrayschoolgirl  阅读(112)  评论(0编辑  收藏  举报