Linux/MacOS 命令:
留神,因为有些命令在 Linux 中有 MacOS 没有,网上找到的有时候比拟含糊,所以不肯定完全正确,我尽量辨别不同的。
符号的含意:
符号 | 含意 |
---|---|
| | 管道符 |
&& | 代表 and 同时运行多个命令, 应用它。 |
\ | 容许您在新行中持续编写命令 Bash语法。 |
* | 匹配门路下,所有文件或者文件夹名称 |
<< EOF [重定向文件] ...内容 EOF | 分界符, EOF 不肯定是 它,只是通常用它作为分界符标识 ; 联合cat进行内容的追加 |
> | 获取命令的规范输入并将其重定向到一个文件中(将笼罩整个文件) |
2> | 获取命令的谬误输入并将其重定向到一个文件中(将笼罩整个文件) |
&> | 获取命令的规范和谬误输入并将其重定向到一个文件中(将笼罩整个文件) |
< | 将文件的内容读入命令的输出 |
>> | 将文本或命令规范输入追加到文件的最初一行 |
2>> | 将文本或命令谬误输入追加到文件的最初一行 |
&>> | 将文本或命令规范和谬误输入追加到文件的最初一行 |
花括号扩大:
在传统的 shell 中是没有 花括号扩大这个性能的.
$ echo a{p,c,d,b}e# 输入后果: ape ace ade abe$ echo {a,b,c}{d,e,f}# 输入后果: ad ae af bd be bf cd ce cf$ ls *.{jpg,jpeg,png} # 首先扩大为*.jpg *.jpeg *.png,而后解析通配符
当花括号扩大和变量扩大一起应用时,变量扩大解析于花括号扩大之后。有时有必要应用内置的 eval 函数:
$ start=1; end=10$ echo {$start..$end} # 因为解析程序,无奈失去想要的后果# 输入后果: {1..10}$ eval echo {$start..$end} # 首先进行变量扩大的解析# 输入后果: 1 2 3 4 5 6 7 8 9 10
bash 中 ``, '', "" 区别:
首先它们都能够用来解决bash 中字符串中的空格问题。
字符串引号 | 形容 |
---|---|
'' | 原样输入字符串,当咱们须要原样输入字符串的时候应用, 例如: a=1; echo '$a' // $a |
"" | 参数替换, 例如: a=1; echo "$a" // 1 |
`` | 命令替换和参数替换, 例如: echo seq 1 10 ; 次要是为了命令替换, 如果只替换了参数,echo 输入的时候会提醒找不到命令. |
echo `seq 1 10`# 输入后果: 1 2 3 4 5 6 7 8 9 10echo seq 1 10# 输入后果: seq 1 10
bash 中的循环:
格局:
# f 变量名 # * 以后文件夹下的所有文件, 这个是 glob 模式 # 循环输入文件 for f in *; do .... # file f done
# i 变量名 # `seq 1 10` 1 到 10, seq 1 10 是生成1 到 10,然而这里要加上 ``,否则输入的是 seq 1 10 # 循环输入 i for i in `seq 1 10`; do .... echo $i done # 1 # 2 . . . # 10
bash 中的变量:
上面的例子以上面这个变量为例子:
str="这是一个字符串变量"
变量赋值格局:
name=value
Ps:
1. = 与 name 和 value 之间不能有空格;
2.变量的值如果有空格,必须用引号蕴含
应用变量格局: $str /// 这是一个字符串变量
在 "" 字符串中应用变量, 获取到变量值: "$str" /// 后果是 这是一个字符串变量
在 '' 字符串中应用变量, 获取到: '$str' /// 后果是 $str
aa=123#定义变量aa的值是123aa="$aa"456#反复定义变量aa的值是源aa的值加上456echo $aa# 输入后果: 123456#aa的值曾经变成了123456aa=${aa}789echo $aa# 输入后果: 123456789# 在进行变量叠加时也能够应用${变量名}格局# 在进行变量叠加时,变量名须要用双引号或 ${} 蕴含
变量查看:
set 命令能够用来查看零碎中的所有变量(用户自定义变量和环境变量)和设定 Shell 的执行环境
1.间接set命令列出来所有变量
2.为了查找变量是否存在应用 grep 命令:
set | grep -e 正则表达式
变量删除:
unset 命令删除变量: unset str
因为是删除变量,所以不须要带 $
bash 中的字符串操作:
上面的例子以上面这个变量为例子:
str=123asd456
字符串按地位截取:
格局:
${var:offset:length}
- var: 变量,不须要带 $
- offset: 从字符串第几个开始截取
- length: 长度
- 如果只有1个参数,负数的时候,为offset, 正数的时候为 length(这里 : 和 - 要有空格)
~ % str=123asd456~ % echo ${str:2:4}3asd~ % echo ${str:4} sd456~ % echo ${str:-4}123asd456~ % echo ${str: -4}d456
字符串删除:
pattern是glob格调的正则(名称: glob 模式 \ glob 模式匹配)
- ${var/pattern} -- 删除首次。删除var示意的字符串中第一次被pattern匹配到的字符串.
- ${var//pattern} -- 删除全副。删除var示意的字符串中所有被pattern匹配到的字符串.
- ${var/#pattern} -- 删除行首。删除var示意的字符串中所有以pattern为行首匹配到的字符串.
- ${var/%pattern} -- 删除行尾。删除var所示意的字符串中所有以pattern为行尾所匹配到的字符串.
字符串切片:
有点像字符串删除(删除行首或行尾)
格局:
- ${var#pattern} -- 性能:自左而右,查找var变量所存储的字符串中,第一次呈现的pattern,删除pattern所匹配到的所有字符。 留神:匹配到的必须是从行首开始的,不能匹配两头某段.
- ${var##pattern} -- 贪心模式,匹配到不能再匹配到地位.
- ${var%pattern} -- 性能:自右而左,查找var变量所存储的字符串中,第一次呈现的pattern,删除pattern所匹配到的所有字符。 留神:匹配到的必须是从行尾开始的,不能匹配两头某段.
- ${var%%pattern} -- 贪心模式,匹配到不能再匹配到地位.
字符串替换:
pattern是glob格调的正则(名称: glob 模式 \ glob 模式匹配)
格局:
- ${var/pattern/substr} -- 首次。查找var所示意的字符串中,第一次被pattern所匹配到的字符串,以substr替换之.
- ${var//pattern/substr} -- 全副。查找var所示意的字符串中,所有能被pattern所匹配到的字符串,以substr替换之.
- ${var/#pattern/substr} -- 行首。查找var所示意的字符串中,行首被pattern所匹配到的字符串,以substr替换之.
- ${var/%pattern/substr} -- 行尾。查找var所示意的字符串中,行尾被pattern所匹配到的字符串,以substr替换之.
输入PATH换行:
echo ${PATH//:/\\n}
字符大小写转换:
- ${var^^} :把var中的所有小写字母转换为大写.
- ${var,,} :把var中的所有大写字母转换为小写.
变量赋值:
格局:
- ${var:-VALUE}:如果变量var为空或者未设置,则返回VALUE;否则返回变量var的值。留神,变量name自身的值不会被批改.
- ${var:=VALUE}:如果变量var为空或者未设置,则返回VALUE,并将VALUE赋值给变量var;否则返回变量var的值.
- ${var:+VALUE}:如果变量为空或者未设置,那么不会返回任何值。否则返回VALUE的值。留神,变量name自身的值不会被批改.
- ${var:?ERROR_INFO}:如果变量var为空或者未设置,则返回错误信息ERROR_INFO;否则返回变量var的值.
命令:
compgen:
列出所有命令
参数 | 形容 |
---|---|
-c | 列出所有可用的命令 |
-a | 列出可用的所有bash shell别名 |
-b | 显示所有bash内置插件 |
-k | 显示所有bash关键字 |
-A | 显示所有bash函数 |
alias:
alias命令用来设置指令的别名。咱们能够应用该命令能够将一些较长的命令进行简化。应用alias时,用户必须应用单引号''
将原来的命令引起来,避免特殊字符导致谬误。
alias命令的作用只局限于该次登入的操作。若要每次登入都可能应用这些命令别名,则可将相应的alias命令寄存到bash的初始化文件/etc/bashrc
中
执行 alias 或者 alias -p, 能够显示本人设定的 alias 命令列表(有些shell 没有 -p 参数,间接执行 alias)
seq:
疾速生成数字列表,seq 仅实用数字.
# 除非另有指定,否则 `seq` 始终以 1 结尾 echo `seq 3` # 1 2 3 echo `seq 3 6` # 3 4 5 6
指定增量
# 3 开始的数 # 4 指定增量 # 20 最大的数,因为19 增量 4 后是大于 20,所以最初输入20 echo `seq 3 4 20` # 3 7 11 15 19
- 指定减量
# 20 开始的数 # -4 指定减量 # 3 最小的数,因为4 减量 4 后是小于 3,所以最初输入3 echo `seq 20 -4 3` # 20 16 12 8 4
- 应用分隔符 -s参数 加上分隔符
{a..b}:
a是开始,b是完结; 疾速生成序列,实用于任何字符(中文也适宜).
运算:
bc:
bc 命令是任意精度计算器语言,通常在linux下当计算器用。
它相似根本的计算器, 应用这个计算器能够做根本的数学运算
- 加法
- 减法
- 乘法
- / 除法
- ^ 指数
- % 余数
# scale 设置小数位,通过 / 1 进行echo 'scale=2; (2.777 - 1.4704)/1' | bc# 后果: 1.30, floor
let:
用于执行一个或多个表达式,变量计算中不须要加上 $ 来示意变量。如果表达式中蕴含了空格或其余特殊字符,则必须引起来
格局:
let arg [arg ...]
例如:
a=1 b=2let a=a+4 b++echo $a $b # 后果: 5 3
目录:
cat:
cat命令连贯文件并打印到规范输出设备上,cat常常用来显示文件的内容
格局:
cat 文件1 [...文件n]
参数 | 性能 |
---|---|
-n或-number | 有1开始对所有输入的行数编号 |
-b或--number-nonblank | 和-n类似,只不过对于空白行不编号 |
-s或--squeeze-blank | 当遇到有间断两行以上的空白行,就代换为一行的空白行 |
-A | 显示不可打印字符,行尾显示“$” |
tac:
cat命令的反向,只反向从下到上,不反向左右.
more:
用来查看一个文件的内容。当文件内容太多,一屏幕不能占下,而你用cat必定是看不后面的内容的,那么应用more就能够解决这个问题了。当看完一屏后按空格键持续看下一屏。但看完所有内容后就会退出。如果你想提前退出,只需按q键即可
less:
- 作用跟more一样,但比more好在能够上翻,下翻。空格键同样能够翻页,而按”j”键能够向下挪动(按一下就向下挪动一行),按”k”键向上挪动。
- 在应用more和less查看某个文件时,你能够按一下”/” 键,而后输出一个word回车,这样就能够查找这个word了。如果是多个该word能够按”n”键显示下一个。
- 另外你也能够不按”/”而是按”?”后边同样跟word来搜寻这个word,惟一不同的是,”/”是在以后行向下搜寻,而”?”是在以后行向上搜寻
head:
head后间接跟文件名,则显示文件的前十行。如果加 –n 选项则显示文件前n行
tail:
前面间接跟文件名,则显示文件最初十行。如果加-n 选项则显示文件最初n行。
cd:
切换目录
格局:
cd 目录门路
- 返回上一次所在的目录: cd - 或者 cd $OLDPWD
- 切换到主目录: cd ~
touch:
创立文件
格局:
touch 文件名
mv:
挪动或者重命名
cp:
复制
mkdir:
新建文件夹
rmdir:
删除文件夹
rm:
删除文件夹或者文件
file:
查看文件类型
ls:
列出门路上面的文件夹和文件
参数 | 简写 | 性能 |
---|---|---|
--all | -a | 所有文件夹和文件(包含暗藏的文件夹和文件,默认不显示暗藏的文件夹和文件) |
-1 | 竖立输入文件夹和文件名称 | |
-l | 文件夹或者文件的长清单 |
other:
显示当前目录残缺门路: pwd
查看装置目录门路: which 软件名等