[十天学会Linux Shell]第一天:小试牛刀
来源:互联网 发布:规模以上 知乎 编辑:程序博客网 时间:2024/03/29 19:13
这段时间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 conditiondo do commands; commands;done done
判断语句
if condition #如果这里想要把then放上来,就需要在后面加上;号就像下面的elif一样then commandselif condition; then commandselse command;fi
学会Linux Shell第一天就到这里结束了~~,拜了个拜
- [十天学会Linux Shell]第一天:小试牛刀
- 十天学会PHP之第一天
- 十天学会php之第一天
- 十天学会ASP.NET第一天
- 十天学会PHP之第一天
- 十天学会ASP之第一天
- 十天学会php之第一天
- 十天学会php之第一天
- 十天学会ASP之第一天
- 十天学会php之第一天
- 十天学会php之第一天
- 十天学会ASP.NET第一天
- 十天学会php之第一天
- 十天学会ASP.net之第一天
- 十天学会ASP.net之第一天
- 十天学会Authorware6.5之第一天:图标
- 教程/ASP 十天学会ASP之第一天
- 十天学会ASP.net之第一天
- pthread_key_t和pthread_key_create()详解
- 算法导论—红黑树(还没写完,先备份一个)
- Linux学习笔记
- tomcat deploy path
- 《linux从入门到精通》刘忆智 (我再次说, 这类书,入门是可以的, 精通则完全是忽悠骗人的)
- [十天学会Linux Shell]第一天:小试牛刀
- 第三章第六题
- 7.3 MaxDoubleSliceSum
- InputStream、InputStreamReader和Reader的关系
- JAVA守护线程与用户线程的区别
- eclipse或myeclipse,web项目无法自动编译,.classpath文件原因造成的
- 一天一点MFC
- fzu2188 过河I BFS+剪枝
- Leetcode 199: Binary Tree Right Side View