Shell

如何臨時繞過 tcsh 中的別名?

  • May 26, 2018

我正在使用 tcsh。bash 和 zsh 以及其他建議在這裡無濟於事。

我有幾個別名被命名為與另一個命令相同的東西,所以如果我對它進行 unalias,輸入相同的東西現在會做不同的事情。

大多數時候我想要別名命令,這就是我擁有它們的原因。但是,有時我想要不帶別名的命令。

在沒有實際取消別名和重新定義命令的情況下,有沒有一種簡單的方法可以告訴 tcsh 使用 unaliased 命令來代替?

例如,vi 別名為 vim,但有時我只想使用 vi。cd 是別名以更改我的視窗標題,但有時我想不理會它。

顯然我可以輸入 /usr/bin/vi 但由於 cd 是一個 shell 內置命令,因此沒有等效的命令。有沒有通用的解決方案?

您可以使用反斜杠:

% alias ls ls -a
% ls
# ls -a output here
% \ls
# plain ls output here

對於 shell 內置函式,有一個陷阱:前導反斜杠會阻止使用別名和內置函式,但內部反斜杠只會抑制別名。

% alias cd pushd
% cd /tmp
/tmp /tmp 
% c\d
% dirs
~ /tmp

(我很想將其稱為反對使用csh貝殼家族的另一個論點。)

不要製作破壞 shell 內置函式的別名。你的生活會輕鬆很多。剩下很多組合鍵,試試cw你的更改視窗標題別名:)

**編輯:**修復不屬於您的別名的兩步解決方案:

  1. 找到別名cd為 change-directory 命令以外的其他東西的猴子,並請求將其轉移到本地論文的 oped 列。他不應該從事可以將這種想法強加於其他人的工作的工作!
  2. echo unalias cd >> ~/.bashrc

引用自:https://unix.stackexchange.com/questions/12762