Shell-- 基础知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell-- 基础知识相关的知识,希望对你有一定的参考价值。

1、Shell脚本运行方式

  创建Shell脚本文件,一般以.sh结尾(如:example.sh)

  Shell脚本运行方式如下:

  • 添加 ‘x’ 执行权限(相对或绝对路径执行)
  • 使用bash或source(.)命令调用脚本文件

2、Bash的基本功能

  (1)、历史命令history

     -c:清空历史命令

    -w:将缓存中的历史命令保存到配置文件当中(~/.bash_history)

    调用历史命令的方法:

      ①、使用上、下键调用

      ②、使用“!n”重复执行第n条历史命令

      ③、使用“!!”重复执行上一条命令

      ④、使用“!字符”重复执行最近一条以此字符开头的命令

  (2)、命令别名alias

    格式:alias  别名=‘原命令’    [选项]

     例:alias   ls=‘ls -l’

    配置文件:

      单个用户:~/.bashrc

      所有用户:/etc/bashrc

      (对此处两个配置文件不太明白同学,可以理解为一个为全局变量,一个为局部变量。)

    不同类型的命令执行优先级:

      No.1、相对或绝对路径的方式执行命令

      No.2、别名命令

      No.3、bash内置命令

      No.4、根据环境变量定义的目录查询到的命令

  (3)、Bash常用快捷键

    技术分享图片

    技术分享图片

3、输入输出重定向 

   (1)、Bash的标准输入输出

    设备    设备文件名    文件描述符   类型

    键盘    /dev/stdin        0      标准输入

    显示器   /dev/stdout      1      标准正确输出

    显示器   /dev/stderr       2      标准错误输出

  (2)、输出重定向

    技术分享图片

  (3)、输入重定向

    命令:wc  【选项】 【文件名】

        -c:统计字数(字符)

        -w:统计单词数(字符串)

        -l  :统计行数

    例如:

       wc   <   文件(统计文件中的字数,单词数,行数)

          技术分享图片

       wc  <<  字符(统计从开始字符到结束字符中的单词,字,行数)

           技术分享图片

4、多命令顺序执行

  技术分享图片

5、管道符

  格式:命令1 | 命令2(将命令1的标准输出作为命令2的标准输入)

   xargs实现将命令1的标准输出作为命令2的选项

   例如:

    echo  “--help”  |  cat

      技术分享图片

    echo   “--help”  | xargs cat

      技术分享图片

6、通配符

  技术分享图片

7、Bash中其他特殊符号

  技术分享图片

  父Shell和子Shell(使用pstree查看)

    技术分享图片

    使用Shell不影响父Shell,在()中执行的命令,在新开启Shell中执行,不影响本Shell

8、变量

  (1)、变量规范

    可以由字母、数字和下划线组成,但是不能以数字开头,变量中间不能有空格。

  (2)、注意事项  

    v  在Bash中,变量的默认类型都是字符串型,如果需要进行数值运算,则需要转换为数值型

    v  变量用等号链接值,等号左右两侧不能有空格

    v  变量若有空格,需要使用单引号或双引号包括

    v  双引号“”括起来的$、|、``都有特殊含义

    v  单引号括起来的都是普通字符

    v  如果需要增加变量值,进行变量值叠加,”$变量名”或”${变量名}”,eg:PATH=$PATH:/sh

    v  变量名建议大写,易于区分

  (3)、变量分类

    v  用户自定义变量

    v  环境变量

    v  位置参数变量

    v  预定义变量

  1. 用户自定义变量

    a)         调用:

      echo  $变量名

      例如:echo  $PATH

 

    b)        查看:

      set [选项]  ----  直接回车显示系统中所有变量

             -u   调用没有声明的变量时会报错(建议使用)

             -x    命令执行前,先将命令输出一次

                           

    c)         删除:

      unset 变量名

 

   2、环境变量

    a)         设置:

      export  变量名=值------(声明~/.bash_profile)

      #export声明的是环境变量

    b)        查看:

      env

      常用格式: env | grep 变量

      #set中包括env,env查询环境变量,set查询所有变量

    c)         PS1变量:定义命令提示符

         技术分享图片

                          PS1可支持以下选项:

        v  \\d:显示日期,格式为“星期月日”?

        v  \\H:显示完整的主机名。如默认主机名“localhost.localdomain”

        v  \\h:显示简写主机名。如默认主机名“localhost”

        v  \\t:显示24小时制时间,格式为“HH:MM:SS”

        v  \\T:显示12小时制时间,格式为“HH:MM:SS”

        v  \\A:显示24小时制时间,格式为“HH:MM”

        v  \\@:显示12小时制时间,格式为“HH:MM am/pm”

        v  \\u:显示当前用户名

        v  \\v:显示Bash的版本信息

        v  \\w:显示当前所在目录的完整名称

        v  \\W:显示当前所在目录的最后一个目录

        v  \\#:执行的第几个命令

        v  \\$:提示符。如果是root提示符为“#”,如果是普通用户提示符为“$”

  3、调用格式:

      

    d) LANG语系变量----定义主语系环境变量

                            i.查看Linux支持的语系

          locale –a | more

                            ii.当前使用可用语系

          locale

                            iii.查询默认语系

          cat  /etc/sysconfig/i18n

                            iv.修改桌面版中文为英文

  1. 将当前语系改为en_US,默认是zh_CN

     export LANG=en_US.UTF-8

  1. 执行命令进行文件名转换

     xdg-user-dirs-gtk-update

 

  4、位置参数变量

    v  $*显示所有参数(作为整体接收)

    v  [email protected]显示所有参数(分开接收)

    v  $#显示参数个数

  预定义变量

     技术分享图片

    v  $? 判断上一条命令是否正常执行

      错误数值非0,正确的是0

    v  $$ 当前进程的PID

    v  $!最后一个后台执行的命令的进程

 

                    注意事项:

    v  变量名可以自定义,如果不指定变量名,会把输入保存入默认变量REPLY

    v  如果只提供了一个变量名,则整个输入行赋予该变量

    v  如果提供了一个以上的变量名,则输入行分为若干字,一个接一个地赋予各个变量,而命令行上的最后一个变量取得剩余的所有值

 

 

  5、接受键盘输入

    格式:read  [选项]   [变量名]

                     选项:-p “提示信息”:在read等待时输入的信息

                      -t  秒数       :read等待的秒数(到达秒数自动跳转下一条)

                      -n  字符数    :read最多能接收的字符数

                      -s            :隐藏输入的信息

                    注:若特殊选项不换行,使用\\n控制转换符

 

以上是关于Shell-- 基础知识的主要内容,如果未能解决你的问题,请参考以下文章

Linux 基础知识 | shell知识

Linux 基础知识 | shell知识

Shell基础知识

Shell-- 基础知识

shell基础知识

Shell基础知识