shell入门基础&常见命令及用法

shell

   
shell是一个发令解释器,实际是一个先后,/bin/bash,linux中拥有的命令都由它来诠释,有友好的语法

    shell脚本

        以.sh结尾

        shell语法+linux命令

    注释:

        单行注释 : #
        多行注释 : :<<c   c

    shell执行措施

        bash /path/to/script-name  或   /bin/bash
/path/to/script-name    (强烈推荐使用)
        /path/to/script-name   或  ./script-name   
(当前路线下举行脚本)
        source script-name  或  . script-name   
(注意“.“点号前边有空格)

        前三种实施时,都会张开新的长河执行脚本
        source不会开启新的进度

        使用source时,能够与当下终端共享进度,共享变量(重点)

    变量

        1、name=itcast
        2、name=’itcast $age’  不会分析其中的遍历
        3、name=”itcast $age“ 解析变量后,再拼接成新的字符串

    命令变量

        1、name=`ls`
        2、name=$(ls)

        括号里必须是linux命令,把命令执行的结果记录给变量

    全局变量

        方法一:

        变量名=值

        export 变量

        方法二:(最常用)

        export 变量名=值

        借使是在终端中定义全局变量,成效范围是现阶段极端及子进度

       
借使想要自己定义的全局变量在跟系统的全局变量一样在具有条件都使得,须求在~/.bashrc或/etc/profile文件中定义:

       
修改~/.bashrc后,直接打开新的终点,定义的全局变量就卓有功能了,此措施只对近期用户有效
       
修改/etc/profile时,必要重启操作系统,定义的全局变量才生效,此形式对所有用户有效
       
上边两种艺术在修改文件后,尽管想让全局变量在现阶段终端生效,须求执行命令source
~/.bashrc或source /etc/profile

    翻开变量

        标准使用方式:”${变量名}”

    内置

        $0  获取当前实践的shell脚本文件名
        $$  获取执行shell脚本的进度号
        $n 
获取当前实施的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的公文名,即使n大于9就要用大括号括起来${10}
        $#  获取当前shell命令行中参数的总个数
        $?  获取执行上一个指令的重回值(0为成功,非0为失利)

        $?:上一条命令是实践一个文件,重返的结果是文件中的最终一条命令

    默认值

        1、

         变量a借使有内容,那么就输出a的变量值

        ​ 变量a假若没有内容,那么就输出默许的情节

        ​ 格式:

             ${变量名:-默认值}

        2、

         无论变量a是或不是有内容,都输出默许值

        ​ 格式:

            ${变量名+默认值}

    测试语句

        等号左右务必有空格,中括号左右务必有空格

        test a = 1

        [ a = 1 ]

    逻辑表明式

        &&符号
        命令1 && 命令2
        假设命令1进行成功,那么执行命令2
        如果命令1执行破产,那么不执行命令2

        ||符号
        命令1 || 命令2
        1 要是命令1举办成功,那么不执行命令2
        2 比方命令1执行破产,那么执行命令2

    文本表达式

        判断是不是是可执行文件

        [ -f abc ] && [ -x abc ]

    测算表达式

        a=$((a+1))
        let a=a+1

    重定向

        命令>文件

        命令归来的结果又科学和谬误二种,1象征正确,2代表错误

        bash chongdingxiang.sh >/dev/null 2>&1 &

        把正确的和错误的结果都输出到黑洞文件,而且命令在后台执行

    linux四剑客

        grep

            grep -nr 关键字 .

        find

            find . -name “*sh”

        sed

       行编辑工具

            -i 真正的修改

                s:替换
                a:追加
                i:插入
                d:删除

            sed -i “s#sed#SED#g” sed.txt

                每一行找到sed,把具有的替换为SED

            sed -i “2s#SED#sed#2” sed.txt

                第二行的第三个SED替换为sed

            sed -i “1,4a\hello2” sed.txt

                在1到4行的每一行后扩充一行内容

            sed -i “1i\hello3” sed.txt

                在第1行前插入一行

            sed -i “2d” sed.txt

                删除第2行

        awk

            分析工具,按行处理

            awk ‘BEGIN{FS=”:”;OFS=”–“} {print $2,$NF}’ awk2.txt

            默许按照空格或tab键拆分数据,通过OFS指定输出时的相间符

    流程控制

  

  if语句

        if [ 条件 ]
        then
             指令1
        elif [ 条件2 ]
        then
            指令2
        else
            指令3
        fi

#!/bin/bash

read -p "请输入性别:" sex
if [ "$sex" == "nan" ]
then
echo "输入的是男"
fi

  case语句

#!/bin/bash

case "$1" in
        "start")
        echo "启动"
        ;;
     "stop")
         echo "停止"
        ;;
     "restart")
         echo "重启"
         ;;
         *)
         echo "。。。。"
         ;;
esac

  for循环

            遍历文件夹

#!/bin/bash

mkdir ../bak
for file  in $(ls)
do 
    # echo "file: $file"
    cp "$file" ../bak/"${file}-bak"
done

   seq命令

#!/bin/bash

for num in $(seq 5)
do  
     echo "num: $num"
done

   while循环

#!/bin/bash

count=1
while [ $count -lt 5 ]
do  
     echo "count: $count"
     let count=count+1
done

   until循环

#!/bin/bash

count=1
until [ $count -ge 5 ]
do  
     echo "count: $count"
     let count=count+1
done

  函数

#!/bin/bash

echo "jiaoben : $1,$2,$3"
dayin(){
if [ $# = 3 ] 
then

echo "hanshu : $1,$2,$3"
else
     echo "需要3个参数"
fi
}

#dayin  e f g
dayin  $1 $2 $3

    使用source执行脚本,脚本中定义的变量和函数都能在现阶段极端调用

         让root用户能够运用python虚拟环境

         export WORKON_HOME=/home/python/.virtualenvs/
         source /usr/local/bin/virtualenvwrapper.sh

相关文章