zoukankan      html  css  js  c++  java
  • shell学习-常用语句

    为什么使用shell

    可以快速、简单的完成编程,实现自己的想法。Shell非常适合编写小的工具,因为小工具更强调的是易于配置、维护、移植等,而不是执行效率。

    当自己的想法确实有必要进行优化,有必要让它更容易修改以及修正设计目的时,可以将shell编写的工具重新用C、C++/python等语言重新实现。

    常见的shell有bash/csh/sh等

    管道和重定向

    ls -al > lsoutput.txt #将ls命令输出的内容重定向到txt文件 在>前加数字 0 1 2 分别代表输入、标准输出、错误输出

    参数2可以将错误输出到文件 而标准输出的内容将显示在屏幕上

    >> #将输出添加到文件

    丢弃不需要保存的输出的方法

    Kill -l 1234 >/dev/null 2>&1 #将标准输出与错误输出都丢弃到系统垃圾箱

       

    | 管道 用来连接进程 通过管道连接的进程可以同时运行,并自动协调数据流

    1 Ps > psout.txt   #输出ps内容到psout.txt
    2 Sort psout.txt > psout.out  #对psout.txt内容进行排序  输出到psout.out中

    管道写法

    1 Ps | sort | pssort.out    #将ps内容排序后输出

    自动搜索文件夹下 所有文件中包含的 某字符串

    More $(grep -l POSIX *)    #在当前文件夹下的文件中  搜索POSIX字符串  打印出包含字符串的文件名

    创建脚本

    1.在脚本第一行添加 #!/bin/sh

    2.把脚本设置为可执行 chmod +x 脚本文件名

    3.设定脚本的权限

    shell语法

    1.变量 不需要提前申明,变量被用到时会自动创建,所有变量被看做字符串来存储 获取变量内容用$字符,

    若字符串里包含空格,则需要使用括号将字符串括起来,此外,等号两边不能有空格

    $() 或 $"" 用变量的值替换此处的内容 注意 $''不发生替换

    2.环境变量&参数变量

    $0   当前脚本的文件名

    $n        传递给脚本的参数n,比如$1表示第一个参数

    $#        传递给脚本或函数的参数个数。

    $*,$@  传递给脚本或函数的所有参数

    $?        上个命令的退出状态,或函数的返回值。

    $$         当前Shell脚本所在的进程ID

    $HOME 当前用户家目录

    $PS1 给出当前用户名、机器名和当前目录名

    $* 在一个变量中列出所有参数 参数间用IFS中第一个字符分隔开

    $@ $*的变体 列出所有参数 与IFS无关 参数之间用空格分开

    3.条件

    test & [ 命令:shell布尔判断命令

    检查一个文件是否存在

    1 if test -f fred.c
    2 then
    3 4 fi
    5 #或者
    6 if [ -f fred.c ]
    7 then
    8 9 Fi

    4.控制结构

    条件判断

    1 if condition
    2 then
    3 statements
    4 else if condition; then
    5 statements
    6 else
    7 statements
    8 fi

    循环语句

     1 for variable in values
     2 do
     3     statements
     4 
     5 done
     6 exit 0
     7 
     8 
     9 while condition; do
    10     statements
    11 
    12 done
    13 
    14    
    15 until condition
    16 do
    17     statements
    18 
    19 done
    20 
    21 #until与while的条件测试相反
    22 
    23 case variable in
    24     pattern [ | pattern] …) statements;;
    25     pattern [ | pattern] …) statements;;
    26 27 esac

    命令列表

    • AND列表

      执行一系列命令,只有在前边所有命令都执行成功的情况下才执行后一条命令

      statement1 && statement2 && statement3 && …

      &&的作用是检查上一条语句的返回值

      AND列表是一系列命令作为一个整体,所有命令都执行,AND才算执行成功

    • OR列表

      执行一系列命令直到一条命令成功为止

         

    函数

    function_name (){

    statements

    }

    函数定义需要放到调用之前

    当一个函数被调用时,脚本程序的位置参数($*/$@/$#/$1/$2等)都会被替换为函数的参数,当函数执行完,这些参数将会恢复他们之前的值

  • 相关阅读:
    正则表达式
    mvc3路由设置
    MVC 过滤器
    mvc3之自定义类实现路由配置和URL的生成
    Mvc View
    定义一个底层的泛型
    一个关于字典查找引发的思考——BinarySearch
    Linq学习之旅——Linq to Objects之延期执行方法(上篇)
    Linq学习之旅——Linq to Objects之立即执行方法(下篇)
    Linq学习之旅——Linq to Objects之延期执行方法(下篇)
  • 原文地址:https://www.cnblogs.com/Mrwang-tju/p/12192279.html
Copyright © 2011-2022 走看看