一些超好用的 macOS bash 命令

作者: 科技微讯

日期:

find 命令

下面这条命令我经常用, 意思是在 ./src 这个文件夹中查找那些后缀是 js 的文件, 然后把找到的文件一个一个地传递给 egrep 处理, egrep 拿到这些文件之后, 逐一在这些文件中寻找 img 这个字符串, 如果这个文件包含 img 这个字符串, 就返回这个文件的名称. 如果你有很多文件, 不记得某个字符串出现在哪里, 可以用这个命令.

find ./src -type f -name '*js' -exec egrep -l 'img' {} \;

{} \; 这一段是固定写法, 也可以写成 {} \+, 但有区别, 似乎通常用 ;.

如果删了 -l, 那返回的不是文件的名称, 而是包含 img 这个字符串的那整行字符串, 例如返回:

<img src={logo} alt="kejiweixun logo" />

find 可以撘配其他命令使用, 例如可以把 egrep 更换为 ls, 下面这条命令把 src 文件夹中所有 js 文件找出来, 然后通过 ls 显示这些文件的大小, 路径, 读写权限等信息:

find ./src -name '*.js' -type f -exec ls -lh {} \;

再比如下面这条命令, 找到所有 js 文件, 然后用 sed 把这些文件中的 jpg 替换成 webp:

find . -type f -name '*.js' -exec sed -i '' -e 's/\(\.jpg\)/\1\.webp/' {} \;

常用终端快捷键

如何重复执行上一条命令?

!!

如何中断操作?

command . //相当于 `control c`

如何拆分成两个面板?

command d

取消拆分:

command shift d

如何移动光标在命令行中的位置?

control a  //移动到开头
control e  //移动到行尾
control b  //往后移动一个字母的位置
control f  //往前移动一个字母的位置

以及如何抹掉内容?

control u  /抹到开头
control k  //抹到结尾
control w  //从光标往回删除当前单词;

如何清除命令行?

command l
command k
clear

其他常用 bash 命令

在当前目录、上一级目录之间如何切换?

cd -

显示当前目录所有子目录及其文件?

ls -R
tree .
find .

如何创建子文件夹?

kdir -p dir/dir

如何在 terminal 使用 spotlight 搜索?

mdfind [search_pattern]
mdfind -onlyin [dir] -name [pattern]

terminal 如何打开当前目录的文件夹?

open .

一个方便的图片处理工具?

sips -Z 100x100 image.jpg

如何用 egrep 对目录及其所有子目录进行查找?

egrep -r 'pattern' dir

egrep 如何显示匹配到的具体字符?

echo apple | egrep 'pattern' --color=always
echo apple | egrep 'pattern' -o

如何删除文档的重复行?

sort -u file.txt

如何用命令行创建替身?

ln -s ~/Documents/project/ ~/Desktop/

如何把文字, 文件变成 base64 ?

base64 -in 文件 -out 文件
base64 -in 文件 | pbcopy  //顺便复制到剪切板
base64 -d -in 文件  //解密

如何把一个文件复制剪到切板?

pbcopy < a.txt

传输文件到服务器的方法:

scp [本地文件] userName@ip地址:[目录]  //scp 是 Secure Copy Protocol 的简称