Shell:笔记

1.命令历史
 作用:查看之前使用的命令
 
 关于命令历史的文件
  每个家用户目录下面的.bash_history
  在关机的时候回自动写入一次(history -r将内存中的命令历史写入文件)
  echo "123456"|passwd --stdin "xls-1"为用户xls-1设置密码
 关于命令历史的变量(环境变量)
  env //查看环境变量
  set //查看更加详细的环境变量参数
  HISTSIZE=1000  数量
  
 history的常见操作:
  查看命令历史
  !#  #表示数值,执行#行的命令
  !string 匹配最近一次的字符串
  !! 上一条命令
  -d [编号] 删除某条历史命令
  !$ 上一条命令的最后的一个参数
   ls /etc
   ls !$
   和ESC+.是一样的
  常见的选项
  -a 将缓冲区历史手动添加到文件.bash_history中,重启后依然存在
  -d 删除某条历史命令
  -c 清空缓存区中的历史命令缓存
  history # 显示最近#行的命令
2.命令补全
 tab
  1.提示 2.自动补全
 扩展:制表符 四个空格
3.目录补全
 tab
  1.提示 2.自动补全
 对象
4.命令展开—date命令
 {,}
 Linux的目录需要遵循什么规则?--FHS目录规则
 属性1  属性2
 a 1
 b    2
 mkdir -pv /var/{a,b}-{1,2}
 date 基于date命令来创建目录  date +%F-%H-%M-%S输出时间并加上时分秒(-%m月,-%s)
  %F CCYY-mm-dd年月日
  %H hh
  %M MM
  %S ss
  %T hh:MM:ss时间时分秒
  %D mm/dd/YY月日年
  练习:通过for语句循环创建一个月的日志文件;.log 2019-08-6.http.log
  touch 'date + %F'.http.log
  for i in {1..30};do
   touch 'date +%Y-%m-$i'.http.log
  done

 Tar
  压缩工具
  【只能对文件进行操作,而不能对目录进行压缩】
  gzip
  hzip2
  xz
  Zcat //查看压缩文件且不解压
 tar的常见参数:
  tar归档工具【可以对目录进行操作】
  -j 有bzip2属性的
  -J xz
  -z gzip
  -c create建立压缩文档
  -x extract //解压,可以不用指定解压的工具
  -f 指定文件名,后面只能接档案名
  -v 显示详细信息
  -r:向压缩归档文件末尾追加文件
  -u:更新原压缩包中的文件
  -t 不解压查看内容 和 zcat一样
 tar cjvf 2018-08.http.log.bz2 2018-08-*.http.log
 tar xvf 2018-08.http.log.bz2 -C abc
 
 练习:编写脚本,每天02:20备份/etc/目录中的所有文件,名称为当天日期;且保存文件为压缩文件;
 crontab -- 20 2 * * * /root/xxx.sh
 vim xxx.sh
  #!/bin/bash
  #
  
 tar cJvf /var/`date +%F`.xz /etc/
 chmod +x xxx.sh
 
 补充:
  clock / hwclock 常看硬件时钟(如果同步系统时钟与硬件时钟)
  cal 日历
5、命令的执行状态
在Linux中,每一条命令执行后都会有两个结果:
 命令本身放回的内容
 其次,命令执行的结果状态
$? 变量,就是用来存放命令执行状态的变量;
 0 表示成功状态(和Python正好相反)
 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  //进入一个交互界面,搜索最近一次使用的命令(要输入string)
7、alias别名
 系统启动时读取一些特殊文件的顺序;
 alias
 alias cdnet="cd /etc/sysconfig/network-scriptes" //这种方式定义alias只能在当前shell生效;
 /etc/profile : 定义环境变量(所有用户) -- EXPORT HISTCONTROL = XXX
 /etc/bashrc : 定义本地变量--alias(所有用户)
 ~/.bash_profile : 定义环境变量(指定用户)
 ~/.bashrc : 定义本地变量--alias(指定用户)
 sources /etc/profile 或者 ./etc/profile
 
8、文件通配符 -- globbing
  【文件通配符不是正则表达式】
  ?  任意单个字符
  *  任意长度的任意字符
  [] 指定范围内的任意一个字符
  ^  1、以什么开头
     2、[^]指定范围以外的任意一个字符
             [^0-9A-Za-z]
      [0-9][a-z][A-Z][a-zA-Z]
  指定字符类:
   [:alnum:],[:alpha:],[:cnyrl:],[:dight:],[:graph:],[:lower:],[:print:]
   [:punct:],[:space:],[:upper:],and[:xdigit:]
   ^*[[:space:]]*$
原文地址:https://www.cnblogs.com/why098/p/11311578.html