这段时间LeetCode先放一放,决定把Shell好好看看,毕竟这东西学会之后工作效率会高不少。在看Shell的同时,也在不断强化自己使用Vim的技能,在这个系列之后会更新一篇讲述怎么使用Vim的文章。
文章主要内容来源《Linux Shell脚本攻略(第2版)》。
———————————————————-这里是前言分割线———————————————————-
主要讲述Bash:Bourne Again Shell。(echo $SHELL查看你正在使用什么Shell)。shell有好几种,这里不普及这些种类来源。
先插一句:如果终端使用的是bash,可以使用一些bash下的快捷键,这样也能提高效率。同样这些操作会放在之后的一篇文章中给出。
———————————————————-依旧是前言分割线———————————————————-
shell中第一行使用#!来标识使用什么shell。
#!/bin/bash #这里使用的是Bash 读作:shebang
# #号用来表单行注释
执行脚本:
bash script.sh #或者是下面的方法
chmod a+x script.sh && ./script.sh #修改文件权限,赋予可执行权限
在用户目录下有几个和bash相关的文件
.bashrc #定义提示文本,颜色各类设置,Mac下没有这个文件,需要自己写
.bash_profile #登陆相关信息
.bash_history #用户运行过的命令,Ctrl+P查看上一条命令,Ctrl+N下一条
在bash中一条命令之后可加分号,也可以不加。同时如果对于命令不熟悉可以使用man command来查看。都是英文,不知道大家看得怎么样,反正对于我这个专八没过的人来说,看多了也就习惯了。
———————————————————-马上要进入正题了———————————————————-
printf "%s %c %-5d %+5f" $var1 $var2 $var3 $var4 #有+,-表右左对齐,长度是保留宽度,如果不够会往后推
#echo命令自动带回车功能
echo -n #不换行
-e #双引号的字符串内需要转义
-e "\e[5;36;42;5Am Text \033[0m" #echo控制选项通过man具体查看,可以用于设置前后景色,闪动文本等
#5;36;42;5Am这些都是控制值,比如36表示文本颜色,42表示背景色是什么,5A是闪动光标或者什么。
环境变量
#由冒号分隔,使用export关键字导出环境变量
#在shell中使用=表示赋值,前后空一格表示什么一下想不起来,下次想起补上
varname=value #赋值
$varname # $ 获取该变量的值
echo ${#array} # # 获取字符串或者数组长度
echo ${array[i]} # 获取第i个值
echo ${array[@]} # @ 输出数组中的所有数据
echo ${array[*]} # * 输出所有数据,*号会将数据设置成单个的实体,而@是一整个数据
echo ${!array[*]} # ! 获取索引值,对于关联数据比较有用,不过Mac下现在的默认bash才3.x,
#bash4.0才支持关联数据
算数操作,比较判断
#五种方法算法操作:let,(()),[],expr,bc,最后一种可以算比较高级的算术
let varname3 = varname1 + varname2 #可以不加$,直接进行变量操作
result=$[varname1 + varname2] #[]操作
result=$((varname1 + varname2)) #(())操作
result=`expr $varname1 + $varname2` #expr操作
#最后的bc命令用的时候再查吧
# = -eq != -ne && -a || -o
# > -gt >= -ge < -lt <= -le
#解释:可以使用-eq来判断是否相等如 var1 = var2 或者 var1 -eq var2
#-e 文件存在 -f 是文件名或者路径
#-d 目录 -c 字符设备 -b 块设备 -l 符号连接
#-x 可执行 -w 可读 -r 可写
#解释:[ -f a .log ] 判断这是否是一个文件
#字符串比较
[[ $str1 = $str2 ]] #两个字符串是否相等
保存命令结果,子shell
cmd_output=`command` #反引用法
cmd_output=$(command) #子shell方法
使用read命令读取数据,从而不需要使用回车来结束
read -n 2 #读入两个长度的字符,长度满足自动结束输入
-s #关闭回显,我猜是slience的意思
-p #打印提示信息
-t 10 #10秒之后停止输入,如果不回车,输入内容会丢失
-d e #输入字母e之后会停止输入
分隔符,IFS(internal field separator)
IFS=: #就表示:是字符串中的分隔符
echo {1.. 50} #生成1到50的序列,同时也可以生成字符串之类的。
————————————————————重点分隔线————————————————————
循环,判断,这些是使用最多的
#4种循环
#c风格,记得这里使用的是双重括号 C++风格
for((i=0; i<10; i++)) for var in list
{ do
command; command;
} done
#while循环 #until循环,直到条件满足了就不执行
while condition untile condition
do do
commands; commands;
done done
判断语句
if condition #如果这里想要把then放上来,就需要在后面加上;号就像下面的elif一样
then
commands
elif condition; then
commands
else
command;
fi
学会Linux Shell第一天就到这里结束了~~,拜了个拜