20.5 shell脚本中的逻辑判断 20.6 文件目录属性判断 20.7 if特殊用法 20.8/20.9 case判断

-20.5shell脚本中的逻辑判断
-20.6文件目录属性判断
-20.7if特殊用法
-20.8/20.9case判断
#20.5Shell脚本中的逻辑判断
-很多脚本可以直接用命令执行,比如之前的那个
```
[root@aming-01~]#foriin`seq15`;doecho$i;done
1
2
3
4
5
[root@aming-01~]#foriin`seq15`
>do
>echo$i
>done
1
2
3
4
5
[root@aming-01~]#
```
-格式1:if条件;then语句;fi
-下面来写个脚本
-a=5,如果a大于3就打印ok
-如果写成一行就下面这样
```
[root@aming-01~]#a=5
[root@aming-01~]#if[$a-gt3]
>then
>echook
>fi
ok
[root@aming-01~]#

[root@aming-01~]#if[$a-gt3];thenechook;fi
ok
[root@aming-01~]#

```
-用脚本的形式编辑下,就是
```
[root@aming-01shell]#viif1.sh

#!/bin/bash
a=5
if[$a-gt3]
then
echook
fi
~
~
~

~
:wq

[root@aming-01shell]#shif1.sh
ok
[root@aming-01shell]#

```
-格式2:if条件;then语句;else语句;fi
-如果满足条件怎么样,不满足又会怎么样
```
[root@aming-01shell]#cpif1.shif2.sh
[root@aming-01shell]#viif2.sh

#!/bin/bash
a=1
if[$a-gt3]
then
echook
else
echonotok
fi

~
~
~
:wq

[root@aming-01shell]#sh-xif2.sh
+a=1
+'['1-gt3']'
+echonotok
notok
[root@aming-01shell]#

```
-格式3:if…;then…;elif…;then…;else…;fi
--gt指的是大于-lt指的是小于
```
[root@aming-01shell]#cpif2.shif3.sh
[root@aming-01shell]#viif3.sh

#!/bin/bash
a=5
if[$a-gt1]
then
echo">1"
elif[$a-lt6]
then
echo"<6&&>1"
else
echonotok
fi
~

~
~
:wq
[root@aming-01shell]#viif3.sh

[root@aming-01shell]#catif3.sh
#!/bin/bash
a=5
if[$a-gt1]
then
echo">1"
elif[$a-lt6]
then
echo"<6&&>1"
else
echonotok
fi
[root@aming-01shell]#

[root@aming-01shell]#sh-xif3.sh
+a=5
+'['5-gt1']'
+echo'>1'
>1
[root@aming-01shell]#
```
-改下
```
[root@aming-01shell]#viif3.sh

#!/bin/bash
a=5
if[$a-gt4]
then
echo">1"
elif[$a-lt6]
then
echo"<6&&>1"
else
echonotok
fi
~

~
:wq
[root@aming-01shell]#sh-xif3.sh
+a=5
+'['5-gt4']'
+echo'>1'
>1
[root@aming-01shell]#
```
-if判断的三种格式
```
[root@aming-01shell]#if...;then...;fi^C
[root@aming-01shell]#if...;then...;else...;fi^C
[root@aming-01shell]#if...;thn...;elif...then...;else...;fi^C
[root@aming-01shell]#
```
-逻辑判断表达式:if[$a-gt$b];if[$a-lt5];if[$b-eq10]等-gt(>);-lt(<);-ge(>=);-le(<=);-eq(==);-ne(!=)注意到处都是空格

-gt大于lt小于eq等于
--ge大于等于-le小于等于-ne不等于
```
[root@aming-01shell]#gtlteq-ne-ge-le^C
```
-可以使用&&||结合多个条件&&并且||或者
-if[$a-gt5]&&[$a-lt10];then
-if[$b-gt5]||[$b-lt3];then










#20.6文件目录属性判断
-shell中我们通常和文件、目录打交道,所以对文件目录的判断很重要
-if判断文件、目录属性
-[-ffile]判断是否是普通文件,且存在
-举例
```
Lastlogin:TueNov2119:49:552017
[root@aming-01~]#vifile1.sh

#!/bin/bash
f="/tmp/aminglinux"
if[-f$f]
then
echo$fexist
else
touch$f
fi
~
~

~
:wq
[root@aming-01~]#vifile1.sh
[root@aming-01~]#sh-xfile1.sh
+f=/tmp/aminglinux
+'['-f/tmp/aminglinux']'
+touch/tmp/aminglinux
[root@aming-01~]#

```
-解释:首先f回去判断这个文件到底存在与否,很明显不存在,于是就创建了一个/tmp/aminglinux文件
-那我们再次执行这个脚本,很明显这个文件已经存在了,所以echo/tmp/aminglinuxexist
```
[root@aming-01~]#sh-xfile1.sh
+f=/tmp/aminglinux
+'['-f/tmp/aminglinux']'
+echo/tmp/aminglinuxexist
/tmp/aminglinuxexist
[root@aming-01~]#
```
-这里把这个脚本移到shell/目录下面来,以为脚本文件我们统一放在/shell目录里
```
[root@aming-01~]#ls
aming.txtanaconda-ks.cfgfile1.shshellzabbix-release-3.2-1.el7.noarch.rpm
[root@aming-01~]#cdshell/
[root@aming-01shell]#mv/root/file1.sh.
[root@aming-01shell]#ls
01.shfile1.shif1.shif2.shif3.sh
```
-[-dfile]判断是否是目录,且存在
```
[root@aming-01shell]#cpfile1.shfile2.sh
[root@aming-01shell]#vifile2.sh

#!/bin/bash
f="/tmp/aminglinux"
if[-d$f]
then
echo$fexist
else
touch$f
fi
~
~

~
:wq
[root@aming-01shell]#vifile2.sh
[root@aming-01shell]#sh-xfile2.sh
+f=/tmp/aminglinux
+'['-d/tmp/aminglinux']'
+touch/tmp/aminglinux
[root@aming-01shell]#
```
-很明显他不适目录,不适目录就touch一个目录


-还有一种情况,我不管它是文件还是目录,我仅仅是想知道这个文件或者目录到底存在不存在
-[-efile]判断文件或目录,是否存在
```
[root@aming-01shell]#vifile2.sh

#!/bin/bash
f="/tmp/aminglinux"
if[-e$f]
then
echo$fexist
else
touch$f
fi
~
~

:wq
[root@aming-01shell]#vifile2.sh
[root@aming-01shell]#sh-xfile2.sh
+f=/tmp/aminglinux
+'['-e/tmp/aminglinux']'
+echo/tmp/aminglinuxexist
/tmp/aminglinuxexist
[root@aming-01shell]#
```
-判断这个目录或者文件是否存在,不存在就创建一个目录或者文件
-如果这个文件存在touch会是摸一下文件或者目录,改变文件和目录的三个time值AtimeCtimeMtime

-[-rfile]判断文件是否可读

```
[root@aming-01shell]#vifile2.sh

#!/bin/bash
f="/tmp/aminglinux"
if[-r$f]
then
echo$freadable
fi
~

~
:wq
[root@aming-01shell]#vifile2.sh

[root@aming-01shell]#shfile2.sh
/tmp/aminglinuxreadable
[root@aming-01shell]#
```
-显示这个文件是可读的

-[-wfile]判断文件是否可写
```
[root@aming-01shell]#vifile2.sh

#!/bin/bash
f="/tmp/aminglinux"
if[-w$f]
then
echo$fwriteable
fi
~
~
~

~
:wq

[root@aming-01shell]#vifile2.sh
[root@aming-01shell]#!sh
shfile2.sh
/tmp/aminglinuxwriteable
[root@aming-01shell]#

```
-文件可写
-可读可写可执行是针对当前用户root来说的
```
[root@aming-01shell]#ls-l/tmp/aminglinux
-rw-r--r--1rootroot011月2120:09/tmp/aminglinux
[root@aming-01shell]#
```
-[-xfile]判断文件是否可执行
```
[root@aming-01shell]#vifile2.sh

#!/bin/bash
f="/tmp/aminglinux"
if[-x$f]
then
echo$fexeable
fi
~

~
:wq
[root@aming-01shell]#vifile2.sh
[root@aming-01shell]#shfile2.sh
[root@aming-01shell]#
```
-因为它不可执行,所以没有任何的输出
-因为我们根本就没有定义else
```
[root@aming-01shell]#catfile2.sh
#!/bin/bash
f="/tmp/aminglinux"
if[-x$f]
then
echo$fexeable
fi
[root@aming-01shell]#
```
-这样用的比较多
-常用案例
并且
```
f="/tmp/aminglinux"
[-f$f]&&rm-f$f//前一条命令执行成功才会继续执行之后的命令

等同于下面的表达方式
if[-f$f]
then
rm-rf$f
fi
```

-或者
```
f="/tmp/aminglinux"
[-f$f]||touch$f//前面命令不成功时,执行后面的命令
if[!-f$f]//“!”表示了如果这条命令不成功,就往下执行(!表示取反)
then
touch$f
fi
```








#20.7if特殊用法
-if[-z"$a"]这个表示当变量a的值为空时会怎么样
```
[root@aming-01shell]#viif4.sh

#!/bin/bash
n=`wc-l/tmp/lalal`
if[$n-gt100]
then
echoalsdflljk
fi

~
:wq
[root@aming-01shell]#viif4.sh
[root@aming-01shell]#sh-xif4.sh
++wc-l/tmp/lalal
wc:/tmp/lalal:没有那个文件或目录
+n=
+'['-gt100']'
if4.sh:第3行:[:-gt:期待一元表达式
[root@aming-01shell]#
```
-当变量没有值的时候会报错,为了让这个脚本更加严谨,应该做一些判断
-if[-z"$a"]这里表示当变量a的值为空时就echoerror并且exit
```
[root@aming-01shell]#viif4.sh

#!/bin/bash
n=`wc-l/tmp/lalal`
if[-z"$n"]
then
echoerror
exit
elif[$n-gt100]
then
echoalsdflljk
fi
~

:wq


[root@aming-01shell]#viif4.sh
[root@aming-01shell]#sh-xif4.sh
++wc-l/tmp/lalal
wc:/tmp/lalal:没有那个文件或目录
+n=
+'['-z''']'
+echoerror
error
+exit
[root@aming-01shell]#

```
-再改进一下,这样它就不再报错了
```
[root@aming-01shell]#!vi
viif4.sh

#!/bin/bash
if[!-f/tmp/lalal]
then
echo"/tmp/lalalnotexist."
exit
fi
n=`wc-l/tmp/lalal`
if[-z"$n"]
then
echoerror
exit
elif[$n-gt100]
then
echoalsdflljk
fi
~

~
:wq

[root@aming-01shell]#shif4.sh
/tmp/lalalnotexist.
[root@aming-01shell]#

```
-if[-n"$a"]表示当变量a的值不为空
-用变量的时候要用双引号引起来,如果是一个文件,那就不用了
--这个[-n"$a"]是可以判断文件的,判断一个文件的内容是否不为空,条件成立
```
[root@aming-01shell]#ls
01.shfile1.shfile2.shif1.shif2.shif3.shif4.sh
[root@aming-01shell]#if[-n01.sh];thenechook;fi
ok
[root@aming-01shell]#
```
-同样可以判断变量
-解释:当变量b不为空,那么echo$b,否则当变量b为空,那么echobisnull,这里变量b是为空的
--n和-z用法,如果不是变量,不需要双引号“”;因为这两个是针对文件执行的;
```
[root@aming-01shell]#echo$b

[root@aming-01shell]#if[-n"$b"];thenecho$b;elseecho"bisnull";fi
bisnull
[root@aming-01shell]#
```
-比如判断系统的用户里面是否有user1这个用户
```
[root@aming-01~]#useradduser1
[root@aming-01~]#cdshell
[root@aming-01shell]#grep-w'user1'/etc/passwd
user1:x:1011:1011::/home/user1:/bin/bash
[root@aming-01shell]#
```
-表示如果/etc/passwd中含有'user1'的字符时会怎么样
--w更加精准的匹配,只匹配‘’内的单词
-如果/etc/passwd里包含user1,那么就说user1existuser1存在
```
[root@aming-01shell]#ifgrep-w'user1'/etc/passwd;thenecho"user1exist";fi
user1:x:1011:1011::/home/user1:/bin/bash
user1exist
[root@aming-01shell]#
```
-只不过这个判断的过程是会输出过滤的语句出来,把这个结果给输出出来,grep-q仅仅是做一个过滤,但是不会吧过滤的内容显示出来
```
[root@aming-01shell]#ifgrep-wq'user1'/etc/passwd;thenecho"user1exist";fi
user1exist
[root@aming-01shell]#
```
-反过来怎么表示呢,如果这个user1不存在
-如果user1不存在,加个!表示取反的意思,那么useradduser1
-只不过这个操作过程不成立的,因为user1本身就存在了后面这个命令不生效的then"useradduser1"
```
[root@aming-01shell]#if!grep-wq'user1'/etc/passwd;then"useradduser1";fi
[root@aming-01shell]#
```
-if[!-efile];then表示文件不存在时会怎么样
-if(($a<1));then…等同于if[$a-lt1];then…

[]中不能使用<,>,==,!=,>=,<=这样的符号







#20.8case判断(上)
```
-格式case变量名in
value1)
command
;;
value2)
command
;;
*)
commond
;;
esac
```
-在case程序中,可以在条件中使用|,表示或的意思,比如
```
2|3)
command
;;
```
-shell脚本案例:
```
[root@aming-01shell]#vicase.sh



~
"case.sh"[NewFile]
```
-加入以下脚本
```
[root@aming-01shell]#vicase.sh
#!/bin/bash
read-p"Pleaseinputanumber:"n
if[-z"$n"]

then
echo"Pleaseinputanumber."
exit1
fi

n1=`echo$n|sed's/[0-9]//g'`
if[-n"$n1"]
then
echo"Pleaseinputanumber."
exit1
fi

if[$n-lt60]&&[$n-ge0]
then
tag=1
elif[$n-ge60]&&[$n-lt80]
then
tag=2
elif[$n-ge80]&&[$n-lt90]
then
tag=3
elif[$n-ge90]&&[$n-le100]
then
tag=4
else
tag=0
fi

case$tagin
1)
echo"notok"
;;
2)
echo"ok"
;;
3)
echo"ook"
;;
4)
echo"oook"
;;
*)
echo"Thenumberrangeis0-100."
;;
esac

```
-脚本命令解释
-read-p"Pleaseinputanumber:"n
if[-z"$n"]
-read-p的作用,n作为你要捕获一个变量的名字,用户输入什么数值,最终这个n这个变量就会赋值什么东西
```
[root@aming-01shell]#read-p"Pleaseinputanumber:"n
Pleaseinputanumber:
Pleaseinputanumber;kdkdk
[root@aming-01shell]#echo$n
kdkdk
[root@aming-01shell]#
[root@aming-01shell]#echo$n
123
[root@aming-01shell]#
```
-if[-z"$n"]表示当用户没有输入东西的时候为空的时候if[-z"$n"]表示为空的时候,说明用户没有输入,那奥告诉他echo"Pleaseinputanumber."请输入一个数字
-这里的exit1,这个1表示当一个命令一个语句运行完之后都会有一个返回的值,echo$?输出结果为0表示命令语句是正确的,如果是1那就是错误这里的exit1就是那个echo$?的输出的值

-n1=`echo$n|sed's/[0-9]//g'`
if[-n"$n1"]
-这里的变量判断的时你输入的字符串是不是纯数字,万一输入的时1a1或者纯字母aaa呢,都需要去判断下,如果不是那就要做一个操作,把里面的数字做一个清空
-当你的变量不为空时,if[-n"$n1"]表示$n1不为空时,继续提示让你输入一个纯数字
```
n1=`echo$n|sed's/[0-9]//g'`
if[-n"$n1"]
then
echo"Pleaseinputanumber."
exit1
```









#20.9case判断(下)
```
fi

if[$n-lt60]&&[$n-ge0]
then
tag=1
```
-当你输入的时数字的时候,数字满足[$n-ge0]大于等于0并且[$n-lt60]小于60,那么作为标记1tag1是个变量

-如果不是上述情况
```
elif[$n-ge60]&&[$n-lt80]
then
tag=2
```
-[$n-ge60]是大于等于60并且[$n-lt80]小于80那么作为标签2
-同理
```
elif[$n-ge80]&&[$n-lt90]
then
tag=3
```
-如果n满足[$n-ge80]大于等于80并且[$n-lt90]小于90为标签3

-同理
```
elif[$n-ge90]&&[$n-le100]
then
tag=4
```
-如果n[$n-ge90]大于等于90并且[$n-le100]小于等于100,为标签4
-同理

```
else
tag=0
```
-除此之外标记标签0
-case格式
```
case$tagin
1)
	echo"notok"
;;
2)
echo"ok"
;;
3)
echo"ook"
;;
4)
echo"oook"
;;
*)
echo"Thenumberrangeis0-100."
;;
```
-满足标签1输出notok
-满足标签2输出ok
-满足标签3输出ook
-满足标签4输出oook
-其他不再这个范围内输出"Thenumberrangeis0-100."数字范围为0-100
-下面来测试下脚本分别输入不同的数字或者其他来测试下
-比如数字101,提示数字范围在0-100
```
[root@aming-01shell]#shcase.sh
Pleaseinputanumber:101
Thenumberrangeis0-100.
[root@aming-01shell]#
```
-来看下它的执行过程
```
[root@aming-01shell]#sh-xcase.sh
+read-p'Pleaseinputanumber:'n
Pleaseinputanumber:101
+'['-z101']'
++echo101
++sed's/[0-9]//g'
+n1=
+'['-n''']'
+'['101-lt60']'
+'['101-ge60']'
+'['101-lt80']'
+'['101-ge80']'
+'['101-lt90']'
+'['101-ge90']'
+'['101-le100']'
+tag=0
+case$tagin
+echo'Thenumberrangeis0-100.'
Thenumberrangeis0-100.
[root@aming-01shell]#
```
-首先判断101这个变量存在不存在,存在继续往下走
-之后做一个判断,存在把数字清空,最后n1为空
-判断它是否不为空,不为空那就正常,正常的话那就往下走,做一个判断
-101是否小于60
-101是否大于等于60
-101是否小于80
-101是否大于等于80
-101是否小于90
-101是否大于等于90
-101是否小于等于100
-这些条件都不满足,所以tag=0所以提示'Thenumberrangeis0-100.'数字范围在0-100

-如果输入78输出ok
```
[root@aming-01shell]#sh-xcase.sh
+read-p'Pleaseinputanumber:'n
Pleaseinputanumber:78
+'['-z78']'
++echo78
++sed's/[0-9]//g'
+n1=
+'['-n''']'
+'['78-lt60']'
+'['78-ge60']'
+'['78-lt80']'
+tag=2
+case$tagin
+echook
ok
[root@aming-01shell]#
```
-如果输入88,输出ook
```
[root@aming-01shell]#sh-xcase.sh
+read-p'Pleaseinputanumber:'n
Pleaseinputanumber:88
+'['-z88']'
++echo88
++sed's/[0-9]//g'
+n1=
+'['-n''']'
+'['88-lt60']'
+'['88-ge60']'
+'['88-lt80']'
+'['88-ge80']'
+'['88-lt90']'
+tag=3
+case$tagin
+echoook
ook
[root@aming-01shell]#
```
-如果输入一个不是数字的,提示输入一个数字
```
[root@aming-01shell]#sh-xcase.sh
+read-p'Pleaseinputanumber:'n
Pleaseinputanumber:dkkddkdk112
+'['-zdkkddkdk112']'
++echodkkddkdk112
++sed's/[0-9]//g'
+n1=dkkddkdk
+'['-ndkkddkdk']'
+echo'Pleaseinputanumber.'
Pleaseinputanumber.
+exit1
[root@aming-01shell]#

```

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2280端口映射到公网,发现经常被暴力破解,自己写了个临时封禁ip功能的脚本,实现5分钟内同一个ip登录密码错误10次就封禁这个ip5分钟,并且进行邮件通知使用步骤openwrt为19.07.03版本,其他版本没有测试过安装bashmsmtpopkg
#!/bin/bashcommand1&command2&wait从Shell脚本并行运行多个程序–杨河老李(kviccn.github.io)
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/phpls-ls 2.编辑修改.bash_profile文件(没有.bash_profile文件的情况下回自动创建)sudovim~/.bash_profile在文件的最后输入以下信息,然后保存退出exportPATH="/Applications/MAMP/bin/php/php7.2.20/b
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如zh_CN之类的语言包,进行中文语言包装:apt-getinstalllanguage-pack-zh-hans3、安装好后我们可以进行临时修改:然后添加中文支持: locale-genzh_CN.UTF-8临时修改> export LC_ALL='zh_CN.utf8'> locale永久
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexadecimalbash2#[0~1]0[0~7]0x[0~f]or0X[0~f]perl0b[0~1]0[0~7]0x[0~f]tcl0b[0~1]0o[0~7]0x[0~f]bashdifferentbaserepresntationreference2.StringlengthLanguageStr
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全命令补全方法:yum-yinstallbash-completionsource/usr/share/bash-completion/bash_completionsource<(kubectlcompletionbash)echo"source<(kubectlcompletionbash)">>~/.bashrc 
参考这里启动jar包shell脚本修改过来的#!/bin/bash#默认应用名称defaultAppName='./gadmin'appName=''if[[$1&&$1!=0]]thenappName=$1elseappName=$defaultAppNamefiecho">>>>>>本次重启的应用:$appName<
#一个数字的行#!/bin/bashwhilereadlinedon=`echo$line|sed's/[^0-9]//g'|wc-L`if[$n-eq1]thenecho$linefidone<1.txt#日志切割归档#!/bin/bashcd/data/logslog=1.logmv_log(){[-f$1]&&mv$1$2
#文件增加内容#!/bin/bashn=0cat1.txt|whilereadlinedon=[$n+1]if[$n-eq5]thenecho$lineecho-e"#Thisisatestfile.\n#Testinsertlineintothisfile."elseecho$linefidone#备份/etc目录#
# su - oraclesu: /usr/bin/ksh: No such file or directory根据报错信息:显示无法找到文件 /usr/bin/ksh果然没有该文件,但是发现存在文件/bin/ksh,于是创建了一个软连接,可以规避问题,可以成功切换到用户下,但无法执行系统自带命令。$. .bash_profile-ksh: .: .b
history显示历史指令记录内容,下达历史纪录中的指令主要的使用方法如果你想禁用history,可以将HISTSIZE设置为0:#exportHISTSIZE=0使用HISTIGNORE忽略历史中的特定命令下面的例子,将忽略pwd、ls、ls-ltr等命令:#exportHISTIGNORE=”pwd:ls:ls-ltr:”使用HIS
一.命令历史  1.history环境变量:    HISTSIZE:输出的命令历史条数,如history的记录数    HISTFILESIZE:~/.bash_history保存的命令历史记录数    HISTFILLE:历史记录的文件路径    HISTCONTROL:     ignorespace:忽略以空格开头的命令
之前在网上看到很多师傅们总结的linux反弹shell的一些方法,为了更熟练的去运用这些技术,于是自己花精力查了很多资料去理解这些命令的含义,将研究的成果记录在这里,所谓的反弹shell,指的是我们在自己的机器上开启监听,然后在被攻击者的机器上发送连接请求去连接我们的机器,将被攻击者的she
BashOne-LinersExplained,PartI:Workingwithfileshttps://catonmat.net/bash-one-liners-explained-part-oneBashOne-LinersExplained,PartII:Workingwithstringshttps://catonmat.net/bash-one-liners-explained-part-twoBashOne-LinersExplained,PartII
Shell中变量的作用域:在当前Shell会话中使用,全局变量。在函数内部使用,局部变量。可以在其他Shell会话中使用,环境变量。局部变量:默认情况下函数内的变量也是全局变量#!/bin/bashfunctionfunc(){a=99}funcecho$a输出>>99为了让全局变量变成局部变量
1、多命令顺序执行;  命令1;命令2  多个命令顺序执行,命令之间没有任何逻辑联系&&  命令1&&命令2  逻辑与,当命令1正确执行,才会执行命令2||  命令1||命令2  逻辑或,当命令1执行不正确,才会执行命令2例如:ls;date;cd/home/lsx;pwd;who ddif=输入文件of=输
原博文使用Linux或者unix系统的同学可能都对#!这个符号并不陌生,但是你真的了解它吗?首先,这个符号(#!)的名称,叫做"Shebang"或者"Sha-bang"。Linux执行文件时发现这个格式,会把!后的内容提取出来拼接在脚本文件或路径之前,当作实际执行的命令。 Shebang这个符号通常在Unix系统的脚本
1、历史命令history[选项][历史命令保存文件]选项:-c:  清空历史命令-w:  把缓存中的历史命令写入历史命令保存文件 ~/.bash_historyvim/etc/profile中的Histsize可改存储历史命令数量历史命令的调用使用上、下箭头调用以前的历史命令使用“!n”重复执行第n条历史
目录1.Shell脚本规范2.Shell脚本执行3.Shell脚本变量3.1环境变量3.1.1自定义环境变量3.1.2显示与取消环境变量3.1.3环境变量初始化与对应文件的生效顺序3.2普通变量3.2.1定义本地变量3.2.2shell调用变量3.2.3grep调用变量3.2.4awk调用变量3.3
   http://www.voidcn.com/blog/wszzdanm/article/p-6145895.html命令功能:显示登录用户的信息命令格式:常用选项:举例:w显示已经登录的用户及正在进行的操作[root@localhost~]#w 11:22:01up4days,21:22, 3users, loadaverage:0.00,0.00,0.00USER