如果不是要xargs 则是把6个文件传给cat 并输出行数
6.2.17 查看当前分支以及所有分支
6.2.22 本地分支对应到远程分支
创建一个新的分支,然后把新的分支对应到远程仓库的分支
6.2.23 删除远程仓库的分支
6.2.24 将远程仓库的当前分支与本地仓库的当前分支合并
也可以指定远程仓库的指定分支,将远程仓库的branch_name分支与本地仓库的当前分支合并
6.2.25 远程分支对应本地分支
6.2.26 将远程分支拉取到本地
6.2.27 将工作区和暂存区中尚未提交的修改存入栈中
6.2.28 将栈顶存储的修改恢复到当前分支
6.2.29 删除栈顶存储的修改
6.2.30 将栈顶存储的修改恢复到当前分支
6.2.31 查看栈中所有元素
shell是我们通过命令行与操作系统沟通的语言。
shell脚本可以直接在命令行中执行,也可以将一套逻辑组织成一个文件,方便复用。
Terminal中的命令行可以看成是一个“shell脚本在逐行执行”。
Linux中常见的shell脚本有很多种,常见的有:
每行中#之后的内容均是注释。
其中EOF可以换成其它任意字符串。例如:定义变量,不需要加$符号,例如:
name3=hope # 也可以不加引号,同样表示字符串注意,变量名和等号之间不能有空格,同时,变量名的命名须遵循如下规则:
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线 _。
不能使用bash里的关键字(可用help命令查看保留关键字)。
除了显式地直接赋值,还可以用语句给变量赋值,如:
使用变量,需要加上$符号,或者${}符号。花括号是可选的,主要为了帮助解释器识别变量边界。
把变量定义在一个范围之内
使用readonly或者declare可以将变量变为只读,只读变量的值不能被改变。。
unset可以删除变量。
在执行shell脚本时,可以向脚本传递参数。$1是第一个参数,$2是第二个参数,以此类推。特殊的,$0是文件名(包含路径)。例如:
- 自定义变量(局部变量)
- shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
自定义变量改成环境变量:
环境变量改为自定义变量:
字符串可以用单引号,也可以用双引号,也可以不用引号。
7.7.1 单引号与双引号的区别:
单引号中的内容会原样输出,不会执行、不会取变量,单引号字符串中的变量是无效的;
双引号中的内容可以执行、可以取变量,双引号里可以出现转义字符;
7.7.2 获取字符串长度
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
类似于 C 语言,数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。
数组用小括号表示,元素之间用空格隔开。例如:
也可以直接定义数组中某个元素的值:
可以不使用连续的下标,而且下标的范围没有限制。
读取数组元素值的一般格式是:
获取数组长度的方法与获取字符串长度的方法相同,例如:
# 取得数组元素的个数
# 取得数组单个元素的长度
Shell 和其他编程语言一样,支持多种运算符,包括:
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
用反斜杠放在shell特定的字符前面,发现表达式运行错误时,可以试试转义。
对包含空格和其他特殊字符的字符串要用引号括起来
expr会在stdout中输出结果。如果为逻辑关系表达式,则结果为真,stdout为1,否则为0。
expr的exit code:如果为逻辑关系表达式,则结果为真,exit code为0,否则为1。
expr支持普通的算术操作,算术表达式优先级低于字符串表达式,高于逻辑关系表达式。
加减运算。两端参数会转换为整数,如果转换失败则报错。 乘,除,取模运算。两端参数会转换为整数,如果转换失败则报错。 () 可以该表优先级,但需要用反斜杠转义7.11 逻辑关系表达式
如果第一个参数非空且非0,则返回第一个参数的值,否则返回第二个参数的值,但要求第二个参数的值也是非空或非0,否则返回0。如果第一个参数是非空或非0时,不会计算第二个参数。 如果两个参数都非空且非0,则返回第一个参数,否则返回0。如果第一个参为0或为空,则不会计算第二个参数。 比较两端的参数,如果为true,则返回1,否则返回0。”==”是”=”的同义词。”expr”首先尝试将两端参数转换为整数,并做算术比较,如果转换失败,则按字符集排序规则做字符比较。 () 可以该表优先级,但需要用反斜杠转义 表达式的exit code为0,表示真;为非零,表示假。(与C/C++中的定义相反)read命令用于从标准输入中读取单行数据。当读到文件结束符时,exit code为1,否则为0。
-p: 后面可以接提示信息 -t:后面跟秒数,定义输入字符的等待时间,超过等待时间后会自动忽略此命令echo用于输出字符串。命令格式:
7.13.5 显示结果重定向到文件
文件重定向可以看下面文件操作
printf命令用于格式化输出,类似于C/C++中的printf函数。
默认不会在字符串末尾添加换行符。
在命令行中输入man test,可以查看test命令的用法。
test命令用于判断文件类型,以及对变量做比较。
test命令用exit code返回结果,而不是使用stdout。0表示真,非0表示假。
# test -e 测试文件是否存在 返回1 || 运算符短路原则,所以当文件存在时,打印exist,不存在的时候执行||右侧,打印不存在
[]与test用法几乎一模一样,更常用于if语句中。另外[[]]是[]的加强版,支持的特性更多。
echo $? # 输出上个命令的返回值,输出0- []内的每一项都要用空格隔开
- 中括号内的变量,最好用双引号括起来
- 中括号内的常数,最好用单或双引号括起来