zoukankan      html  css  js  c++  java
  • 【shell入门】Shell用法

      1. 参考:http://www.cnblogs.com/Lynn-Zhang/p/5758287.html

         

        1.sh/bash/csh/Tcsh/ksh/pdksh等shell的区别

        • sh(全称 Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用。
          Bourne Shell 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种 shell。
        • bash(全称 Bourne Again Shell): LinuxOS 默认的,它是 Bourne Shell 的扩展。
          与 Bourne Shell 完全兼容,并且在 Bourne Shell 的基础上增加了很多特性。可以提供命令补全,命令编辑和命令历史等功能。它还包含了很多 C Shell 和 Korn Shell 中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面。
        • csh(全称 C Shell): 是一种比 Bourne Shell更适合的变种 Shell,它的语法与 C 语言很相似。
        • Tcsh: 是 Linux 提供的 C Shell 的一个扩展版本。
          Tcsh 包括命令行编辑,可编程单词补全,拼写校正,历史命令替换,作业控制和类似 C 语言的语法,他不仅和 Bash Shell 提示符兼容,而且还提供比 Bash Shell 更多的提示符参数。
        • ksh (全称 Korn Shell): 集合了 C Shell 和 Bourne Shell 的优点并且和 Bourne Shell 完全兼容。
        • pdksh: 是 Linux 系统提供的 ksh 的扩展。
          pdksh 支持人物控制,可以在命令行上挂起,后台执行,唤醒或终止程序。
         
      2. 如果不好理解的话,Shell 个人感觉可以对应成 win 中的 bat,通过代码来实现一些自动定时任务,自动备份或者执行的任务。

        1、chmod +x file 加上执行权限,否则会提示无执行权限。

        2、注意执行脚本时候或者全目录,或者 ./file.sh ,如果不加的话,linux 默认会从PATH 里去找该 file.sh。

        3、看了这篇教程,发现脚本后缀名可以任意修改,仍然可以正常运行。

        4、语法类PHP,方便学习。

      3.   首先,什么是脚本语言?

        脚本语言是像剧本一样教计算机办某个事情的语言。

        比如你想让计算机执行复制某个文件的操作,如:cp ~/Desktop/*.txt ~/text

        你可以在文本编辑器写入上边的代码并且保存此文件,然后你通过执行这个文本文件来执行上面的代码,并不需要重复手动输入上边的代码。

        下面这句话是我在网上看到的:

        所以脚本其实就是短小的、用来让计算机自动化完成一系列工作的程序,这类程序可以用文本编辑器修改,不需要编译,通常是解释运行的。

    1.Shell 变量

    定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:

    ww=wwwwwwwwwwww
    echo $ww
    echo ${ww}

    使用一个定义过的变量,只要在变量名前面加美元符号即可,变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界.

    只读变量

    使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

    下面的例子尝试更改只读变量,结果报错:

    #!/bin/bash
    myUrl="http://www.w3cschool.cc"
    readonly myUrl
    myUrl="http://www.runoob.com"

    删除变量

    使用 unset 命令可以删除变量。语法:变量被删除后不能再次使用。unset 命令不能删除只读变量。

    Shell 字符串

    字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似

    Linux 的字符串截取很有用。有八种方法。
    
    假设有变量 var=http://www.aaa.com/123.htm
    
    1. # 号截取,删除左边字符,保留右边字符。
    
    echo ${var#*//}
    
    其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
    
    即删除 http://
    
    结果是 :www.aaa.com/123.htm
    
    2. ## 号截取,删除左边字符,保留右边字符。
    
    echo ${var##*/}
    
    ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
    
    即删除 http://www.aaa.com/
    
    结果是 123.htm
    
    3. %号截取,删除右边字符,保留左边字符
    
    echo ${var%/*}
    
    %/* 表示从右边开始,删除第一个 / 号及右边的字符
    
    结果是:http://www.aaa.com
    
    4. %% 号截取,删除右边字符,保留左边字符
    
    echo ${var%%/*}
    
    %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
    
    结果是:http:
    
    5. 从左边第几个字符开始,及字符的个数
    
    echo ${var:0:5}
    
    其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
    
    结果是:http:
    
    6. 从左边第几个字符开始,一直到结束。
    
    echo ${var:7}
    
    其中的 7 表示左边第8个字符开始,一直到结束。
    
    结果是 :www.aaa.com/123.htm
    
    7. 从右边第几个字符开始,及字符的个数
    
    echo ${var:0-7:3}
    
    其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
    
    结果是:123
    
    8. 从右边第几个字符开始,一直到结束。
    
    echo ${var:0-7}
    
    表示从右边第七个字符开始,一直到结束。
    
    结果是:123.htm
    
    注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)

    Shell 注释

    以"#"开头的行就是注释,会被解释器忽略。

    sh里没有多行注释,只能每一行加一个#号

    Shell 基本运算符

    Shell 和其他编程语言一样,支持多种运算符,包括:

    • 算数运算符
    • 关系运算符
    • 布尔运算符
    • 字符串运算符
    • 文件测试运算符

    原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。

    expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

    例如,两个数相加(注意使用的是反引号 ` 而不是单引号 ')

    #!/bin/bash
    
    val=`expr 2 + 2`
    echo "两数之和为 : $val"
  • 相关阅读:
    ShoreWall不错的Linux防火墙 规格严格
    数据挖掘 规格严格
    GLIBC 规格严格
    Solr/Lucene Wiki 规格严格
    Zope??? 规格严格
    用Apache htpasswd管理SVN帐户
    假装
    拼包函数及网络封包的异常处理(含代码)
    云计算
    云计算
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/7575609.html
Copyright © 2011-2022 走看看