【美高梅手机版4858】小规模试制牛刀

By admin in 美高梅手机版4858 on 2019年4月5日

1、回想基础命令

shell_basic,visualbasicshell

一、回看基础命令 2、脚本 叁、变量 四、小名 5、条件判断 六、test判断  
1、回看基础命令 shutdown –关机/重启 exit –退出当前shell rmdir
–删除空目录 du –查看目录占用的囤积空间 df –查看已
经挂载的文件系统的上空应用状态 ln –成立链接 cat –呈现文件的全部情节head –展现文件的底部 tail –呈现文件的尾巴部分 less –分屏/分页
展现文件内容 dirname –取出目录 basename –取出文件名 history –历史命令
一、ln # ln -s [目标] [源 — 创造软链接 (symbolic link) # ln
[目标] [源] — 创造硬链接 2、cat
concatinate,把文件的内容按顺序连接起来,输出到标準输出。最近,只须要不难领悟成展现文件的始末即可
# cat f1 — 彰显文件 f壹 的始末到显示器上 # cat -n f① —
展现文件的剧情,并且拉长行号 # cat -A f1 —
打字与印刷出壹部分不可知的字符和任务标记 三、head 读取文件的尾部 # head -n 3
/etc/passwd –读取文件前面3行 # head -n -三 /etc/passwd
–读取文件时,丢掉文件的后三行; # head -c 三 /etc/passwd
–读取文件的前头八个字节 # head -c 十m /dev/zero > f1–创制三个10M的文本 四、tail 读取文件的尾巴部分 # tail -n 三 /etc/passwd —
读取文件的末端叁行 # tail -c 三 /etc/passwd — 读取文件的后边三个字节 #
tail -n +28 /etc/passwd — 读取文件中从第3八行开首直到最后的持有行 #
tail -f /etc/passwd — 跟踪文件尾巴部分内容的变化,常用旁观日志文件的转变
伍、history # set -o history –启用命令历史意义 ,暗许记录在文件
~/.bash_history 中 # set +o history –关闭命令历史成效 # history
–展现方今n条历史命令
注:以下四个变量用于控制命令历史的数码,以及是不是记录时间戳 # vim
/etc/bashrc –壹匹配备在该公文其中,用户级可陈设在 ~/.bashrc
HISTSIZE=一千000 –最多囤积多少条记下 HISTFILESIZE=3000000
–命令历史文件的最大尺寸 HISTTIMEFO揽胜极光MAT='[%Y-%m-%d %H:%M:%S] ‘
–命令历史的年华戳格式 export HISTSIZE HISTFILESIZE HISTTIMEFOPRADOMAT
–把她们定义成环境变量   二、脚本 壹、怎么样举行脚本    # vim
test.sh
    #!/bin/bash   echo ‘hello world’ # bash test.sh #
bash -x test.sh –展现脚本执行进度的音讯 # sh test.sh # source test.sh
# . test.sh
–上述兼为非标准化准实施脚本,脚本文件能够未有可进行权限;下列为标准进行:
# head -n 1 test.sh #!/bin/bash # chmod a+x test.sh # ./test.sh
可直接将脚本放到 PATH 路径下,直接当命令运营 注意:shell 必须以 #!
开端,读作sha-bang,这多少个字符用来标识文件类型,#!
用来报告系统,那个文件里的剧情将要用钦定的解释器来表明,#!
之后的字符串将会被解释成2个程序,该程序用来分解当前文件。假诺未有提供sha-bang那一行,当前
shell
将会自主猜想多个,但结果并不有限辅助和预期1致;所以最棒强烈钦定。./test.sh
的运维流程: 一、内核读取该脚本,检查文件类型标记,获取解释气得路径;
贰、内核运维解释器; 叁、解释器运维起来后,就打开脚本文件,解释其实施
linux
自带的不在少数解释器:#!/bin/bash;#!/bin/sh;#!/usr/bin/perl;#!/bin/sed;#!/bin/awk
二、4则运算符 + – * / $(()) $[] expr let # echo $((38%5)) –取余 #
echo $[38/5] –求商 # echo $((10**2)) –10的平方 2.1、expr # expr
14 % 9 –取余 # expr 34 / 9 –求商 # expr 30 \* 三–使用乘号时,必须用反斜线屏蔽其一定含义 # expr index “sarasara” a
–抓取第2个字符数字串出现的岗位 # expr substr “this is a test” 三 伍–抓取字串 # expr length “this is a test” –总计字串长度 2.贰、let
let总结工具用于执行三个或多少个表明式,变量总括中不须求加上 $
来表示变量。要是表达式中蕴藏了空格或任何特殊字符,则必须引起来 # no=20
# let no++ –自增 # let no– –自减 # let no+=10 –自增10 # let
no=no+10 –同上 # let no-=15 –自减15 # let a=5+4 –变了a无须加 $ 符号
# echo $a 三、shell配置文件 /etc/profile –全局配置文件, /etc/bashrc
–全局配置文件,壹般用来定义环境变了 ~/.bash_profile –用户配置文件
~/.bashrc –用户配置文件 ~/.bash_logout –用户配置文件,login shell
退出时会读取该文件 四、shell体系 根据shell
的起步格局各异,能够大体地把shell分为以下三种: login shell
–在文本界面登录,如su -;读取shell配置文件相继如下:
/etc/profile——~/.bash_profile——~/.bashrc——/etc/bashrc interactive shell
–gnome-terminal 中私下认可的shell;读取shell配置文件相继如下: ~/.bashrc ——
/etc/bashrc non-interactive shell –用来运维脚本的shell  
四.1、在~/.bashrc 中安装贰个变量 v,须求该变量只现出在相互shell中 # vim
~/.bash_profile –标识shell 是或不是登录shell LOGINSHELL=壹 # vim ~/.bashrc
–不是登录shell 时,才设置变量 if [ “$LOGINSHELL” != 1 ];then
v=”interactive shell only” fi 伍、命令优先级 小名 > 函数 > 内部命令
> 外部命令 6、shell特殊字符
对于shell来说,有个别字符除了它本身的意思之外,还有独特的含义,假若要在字符串中蕴藏特殊字符,就必须通过引用(quoting)的方法来去除特殊字符的卓殊意义。以下列出的是一些特殊字符:
~ –不被引述的话将会被shell 替换立室目录 & –把程序嵌入后台执行 $
–dollar 符,可用以参数举办 ${}
–变量处理,可对变量的内容做替换,删除,抽取等操作 *
–星号,通配符,相配全数字符 ? –问号,通配符,相配任意1个字符 ()
–命令组 {} –命令组 “”
–双引号,引用符号;能够去除超越三分之二特殊字符的12分规含义,除 $;`;!;\ 外 ”
–单引号,引用符号;可以去除全体特殊字符的异样意义,除本人笔者 .
–相当于source命令;可用来安装隐藏文件;用于目录名时,代表当前目录 /
–斜杠,路径分隔符,根目录 \
–反斜杠,可用来去除单个字符的奇特意义,也便是所谓的“转义“,也可用来表示特殊字符,如换行符
(\n) “
–反撇号,命令优先实施,和$()含义是均等的;假使有嵌套那么无法用“号
$(())和 $[] –运算符 : –空命令 ;
–命令分割;不去思索上一条命令所实行的结果 ;; –case 选项的实现符 #
–注释 && –逻辑与;可对命令进行分割;可是急需怀恋上一条命令所执行的结果
|| –逻辑或;可对命令举办剪切;不需求思量上一条命令执行结果
—————————————————————- # echo
‘hello world;’ “hello world;” hello\ world;
–用二种引用符合去除空格的与众差异含义   三、变量 一、本地变量
当前用户自定义的变量;当前经过有效,别的进度也许当前历程的子进度无效 #
a=123 # echo $a # unset a –废除变了定义 二、环境变量
当前历程有效,并且能被子进度调用; # env –查看当前系统具备条件变量 #
set –查看当前系统全体环境变量和一时变量 # echo $PATH —
展现PATH变量的剧情 # export hi=hello
–定义环境变量;工作当中1般喜欢把即用的环境变了写在 ~/.bash_profile
多少个普遍环境变量: PATH –影响命令的物色 PS一 –命令提示符 TMOUT
–超时时间,单位为S,时间壹到,自动退出 interactive shell
;所以最棒将其设为只读变量 # declare -r TMOUT=60 HISTSIZE,
HISTFILESIZE, HISTTIMEFO凯雷德MAT –命令历史   三、系统变量
又叫bash中放置的变量;shell自身已经稳定好的有的变量 $#
–脚本后边接参数个数 $*
–脚本前边全数的参数(被双引号包含则被当成四个字符串输出)
[email protected]
–脚本后面全部的参数(被双引号包涵依然封存各参数的边界) $?
–上一条命令执行后回去的图景 $$ –当前经过的进度号 $!
–后台运营的末尾3个进度号 !$ –最终一条命令或参数 !!
–最后一条命令的野史记录 $0 –当前程序的次序名或进程 $一~$n
–地点参数变量 #!/bin/bash echo “\$0 = $0” echo “\$# = $#” echo
“\$* = $*” echo “\$1 = $2” echo “\$7 = $7” echo “\$11 = ${11}” #
chmod a+x test.sh # ./test.sh a b c 四、变量定义
a、默许下,变量类型没啥须求。能够给变量赋任何值,不过等号两边不可能有此外的空格
b、变量名区分轻重缓急写 c、变量名不能够以数字或然特殊符号开端d、将下令所进行的结果保存到变量 伍、调用变量 # a=$(hostname) #
A=123456789 # echo $A # echo ${A:二:三} 陆、数组
数组的概念:用小括号扩起来定义数组,括号里的要素用空格隔断 #
array[0]=var1 # array[1]=var2 # array[2]=var3 # array=(var壹var贰 var3) –等同于上述三行,定义数组 # echo ${array[0]}
–取数组第5个值 # echo ${array[*]} –取数组全部值 # echo
${array[@]} –同上 7、declare 定义有品种的变量 -i –将变量看成整数 -r
–定义只读变量 -x –将变量导出到环境变量 -a –将变量看成数组 8、read
交互式定义变量 -p –提示音讯 -n –字符数 -t –超时 -s –不显得  
四、別名
命令的別名,顾名思义,正是能够因此別的名字来执行命令。平时用于简化命令的输入,可能为命令增添部分参数,可能是然则地为命令添加多个访问名称。
# alias cp mv rm –查看cp, mv, rm这多个指令是否別名 # unalias rm —
删除小名 rm # alias cdyum=’cd /data/yum’ — 简化输入 # alias rm=’rm
-i’ — 为命令扩充参数 — 平时別名是在配备文件~/.bashrc 中装置的
一、验证小名、函数、内部命令、外部命令的优先级别 # alias pwd=’echo it is
an alias’ –成立一个 pwd 别称 # function pwd() { echo “this is a
function”; } –创造多个 pwd 函数 # pwd –运维pwd,发现输出是小名 #
unalias pwd –删除别称,再运营 pwd,发现输出是函数内容 # unset pwd
–删除函数,再运行 pwd,才是出口当前所在路子 所以:小名 > 函数 >
内部命令 > 外部命令   五、条件判断 # vim test ———————-
if [ 条件 ];then command… fi ———————- if [ 条件
];then command… else command… fi ———————- if [ 条件1
];then command1… elif [ 条件2 ];then command2… else command3…
fi ———————- if [ 条件1 ];then command1… if [ 条件2
];then command2… fi else if [ 条件3 ];then command3… elif [
条件4 ];then command4… else command5… fi fi   六、test判断 test ==
[ judge ] 1、文件存在与否的判断 # vim test.sh #!/bin/bash if test -e
$一;then –是不是留存;还有 -p;-c;-b;-L if [ -f $1 ];then –使用 [ judge
] 替换 if test -f $一;then –是还是不是留存并且为1般文书 if test -d $1;then
–是或不是存在并且为目录 if test -S $1;then –是或不是存在并且套接字文件 echo
‘YES’ fi # chmod a+x test.sh # ./test.sh [path] 二、文件权限相关判断
-r;-w;-x –是不是有读,写,执行权限 -u –是还是不是有suid -g –是不是有sgid -k
–是还是不是有t位 -s –是还是不是为空白文件,-s表示非空;! -s 空文件 3、字符串判断
= –等于则为真,等于号两边必须有空格;也足以是:== != –不等于则为真 -z
字符串 –字符串的长度为零则为真 -n 字符串 –字符串的尺寸不为零则为真 if
test $num1 = $num二;then if [ $num1 = $num2 ];then if [ -n $num1
];then 4、数值判断 -eq –等于则为真 -ne –不等于则为真 -gt –大于则为真
-ge –大于等于则为真 -lt –小于则为真 -le –小于等于则为真 if test
$[num1] -eq $[num2];then if [ $[num1] -eq $[num2] ];then
5、逻辑判断 -a 和 && –逻辑与 -o 和 || –逻辑或 ! –非
优先级:与>或>非 if test -e $一 -o -e $二;then
–判断是或不是有2个文本存在 if [ -e $1 -o -e $2 ];then –同上 if test !
-e $1 -o ! -e $2;then –判断多少个公文并未同时设有 if [ ! -e $1 -o ! -e
$2 ];then –同上  

一、回想基础命令
2、脚本 叁、变量 四、外号 伍、条件判断 陆、test判断 壹、回看基础命令
shutdown –关机/重启exit –退出当…

一、回想基础命令

一、极端打字与印刷

[root@cai ~]# echo welcome to bash!

welcome to bash!

 

[cairui@cai ~]$ echo ‘welcome to bash!’

welcome to bash!

 

[cairui@cai ~]$ echo “welcome to bash\!”

welcome to bash\!

(注意,双引号内不可能直接用特殊符号,需求用转义符\)

 

[cairui@cai ~]$ printf “hello world”

hello world

 

#!/bin/bash

#filename:printf.sh

 

printf  “%-5s %-10s %-4s\n” no name mark

printf  “%-5s %-10s %-4.2f\n” 1 sarath 80.3456

printf  “%-5s %-10s %-4.2f\n” 2 james 90.9989

printf  “%-5s %-10s %-4.2f\n” 3 jeff 77.564

取得如下结果

[cairui@cai shell]$ sh printf.sh

no    name       mark

1     sarath     80.35

2     james      91.00

3     jeff       77.56

 

壹.做事规律

  %s ,%c,%d和%f都是格式替换符,其所对应的参数能够松开带引号的格式字符串之后。

  %-伍s指明格式为左对齐且宽度为5的字符串替换,不够的用空格补上。

  对于%-4.二f,其中.二钦赐保留二个小数位。

二.补偿内容

(一)在echo中转义换行符

[cairui@cai shell]$ echo -e “1\t2\t3”

1 2 3

(二)打印彩色输出

重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37

打字与印刷彩色文本

 

[cairui@cai shell]$ echo -e “\e[1;31m this is red text \e[0m”

 this is red text

 

安装彩色背景,重置=0,中蓝=40,深黑=四1,银灰=4二,黄褐=四叁,石青=4肆,茶青=四伍,石青=4陆,深紫红=47

 

 

2、脚本

2、脚本

二、玩转变量和环境变量

  在bash中,每2个变量的值都是字符串。无论你给变量赋值时有未有引号,值都是以字符串格局存在。有一部分特殊的变量会被shell环境和操作系统环境用来囤积一些专门的值,那类变量就称为环境变量。

Cat /proc/$PID/environ(查看运维时的环境变量)

例子:

[cairui@cai shell]$ pgrep mysql

11029

11313

[cairui@cai shell]$ sudo cat /proc/11313/environ

TERM=xtermOLDPWD=/application/mysqlPATH=/sbin:/usr/sbin:/bin:/usr/bin:/application/mysql/binPWD=/application/mysqlSHLVL=3MYSQL_HOME=/application/mysql_=/usr/bin/nohup

[cairui@cai shell]$ sudo cat /proc/11313/environ |tr ‘\0’ ‘\n’

TERM=xterm

OLDPWD=/application/mysql

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/application/mysql/bin

PWD=/application/mysql

SHLVL=3

MYSQL_HOME=/application/mysql

_=/usr/bin/nohup

 

1.实战排练

 

[cairui@cai shell]$ var=value

[cairui@cai shell]$ echo $var

value

 

Variable.sh代码如下:

#!/bin/bash

fruit=apple

count=5

echo “we have $count $fruit(s)”

[cairui@cai shell]$ sh variable.sh

we have 5 apple(s)

 

Export命令便是用来设置环境变量:

[cairui@cai shell]$ echo $PATH

/application/mysql/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/application/xtrabackup/bin:/home/cairui/bin

[cairui@cai shell]$ export PATH=”$PATH:/home/cairui”

[cairui@cai shell]$ echo $PATH

/application/mysql/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/application/xtrabackup/bin:/home/cairui/bin:/home/cairui

 

二.补偿内容

length=${#var}

例如:

[cairui@cai shell]$ vai=1234567890

[cairui@cai shell]$ echo ${#vai}

10

 

3、变量

3、变量

三、运用函数添加环境变量

  PATH=/usr/bin;/bin

那象征假设shell须要实施二进制可执行文件时,它会率先查找/usr/bin,然后是/bin

 

4、别名

4、别名

四、应用shell实行数学生运动算

  在bash shell环境中,可以运用let,[],(())执行基本的算术操作。而在进展尖端操作时,expr和bc这多少个工具也会分外实用。

1.实例

#!/bin/bash

#filename:jia.sh

no1=4;

no2=5;

let result=no1+no2

echo $result

[cairui@cai shell]$ sh jia.sh

9

自加操作

let no1++

自减操作

let no1–

简写方式

let no+=6

let no-=6

它们各自等于let no=no+六和let no=no-陆

(贰)bc是1个数学高级工具,这几个Mini总括器包涵了多量的选项。

 

[root@cai ~]# echo “4*8″|bc

32

 

no=54

result=’echo “$no*1.5”|bc’

echo $result

81.0

l 设定小数精度。下边,参数scale=2将小数位个数设置为二.

[cairui@cai shell]$ echo “scale=2;3/8″|bc

.37

进制转换。用bc能够将一种进制系统转换为另1种。(10进制转换二进制)

#!/bin/bash

#用途:数字转换

 

no=100

echo “obase=2;$no” |bc

 

no=1100100

echo “obase=10;ibase=2;$no” |bc

[cairui@cai shell]$ sh shuzizhuanhuan.sh

1100100

100

l 总括平方及平方根

[cairui@cai shell]$ echo “sqrt(100)”|bc

10

 

[cairui@cai shell]$ echo “10^10″|bc

10000000000

 

五、条件判断

5、条件判断

五、玩转文件讲述符及重定向

  文件讲述符是与公事输入、输出相关联的整数。它们用来跟踪已打开的公文。最广泛的文件讲述符是stdin(标准输入)、stdout(标准输出)和stderr(标准错误)。

0—–stdin

1—–stdout

2—–stderr

1.实例

[cairui@cai shell]$ echo “this is a sample text ” >temp.txt

[cairui@cai shell]$ cat temp.txt

this is a sample text

[cairui@cai shell]$ echo “this is a sample text ” >>temp.txt

[cairui@cai shell]$ cat temp.txt

this is a sample text

this is a sample text

当命令出现错误时,错误新闻就会被打字与印刷出来

 

[cairui@cai shell]$ ls +

ls: cannot access +: No such file or directory(错误音信)

 

二.行事规律

>等同于一>;对于>>也是均等1>>

(一)将文件重定向到命令

cmd < file

(2)将脚本内部的文本块进行重定向

#!/bin/bash

cat<<EOF>log.txt

LOG FILE HEADER

this is a test log

function:system statistics

EOF

 

[cairui@cai shell]$ sh log-txt.sh

[cairui@cai shell]$ cat log.txt

LOG FILE HEADER

this is a test log

function:system statistics

 

6、test判断

6、test判断

六、数组和关联数组

array_var=(1  2  3  4  5  6)#那么些值将会蕴藏在以0为伊始索引的接连地点上

别的仍是能够将数组定义为壹组“索引-值”

array_var[0]=”test1”

array_var[1]=”test2”

……

……

……

……

array_var[5]=”test6”

 

echo $array_var[0]

test1

 

echo $array_var[*]

test1 test2 test3 test4 test5 test6

 

打字与印刷数老董度

echo ${#array_var[*]}

6

 

 

 

七、利用别称

(一)能够用以下方法开创八个别称

alias new_command=’command sequence’

(二)上述小名只是暂且的。为了使外号永久生效,可以将它置身~/.bashrc文件中

echo ‘alias cmd=”commadn seq”’ >> ~/.bashrc

(三)删除小名,只要求从~/.bashrc中删除就能够了

 

1、回想基础命令

一、回看基础命令

八、收获极限音讯

  tput和stty是三款终端处理工科具。

1.实例

l 获取极限的行数和列数:

【美高梅手机版4858】小规模试制牛刀。tput cols

tput lines

l 打字与印刷当前极端名:

tput longname

l 将光标移动到坐标(⑩0,十0)处:

tput cup 100 100

l 设置极端背景观:

tputsetb n

在那之中,n能够在0到柒以内取值

l 设置文本样式为粗体

tput bold

l 设置下划线的起止:

tput smu1

tput rmu1

l 删除从如今光标位置到行尾的保有剧情:

tputed

l 在输入密码时,不该展现输入内容:

#!/bin/bash

#filename:password.sh

echo -e “enter password:”

stty -echo

read password

stty echo

echo

echo password read

 

shutdown –关机/重启

shutdown –关机/重启

九、获取、设置日期和延期

   很多先后要以差异的格式打字与印刷日期、设置日期和岁月、依照日期和时间执行操作。延时普通用于在程序执行进程中提供①段等待时间(比如一秒)。例如需求在剧本中对某项任务每隔⑤秒监视三遍,就供给知道什么样在程序中参与延时。

1.实例

(1)[cairui@cai support-files]$ date

Tue Jun  6 15:27:22 CST 2017

(二)打字与印刷纪元时:

[cairui@cai support-files]$ date +%s

1496734094

 

[cairui@cai support-files]$ date –date “jan 20 2011” +%A

Thursday

(3)用格式串结合+作为date命令的参数:

[cairui@cai support-files]$ date “+%d %b %y”

06 Jun 17

(四)设置时间和日期:

date -s “格式化的日期字符串”

例子:

date -s “21 june 2009 11:01:22”

(伍)有时,我们须要检查1组命令所消费的时刻,以下代码:

#!/bin/bash

#filename:time_take.sh

start=$(date +%s)

commands;

statements;

 

end=$(date +%s)

difference=$((end – start))

echo time taken to execute commands is $difference seconds

二.工作规律

日期内容

格式

星期

%a(A)

%b(B)

%d

固定格式日期(mm、dd、yy)

%D

%y(Y)

小时

%I或%H

分钟

%M

%S

纳秒

%N

Unix纪元时(以秒为单位)

%s

 

 

三.补给内容

 在本子中推迟执行一段时间,可以用sleep;$sleep no_of_seconds.例如,上边包车型大巴脚本就利用tput和sleep从0早先计数到40:

#!/bin/bash

#filename:sleep.sh

echo -n Count:   (echo -n不换行输出)

tput sc

 

count=0;

while true;

do

  if [ $count -lt 40 ];

  then

      let count++;

      sleep 1;

      tput rc

      tput ed

      echo -n $count;

  else exit 0;

  fi

done

  在地方的例证中,变量count开始化为0,随后每循环3回便加1.echo语句打字与印刷出count的值。用tput sc存款和储蓄光标的地方。在历次循环中,通过复苏从前存款和储蓄的光标的岗位,在巅峰中打字与印刷出新的count的值。苏醒光标的下令是tput rc。tput ed清除从脚下光标地方到行尾之间的富有剧情,使得旧的count值能够被拔除并写入新值。循环内的壹分钟延迟是透过sleep命令来促成。

 

exit –退出当前shell

exit –退出当前shell

十、调节脚本

(1)bash -x script.sh or sh -x script.sh

(二)使用set -x和set +x对台本进行部分调节和测试。例如:

#!/bin/bash

#filename:debug.sh

for i in {1..6};

do

    set -x

    echo $i

    set +x

done

echo “script executed”

[cairui@cai shell]$ sh debug.sh

+ echo 1

1

+ set +x

+ echo 2

2

+ set +x

+ echo 3

3

+ set +x

+ echo 4

4

+ set +x

+ echo 5

5

+ set +x

+ echo 6

6

+ set +x

script executed

在上边的本子中,只会打字与印刷出 echo
$i的调节和测试音讯。因为运用了-x和+x对调剂区域举行了限制。

(三)后边二种调试都是内建的。他们平常以一定的格式生成调节和测试音讯。可是在不少景色下,大家需求以自定义格式展现调节和测试音讯。能够因而传递_DEBUG环境变量来确立那类调节和测试风格。

#!/bin/bash

function DEBUG()

{

  [ “$_DEBUG” == “on” ]  && $@ || :

 

}

for i in {1..10}

do

  DEBUG echo $i

done

~          

[root@cai shell]# _DEBUG=on ./DEBUG.sh

1

2

3

4

5

6

7

8

9

10

我们在每一个亟需打字与印刷调节和测试新闻的说话前拉长DEBUG。就算未有把_DEBUG=on传递给脚本,那么调节和测试新闻就不会被打字与印刷出来。在bash中,命令“:”告诉shell不要拓展任何操作。

 

rmdir –删除空目录

rmdir –删除空目录

十一、函数和参数

1.实例

大家得以创立执行一定任务的函数,也得以创制可以承受参数的函数。

(一)定义函数:

function fname()

{

  statements;

}

或者

fname()

{

  statements;

}

(②)只供给运用函数名就足以调用有些函数:

$fname  #推行函数

(3)参数能够传递给函数,并由脚本进行访问:

fname arg1 arg2;#传递函数

以下是函数fname 的定义。在函数fname中,蕴涵了种种访问函数参数的主意。

fname()

{

echo $1,$贰;访问参数一和参数贰

echo “$@”;以列表的不二秘诀三遍性打字与印刷全数参数

echo “$*”;类似于¥@,可是参数被当作单个实体

return 0;返回值

}

l $一是第一个参数

l $2是第1个参数

l $n是第n个参数

l “$@”被扩大成”$一” “$二” “$三”等

l “$*”被扩展成”$一c$二c$3”,个中c是IFS的率先个字符

l “$@”要比$*用的多。

2.补给内容

(一)递归函数

f() {echo $1;f hello;sleep 1;}

(二)导出函数

export -f fname

 

du –查看目录占用的存储空间

du –查看目录占用的贮存空间

十二、不适用回车键来读取n个字符

  read是3个重要的bash命令,它用来从键盘或标准输入中读取文本。我们能够行使read以相互的款型读取来自用户的输入,可是read能做的可远远不止于此。任何编程语言的输入库大多都是从键盘读取输入;但唯有当回车键按下的时候,才标志着输入实现。而略带游戏里只要求按q就能自由技能。

(一)下边包车型地铁话语从输入中读取n个字符并存入变量variable_name;

read -n number_of_chars variable_name

例如:

read -n 2 var

echo $var

(二)用无回显的措施读取密码:

read -s var

(3)展现提醒消息:

read -p “enter input:” var

(肆)在特定时间限制内读取输入:

read -t timeout var

 

read -t 2 var  #在二秒内将键入的字符串读入变量var

(5)用特定的定界符作为输入行的截至:

read -d delim_char var

 

read -d “:” var

hello:#var 被安装为hello

 

df –查看已 经挂载的文件系统的半空中应用状态

df –查看已 经挂载的文件系统的上空利用状态

十三、运维命令直至执行成功

  在平时工作中采用shell时,有时候命令只有满意某个标准可能某种外部事件(例如文件能够被下载)操作才能成功执行。那种情状下,你大概希望再一次执行命令,直到成功甘休。

1.实例:

循途守辙以下办法定义函数:

repeat()

{

 while true

 do

$@ && return

done

}

或许把它放入shell的rc文件,更有益使用:

repeat() {while true;do $@ && return;done}

二.干活规律

  大家创制了函数repeat,它富含了一个万分while循环,该循环执行以参数格局(通过$@访问)传入函数的授命。假若命令执行成功,则赶回,进而Infiniti循环。

三.补偿内容

(一)1种越来越快的做法

repeat() {while :; do $@ && return; done } 比第一种方法快

(2)扩充延时

repeat wget -c ……..

repeat() {while :; do $@ && return; sleep 30; done}那使得命令每30秒运营1回。

ln –成立链接

ln –创建链接

十四、循环

(1)for循环

for var in list;

do

commands;

done

(2)while循环

while condition

do

   commands;

done

(3)until循环

它会一直循环,直到给定的尺码为真。

x=0;

until [ $x -eq 9 ];

do

 let x++; echo $x;

done

 

cat –显示文件的保有情节

cat –呈现文件的具有剧情

十五、正如与测试

1.实战

(1)if条件

if condition;

then

  commands;

fi

(2)else if和else

if condition;

then

  commands;

else if condition; then

  commands;

else

  commands;

fi

(三)算数比较

l 对变量或值进行算数条件判断:

[ $var -eq 0 ] #当$var等于0时,返回真

[ $var -ne 0 ] #当。。。为非0时,返回真

l -gt:大于

l -lt:小于

l -ge:大于或等于

l -le:小于或等于

(4)字符串相比较

运用字符串相比时,最棒用双中括号,因为有时候选择单个中括号会发出错误,所以最棒避开它们。

l [[$str1=$str2]],相等再次来到真

l [[$str1==$str2]]检查字符串是还是不是等于的另一种写法

l [[$str1 !=$str2]]假如str1和str2不等同,则赶回真

l [[$str1 > $str2]]

l [[$str1 < $str2]]

l [[-z $str1]],假设含有的是空字符串,重回真

l [[-n $str]],假设含有的是是非非空字符串,则赶回真

head –彰显文件的尾部

head –展现文件的底部

tail –呈现文件的尾巴

tail –显示文件的尾巴

less –分屏/分页 显示文件内容

less –分屏/分页 显示文件内容

dirname –取出目录

dirname –取出目录

basename –取出文件名

basename –取出文件名

history –历史命令

history –历史命令

1、ln

1、ln

# ln -s [目标] [源 — 创设软链接 (symbolic link)

# ln -s [目标] [源 — 创制软链接 (symbolic link)

# ln [目标] [源] — 创造硬链接

# ln [目标] [源] — 成立硬链接

2、cat

2、cat

concatinate,把公文的内容按梯次连接起来,输出到标準输出。最近,只须求不难明了成呈现文件的始末即可

concatinate,把文件的始末按顺序连接起来,输出到标準输出。方今,只须要不难理解成展现文件的剧情即可

# cat f1 — 显示文件 f1 的内容到显示器上

# cat f一 — 呈现文件 f一 的内容到显示屏上

# cat -n f一 — 显示文件的始末,并且拉长行号

# cat -n f一 — 展现文件的始末,并且增进行号

# cat -A f壹 — 打印出部分不可知的字符和地点标记

# cat -A f一 — 打字与印刷出1些不可知的字符和职位标记

3、head

3、head

读取文件的头顶

读取文件的底部

# head -n 3 /etc/passwd –读取文件前面3行

# head -n 3 /etc/passwd –读取文件后面三行

# head -n -叁 /etc/passwd –读取文件时,丢掉文件的后3行;

# head -n -三 /etc/passwd –读取文件时,丢掉文件的后3行;

# head -c 三 /etc/passwd –读取文件的如今四个字节

# head -c 三 /etc/passwd –读取文件的前头多少个字节

# head -c 拾m /dev/zero > f1 –创立五个10M的文件

# head -c 10m /dev/zero > f一 –创造三个十M的文本

4、tail

4、tail

读取文件的尾巴

读取文件的尾巴

# tail -n 三 /etc/passwd — 读取文件的背后叁行

# tail -n 3 /etc/passwd — 读取文件的前边叁行

# tail -c 3 /etc/passwd — 读取文件的背后五个字节

# tail -c 3 /etc/passwd — 读取文件的末尾多个字节

# tail -n +2八 /etc/passwd — 读取文件中从第三8行开首直到最后的有着行

# tail -n +2捌 /etc/passwd — 读取文件中从第2八行伊始直到最终的保有行

# tail -f /etc/passwd — 跟踪文件尾巴部分内容的变动,常用观望日志文件的更动

# tail -f /etc/passwd — 跟踪文件尾部内容的变更,常用观看日志文件的变更

5、history

5、history

# set -o history –启用命令历史功能 ,暗许记录在文件 ~/.bash_history 中

# set -o history –启用命令历史意义 ,私下认可记录在文书 ~/.bash_history 中

# set +o history –关闭命令历史意义

# set +o history –关闭命令历史意义

# history –显示近日n条历史命令

# history –展现方今n条历史命令

注:以下多个变量用于控制命令历史的数目,以及是或不是记录时间戳

注:以下五个变量用于控制命令历史的多寡,以及是还是不是记录时间戳

# vim /etc/bashrc –1相称备在该文件个中,用户级可安插在 ~/.bashrc

# vim /etc/bashrc –一般布署在该公文个中,用户级可配备在 ~/.bashrc

HISTSIZE=1000000 –最多囤积多少条记下

HISTSIZE=一千000 –最多存款和储蓄多少条记下

HISTFILESIZE=3000000 –命令历史文件的最大尺寸

HISTFILESIZE=两千000 –命令历史文件的最大尺寸

HISTTIMEFORMAT='[%Y-%m-%d %H:%M:%S] ‘ –命令历史的日子戳格式

HISTTIMEFORMAT='[%Y-%m-%d %H:%M:%S] ‘ –命令历史的时光戳格式

export HISTSIZE HISTFILESIZE HISTTIMEFO途乐MAT –把她们定义成环境变量

export HISTSIZE HISTFILESIZE HISTTIMEFO途观MAT –把她们定义成环境变量

 

 

二、脚本

二、脚本

壹、怎样实施脚本

1、怎么着进行脚本

   # vim test.sh

   # vim test.sh

    #!/bin/bash

    #!/bin/bash

  echo ‘hello world’

  echo ‘hello world’

# bash test.sh

# bash test.sh

# bash -x test.sh
–展现脚本执行进程的新闻

# bash -x test.sh
–显示脚本执行进度的讯息

# sh test.sh

# sh test.sh

# source test.sh

# source test.sh

# . test.sh

# . test.sh

–上述兼为非标准化准执行脚本,脚本文件能够未有可实施权限;下列为行业内部实施:

–上述兼为非标准化准实施脚本,脚本文件能够未有可实施权限;下列为专业执行:

# head -n 1 test.sh

# head -n 1 test.sh

#!/bin/bash

#!/bin/bash

# chmod a+x test.sh

# chmod a+x test.sh

# ./test.sh

# ./test.sh

可直接将脚本放到 PATH
路径下,间接当命令运营

可直接将脚本放到 PATH
路径下,直接当命令运营

注意:shell 必须以 #!
初阶,读作sha-bang,那五个字符用来标识文件类型,#!
用来报告系统,这几个文件里的剧情将要用钦定的解释器来表达,#!
之后的字符串将会被诠释成多个主次,该程序用来诠释当前文件。即使未有提供sha-bang那①行,当前
shell
将会自主猜测三个,但结果并不保障和预期一致;所以最佳强烈钦命。./test.sh
的周转流程:

注意:shell 必须以 #!
最先,读作sha-bang,那多个字符用来标识文件类型,#!
用来报告系统,那么些文件里的始末将要用钦定的解释器来表明,#!
之后的字符串将会被分解成一个主次,该程序用来诠释当前文件。若是未有提供sha-bang那①行,当前
shell
将会自主揣度二个,但结果并不保险和预期1致;所以最棒强烈内定。./test.sh
的周转流程:

一、内核读取该脚本,检查文件类型标记,获取解释气得路径;

一、内核读取该脚本,检查文件类型标记,获取解释气得路径;

二、内核运行解释器;

贰、内核运维解释器;

3、解释器运维起来后,就开辟脚本文件,解释其推行

三、解释器运转起来后,就打开脚本文件,解释其实施

linux
自带的不少解释器:#!/bin/bash;#!/bin/sh;#!/usr/bin/perl;#!/bin/sed;#!/bin/awk

linux
自带的多多解释器:#!/bin/bash;#!/bin/sh;#!/usr/bin/perl;#!/bin/sed;#!/bin/awk

贰、四则运算符

2、四则运算符

    • * /
    • * /

$(()) $[] expr let

$(()) $[] expr let

# echo $((38%5)) –取余

# echo $((38%5)) –取余

# echo $[38/5] –求商

# echo $[38/5] –求商

# echo $((10**2)) –10的平方

# echo $((10**2)) –10的平方

2.1、expr

2.1、expr

# expr 14 % 9 –取余

# expr 14 % 9 –取余

# expr 34 / 9 –求商

# expr 34 / 9 –求商

# expr 30 \* 三 –使用乘号时,必须用反斜线屏蔽其特定含义

# expr 30 \* 三 –使用乘号时,必须用反斜线屏蔽其一定含义

# expr index “sarasara” a –抓取第多个字符数字串出现的职位

# expr index “sarasara” a –抓取第2个字符数字串出现的岗位

# expr substr “this is a test” 三 伍 –抓取字串

# expr substr “this is a test” 叁 5 –抓取字串

# expr length “this is a test” –计算字串长度

# expr length “this is a test” –总计字串长度

2.2、let

2.2、let

let计算工具用于实施1个或八个表明式,变量计算中不必要添加 $
来表示变量。假使表明式中包括了空格或别的特殊字符,则必须引起来

let总括工具用于实践1个或多少个表明式,变量总括中不必要丰硕 $
来代表变量。要是表达式中涵盖了空格或此外特殊字符,则必须引起来

# no=20

# no=20

# let no++ –自增

# let no++ –自增

# let no– –自减

# let no– –自减

# let no+=10 –自增10

# let no+=10 –自增10

# let no=no+10 –同上

# let no=no+10 –同上

# let no-=15 –自减15

# let no-=15 –自减15

# let a=5+4 –变了a无须加 $ 符号

# let a=5+4 –变了a无须加 $ 符号

# echo $a

# echo $a

三、shell配置文件

叁、shell配置文件

/etc/profile –全局配置文件,

/etc/profile –全局配置文件,

/etc/bashrc –全局配置文件,一般用来定义环境变了

/etc/bashrc –全局配置文件,壹般用来定义环境变了

~/.bash_profile –用户配置文件

~/.bash_profile –用户配置文件

~/.bashrc –用户配置文件

~/.bashrc –用户配置文件

~/.bash_logout –用户配置文件,login shell 退出时会读取该公文

~/.bash_logout –用户配置文件,login shell 退出时会读取该文件

4、shell种类

4、shell种类

基于shell 的运转格局分裂,能够大体地把shell分为以下两种:

依照shell 的运营形式不一致,能够大体地把shell分为以下二种:

login shell –在文本界面登录,如su
-;读取shell配置文件相继如下:

login shell –在文本界面登录,如su
-;读取shell配置文件相继如下:

/etc/profile——~/.bash_profile——~/.bashrc——/etc/bashrc

/etc/profile——~/.bash_profile——~/.bashrc——/etc/bashrc

interactive shell –gnome-terminal
中私下认可的shell;读取shell配置文件相继如下:

interactive shell –gnome-terminal
中暗许的shell;读取shell配置文件相继如下:

~/.bashrc —— /etc/bashrc

~/.bashrc —— /etc/bashrc

non-interactive shell
–用来运转脚本的shell

non-interactive shell
–用来运营脚本的shell

 

 

4.1、在~/.bashrc 中设置二个变量 v,要求该变量只现出在相互shell中

4.1、在~/.bashrc 中设置一个变量 v,供给该变量只现身在相互shell中

# vim ~/.bash_profile –标识shell 是或不是登录shell

# vim ~/.bash_profile –标识shell 是不是登录shell

LOGINSHELL=1

LOGINSHELL=1

# vim ~/.bashrc –不是登录shell 时,才设置变量

# vim ~/.bashrc –不是登录shell 时,才设置变量

if [ “$LOGINSHELL” != 1 ];then

if [ “$LOGINSHELL” != 1 ];then

v=”interactive shell only”

v=”interactive shell only”

fi

fi

伍、命令优先级

5、命令优先级

小名 > 函数 > 内部命令 > 外部命令

外号 > 函数 > 内部命令 > 外部命令

陆、shell特殊字符

六、shell特殊字符

对此shell来说,有些字符除了它自个儿的意义之外,还有尤其的意思,假诺要在字符串中富含特殊字符,就非得透过引用(quoting)的法子来去除特殊字符的不一致平日含义。以下列出的是壹对特殊字符:

对于shell来说,有个别字符除了它本人的意义之外,还有特别的意义,假使要在字符串中富含特殊字符,就必须经过引用(quoting)的不2诀要来去除特殊字符的特出含义。以下列出的是部分特殊字符:

~ –不被引述的话将会被shell
替换立室目录

~ –不被引用的话将会被shell
替换立室目录

& –把程序嵌入后台执行

& –把程序嵌入后台执行

$ –dollar 符,可用于参数进行

$ –dollar 符,可用以参数实行

${}
–变量处理,可对变量的始末做替换,删除,抽取等操作

${}
–变量处理,可对变量的始末做替换,删除,抽取等操作

* –星号,通配符,相称所有字符

* –星号,通配符,相称全数字符

?
–问号,通配符,相配任意一个字符

?
–问号,通配符,相配任意二个字符

() –命令组

() –命令组

{} –命令组

{} –命令组

“”
–双引号,引用符号;能够去除超过5二%特殊字符的相当意义,除 $;`;!;\

“”
–双引号,引用符号;能够去除大多数特殊字符的特殊意义,除 $;`;!;\


–单引号,引用符号;能够去除全部特殊字符的新鲜意义,除本身本人


–单引号,引用符号;能够去除全部特殊字符的特种意义,除本身本身

.
–也正是source命令;可用以安装隐藏文件;用于目录名时,代表当前目录

.
–也便是source命令;可用于安装隐藏文件;用于目录名时,代表当前目录

/ –斜杠,路径分隔符,根目录

/ –斜杠,路径分隔符,根目录

\
–反斜杠,可用来去除单个字符的新鲜含义,也正是所谓的“转义“,也可用于表示特殊字符,如换行符
(\n)

\
–反斜杠,可用来去除单个字符的例外意义,也等于所谓的“转义“,也可用以表示特殊字符,如换行符
(\n)


–反撇号,命令优先执行,和$()含义是1模①样的;假使有嵌套那么不可能用“号


–反撇号,命令优先执行,和$()含义是同样的;借使有嵌套那么不可能用“号

$(())和 $[] –运算符

$(())和 $[] –运算符

: –空命令

: –空命令

;
–命令分割;不去思考上一条命令所进行的结果

;
–命令分割;不去怀想上一条命令所实施的结果

;; –case 选项的收尾符

;; –case 选项的扫尾符

# –注释

# –注释

&&
–逻辑与;可对命令实行私分;可是急需思虑上一条命令所实施的结果

&&
–逻辑与;可对命令实行私分;可是急需思索上一条命令所实行的结果

||
–逻辑或;可对命令实行剪切;不必要思索上一条命令执行结果

||
–逻辑或;可对命令举办剪切;不要求思索上一条命令执行结果



# echo ‘hello world;’ “hello world;” hello\ world;
–用三种引用符合去除空格的超常规含义

# echo ‘hello world;’ “hello world;” hello\ world;
–用三种引用符合去除空格的非正规意义

 

 

三、变量

三、变量

壹、本地变量

一、本地变量

近年来用户自定义的变量;当前进度有效,其余进度或许当前进度的子进度无效

此时此刻用户自定义的变量;当前历程有效,别的进度可能当前进度的子进程无效

# a=123

# a=123

# echo $a

# echo $a

# unset a –废除变了概念

# unset a –撤废变了定义

二、环境变量

二、环境变量

此时此刻进程有效,并且能被子进度调用;

日前历程有效,并且能被子进度调用;

# env –查看当前系统具备环境变量

# env –查看当前系统全数环境变量

# set –查看当前系统具备环境变量和一时半刻变量

# set –查看当前系统具有环境变量和一时变量

# echo $PATH — 显示PATH变量的剧情

# echo $PATH — 展现PATH变量的内容

# export hi=hello –定义环境变量;工作在这之中一般喜欢把即用的环境变了写在
~/.bash_profile

# export hi=hello –定义环境变量;工作个中壹般喜欢把即用的环境变了写在
~/.bash_profile

多少个大规模环境变量:

多少个普遍环境变量:

PATH –影响命令的寻找

PATH –影响命令的搜索

PS一 –命令提醒符

PS壹 –命令提醒符

TMOUT –超时时间,单位为S,时间一到,自动退出 interactive shell
;所以最棒将其设为只读变量 # declare -r
TMOUT=60

TMOUT –超时时间,单位为S,时间壹到,自动退出 interactive shell
;所以最佳将其设为只读变量 # declare -r
TMOUT=60

HISTSIZE, HISTFILESIZE, HISTTIMEFO卡宴MAT –命令历史

HISTSIZE, HISTFILESIZE, HISTTIMEFO汉兰达MAT –命令历史

 

 

3、系统变量

三、系统变量

又叫bash中放到的变量;shell自个儿已经固定好的部分变量

又叫bash中置放的变量;shell自个儿已经定位好的片段变量

$# –脚本后边接参数个数

$# –脚本前面接参数个数

$* –脚本前面全部的参数(被双引号包括则被当成三个字符串输出)

$* –脚本前面全部的参数(被双引号包括则被当成一个字符串输出)

$@ –脚本后边全部的参数(被双引号包罗如故封存各参数的疆界)

$@ –脚本前边全数的参数(被双引号蕴含如故保留各参数的界线)

$? –上一条命令执行后回来的情况

$? –上一条命令执行后回到的情形

$$ –当前进度的经过号

$$ –当前历程的长河号

$! –后台运营的末梢多少个经过号

$! –后台运维的最后二个进度号

!$ –最终一条命令或参数

!$ –最终一条命令或参数

!! –最终一条命令的历史记录

!! –最终一条命令的历史记录

$0 –当前程序的次序名或进度

$0 –当前程序的顺序名或进度

$1~$n –地点参数变量

$1~$n –地点参数变量

#!/bin/bash

#!/bin/bash

echo “\$0 = $0”

echo “\$0 = $0”

echo “\$# = $#”

echo “\$# = $#”

echo “\$* = $*”

echo “\$* = $*”

echo “\$1 = $2”

echo “\$1 = $2”

echo “\$7 = $7”

echo “\$7 = $7”

echo “\$11 = ${11}”

echo “\$11 = ${11}”

# chmod a+x test.sh

# chmod a+x test.sh

# ./test.sh a b c

# ./test.sh a b c

四、变量定义

四、变量定义

a、默许下,变量类型没啥供给。能够给变量赋任何值,然则等号两边无法有任何的空格

a、默许下,变量类型没啥须要。可以给变量赋任何值,不过等号两边无法有别的的空格

b、变量名区分轻重缓急写

b、变量名区分轻重缓急写

c、变量名不能够以数字或然特殊符号伊始

c、变量名不可能以数字照旧特殊符号初阶

d、将指令所实施的结果保存到变量

d、将指令所执行的结果保存到变量

5、调用变量

5、调用变量

# a=$(hostname)

# a=$(hostname)

# A=123456789

# A=123456789

# echo $A

# echo $A

# echo ${A:2:3}

# echo ${A:2:3}

6、数组

6、数组

数组的概念:用小括号扩起来定义数组,括号里的成分用空格隔开分离

数组的概念:用小括号扩起来定义数组,括号里的因素用空格隔离

# array[0]=var1

# array[0]=var1

# array[1]=var2

# array[1]=var2

# array[2]=var3

# array[2]=var3

# array=(var1 var2 var三) –等同于上述叁行,定义数组

# array=(var一 var二 var3) –等同于上述3行,定义数组

# echo ${array[0]} –取数组第一个值

# echo ${array[0]} –取数组第三个值

# echo ${array[*]} –取数组全体值

# echo ${array[*]} –取数组全数值

# echo ${array[@]} –同上

# echo ${array[@]} –同上

⑦、declare 定义有档次的变量

7、declare 定义有品种的变量

-i –将变量看成整数

-i –将变量看成整数

-r –定义只读变量

-r –定义只读变量

-x –将变量导出到环境变量

-x –将变量导出到环境变量

-a –将变量看成数组

-a –将变量看成数组

八、read 交互式定义变量

捌、read 交互式定义变量

-p –提醒音讯

-p –提醒新闻

-n –字符数

-n –字符数

-t –超时

-t –超时

-s –不显示

-s –不显示

 

 

四、別名

四、別名

命令的別名,顾名思义,就是足以因此別的名字来执行命令。平日用于简化命令的输入,大概为命令扩大壹些参数,只怕是单独地为命令添加多个访问名称。

指令的別名,顾名思义,就是足以由此別的名字来执行命令。常常用于简化命令的输入,只怕为命令扩充部分参数,恐怕是可是地为命令添加四个访问名称。

# alias cp mv rm –查看cp, mv, rm那七个指令是否別名

# alias cp mv rm –查看cp, mv, rm那八个指令是或不是別名

# unalias rm — 删除别称 rm

# unalias rm — 删除小名 rm

# alias cdyum=’cd /data/yum’ — 简化输入

# alias cdyum=’cd /data/yum’ — 简化输入

# alias rm=’rm -i’ — 为命令扩张参数

# alias rm=’rm -i’ — 为命令扩充参数

— 经常別名是在安排文件~/.bashrc 中装置的

— 日常別名是在铺排文件~/.bashrc 中装置的

一、验证小名、函数、内部命令、外部命令的先行级别

一、验证小名、函数、内部命令、外部命令的预先级别

# alias pwd=’echo it is an alias’ –创设3个 pwd 别称

# alias pwd=’echo it is an alias’ –成立三个 pwd 外号

# function pwd() { echo “this is a function”; } –创建多个 pwd 函数

# function pwd() { echo “this is a function”; } –创建3个 pwd 函数

# pwd –运转pwd,发现输出是别称

# pwd –运营pwd,发现输出是别称

# unalias pwd –删除别称,再运营 pwd,发现输出是函数内容

# unalias pwd –删除小名,再运维 pwd,发现输出是函数内容

# unset pwd –删除函数,再运营 pwd,才是出口当前所在路子

# unset pwd –删除函数,再运维 pwd,才是出口当前所在路线

之所以:小名 > 函数 > 内部命令 >
外部命令

所以:外号 > 函数 > 内部命令 >
外部命令

 

 

伍、条件判断

5、条件判断

# vim test

# vim test



if [ 条件 ];then

if [ 条件 ];then

command…

command…

fi

fi



if [ 条件 ];then

if [ 条件 ];then

command…

command…

else

else

command…

command…

fi

fi



if [ 条件1 ];then

if [ 条件1 ];then

command1…

command1…

elif [ 条件2 ];then

elif [ 条件2 ];then

command2…

command2…

else

else

command3…

command3…

fi

fi



if [ 条件1 ];then

if [ 条件1 ];then

command1…

command1…

if [ 条件2 ];then

if [ 条件2 ];then

command2…

command2…

fi

fi

else

else

if [ 条件3 ];then

if [ 条件3 ];then

command3…

command3…

elif [ 条件4 ];then

elif [ 条件4 ];then

command4…

command4…

else

else

command5…

command5…

fi

fi

fi

fi

 

 

六、test判断

六、test判断

test == [ judge
]

test == [ judge
]

一、文件存在与否的判断

一、文件存在与否的论断

# vim test.sh

# vim test.sh

#!/bin/bash

#!/bin/bash

if test -e $1;then –是或不是留存;还有 -p;-c;-b;-L

if test -e $一;then –是还是不是存在;还有 -p;-c;-b;-L

if [ -f $1
];then –使用 [ judge ]
替换

if [ -f $1
];then –使用 [ judge ]
替换

if test -f $一;then
–是不是存在并且为平常文书

if test -f $一;then
–是不是留存并且为1般文书

if test -d $一;then
–是还是不是留存并且为目录

if test -d $一;then
–是不是留存并且为目录

if test -S $一;then
–是不是留存并且套接字文件

if test -S $壹;then
–是或不是存在并且套接字文件

echo ‘YES’

echo ‘YES’

fi

fi

# chmod a+x test.sh

# chmod a+x test.sh

# ./test.sh [path]

# ./test.sh [path]

二、文件权限相关判断

二、文件权限相关判断

-r;-w;-x –是或不是有读,写,执行权限

-r;-w;-x –是或不是有读,写,执行权限

-u –是否有suid

-u –是否有suid

-g –是否有sgid

-g –是否有sgid

-k –是否有t位

-k –是否有t位

-s –是不是为空白文件,-s代表非空;! -s 空文件

-s –是或不是为空白文件,-s表示非空;! -s 空文件

三、字符串判断

3、字符串判断

= –等于则为真,等于号两边必须有空格;也能够是:==

= –等于则为真,等于号两边必须有空格;也能够是:==

!= –不对等则为真

!= –不对等则为真

-z 字符串 –字符串的长度为零则为真

-z 字符串 –字符串的长短为零则为真

-n 字符串 –字符串的长短不为零则为真

-n 字符串 –字符串的尺寸不为零则为真

if test $num1 = $num2;then

if test $num1 = $num2;then

if [ $num1 = $num2 ];then

if [ $num1 = $num2 ];then

if [ -n $num1 ];then

if [ -n $num1 ];then

四、数值判断

肆、数值判断

-eq –等于则为真

-eq –等于则为真

-ne –不等于则为真

-ne –不等于则为真

-gt –大于则为真

-gt –大于则为真

-ge –大于等于则为真

-ge –大于等于则为真

-lt –小于则为真

-lt –小于则为真

-le –小于等于则为真

-le –小于等于则为真

if test $[num1] -eq
$[num2];then

if test $[num1] -eq
$[num2];then

if [ $[num1] -eq $[num2]
];then

if [ $[num1] -eq $[num2]
];then

伍、逻辑判断

5、逻辑判断

-a 和 && –逻辑与

-a 和 && –逻辑与

-o 和 || –逻辑或

-o 和 || –逻辑或

! –非

! –非

优先级:与>或>非

优先级:与>或>非

if test -e $① -o -e $二;then
–判断是或不是有二个文本存在

if test -e $一 -o -e $二;then
–判断是还是不是有三个文本存在

if [ -e $1 -o -e $2 ];then –同上

美高梅手机版4858 ,if [ -e $1 -o -e $2 ];then –同上

if test ! -e $1 -o ! -e $2;then –判断多少个公文并未有同时设有

if test ! -e $1 -o ! -e $二;then –判断七个文本未有同时存在

if [ ! -e $1 -o ! -e $2 ];then –同上

if [ ! -e $1 -o ! -e $2 ];then –同上

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有