zoukankan      html  css  js  c++  java
  • shell脚本

    Shell入门:

    1、用户空间用来跑应用程序

    2、shell程序用来做人机交互

    3、shell程序以单行命令来执行,缺乏逻辑关系。

    4、Python与shell的区别:使用shell来实现Linux的批量处理,而不是去开发应用程序

    5、ipython:是Python的交互式shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。

    6、程序是执行某个功能的一段代码。程序必须包含的两个要素:指令(即命令),数据(由变量提供),还需要一个逻辑关系(可有可无)

    7、date命令查看系统时间,hwclock(clock)命令查看硬件时间

    8、chroot命令:切换根文件系统。l临时根文件系统,加载磁盘驱动文件

    9、在开发语言中Tab键叫做制表符(\t,代表四个空格建)

    10、bash的特性:

    ①命令历史(history)

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

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

    关于命令历史的变量(环境变量)       查看环境变量:env、set(查看更详细的环境变量参数)

    记录历史数量(HISTSIZE=1000)

    (HISTCONTRUL=ignoredups(忽略重复的历史命令)

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

                                 ignoreboths(两者都生效)

    history的常长见操作:

    1、history(查看所有历史命令)

    2、!+编号(执行该条命令)

    !$(重要):上一条命令的最后一个参数(快捷键:ESC+.)

    常见选项:

    -a 追加历史行到历史文件中

    -d 删除

    -c 清空

    history # :显示最近#行的命令

    ②补全(Tab键作用:提示,自动补全命令,目录)

      inux目录需要遵循FHS(文件系统层次化标准)目录规则

    ③命令行展开

    展开命令:{}

    用一条命令创建以上的目录:

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

    date  基于date命令来创建目录

    date+%F(输出年月日)

    date+%H(输出时间的小时)

    date+%M(输出时间的分钟)

    date+%S(输出时间的秒)

    date+%T(输出时间)

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

    1
    2
    3
    4
    5
    6
    7
    touch `date +%F`.http.log
     
    for in {1..30};do
     
             touch  `date +%Y-%m-$i`.http.log;
     
    done

    压缩工具(只能压缩文件,不能压缩目录):gzip、bzip2、xz(每一种压缩工具的压缩原理不同)

    Tar(归档工具,可以对目录进行操作)的常见参数:-j:相当于bzip2,

    -J:相当于xz;

    -z:相当于gzip

    Zcat用于查看压缩文件,且不解压

    -c :创建压缩文件;

    -x:相当于extract(可以不用指定解压工具)

    -f:指定文件名(即给压缩的文件取名);

    -v:显示详细信息;

    -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 -e()

    1
    2
    3
    4
    5
    6
    7
    Crontab --20 2 * * * /root/xxx.sh
     
    Vim xxx.sh
     
           #!/bin/bash
     
    Tar cJvf  /var/`date +%F`.xz  /etc/<br>Chmod +x xxx.sh(给文件增加执行权限)

    如何同步系统时钟和硬件时钟

    cal命令:查看当前月份

    Echo $?(变量,就是用来存放命令执行状态的变量,0表示成功,1-255表示失败状态)

    常见错误状态 :127表示命令不对

                               2表示文件或目录不存在

                               13表示没有权限

    在程序执行中,我们可以使用exit来手动指定放回的状态码,return是函数中指定的返回码

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

    ④命令快捷键:

    快捷键

    功能

    Tab键

    补全命令或路径(不能补全时代表命令或路径有错)

    Ctrl+d

    退出当前用户环境,相当于exit,logout

    Ctrl+l(小写的L)

    清屏(clear)

    Ctrl+c

    终止,强行结束当前命令

    Ctrl+Shift+c(Ctrl insert)

    Ssh客户端里secureCRT里复制命令

    Ctrl+Shift+v(Shifl insert)

    Ssh客户端里secureCRT里粘贴复制的命令

    Ctrl+a

    使光标到命令的最开头

    Ctrl+e

    使光标到命令的结尾

    Ctrl+u

    剪切光标之前的命令

    Ctrl+k

    剪切光标之后的命令

    Ctrl+r

    进入一个交互式界面,根据输入的字符串搜索最近一次使用的命令

    Ctrl+s

    挂起系统

    Ctrl+q

    解除挂起

    Ctrl+w

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

    ⑤alias:别名

    Alias cdnet=’cd /etc/sysconfig/network-scripts’  //这种方法定义alias只能在当前shell生效

    /etc/profile(定义环境变量(所有用户))EXPORT(用来导入环境变量)

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

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

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

    区别:定义别名永久生效:将别名放在/etc/profile(全局生效)而~/.bashrc(当前用户生效)

    在/etc/profile文件中手动加入环境变量后:要敲Sources /etc/profile  或者 . /etc/profile命令

    ⑥文件通配符:

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

    ?  任意单个字符

    *  任意长度的任意字符

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

    [^] 指定范围内以外的任意一个字节

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

    指定字符类:

    [:alnum:]:英文大小写字符以及数字。即A-Z a-z 0-9

    [:alpha:]:英文大小写字符,即A-Z a-z

    [:cntrl:]:键盘的控制按键

    [:digit:]:数字,即0-9

    [:graph:]:除去空格符(空格符和Tab键)外的其他所有符号  

    [:lower:]:代表小写字符,即a-z  

    [:print:]:任何可以被打印出来的字样  

    [:punct:]:标点符号  

    [;space;]:空白符(代表两个中括号)  

    [;upper;]:大写字符,即A-Z  

    [;xdigit;]:16进制的数字类型,0-9 A-F a-f的数字与字符

    正则表达式:^  以....开头

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

  • 相关阅读:
    [编程语言][java][java se]java泛型中? T K V E含义(学习)
    Effective C++ 第二版 10) 写operator delete
    Cocos2d-x C++调用Android弹出提示框
    面试宝典 问题记录
    送给初入大学的工科男们一篇童话
    二叉树遍历
    webservice的讲解
    在JNI中新开线程遇到问题
    jni调试3(线程调试env变量问题)
    eMMC(KLM8G2FE3B)
  • 原文地址:https://www.cnblogs.com/Eucalyptusleaves/p/11421839.html
Copyright © 2011-2022 走看看