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-3040-Allowance
    [置顶] .net技术类面试、笔试题汇总3
    数据对接—kettle使用之二
    做好先期工作,才能有效沟通
    cc++复习基础要点08--c++单例模式
    android 限制adb的访问目录
    我奋斗18年,和你或者咖啡没有任何关系
    (3)选择元素——(15)总结(Summary)
    (3)选择元素——(16)延伸阅读(Further reading)
    网络协议复习
  • 原文地址:https://www.cnblogs.com/yantou/p/13504525.html
Copyright © 2011-2022 走看看