Bash
Linux 命令不作為別名執行
我創建了一個命令來計算我們伺服器上每個使用者的會話數。這是:
who | awk '{ print $1}' | sort | uniq -c | sort
效果很好,但是當我將它移到伺服器上的別名中時,我只能得到
who
,alias who_con="who | awk '{ print $1}' | sort | uniq -c | sort";
我認為它可能是雙引號,所以我嘗試使用單引號進行封裝,但我有相同的行為,
alias who_con='who | awk "{ print $1}" | sort | uniq -c | sort';
你需要逃避美元
$1
。$ alias wW="who | awk '{ print \$1}' | sort | uniq -c | sort" $ wW 1 tomasz
$1
應該由 awk 擴展,而不是由 shell 擴展。如果沒有額外的轉義,它會被 shell 擴展。你需要多一層的逃避。這也可以:$ alias who_con='who | awk "{ print \$1}" | sort | uniq -c | sort'; $ who_con 1 tomasz