Linux之Ubuntu之命令之知识点1
注释:被包含在【】内的命令是实际在终端中输入的命令,所有操作都在root权限下,被包含在〖〗中的不是命令,而是一种格式说明,语法说明。
Start:
?
shell编程:
Shell(壳)是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。它接收用户命令,然后调用相应的应用程序。同时它又是一种程序设计语言,shell是脚本语言。
这里主要讲bash,shell有许多种,bash是shell的一种,是linux上指定的shell的标准脚本。shell语法更倾向于C语言。
【sh temp】执行temp文件里面的脚本
【./temp】执行temp文件里面的脚本
【echo $var】?使用echo命令取出变量名为var的值
【s=4】?给变量赋值,等号=两边不得有空格。
【s=‘4’】?给变量赋值,等号=两边不得有空格。
【s=“4”】?给变量赋值,等号=两边不得有空格。
【s=$var】?给变量赋值,等号=两边不得有空格,var是一个变量名。
【s=“Mike Ron”】?给变量赋值,值里面有空格符必须用双引号或单引号括起来,等号=两边不得有空格。
【s=‘Mike Ron’】?给变量赋值,值里面有空格符必须用双引号或单引号括起来,等号=两边不得有空格。
【ABC=‘$s Junior’】?ABC的值为$s Junior。
【ABC="$s Junio"】?ABC的值为Mike Ron Junior。
【unset var】?删除变量
Shell解释执行用户命令时,将命令行的第一个部分当做命令名,其它剩余部分作为参数。由出现在命令行上的位置确定的参数称为位置参数。
【$*】?这个程序的所有参数
【$#】?这个程序的位置参数个数,不包含$0,即执行文件本身,因为$0就是命令中的文件名本身。
【$$】?这个程序的PID
【$!】?执行上一个后台命令的PID
【$?】?执行上一个命令的返回值
【read var】?从键盘读入数据,放到变量var中。
【read var1 var2 var3?】?从键盘读入数据时,用空格符分别输入三个值,如这样输入”?? value1? value2? value3?”
【var=`expr $var1 + $var2 + $var3`?】?expr的使用,这条命令是把变量var1和var2及var3的值相加之后赋给var,注意在加好的两旁要有空格,否则会出错,·这个点不是单引号,它是键盘上Tab键上的·,也就是数字1的左边的哪一个键。
【echo `expr 5 \* 6`】?在使用乘号时,一定要在*前加一个反斜杠\。
(())双括号可以进行算术运算(推荐使用)。
【var=$((var1+var2))】?双括号(())的用法,双括号可以进行算数运算,var1前可以加$或不加,把变量var1和var2的值相加,然后赋给var,这种方法较常用。
变量测试语句,test语句,可以测试整形、字符串和文件。
?
【test -f $1】?判断$1是否是一个文件,如果是就返回true,否则返回false。
【test -d $1】?判断$1是否是一个目录,如果是就返回true,否则返回false。
【test str1 = str2】?判断str1是否等于str2,注意等号两边要有空格,建议不用这种方法,而是用下面的方法。
【test str1==str2】?判断str1是否等于str2,使用这个更好。
【test str1!=str2】?判断str1不等于str2,如果是不等于就返回true,否则返回false。
【test str1】?测试字符串是否不为空,如果str1不空返回true,否则返回false。
【test -n str1】?测试字符串是否不为空,同上一条命令。
【test -z str1】?测试字符串是否为空,如果str1为空则返回true。
【test $int1 -eq $int2】?测试整数int1是否等于整数int2
【test $int1 -ge $int2】?测试整数int1是否大于等于整数int2
【test $int1 -gt $int2】?测试int1是否大于int2
【test $int1 -le $int2】?测试int1是否小于等于int2
【test $int1 -lt? $int2】?测试int1是否小于int2
【test $int1 -ne $int2】?测试int1是否是不等于int2
【test -d $d1】?测试d1是否为目录
【test -f $f1】?测试f1是否是一个常规为文件
【test -x $f1】?测试f1是否是一个可执行文件
【test -r $f1】?测试f1是否是一个可读文件。
【test -w $f1】?测试f1是否是一个可写文件。
【test -a f1】?测试文件f1是否存在
【test -s f1】?测试文件f1的大小是否非0。
测试语句还可以是[测试表达式]和[[测试表达式]],两者的区别是后者可以进行通配符的匹配。
【 [ $# -ne 2 ]】?判断位置参数是否等于2,注意左中括号[的右边要有空格,右中括号]的左边要有空格,与-ne想类似的运算符都可以用。
?
【[[ $var1?<= $var2 ?]]】?同样,第一个$前要有一个空格,var2后面要有一个空格,与<=类似的运算符都可以用。
【read -p “Input your choice :”choice】?运行脚本后从键盘读入数据,存入choice中,双引号中的字符和准备读入的数据是放在同一行显示
【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】
〖#!〗?指定执行脚本的shell
〖#〗?注释行
?〖exit语句〗?退出程序,并返回一个值,返回0表示正常退出,返回非0表示异常退出如exit 0。
〖if....then....fi 〗?嵌套语句,可以使用简写elif来表示else if。
〖for....done〗?具体是这样:for 变量 in 变量值表列?do 命令表列 done。把变量值表列中的值一个一个的取出来,然后分别进行命令表列里面的操作。
〖case....esac〗?具体是case 变量值 in 字符串1) 命令表列;;.....字符串2)命令表列n;;esac
〖while语句〗?具体是while 条件 do 命令 done,当条件为true时,就执行一次命令,执行完一次命令后接着去判断条件,如此循环。
〖until语句〗?具体是until 条件? do 命令 done ,until类似于while,唯一不同的是while是当条件为true时执行命令,为false时跳出循环,而until则刚好相反,当条件为false时才执行命令,当条件为true时就跳出循环。
〖continue和break〗?类同C语言。
〖shift指令〗?整个位置参数左移,每执行一次,位置参数个数$#减一,即去掉最左边的那个参数,去掉的参数不可恢复。
〖-a〗?逻辑与,同常理。
〖-o〗?逻辑或,同常理。
?〖function函数〗?格式是:函数定义? function 函数名(){命令序列}? 函数调用 函数名 参数1 参数2 ...?????????? 。??? 函数调用的时候不要加(),在函数里面调用参数是使用$1 $2来进行调用,与shell script脚本的程序位置参数调用一样。函数中的变量不是局部变量,而是全局变量,函数中没有局部变量,都是全局变量。
?
〖〗〖〗
执行脚本时要修改权限,让该文件的权限改为可执行文件。
bash中有两种变量,一中是临时变量,另一种是永久变量
自定义变量由字母和下划线开头,字母、数字和下划线组成。长度无限制,大小写敏感。习惯是大写构造变量,
$是取出变量值的关键字
〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗〖〗
【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】【】
?