Linux命令2
入门级,个人历史学习笔记整理分享存档,错误请指教
使用结构话命令
对脚本中命令执行的顺序施加一些逻辑流程控制,被称为结构化命令。
1. if-then
if command # 如果该命令执行成功,则执行then后面的语句,否则退出
then # 如果command 命令执行成功,会返回状态码0,就会执行 then的语句
commands
fi
-----------------------------------------------------------------------------
if command # 如果该命令执行成功,则执行then后面的语句,否则 执行else 后面的语句
then
commands
else
commands
fi
如果你在用其他的编程语言的if-then语句,这种形式可能会让你有点困惑。在其他编程语言中,if语句之后的对象是一个等式。这个等式的求值结果为True或False。 但 bash shell 的if语句并不是这么做的。
bash shell 的 if 语句会运行 if 后面的命令。
if command1 #嵌套语句
then
commands
elif command2 #elif
then
commands
else
commands
fi
2. test 命令
在上面中 if 语句中都是shell命令,那么 if-then 能否测试命令退出状态吗之外的条件:
比如: 3>2 答案: 不能
这时候可以使用test命令 test condition
condition 是test命令要测试的一系列参数和值
if test 4 -gt 3
then
command
fi
除了test之外,bash shell还有另一种条件测试方法:
if [ condition ] #方括号中定义 测试条件 注意:第一个方括号之后和第二个方括号之前必须加一个空格
then
commands
fi
test 和 [] 命令可以判断三类条件:
1. 数值比较
2. 字符串比较
3. 文件比较
1. 数值比较 只能处理整数
比较 | 描述 |
---|---|
n1 -eq n2 | 检查n1是否与n2 相等 |
n1 -ge n2 | 检查n1是否 大于或等于 n2 |
n1 -gt n2 | 检查n1是否 大于 n2 |
n1 -le n2 | 检查n1是否 小于或等于 n2 |
n1 -lt n2 | 检查n1是否 小于 n2 |
n1 -ne n2 | 检查n1是否 不等于 n2 |
2. 字符串比较
大于号(>) 和 小于号(<)必须转义,否则 shell会把他们重定向符号。
大于和小于的顺序 和 sort命令所采用的不同。
在这里,大写字母被认为小于小写字母的。但sort 命令刚好相反,这是因为排序规则不同。
比较 | 描述 |
---|---|
str1 = str2 | 检查 str1 是否与 str2 相同 |
str1 != str2 | 检查 str1 是否与 str2 不同 |
str1 \ < str2 | 检查 str1 是否比 str2 小 |
str1 \ > str2 | 检查 str1 是否比 str2 大 |
-n str1 | 检查 str1 长度是否 非0 |
-z str1 | 检查 str1 长度是否 为0 |
3. 文件比较
使用比较多的一部分,它允许你测试Linux文件系统上 文件和目录的状态。
比较 | 描述 |
---|---|
-d file | 检查file是否存在并是一个目录 |
-e file | 检查file是否存在 |
-f file | 检查file是否存在并是一个文件 |
-r file (read) | 检查file是否存在并可读 |
-s file | 检查file是否存在并非空 |
-w file | 检查file是否存在并可写 |
-x file | 检查file是否存在并可执行 |
-O file | 检查file是否存在并属当前用户所有 |
-G file | 检查file是否存在并且默认组与当前用户相同 |
file1 -nt file2 (newer than) | 检查 file 是否比 file2 新 |
file1 -ot file2 (older than) | 检查 file 是否比 file2 旧 |
3. 符合条件测试
[ condition1 ] && [ condition2 ] 与 两个条件都满足
[ condition1 ] || [ condition2 ] 或 满足其中之一即可
4. if-then 的高级特性
1. 使用 双括号 (( ))
可以使用很多数学运算符
/**先不了解 ,之后再补充**/
2. 使用 双方括号 [[ ]] ----模式匹配
if [[ $a == r* ]]
then
echo "hello $a"
else
echo "Sorry,I do not know you"
fi
5. case 命令
类似于java的 Switch case 语句
java:
switch(A)
{
case 1:System.out.print(a); break;
case 2:System.out.print(b); break;
default:System.out.print(c); break;
}
shell:
case $user in
rich | barbara) # | 表示匹配多个条件 即 $user = rich 或 $user = barbara
echo "111111"
echo "222222";;
testing)
echo "333333";;
*) # * 表示匹配所有与 已知模式 都不匹配的值
echo "444444";;
esac
更多结构化命令(for while until)
1. for命令
bash shell 提供了for命令,允许你创建一个遍历一系列值的循环。
基本格式:
for var in list #再list中你需要迭代中要用到的一系列值
do
commamds #在 commands中 $var变量也是不断迭代的list中的值
done
2. 。。。。更多待整理补充
– END –
- 备注
find . -name “*.txt” -type f -print -exec rm -rf {} ; 删除 录下包括子目录 下的某个文件
find . -name “.DS_Store” -type f -print -exec rm -rf {} ;