zoukankan      html  css  js  c++  java
  • linux shell基础知识

    什么是shell

    • shell是一个命令解释器,提供用户和机器之间的交互
    • 支持特定语法,比如逻辑判断、循环
    • 每个用户都可以有自己特定的shell
    • CentOS7默认shell为bash(Bourne Agin Shell)
    • 还有zsh、ksh等

    1.10 命令历史

    怎么查看历史命令?如下:

    # cat /root/.bash_history
    

    在自己的家目录下,存放的历史命令。

    1.11 命令能存多少条呢?可以查看历史命令

    # history 

    这是之前存放的命令,默认最大能存1000条,怎么查看?如下:

    # echo $HISTSIZE
    1000
    

    注:当你敲的命令只是存在内存当中,退出终端才保存到自己的家目录下。清空内存中的历史命令。如下:

    # history -c

    1.12 更改历史命令最大保存1000,编辑配置文件:

    # vim /etc/profile
    找到
    HISTSIZE=1000
    更改为你想要的最大历史保存数量
    HISTSIZE=5000
    

    这样更改不是马上生效,是要退出终端从新连接才生效。如何做不退出终端生效?如下:

    # source /etc/profile

    不相信可以echo查看下

    # echo $HISTSIZE
    5000
    

    1.13 把对应的命令用时间记录下来,怎样才能达到效果?如下:

    vim /etc/profile
    找到
    HISTSIZE=5000
    在下面一行添加如下:
    HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "
    

    马上生效

    # source /etc/profile
    # history 
        1  2019/09/22 14:35:05 vim /etc/profile
        2  2019/09/22 14:37:12 source /etc/profile

    这时候就定义格式。

    1.14 怎么永久保存不让别人删除

    # chattr +a ~/.bash_history
    
    [root@linux1 ~]# rm -f .bash_history
    rm: 无法删除".bash_history": 不允许的操作
    

    1.15 怎么去执行历史命令?

    # !!
    history 
    

    !!是执行历史命令的最后一条

    !n(n是数字)执行n的命令

    # !10
    chattr +a ~/.bash_history

    !vim是指执行最后一次用到vim的命令

    # !vim
    vim /etc/profile
    

    2.10 命令补全和别名

    • tab键,敲一下自动补全命令,敲两下查看文件
    • 参数补全,安装bash-completion
    • alias别名给命令重新起个名字
    • 各用户都有自己配置别名的文件 ~/.bashrc
    • ls /etc/profile.d/
    • 自定义的alias放到~/.bashrc

    2.11  参数补全,安装bash-completion

    # yum install -y bash-completion

    需要重启机器生效。

    2.12 alias别名给命令重新起个名字,假如输入一个命令很长,可以做个别名偷懒。如下:

    # alias aaa='vim /etc/sysconfig/network-scripts/ifcfg-ens36'

    这时候输入aaa就能编辑网卡配置文件,查看全部别名。

    # alias

    各用户都有自己配置别名的文件 ~/.bashrc,可以cat查看下:

    # cat .bashrc 

    还有在/etc/profile.d/文件里面,自定义别名放到~/.bashrc下。如何取消别名:

    # unalias aaa
    

    3.10 通配符

    把文件txt的文件全匹配出来

    # ls *.txt
    1.txt  2.txt  3.txt

    3.11 ?号是匹配任意一个字符

    # ls ?.txt
    1.txt  2.txt  3.txt  a.txt

    3.12 []方括号写的是范围,你要搜索的范围

    # ls [0-3].txt
    1.txt  2.txt  3.txt
    
    # ls [13].txt
    1.txt  3.txt
    
    # ls [0-9a-z].txt
    1.txt  2.txt  3.txt  a.txt

    4.10 输出重定向

    >一个大于号把前面查看的内容的输出输入到后面的文件,会删除后面文件里面的内容

    # cat 1.txt > 2.txt

    >>两个大于号是把前面输出的内容追加到后面的文件。不会删除后面文件里面的内容

    # cat 1.txt >> 2.txt
    

    4.11 >正确的输出 >>追加 2>错误的输入 2>>追加错误的 如何把正确输出和错误输出输入到一个文件里面去 &结合正确和错误的:

    # ls [12].txt aaaa.txt &> a.txt
    # cat a.txt
    ls: 无法访问aaaa.txt: 没有那个文件或目录
    1.txt
    2.txt
    

    把正确的输出和错误的输出放到a.txt里还可以追加

    # ls [12].txt aaaa.txt &>> a.txt

    可以把正确的输出保存到1.txt 错误的保存到a.txt

    # ls [12].txt aaaa.txt > 1.txt 2> a.txt
    
    # cat 1.txt
    1.txt
    2.txt
    
    # cat a.txt
    ls: 无法访问aaaa.txt: 没有那个文件或目录
    

    5.10管道符和作业控制

    管道符把一个输出的结果传给后面的命令

    # cat 1.txt | wc -l
    

    5.11 作业控制,当你在vi或者vim编辑一个文件时,想看看磁盘负载一般模式ctrl+z退出查看

    # vim 1.txt
    
    [1]+  已停止               vim 1.txt

    它还在编辑配置文件,回到配置文件按fg命令即可

    # fg

    jobs可以把停止编辑的文件列出来

    # jobs

    也可以调到后台去执行

    # bg 1

    sleep暂停,暂停5秒

    # sleep 5
    

    6.10 shell变量

    获取系统的变量,系统的变量都是大写开头

    # env

    还有另外一种查看变量,也可以查看用户自定义的变量

    # set

    可以自定义变量

    # a=111
    
    # echo $a
    111
    
    # set |grep 111
    _=111
    a=111
    

    变量名规则:字母、数字下划线,首位不能为数字

    变量值有特殊符号时需要用单引号括起来

    # a="a$bc"
    # echo $a
    a
    
    # a='a$b c'
    # echo $a
    a$b c
    

    为什么要单引号,上图可以清晰看出。双引号达不到想要的效果。

    上图要取中间值或者要加上””双引号引起来

  • 相关阅读:
    POJ 1141 括号匹配 DP
    881. Boats to Save People
    870. Advantage Shuffle
    874. Walking Robot Simulation
    文件操作
    861. Score After Flipping Matrix
    860. Lemonade Change
    842. Split Array into Fibonacci Sequence
    765. Couples Holding Hands
    763. Partition Labels
  • 原文地址:https://www.cnblogs.com/yantou/p/13504525.html
Copyright © 2011-2022 走看看