• Shell相关


    目的:了解Shell的常用命令

    Shell基本介绍

    Shell其实就是"操作系统"的壳,用于和操作系统进行交互.

    查看Linux支持的shell

    cat /etc/shells
    

    bash和shell的关系

    /bin/bash是Linux预设的shell.bash是GUN计划中最重要的工具软件之一,目前也是Linux distribution的标准shell.

    bash的主要功能

    history

    默认会记录1000个指令.一般都存放在~/.bash_hitory文件中,注意:.bash_histroy文件之记录前一次登录之间的命令,本次登录操作的命令记录在内存中,只有当注销的时候,会写入到该文件中

    tab命令补全
    命令别名设置功能(alias)

    alias lm='ls -al'

    进程控制、前景背景控制(job control,foreground,background)
    程序化脚本(shell scripts)
    通配符(wildcard)
    Bash shell 内建命令:type

    指令下达(通过bash进行访问操作系统)

    总之,可以通过终端(tty)上面登录后, Linux会依据/etc/passwd文件设定给我们一个shell(预设是bash),然后我们可以通过指令下达来操作shell

    shell的变量
    # 使用echo 获取变量值
    echo $PATH
    echo ${PATH} # 注意和下面的$(指令)的区别,括号里放的的指令,花括号取的是变量的值
    
    # 设置变量值
    ## 设置变量规则
    ### 1. 变量与内容之间用=号连接,切=号两边不能有空格
    ### 2. 变量内容中间如果有空格,则可以使用双引号或者单引号括起来
    ###      但是使用双引号,则双引号内如果有特殊字符则保留特殊符号原本的特性. 如:var="hello,$Lang" 等同于var="hello,en_US"
    ###      使用单引号,则表示纯字符,不保留特殊字符的特性
    ### 3. 使用转义字符可以转义特殊字符
    ### 4. 在一串指令中如果需要由其他指令提供信息,可以使用`指令`或者$(指令)获取.
    echo $(uname -r)
    echo `uname -r`
    ### 5. 如果该变量需要在子程序中使用,需要使用export 变量
    ### 6. 取消变量使用unset 变量名
    
    环境变量

    环境变量可以帮组我们达到很多功能,包括家目录的切换、提示符的显示、执行文件搜索等等.可以使用env和export命令查看当前shell环境中有多少默认的环境变量

    env:environment的简写,是列出所有的环境变量:
        HOME:家目录
        SHELL:目前这个环境使用的shell,Linux预设的是/bin/bash
        HISIZE:与历史记录大小有关
        MAIL:使用mail指令在收信,系统会去读取邮件文件
        PATH:就是搜索可执行文件路径,目录与目录之间使用冒号(:)分割,会按照目录顺序搜索
        LANG:编码
        RANDOM:随机数变量,目前大多数distribution都会有随机数生成器,就是/dev/random文件,可以使用$RANDOM取随机值
    set:观察所有变量(环境变量和自定义变量),bash可不只有环境变量,还有与bash接口相关的变量,以及用户自定义的变量.
        PS1:提示字符的设定
        $:代表这个shell的pid,echo $$可以输出该shell的pid
        ?:上一个指令回传值,一般上一个指令执行成功返回0,否则返回错误码
    export:自定义变量转换成环境变量.env和set现在知道了所谓的环境变量和自定义变量,两者之间的区别是,该变量是否可以被子程序继续引用.

    变量键盘读取、数组和宣告(read array declare)
    read 读取来自键盘输入的变量,就使用read这个指令.

    declare/typeset 声明变量类型

    declare和typeset是一样的功能,就是在声明变量的类型.如果使用declare后面并没有接任何参数,那么bash就会主动的将所有的变量名称与内容通通叫出来,和set一样.

    declare [-aixr] variable
    -a:将后面名为variable的变量定义成为数组类型array
    -i:将后面名为variable的变量定义成为整数数字类型integer
    -x:用法与export一样,将后面的variable变成环境变量
    -r:将变量设定为readonly类型,该变量不可以被更改内容,也不能unset
    
    与文件系统以及程序的限制关系:ulimit

    试想下Linux主机同时登录10个人,且同事开启了100个文件,每个文件约10M,这样主机的内存要1010010M=10G,这样系统很容易挂,所以为了避免这种情况的出现,bash是可以限制用户的某些系统资源的,包括打开的文件数量,可以使用CPU时间,可以使用的内存总量等等.

    ulimit [-SHacdfltu] 配额
    -H:hard limit, 严格设定,必定不能超过这个设定的数值
    -S:soft limit,警告设定,可以超过这个设定值,但是如果超过则有警告信息. 在设定上,通常soft会比hard小
    -a:后面不接任何选项与参数,可以列出所有的限制额度
    -c:当某些程序发生错误时,系统可能会将该程序在内存中的信息写入文件(除错用)
    -f:此shell可以建立的最大文件大小(一般可能设定为2GB)单位为Kbytes
    -d:程序可以使用的最大断裂内存(segment)大小
    -l:用于锁定(lock)的内存量
    -t:可使用的最大CPU时间(单位为秒)
    -u:单一用户可以使用的最大程序(process)数量
    

    bash环境的配置文件

    是否发现一旦进入bash就会取得一堆变量,但是我们并没有进行任何的动作.这是因为Linux系统有一些环境配置文件的存在,让bash在启动时直接读取这些配置文件,以规划好bash的操作环境.而这些配置文件又分系统配置文件以及用户个人的偏好设置文件.

  • 相关阅读:
    QT之QRect函数QRect::adjust()函数
    QT 正则表达式(进阶篇)IP,端口号,文件名,非空格字符的匹配,已验证
    QT 正则表达式(基础篇)
    处理不平衡数据的策略
    记录一下ssh,nfs安装步骤
    用户偏好的回归预测推荐
    SVD++分解
    BiasLFM分解
    WALS分解
    ALS分解
  • 原文地址:https://www.cnblogs.com/kayj/p/12341072.html
Copyright © 2020-2023  润新知