如何在第一個命令中編寫一個Bash忽略$
的函數?我想要這個,因爲有時當我從網上粘貼命令時,它包含一個$
的第一個字符。
$ ls
應該做ls
或$ grep 'foo'
應該做grep 'foo'
。
這不起作用,因爲$
不是有效的函數名稱。
function $ {
...
}
如何在第一個命令中編寫一個Bash忽略$
的函數?我想要這個,因爲有時當我從網上粘貼命令時,它包含一個$
的第一個字符。
$ ls
應該做ls
或$ grep 'foo'
應該做grep 'foo'
。
這不起作用,因爲$
不是有效的函數名稱。
function $ {
...
}
的某個位置創建一個名爲$
文件的$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 $
+1好主意。你應該使用'「$ @」'來正確處理帶有空格的參數。我認爲一個函數會比腳本更好,但bash不允許使用'$'作爲函數名稱。 –
謝謝,修復它。 – Thomas
另一個提示:在第一個heredoc分隔符周圍放置單引號。這有效地單引號整個heredoc,你將不必逃避變量:'貓<<'EOF' >'$'' –
不要複製它開始嗎? '$'用於表示shell提示符。 –
@MarcB我懶得這樣做。我更喜歡寫一個程序,讓我的生活更輕鬆 – Mohsen