博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
思维导图学 Linux Shell攻略之小试牛刀篇
阅读量:6839 次
发布时间:2019-06-26

本文共 3744 字,大约阅读时间需要 12 分钟。

原创作品,允许转载,转载时请务必以超链接形式标明文章   、作者信息和本声明。否则将追究法律责任。

曾听一位大神讲过,带着目的去学,知识往往能记得牢,记得稳。借助思维导图这个工具,对一些我感兴趣的知识点进行分类管理。以后方便自己复习。

我会以思维导图+代码段的方式,回滚学习linux shell编程。

转义/色彩

与用户交互的接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#打印一个普通的字符串
[root@beijing ~]
# echo "it's isa dog"
it's is a dog
  
#打印一个带有单引号和换行符的字符串,单引号可正常输出,但换行符没有效果
#没有达到想要的效果
[root@beijing ~]
# echo "it's isa dog\n this is new line"
it's is a dog\n this is new line
  
# -e 开启转义功能
[root@beijing ~]
# echo -e "it'sis a dog\nthis is new line"
it's is a dog
this is new line
-e     
enable 
interpretation of backslash escapes
  
[root@beijing ~]
# echo it is a dog
it is a dog
  
#红字
[root@beijing ~]
# echo -e "\e [1;31mthisis a color\e[0m"
this is a color
[root@beijing ~]
# echo -e"\033[1;31mthis is a red color\033[0m"
this is a red  color
#绿底
[root@beijing ~]
# echo -e"\e[1;42mthis is a red color\e[0m"
this is a red  color
  
#红字绿底
[root@beijing ~]
# echo -e"\e[1;31;42mthis is a red color\e[0m"
this is a red  color
  
#有效数字
echo 
"scale=3;3/8"
|
bc
echo 
$
bc

计算

这是编程语言的功能之一了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
va=1;
vb=2;
#echo $($va+$vb);error
#echo $(va+vb); error
echo 
[$va+$vb] 
#output :[1+2]
  
echo 
$[va+vb]  
#ok
echo 
$(($va+$vb)) 
#//ok
  
let 
result=$va+vb 
#ok
echo 
$result
result=`
expr 
3 + 1` 
#ok, 注意等号,两边不能有空格;result=`expr $va + 1` 也可以
echo 
$result
result=$(
expr 
$va + 1) 
#ok, 注意等号,两边不能有空格,+号必须有空格,否则会当成字符串输出
echo 
$result

输出变量长度

内置功能(感兴趣而已)

1
2
3
4
5
[root@beijing 
test
]
# exportSTR="1234"
 
[root@beijing 
test
]
# echo $STR
1234
[root@beijing 
test
]
# echo ${#STR}
4

函数

这是最基本的,不能语句罗列吧

1
2
3
4
5
6
7
#括号里不能有参数,获取参数通过$1,$2....获取
function 
sayHello(){
         
echohello $1
}
#$@:参数列表
#$*:参数字符串
sayHello zgy;
#这样调用

读取命令序列

可得一个命令的结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash
  
 
COMMANDS=
ls
|
cat 
-n
 
echo 
$COMMANDS 
#输出为空
  
 
COMMANDS=$(
ls
|
cat 
-n)
 
#$COMMANDS #error
 
echo 
$COMMANDS 
#输出期望结果
  
  
 
echo 
`$COMMANDS` 
#error
 
echo 
`
ls
|
cat 
-n` 
#输出期望结果  反引用
  
###############################################
#子shell,在子shell操作,不影响主shell
echo 
`
pwd
`;
cd 
/bin
echo 
`
pwd
`;
  
# output#
# /root/test
# /bin
  
echo 
`
pwd
`;
(
cd 
/bin
)
echo 
`
pwd
`;
# output#
# /root/test
# /root/test

打印所用时间

评定一个算法的效率

1
2
3
4
5
6
7
8
9
10
start=$(
date 
+%s) 
#start=`date +%s`,等号不能有空格,如果有空格,会被变量当成命令
for 
(( i = 0; i < 100000; i++ ));
do
         
echo
$i >
/dev/null
done
end=`
date 
+%s`
  
diff
=$(($end-$start))
echo 
"use times(ms):"
$
diff
  
echo 
"use times(ms):"
$(($end-$start))

常用的测试

判断权限等,shell编程汇总功能常用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#[[]] 必须有空格
#是否是文件,文件是否存在
[root@beijing 
test
]
# [[ -f 1.txt ]]&& echo "1.txt is file" || echo  "1.txt is notfile"
1.txt is 
file
#是否是可执行文件
[root@beijing 
test
]
# [[ -x 1.txt ]]&& echo "1.txt can be execute" ||  echo  "1.txt can be execute"
1.txt can be execute
[root@beijing 
test
]
# [[ -x 1.txt ]]&& echo "1.txt can be execute" ||  echo  "1.txt can't be execute"
1.txt can't be execute
 
[root@beijing 
test
]
# chmod  +x 1.txt
[root@beijing 
test
]
# [[ -x 1.txt ]]&& echo "1.txt can be execute" ||  echo  "1.txt can't be execute"
1.txt can be  execute
[root@beijing 
test
]
#
#是否是目录
[root@beijing 
test
]
# [[ -d 1.txt ]]&& echo "1.txt is dir" || echo  "1.txt is't dir"
1.txt is't 
dir
[root@beijing 
test
]
# [[ -d /bin ]]&& echo "1.txt is dir" || echo  "1.txt is't dir"
1.txt is 
dir
#判断是空串吗?
[root@beijing 
test
]
# [[ -z"1" ]] && echo "is null" ||  echo "is not null"
is not null
[root@beijing 
test
]
# [[ -z"" ]] && echo "is null" ||  echo "is not null"
is null
-z 与-n功能相反

小计

看书本,很简单的代码,也就是一看就懂的代码。其实真正自己写出来,在运行起来得到结果,也不容易。 眼高手低要不得。

我就在写程序是经常遇到一些这样情况。有时候要求有空格(比如条件判断时)。有时候不能有空格(变量赋值时)。有时候,单引号有时候又 反引号。哎要注意啊这些小细节,总结经验。

小小代码也不简单。

如果广大读者,也可以看着我的脑图,一步步写一下脚本,也会有所收获。

算个开篇吧。断断续续,随着学习深入,例子也会逐渐深入。希望自己的shell水平,能有所突破。

本文出自 “” 博客,请务必保留此出处

你可能感兴趣的文章
使用weinre 远程调试移动设备上的网页
查看>>
Microsoft 宣布推出Nano Server与Hyper-V容器
查看>>
Racket 6.11提供了稳定的细化类型和依赖函数特性
查看>>
Linux常用命令: find 和 ping
查看>>
ajax分页
查看>>
一个8年web前端从业者的迷茫
查看>>
Nginx出现could not build the server_names_hash 解决办法
查看>>
angular入门
查看>>
Hexo搭建博客
查看>>
有哪些 JS 调试技巧——devtool,以及安装问题的解决
查看>>
FastReport.Net v2016.6发布
查看>>
NDK开发 - JNI开发流程
查看>>
理解引用
查看>>
[LintCode/LeetCode] Merge Two Sorted Lists
查看>>
CSS进阶篇--div中的内容垂直居中的五种方法
查看>>
Apache Tomcat 7.0.93 发布,开源 Java Web 应用服务器
查看>>
Unity制作即时战略游戏毕设
查看>>
微软小冰首席科学家武威解读 EMNLP 论文:聊天机器人的深度学习模型 ...
查看>>
凌动智行被纽交所暂停交易、未来还将被除名,已启动退市程序 ...
查看>>
hadoop3.x的安装
查看>>