关于命令行:windowLinuxMacOS-命令行

37次阅读

共计 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
  1. 指定增量

       # 3 开始的数
       # 4 指定增量
       # 20 最大的数,因为 19 增量 4 后是大于 20,所以最初输入 20
       echo `seq 3 4 20`
       # 3 7 11 15 19
  2. 指定减量
   # 20 开始的数
   # -4 指定减量
   # 3 最小的数,因为 4 减量 4 后是小于 3,所以最初输入 3
   echo `seq 20 -4 3`
   # 20 16 12 8 4
  1. 应用分隔符 - 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 软件名等

正文完
 0