2517 views
owned this note
---
disqus: ncumcl
---
Linux Command - 進階篇
===
###### tags: `MCL Notebook`
[toc]
# grep
[教學](https://www.cyberciti.biz/faq/grep-regular-expressions/)
# ag
The silver searcher (即ag),速度比ack和grep快,閃電般的搜索程式碼工具,使用非常簡單。
## 安裝
* MacOS:
```brew install the_silver_searcher```
* Debian/Ubuntu:
```sudo apt-get install silversearcher-ag```
* CentOS:
```sudo yum install the_silver_searcher```
* Fedora:
```sudo dnf install the_silver_searcher```
* ArchLinux:
```sudo pacman -S the_silver_searcher```
## 常見用法
### 在目錄中的檔案,搜尋特定文字
```shell=
# 直接在想進行搜索的目錄下打
$ ag "string-to-search"
```
此時ag會搜尋當前目錄下的所有文件,在每個文件的每一行中找"要搜尋的字串",把文件名、行號和匹配的內容高亮顯示出來。
如果想在某個指定的目錄下搜索,或只搜索某個文件的內容,在搜索的字符串後面加上路徑就行:
```shell=
$ ag "string-to-search" /path/to/directory
```
### 只在特定類型檔案中,搜尋特定文字
ag -G則提供強大的過濾功能,使搜索在特定的文件中進行。下面的例子只搜索java類型的文件:
```shell=
$ ag -G ".+\.java" "string-to-search" /path/to/directory
```
### 搜尋特定類型檔案
```shell=
$ ag -g .dts$ #搜尋附檔名為dts的檔案
```
## ag 選項說明
ag會根據輸入自動判定大小寫的匹配方式。如果查詢的字符串只含有小寫字符,使用大小寫不敏感的匹配方式;如果出現了大寫字符,就改為大小寫敏感的匹配方式。
直接使用不敏感的匹配方式,請用```ag -i```選項。
另一個很有用的選項是```ag -w```的全詞匹配,它要求匹配的字符串前後都需要有合適的分隔符。
``` ag -a ```搜索全部文件(doesn't include hidden files or patterns from ignore files) ,在搜索不到文件時,可以嘗試添加-a標誌。
最後,如果只關心有哪些文件匹配(而不在意文件的內容),
```ag -l```顯示有匹配的文件名
```ag -L```顯示沒有任何匹配的文件名。