2013-01-03 126 views
5

如何在第一個命令中編寫一個Bash忽略$的函數?我想要這個,因爲有時當我從網上粘貼命令時,它包含一個$的第一個字符。

$ ls應該做ls$ grep 'foo'應該做grep 'foo'

這不起作用,因爲$不是有效的函數名稱。

function $ { 
    ... 
} 
+5

不要複製它開始嗎? '$'用於表示shell提示符。 –

+1

@MarcB我懶得這樣做。我更喜歡寫一個程序,讓我的生活更輕鬆 – Mohsen

回答

9

的某個位置創建一個名爲$文件的$PATH,例如在~/bin

cd ~/bin 
cat <<'EOF' > \$ 
#!/bin/sh 
"[email protected]" 
EOF 

使其可執行:

chmod 755 \$ 

,享受瘋狂:

$ ls -l 
total 92 
-rwxr-xr-x 1 thomas thomas 13 Jan 3 19:09 $ 
$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ls 
total 92 
-rwxr-xr-x 1 thomas thomas 13 Jan 3 19:09 $ 
+2

+1好主意。你應該使用'「$ @」'來正確處理帶有空格的參數。我認爲一個函數會比腳本更好,但bash不允許使用'$'作爲函數名稱。 –

+0

謝謝,修復它。 – Thomas

+1

另一個提示:在第一個heredoc分隔符周圍放置單引號。這有效地單引號整個heredoc,你將不必逃避變量:'貓<<'EOF' >'$'' –