• shell编程基础


    shell(外壳)与内核(Kernel)相对,一内一外构成完整的系统...............

    Redhat/CentOS系统默认安装的shell叫做bash,即Bourne Again Shell,它是sh(Bourne Shell)的增强版本。Bourn Shell 是最早行起来的一个shell,创始人叫Steven Bourne,为了纪念他所以叫做Bourn Shell,简称sh。

    1.历史命令记录

    我们知道敲过的命令,linux是会有记录的,history预设可以记录1000条历史命令。这些命令保存在用户的家目录中的.bash_history文件中(只有当用户正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中)

    !就是一个与历史有关的非常有意思的字符

       1. !! 连续两个 ‘!’, 表示执行上一条指令;

    1 [root@izgt88z6l1kvd7z ~]# echo $?
    2 0
    3 [root@izgt88z6l1kvd7z ~]# !!
    4 echo $?
    5 0
    6 [root@izgt88z6l1kvd7z ~]# 

      2. !n 这里的n是数字,表示执行命令历史中第n条指令。例如 !52 表示执行命令历史中第52条命令;

    1 [root@izgt88z6l1kvd7z ~]# history |grep 25
    2    25  ls
    3   110  history |grep 25
    4 [root@izgt88z6l1kvd7z ~]# !25
    5 ls
    6 administration  docker  install.sh  t1.txt  test  web

     3.!字符 字符大于等于1,例如!mk表示执行最近一次以mk开头的命令(报错是因为目录已经存在)

    1 [root@izgt88z6l1kvd7z ~]# !mk
    2 mkdir administration
    3 mkdir: cannot create directory ‘administration’: File exists

    2.别名

    我们可以通过alias把一个常用的并且很长的指令别名一个简洁易记的指令。如果不想用了,还可以用unalias解除别名功能。直接敲alias会看到目前系统预设的alias

    1 [root@izgt88z6l1kvd7z ~]# alias ?='echo $?'
    2 [root@izgt88z6l1kvd7z ~]# ?
    3 0
    4 [root@izgt88z6l1kvd7z ~]# unalias ?
    5 [root@izgt88z6l1kvd7z ~]# ?
    6 -bash: ?: command not found

    3.通配符

    *匹配0或多个字符,?匹配一个字符。

    1 [root@izgt88z6l1kvd7z ~]# ls tes*
    2 test:
    3 t1.txt
    4 
    5 test1,test2,tesa,tesb:
    6 [root@izgt88z6l1kvd7z ~]# ls tes?
    7 t1.txt

    4.输入,输出重定向及管道符

    >输出重定向  ,错误重定向2>  >>追加重定向 <输入重定向  |管道符

    5.进程控制快捷键

    ctrl+z暂停进程

    例如:我们打开了tcpdump来抓包,然后ctrl+z暂停

     1 [root@izgt88z6l1kvd7z ~]# tcpdump
     2 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
     3 listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
     4 23:58:23.268094 IP izgt88z6l1kvd7z.ssh > 116.209.213.92.62076: Flags [P.], seq 3428140470:3428140658, ack 434735173, win 251, length 188
     5 23:58:23.268372 IP izgt88z6l1kvd7z.36751 > 100.100.2.136.domain: 5794+ PTR? 92.213.209.116.in-addr.arpa. (45)
     6 23:58:23.296464 IP 100.100.2.136.domain > izgt88z6l1kvd7z.36751: 5794 NXDomain 0/1/0 (103)
     7 23:58:23.297201 IP izgt88z6l1kvd7z.50902 > 100.100.2.138.domain: 53930+ PTR? 185.96.26.172.in-addr.arpa. (44)
     8 23:58:23.297435 IP 100.100.2.138.domain > izgt88z6l1kvd7z.50902: 53930 NXDomain* 0/1/0 (98)
     9 23:58:23.297563 IP izgt88z6l1kvd7z.46290 > 100.100.2.136.domain: 56500+ PTR? 136.2.100.100.in-addr.arpa. (44)
    10 23:58:23.297620 IP izgt88z6l1kvd7z.ssh > 116.209.213.92.62076: Flags [P.], seq 188:360, ack 1, win 251, length 172
    11 23:58:23.298287 IP 100.100.2.136.domain > izgt88z6l1kvd7z.46290: 56500 NXDomain* 0/1/0 (99)
    12 23:58:23.298428 IP izgt88z6l1kvd7z.60977 > 100.100.2.138.domain: 65211+ PTR? 138.2.100.100.in-addr.arpa. (44)
    13 23:58:23.298458 IP izgt88z6l1kvd7z.ssh > 116.209.213.92.62076: Flags [P.], seq 360:604, ack 1, win 251, length 244
    14 23:58:23.298713 IP 100.100.2.138.domain > izgt88z6l1kvd7z.60977: 65211 NXDomain* 0/1/0 (99)
    15 23:58:23.298844 IP izgt88z6l1kvd7z.ssh > 116.209.213.92.62076: Flags [P.], seq 604:1488, ack 1, win 251, length 884
    16 23:58:23.420263 IP izgt88z6l1kvd7z.ssh > 116.209.213.92.62076: Flags [P.], seq 1488:1644, ack 1, win 251, length 156
    17 ^Z
    18 [1]+  Stopped                 tcpdump

    第十八行我们可以看到已经停了,我们可以用jobs查看停掉的任务,fg在前台跑,bg在后台跑

    ctrl+c关闭进程......不用赘述

  • 相关阅读:
    笔记:Why don't you pull up a chair and give this lifestyle a try?
    使用 Git 来备份 MySQL 数据库
    FastAdmin 将 PHP 框架升级到 ThinkPHP 5.1
    javascript的冻结对象之freeze(),isFrozen()方法
    javascript的密封对象之seal(),isSealed()方法
    javascript的防篡改对象之preventExtensions()方法
    自己根据js的兼容封装了一个小小的js库
    关于跨浏览器的部分代码的封装
    jQuery 的noConflict()的使用.
    jQuery的get()用法
  • 原文地址:https://www.cnblogs.com/hxlinux/p/12840088.html
Copyright © 2020-2023  润新知