1. 先安装 PowerShell 命令行工具
2. 通过该工具安装命令行包管理器工具 Chocolatey
命令:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
安装完成:
3. 开始安装ack
ack 官网
choco install ack
4. ack使用:
基础用法
在当前目录搜索字符
ack "pattern"
对比grep
grep -r "pattern"
pattern支持使用正则表达式
在指定目录搜索字符
ack "pattern" target_dir
对比grep grep 不支持在指定目录搜索。。
高级用法,在当前目录下文件内搜索多个关键字,或的关系,用分割竖线表示
ack "0x78B, status:2, Progress percentage:99 | install res:3009
搜索文件
ack -g "filename_pattern“
对比grep grep不支持搜索文件, 要达到同样的效果得用find命令
find . -name "filename_pattern"
以上几种用法基本可以覆盖80%的场景了, 可以看出在基础的使用中,ack基本是可以替代grep + find , 且用法要简洁很多。
高级用法
ignore file or dir
ack 可以支持在搜索时忽略某些目录或者文件,具体用法是
ack "pattern" --ignore-dir=dir_name --ignore-file=is:file_name
比如, 要忽略test目录和test1.c文件
ack "pattern" --ignore-dir=test --ignore-file=is:test1.c
ack 默认搜索时忽略了很多文件夹, 比如.git
指定 type
ack 默认为很多类型的文件设置了type, 比如.c .h .xs文件的type为cc, 如果只想搜索这类文件, 可以在搜索时指定type
ack "pattern" -t cc
可以通过ack --help-types查看默认支持的type
$ ack --help-types
Usage: ack [OPTION]... PATTERN [FILES OR DIRECTORIES]The following is the list of filetypes supported by ack. You can specify a
filetype
to include with -t TYPE or --type=TYPE. You can exclude a
filetype with -T TYPE or --type=noTYPE.Note that some files may appear in multiple types. For example, a file
called Rakefile is both Ruby (--type=ruby) and Rakefile (--type=rakefile).actionscript .as .mxmlada .ada .adb .adsasm .asm .sasp .aspaspx .master .ascx .asmx .aspx .svcbatch .bat .cmdcc .c .h .xscfmx .cfc .cfm .cfmlclojure .clj .cljs .edn .cljccmake CMakeLists.txt; .cmake
https://zhuanlan.zhihu.com/p/933309365
https://zhuanlan.zhihu.com/p/588824168