macos linux 命令行,window/Linux/MacOS 命令行

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 软件名等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值