如何將以下命令轉換爲bash別名?Bash別名查詢
find . -name '*.php' | xargs grep --color -n 'search term'
我在哪裏可以指定文件擴展名和「搜索詞」顯然是搜索詞:)
所以我想要做的是:
searchFiles 'php' 'search term'
如何通過輸入到別名?我應該創建一個bash腳本,並將別名指向腳本嗎?
如何將以下命令轉換爲bash別名?Bash別名查詢
find . -name '*.php' | xargs grep --color -n 'search term'
我在哪裏可以指定文件擴展名和「搜索詞」顯然是搜索詞:)
所以我想要做的是:
searchFiles 'php' 'search term'
如何通過輸入到別名?我應該創建一個bash腳本,並將別名指向腳本嗎?
如何使用函數?添加到您的.bashrc:
function searchFiles() {
find . -name \*."$1" -print0 | xargs -0 grep --color -n "$2"
}
,然後用它喜歡:
$ searchFiles的C包含
您可以使用別名,但使用功能,如貢薩洛所示,理智的事情要做。
alias searchFiles=sh\ -c\ \''find . -name \*."$1" -type f -print0 | xargs -0 grep --color -Hn "$2"'\'\ -
無論是功能或別名,我建議使用-print0
與找到和-0
與xargs的。這提供了更強大的文件名處理(通常是文件名中的空格)。
+1 excellent .... –
雖然一個函數可以工作,但它不會被其他程序和腳本調用(沒有太多痛苦)。 (別名將有同樣的問題。)一個單獨的腳本將是我的選擇,因爲它聽起來像你想直接調用它:(與你有什麼無需查找)
#!/bin/bash
# since you're already using bash, depend on it instead of /bin/sh
# and reduce surprises later (you can always come back and look at
# porting this)
INCLUDE="*.$1"
PATTERN="$2"
grep --color -n "$PATTERN" --recursive --include="$INCLUDE" .
如果這隻用在另一個腳本中而不是直接使用,那麼函數會更容易。
您可以「導出」一個函數,使其可用於其他腳本。如果有大量文件,可以使用'find'和'xargs'。我沒有看到腳本中的任何特定的Bash。我認爲Bourne shell會非常滿意。 –
是的,這是可能的,但對於不熟悉的人來說,掌握執行腳本並不容易。你爲什麼認爲find + xargs會更好? Re sh,我只是指出他不必擔心「bash vs sh」(可以是PITA),只是因爲他正在編寫一個單獨的腳本---只是寫一個bash腳本。 – 2009-11-26 04:27:23
我同意@Roger。假設你有你自己的私人「〜/ bin」目錄在你的路徑中,以保持它(你做什麼,不是嗎?:),一個獨立腳本總是更靈活和強大的你想使用的小命令既可以直接在cli中,也可以在其他腳本中使用。一個小的sript目錄比單個文件充滿無關的功能更容易處理,恕我直言。 –
殼牌功能不錯,但你也可以看看ack。它處理特定的文件搜索,用顏色編碼,讓您的例子,簡直是
ack --php somepattern
PERFECTO - 感謝隊友 –
由於**克里斯·約翰森**狀態,你應該使用'-print0'和'-0 ' –
正在更新答案... – Gonzalo