---
url: /shell.md
---
```sh

-z	检测字符串长度是否为0，为0返回 true。	[ -z $a ] 返回 false。
-n	检测字符串长度是否不为 0，不为 0 返回 true。	[ -n "$a" ] 返回 true。
$	检测字符串是否不为空，不为空返回 true。	[ $a ] 返回 true。
b file	检测文件是否是块设备文件，如果是，则返回 true。	[ -b $file ] 返回 false。
-c file	检测文件是否是字符设备文件，如果是，则返回 true。	[ -c $file ] 返回 false。
-d file	检测文件是否是目录，如果是，则返回 true。	[ -d $file ] 返回 false。
-f file	检测文件是否是普通文件（既不是目录，也不是设备文件），如果是，则返回 true。	[ -f $file ] 返回 true。
-g file	检测文件是否设置了 SGID 位，如果是，则返回 true。	[ -g $file ] 返回 false。
-k file	检测文件是否设置了粘着位(Sticky Bit)，如果是，则返回 true。	[ -k $file ] 返回 false。
-p file	检测文件是否是有名管道，如果是，则返回 true。	[ -p $file ] 返回 false。
-u file	检测文件是否设置了 SUID 位，如果是，则返回 true。	[ -u $file ] 返回 false。
-r file	检测文件是否可读，如果是，则返回 true。	[ -r $file ] 返回 true。
-w file	检测文件是否可写，如果是，则返回 true。	[ -w $file ] 返回 true。
-x file	检测文件是否可执行，如果是，则返回 true。	[ -x $file ] 返回 true。
-s file	检测文件是否为空（文件大小是否大于0），不为空返回 true。	[ -s $file ] 返回 true。
-e file	检测文件（包括目录）是否存在，如果是，则返回 true。	[ -e $file ] 返回 true。


&&	逻辑的 AND	[[ $a -lt 100 && $b -gt 100 ]] 返回 false
||	逻辑的 OR	[[ $a -lt 100 || $b -gt 100 ]] 返回 true


command > file	将输出重定向到 file。
command < file	将输入重定向到 file。
command >> file	将输出以追加的方式重定向到 file。
n > file	将文件描述符为 n 的文件重定向到 file。
n >> file	将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m	将输出文件 m 和 n 合并。
n <& m	将输入文件 m 和 n 合并。
<< tag	将开始标记 tag 和结束标记 tag 之间的内容作为输入。
需要注意的是文件描述符 0 通常是标准输入（STDIN），1 是标准输出（STDOUT），2 是标准错误输出（STDERR）。

-c, --bytes：统计字节数。
-m, --chars：统计字符数。
-w, --words：统计字数。
-l, --lines：统计行数。
 -L, --max-line-length：统计最长行的长度

 cut

 -b ：以字节为单位进行分割。这些字节位置将忽略多字节字符边界，除非也指定了 -n 标志。
-c ：以字符为单位进行分割。
-d ：自定义分隔符，默认为制表符。
-f ：与-d一起使用，指定显示哪个区域。
-n ：取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内，该字符将被写出；否则，该字符将被排除


>/dev/null 2>&1 &


 sudo find / -type f -name "*.zip"| xargs rm -rf

D:\sonar-scanner\bin\sonar-scanner.bat -D"sonar.projectKey=web" -D"sonar.sources=." -D"sonar.host.url=http://127.0.0.1:9000" -D"sonar.login=sqa_d08bc1a2555a877151677140e8335551d71166b6"

mvn clean package -T 1C -DskipTests '-Dmaven.compile.fork=true'&&java -jar xxxxx.war --springfox.documentation.auto-startup=false --spring.devtools.add-properties=false --server.compression.enabled=true --spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false --spring.jmx.enabled=false --server.port=8085

EOF和 -EOF区别

后者会自动删除tab产生的空格

```

## scp

```
-P：指定端口。默认是22，不需要指定；如果不是22，则用大写P指定端口。

-p：保留原始文件的修改时间、访问时间和模式。 // [!code focus]

-r：递归复制整个目录。复制目录是必不可少。

-C：压缩文件。


scp -rp ./.* ./* root@xxxx:~/xx/
```

## 清除多余空格

```
sed 's/\s\+/\ /g' example.txt
```

## linux命令

```
https://jaywcjlove.gitee.io/linux-command/

docker wcjiang/linux-command:latest


Linux 把当前⽤户加⼊到 root 组

sudo usermod -aG root $(whoami)

firewall-cmd --list-all

firewall-cmd --zone=public --add-port=80/tcp --permanent

firewall-cmd --reload



```

# Linux Shell特殊变量

```
    $#：传入脚本的参数个数；

　　$0:  脚本自身的名称；　　

　　$1:  传入脚本的第一个参数；

　　$2:  传入脚本的第二个参数；

　　$@: 传入脚本的所有参数；

　　$*：传入脚本的所有参数；

　　$$:  脚本执行的进程id；

　　$?:  上一条命令执行后的状态，结果为0表示执行正常，结果为1表示执行异常；

```
