共计 4955 个字符,预计需要花费 13 分钟才能阅读完成。
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 10
echo 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 的值是 123
aa="$aa"456
#反复定义变量 aa 的值是源 aa 的值加上 456
echo $aa
# 输入后果: 123456
#aa 的值曾经变成了 123456
aa=${aa}789
echo $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=2
let 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 软件名等