Android内核剖析读书笔记-----1.3 Android常用的Linux命令,1.4Linux脚本备忘

今天尝试一种新的学习方法,边读边笔记,昨天的效率实在太低了。

1.3 Android常用的Linux命令

    * man

           man command ,man既manual手册,用于察看Linux命令的用法。例:man ls

    * find

    * grep

          find用于查找目录,grep用于查找字符串,字符串可用正则表达式描述。

    * xagrs

        Linux支持多管道查询,用 | 隔开查询语句,上一条查询结果作为下一条查询的参数。

            例:查找当前目录下,res目录中含有“hello Linux”所有的xml文件

                find `find . -name res` -name "*.xml" | xargs grep hello Linux (注:`不是单引号,是1旁边符号,``之间是find 命令的嵌套查询)

    * cat

        用于连接文本内容并在Terminal中输出文本内容,不仅可以连接储存类文本,还可以是设备文件

    * chmod

        在Linux系统中,文件的访问者被分为3类,

            u 文件的创建者

            g 同文件创建者在同一组的用户

            o 其他用户

        权限分为读(r),写(w),执行(x),使用chmod给文件赋予不同文件访问者不同权限

            例: chmod  u+rwx,g+rx hellolinux.sh (用户的创建者有读写执行的权限,同组的用户有读执行权限)

        用命令 ls -l 来察看文件的具体权限

            例:ls -l hellolinux.sh

                    -rwxr-xr-x 1 cyc cyc 3976244  8月 11  2009

            Linux用10位(bite)表示文件的执行权限,

                bite 0:-/d 代表文件或目录,-代表文件,d代表目录

                bite1-bite3:代表u权限

                bite4-bite6:代表g权限

                bite7-bite9:代表o权限

            因此hellolinux.sh用户有读写执行权限同组和其他用户只有读和执行权限。

        在部分Linux系统,比如基于Linux的Android,不识别rwx字符,它们采用1个8进制数来代表。

            比如:chmod 777 helloLinux.sh 八进制7换算成2进制是111,即所有用户都有读写和执行的权限。

    * ps,kill

        ps列出所有的进程,根据列出进程的PID,可用kill -9 pid 命令来杀死进程。-9是一个固定的参数。

    * export

        用于将某个变量值作用于全局,例如将某路径赋值于环境变量PATH,export PATH,就可以在全局范围内使用该路径了。

1.4 Linux脚本备忘

    什么是脚本,简单的说脚本是不需要编译的程序文件,c/java需要编译才能运行,所以他们不是脚本。

    脚本有个2个共同的特点:

        1:脚本内容均为字面上可以读懂的字面文件。

        2:不同的脚本由不同的脚本解释器,解释执行,脚本语法由解释器的设计者定义。

    Linux脚本分为两类,bash和perl,书中主要介绍了bash脚本。

        一个简单例子:新建一文本文件,输入一下内容:

            #!/bin/bash

            ehco “Hello Bash” # print Hello Bash

        保存文件名为HelloBash.sh,赋予执行权限chmod a+rwx HelloBash.sh

        执行./HelloBash

        就可看到在Termial中打印了Hello Bash 字符串。

            #!/bin/bash  这是必须的告诉解释器,这是bash脚本,perl脚本则是#!/bin/perl

    1.4.1 获取输入

        输入分为3种,用户输入,前一个脚本的输出作为后一个脚本的输入,脚本函数的参数。书中只举例了用户输入的例子

    $n n为0--9的任意数字,$n代表命令的第几个输入参数,比如echo I love android ,I是第一个输入参数,love第二个,android第三个

    修改HelloBash.sh的内容为

    #!/bin/bash

    echo $1

    echo $2

    echo $3

    

    执行命令./HelloBash.sh I love android

    输出        I
                  love
                  android


    既把命令中的第一个,第二个,第三个参数输出。

    1.4.2变量定义

        变量没有类型,只有字符串,变量不要单独定义直接赋值,赋值语句不要有空格。使用时用$变量名,为了避免混淆,可用双  引号包含要应用的变量。

        #!/bin/bash

        A=a

        All=All

        echo "$A"ll

        echo $All

        打印

        all

        All

    1.4.3 条件判断

        条件判断严格区分判断符号,= 用于判断字符串是否相等,-eq用于判断整数,除此之外,还有一下条件判断符号

                    -n ----------> 操作数长度不等于0

                    -z ----------> 操作数长度等于0

                    -d ----------> 操作数是目录

                    -f ----------> 操作数是文件

                    -eq ----------> 两操作数相等

                    -neq ----------> 两操作书不等

                    -gt ----------> 大于

                    -lt ----------> 小于

                    -ge ----------> 大于等于

                    -le ----------> 小于等于

                    = ----------> 字符串判断相等

                    != ----------> 字符串判断不等

    例:

        #!/bin/bash
        if [ "$1" = "HelloLinux" ]
        then
        echo HelloGuys

        elif [ "$1" -eq 88 ]
        then
        echo facaila
        elif [ "$1" -gt 88 ]
        then
        echo tuhao
        elif [ "$1" -ge 100 ]
        then
        echoe hehe
        elif [ "$1" -z ]
        then
        echo Please Input SomeThing...
        fi

    条件判断语句必须与[,]有空格既[ 条件判断语句 ],if条件判断之后then是要执行的语句,多重判断用elif,结束判断语句用fi。

1.4.4 while [] ... do ... done

    类似C语言的do while 语句

    例:

#!/bin/bash
echo input some action
ACTION="default"
while [ -n $ACTION ]
do
read ACTION
case $ACTION in
    add)
    echo "add something"
    
    ;;
    delete)
    echo "delete someting"
        
    ;;
    exit)
    echo "finished"
    break    
    ;;
esac
done

read是linux命令,读输入赋值到ACTION,in 判断case分支。每个判断条件用)表示,“;;”结束,break跳出循环,esac表示case语句结束,done  代表 while do 语句结束。

1.4.5 for循环

    for语句类似JAVA的foreach,一般和in配合使用,in之后一般是一个集合。

    例:

        #!/bin?bash

        for X in a b c d helloLinux (in 集合,集合用空格隔开)

        do (操作)

        echo $X

        done (for 循环结束)

    脚本中要使用Linux命令的输出,作为脚本指令的输入,需要用``(!旁边的符号)将命令包括。单纯只是使用次命令则不用。

    例:将当前目录下没有后缀名的文件添加.txt

    #!/bin/bash
for f in `ls`
do   
if [ -z `echo basename$f|grep "\."` ]
then
mv $f $f.txt
fi
done

    basename,dirname 命令后不要空格。basename用来显示一个字符串中的文件名,dirname用来显示路径。

1.4.6 函数

例:

#!/bin/bash
f1(){
OUT="$1""""$2"
return 1
}
f2(){
echo "$1""""$2"
return 3
}

str1=hello
str2=linux
OUT=""

f1 $str1 $str2
echo $OUT
str3=`f2 $str1 $str2`
echo $?
echo $str3

脚本函数和C语言函数在参数传递和返回值方面有很大不同。

脚本函数无需指定函数参数,在函数实体中用$1,$2指定第一个参数和第二个参数

脚本函数返回值不是return关键字所返回内容,是函数中输出内容。要想获得return关键字所返回内容可以使用$?来获取,$?代表上一个函数或指令,所返回的内容。

调用函数并将函数输出赋值给某个变量,需要用``将函数执行包括起来。

1.4.7 常用的内置符号

    $@  -----------> 所有参数,例如test a b c ,"a","b","c"展开后为三个字符串

    $*  -----------> 所有参数,例如test a b c ,"abc"展开后为一个字符串

    $? -----------> 上一条指令或函数执行后的返回值。

    $# -----------> 所有参数的个数

    $$ -----------> 当前的进程号(PID)

    UID -----------> 执行该脚本的用户,ROOT用户为0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值