logo科技微讯

一些超好用的 macOS bash 命令

作者:科技微讯
日期:2019-10-30
📜 文章

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/' {} \;

再比如下面这条命令,找到 src 文件夹中所有 js 文件,然后用 sed 把这些文件中的 logger.info 替换成 logger.log:

find ./src -type f -name '*.js' -exec sed -i '' s/logger.info/logger.log/g {} +

egrep 命令

grep -rl 'regex' .
grep -rni --color 'regex' .

这是我常用的搜索命令,n 显示行数,r 表示对文件夹及其子文件夹进行搜索,i 表示大小写不敏感,l 表示只列出文件名称,color 表示搜索命中的关键词用颜色显示,'regex' 搜索的关键词支持 regex,最后面的 . 表示对当前文件夹进行搜索。

可以写一个简单的搜索脚本:

echo "请输入搜索关键词:"
read keywords
echo "搜索结果如下:"
grep -rl "$keywords" .

常用终端快捷键

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

!!

如何中断操作?

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 的简称

更多:

donation赞赏
thumbsup0
thumbsdown0
暂无评论