ack === æ¯grep好ç¨çææ¬æç´¢å·¥å · ## å®è£ ```shell # ubuntuä¸è¦å®è£ ack-grepï¼å 为å¨debianç³»ä¸ï¼ackè¿ä¸ªååè¢«å ¶ä»ç软件å ç¨äºã sudo apt-get install ack-grep # alpine Linux-apk软件å 管çå¨ å®è£ ack apk install ack ``` ## åæ° è¿äºåæ°å¨linuxä¸çéç¨é¢çæ¯ç¸å½é«çï¼å°¤å ¶æ¯ä½ ç¨vimå为IDEçè¯ ```shell -c(ç»è®¡)/ -i(忽ç¥å¤§å°)/ -h(䏿¾ç¤ºåç§°)/ -l(åªæ¾æä»¶å)/ -n(å è¡å·)/ -v(æ¾ç¤ºä¸å¹é ) ``` ## ç¹ç¹ ackå®ç½ååºäºè¿å·¥å ·ç5大åç¹ï¼ 1. é度é常快,å 为å®åªæç´¢ææä¹çä¸è¥¿ã 2. æ´å好çæç´¢ï¼å¿½ç¥é£äºä¸æ¯ä½ æºç çä¸è¥¿ã 3. 为æºä»£ç æç´¢è设计ï¼ç¨æ´å°çå»é®å®æä»»å¡ã 4. é常轻便ï¼ç§»æ¤æ§å¥½ã 5. å è´¹ä¸å¼æº ## å®ä¾ å¨è®°å¿çæ¶å大ä½ä¸å¯ä»¥å为è¿å 个é¨åï¼ > Searching ä»£ç æç´¢ > Search output æç´¢ç»æå¤ç > File presentation æä»¶å±ç¤º > File finding æä»¶æ¥æ¾ > File inclusion/exclusion æä»¶è¿æ»¤ grepå¸¸ç¨æä½ ```shell grep -r 'hello_world' # ç®åç¨æ³ grep '^hello_world' . # ç®åæ£å ls -l | grep .py # 管éç¨æ³ ``` ### Searching ç®åçææ¬æç´¢ï¼é»è®¤æ¯éå½çã ``` ack-grep hello ack-grep -i hello ack-grep -v hello ack-grep -w hello ack-grep -Q 'hello*' ``` ### Search File 对æç´¢ç»æè¿è¡å¤çï¼æ¯å¦åªæ¾ç¤ºä¸ä¸ªæä»¶çä¸ä¸ªå¹é é¡¹ï¼æè xxx ```shell ack-grep --line=1 # è¾åºæææä»¶ç¬¬äºè¡ ack-grep -l 'hello' # å å«çæä»¶å ack-grep -L 'print' # éå 嫿件å ``` ### File presentation è¾åºçç»ææ¯ä»¥ä»ä¹æ¹å¼å±ç¤ºå¢ï¼è¿ä¸ªé¨åæå ä¸ªåæ°å¯ä»¥ç»ä¹ ä¸ ```shell ack-grep hello --pager='less -R' # 以lesså½¢å¼å±ç¤º ack-grep hello --noheading # ä¸å¨å¤´ä¸æ¾ç¤ºæä»¶ ack-grep hello --nocolor # ä¸å¯¹å¹é å符çè² ``` ### File finding 没éï¼å®å¯ä»¥æ¥æ¾æä»¶ï¼ä»¥çå»ä½ è¦ä¸æçç»åfindågrepç麻ç¦ï¼è½ç¶å¨linuxçææ³æ¯ä¸ä¸ªå·¥å ·å好ä¸ä»¶äºã ```shell ack-grep -f hello.py # æ¥æ¾å ¨å¹é æä»¶ ack-grep -g hello.py$ # æ¥æ¾æ£åå¹é æä»¶ ack-grep -g hello --sort-files # æ¥æ¾ç¶åæåº ``` ### File Inclusion/Exclusion æä»¶è¿æ»¤ï¼ä¸ªäººè§å¾è¿æ¯ä¸ä¸ªå¾ä¸éçåè½ãå¦æä½ æ¾ç»å¨æç´¢é¡¹ç®æºç æ¯ä¸å°å¿å½ä¸æ¥å¿ä¸çæä¸ªå ³é®åçè¯ï¼ä½ ä¼è§å¾è¿ä¸ªæç¨ã ```shell ack-grep --python hello # æ¥æ¾ææpythonæä»¶ ack-grep -G hello.py$ hello # æ¥æ¾å¹é æ£åçæä»¶ ``` ## åèèµæ - [ackå®ç½](https://beyondgrep.com/)