[十天学会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第一天就到这里结束了~~,拜了个拜

0 0