Linux & Unix 命令行环境的一些 Tips

May 04, 2018

本文大部分命令在 macOS 上同样适用,部分包可能需要你先用 brew 安装一下

扫描指定服务器的端口是否启用(支持任意协议)

nmap -p 80 qq.com

将 stdout 和 stderr 输出到同一个文件

file.sh >> file.log 2>&1

批量重命名

# 将当前目录下所有 .js 文件重命名为 .ts ( 包括子孙目录 )
find . -depth -name "*.js" -exec sh -c 'mv "$1" "${1%.js}.ts"' _ {} \;

批量删除文件

Use find:

find . -name "*.bak" -type f -delete

But use it with precaution. Run first:

find . -name "*.bak" -type f

to see exactly which files you will remove.

Also, make sure that -delete is the last argument in your command. If you put it before the -name *.bak argument, it will delete everything.

批量删除目录

# 删除 dist 目录下包含的所有 __tests__ 目录
find dist -name "__tests__" -type d -exec rm -rf {} +

查看进程信息

# 显示用户自己的进程树
ps -auf

# 显示所有进程
ps -ef

环境变量

在脚本开头设置 PATH 变量可以决定后面的命令和子 shell 中的命令去哪里查找可执行程序

使用 export 命令导出环境变量可以确保后面执行的程序和子 shell 中可以读取到这个环境变量,在 shell 脚本中使用 export 命令导出的环境变量仅在这个脚本的执行过程中有效,并不会影响到外部环境

最好在脚本开头加上一行 set -eux,可以打印出执行步骤,出错后会立即退出

何时应该使用 export

当后面执行的程序需要读取这个变量,或者子 shell 中需要使用这个变量

本文原载于:baiyun.me

原文链接:https://baiyun.me/linux-tips

如果你喜欢我的内容,请考虑请我喝杯咖啡☕吧,非常感谢🥰 。

If you like my contents, please support me via BuyMeCoffee, Thanks a lot.