下面这条命令我经常用,意思是在 ./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 {} +
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
在当前目录、上一级目录之间如何切换?
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 的简称
更多: