zoukankan      html  css  js  c++  java
  • Shell的简单介绍(一)

    shell 的分类

    Shell 类别 易学性 可移植性 编辑性 快捷性
    Bourne Shell (sh) 容易 较差 较差
    Korn Shell (ksh) 较难 较好 较好
    Bourne Again (Bash) 较好
    POSIX Shell (psh) 较难 较好
    C Shell (csh) 较难 较好 较好
    TC Shell (tcsh)

    Shell 的两种主要语法类型有 Bourne 和 C,这两种语法彼此不兼容。 Bourne 家族主要包括 sh、
    ksh、 Bash、 psh、 zsh; C 家族主要包括: csh、 tcsh (Bash 和 zsh 在不同程度上支持 csh 的语法)。
    我们可以通过/etc/shells 文件来查询 Linux 支持的 Shell。命令如下

    [root@topcheer ~]# cat /etc/shells
    /bin/sh
    /bin/bash
    /usr/bin/sh
    /usr/bin/bash
    /bin/tcsh
    /bin/csh
    [root@topcheer ~]#

    Shell echo命令

    在 echo 命令中如果使用了“-e”选项,则可以支持控制字符,如表 所示:

    控制字符 作 用
    \ 输出本身
    a 输出警告音
     退格键,也就是向左删除键
    c 取消输出行末的换行符。和“-n”选项一致
    e ESCAPE 键
    f 换页符
    换行符
    回车键
    制表符,也就是 Tab 键
    v 垂直制表符
    nnn 按照八进制 ASCII 码表输出字符。其中 0 为数字零, nnn 是三位八进制数
    xhh 按照十六进制 ASCII 码表输出字符。其中 hh 是两位十六进制数


    Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式:

    echo string
    

    您可以使用echo实现更复杂的输出格式控制。

    1.显示普通字符串:

    [root@topcheer ~]# echo "hello shell"
    hello shell
    [root@topcheer ~]# echo hello shell
    hello shell
    [root@topcheer ~]#

    这里的双引号完全可以省略

    [root@topcheer ~]# echo -n hello shell
    hello shell[root@topcheer ~]#

    #如果加入了“-n”选项,输出内容结束后,不会换行直接显示新行的提示符

    2.显示转义字符

    [root@topcheer ~]# echo ""It is a test""
    "It is a test"
    [root@topcheer ~]#

    同样,双引号也可以省略

    3.显示变量

    [root@topcheer ~]# sh echo2.sh
    hello
    hello It is a test
    [root@topcheer ~]# cat echo2.sh
    #!/bin/sh
    read name
    echo "$name It is a test"
    [root@topcheer ~]#

    4.显示换行

    [root@topcheer ~]#  echo -e "a	b	c
    d	e	f"
    a       b       c
    d       e       f
    [root@topcheer ~]#

    #我们加入了制表符“ ”和换行符“ ”,所以会按照格式输出

    [root@topcheer ~]# echo -e "141	142	143
    144	145	146"
    a       b       c
    d       e       f
    [root@topcheer ~]#
    [root@topcheer ~]# echo -e "\ a"
    
    [root@topcheer ~]# echo -e "abc"
    ac
    [root@topcheer ~]#
    这个输出会输出,同时会在系统音响中输出一声提示音 

    #这个输出中,在 b 键左侧有“”,所以输出时只有 ac

    5.显示不换行

    [root@topcheer ~]# sh echo1.sh
    OK! OJBK
    [root@topcheer ~]# cat echo1.sh
    #!bin/bash
    echo -e "OK! c"
    echo OJBK
    [root@topcheer ~]#

    6.显示结果定向至文件

    [root@topcheer ~]# echo "It is a test" > myfile
    [root@topcheer ~]# ll
    总用量 12
    -rw-------. 1 root root 1560 8月  31 18:27 anaconda-ks.cfg
    drwxr-xr-x  2 root root   42 10月 28 14:48 docker
    -rw-r--r--. 1 root root 1608 8月  31 18:29 initial-setup-ks.cfg
    drwxr-xr-x  3 root root   19 11月 15 13:57 logs
    -rw-r--r--  1 root root   13 11月 18 23:36 myfile

    7.原样输出字符串,不进行转义或取变量(用单引号)

    [root@topcheer ~]# echo '$name"'
    $name"
    [root@topcheer ~]#

    8.显示命令执行结果

    [root@topcheer ~]# echo `date`
    2019年 11月 18日 星期一 23:37:32 CST
    [root@topcheer ~]#

    注意: 这里使用的是反引号 `, 而不是单引号 '。

    结果将显示当前日期

    9.显示颜色

    [root@topcheer ~]# echo -e "e[1;31m abcd e[0m"
     abcd
    [root@topcheer ~]# echo -e "e[1;42m abcd e[0m"
     abcd
    [root@topcheer ~]#

     

     第一条命令会把 abcd 按照红色输出。解释下这个命令e[1 是标准格式,代表颜色输出开始, e[0m
    代表颜色输出结束, 31m 定义字体颜色是红色。 echo 能够识别的颜色如下: 30m=黑色, 31m=红色, 32m=
    绿色, 33m=黄色, 34m=蓝色, 35m=洋红, 36m=青色, 37m=白色

    第二条命令会给 abcd 加入一个绿色的背景。 echo 可以使用的背景颜色如下: 40m=黑色, 41m=红色,
    42m=绿色, 43m=黄色, 44m=蓝色, 45m=洋红, 46m=青色, 47m=白色

    Shell脚本的运行

    [root@localhost sh]# chmod 755 hello.sh
    #赋予执行权限
    [root@localhost sh]# /root/sh/hello.sh
    Mr. Shen Chao is the most honest man.
    #使用绝对路径运行
    [root@localhost sh]# ./hello.sh
    Mr. Shen Chao is the most honest man.
    #因为我们已经在/root/sh 目录当中,所以也可以使用相对路径运行
     通过 Bash 调用执行脚本
    这种方法也非常简单,命令如下:
    [root@localhost sh]# bash hello.sh
    Mr. Shen Chao is the most honest man. 

     

  • 相关阅读:
    Java 最常见的 208 道面试题(第九模块和第十模块答案)
    更灵活的边缘云原生运维:OpenYurt 单元化部署新增 Patch 特性
    高德 Serverless 平台建设及实践
    官宣:恭喜 ChaosBlade 项目进入 CNCF Sandbox
    工商银行分布式服务 C10K 场景解决方案
    云原生的进一步具象化
    阿里云入选 2021 Gartner APM 魔力象限,国内唯一入选云厂商
    云原生下的灰度体系建设
    seata-golang 一周年回顾
    WebAssembly + Dapr = 下一代云原生运行时?
  • 原文地址:https://www.cnblogs.com/dalianpai/p/11886477.html
Copyright © 2011-2022 走看看