Bash
如何正確轉義單引號創建別名
我已經獲得了這一單線,以了解我的程序消耗了多少記憶體。
$ ps -u $USER -o pid,rss,command | \ awk '{print $0}{sum+=$2} END {print "Total", sum/1024, "MB"}'
現在我想為該命令創建一個別名,但在轉義
'
字元時遇到問題:$ alias mm=ps -u $USER -o pid,rss,command | \ awk '{print $0}{sum+=$2} END {print "Total", sum/1024, "MB"}' bash: alias: -u: not found bash: alias: myuser: not found bash: alias: -o: not found bash: alias: pid,rss,command: not found Total 0 MB
我試圖轉義單引號,但它仍然不起作用。
$ alias mm='ps -u $USER -o pid,rss,command | \ awk \'{print $0}{sum+=$2} END {print "Total", sum/1024, "MB"}\'' >
你能幫我理解如何創建這個別名嗎?
要使其成為可能的別名,您需要在別名的整個值周圍使用雙引號。結果,您還需要轉義別名中的一些內容,並且您需要轉義任何欄位參數,
awk
因為當您設置別名時,這些參數也會被 Bash 解釋為參數。這對我有用:
$ alias mm="ps -u $USER -o pid,rss,command | \ awk '{print \$0}{sum+=\$2} END {print \"Total\", sum/1024, \"MB\"}'"
在上面我做了以下事情:
- 別名值周圍的雙引號
alias mm="ps -u ...."
- 轉義 awk 的雙引號
awk '{print \$0}{sum+=\$2} END {print \"Total\", sum/1024, \"MB\"}
- 轉義 awk 的欄位
awk '{print \$0}{sum+=\$2} END
我會用這個嗎?
可能不會,我會將其切換為 Bash 函式,因為它會更容易維護和理解正在發生的事情,但如果你仍然想要它,這裡是別名。