Как временно обойти псевдоним в tcsh?


17

Я использую tcsh. bash и zsh и другие предложения здесь не помогут.

У меня есть несколько псевдонимов, которые называются так же, как и другие команды, поэтому, если бы я делал это с псевдонимами, то при вводе одной и той же вещи теперь происходило бы что-то другое.

Большую часть времени я хочу использовать команду с псевдонимами, поэтому они у меня есть. Тем не менее, иногда я хочу команду, не имеющую аналогов.

Без фактического сглаживания и переопределения команды, есть ли простой способ сказать tcsh использовать вместо этого команду unaliased?

Например, vi имеет псевдоним vim, но иногда я хочу просто использовать vi. CD имеет псевдоним для изменения заголовка моего окна, но иногда я хочу оставить его в покое.

Очевидно, я мог набрать / usr / bin / vi, но, поскольку cd - это встроенная команда оболочки, аналога нет. Есть ли общее решение?

Ответы:


29

Вы можете использовать обратную косую черту:

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

Для встроенных командных оболочек, оказывается, есть ошибка: начальный обратный слеш предотвращает использование как псевдонимов, так и встроенных, но внутренний обратный слеш подавляет только псевдонимы.

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

(Я испытываю желание назвать это еще одним аргументом против использования cshсемейства снарядов.)


Я продолжаю получать «команду: Команда не найдена». для команды и "cd: Команда не найдена" для \ cd. Является ли 'command' встроенным в tcsh?
piCookie

вздох POSIX странность ... здесь есть подделки /usr/bin. Но руководство подтверждает, что обратная косая черта должна работать ... и оказывается, что это работает, но вы должны заключить в кавычки внутренний символ, чтобы предотвратить наложение псевдонимов, при этом поддерживая встроенные функции. Кстати, если вы пытаетесь сделать что - то после того cd, посмотрите на alias cwdcmdв tcsh(1); это также избавляет вас от необходимости иметь дело с pushd/ popdи т.д.
geekosaur

commandобычно является встроенным в оболочку POSIX, и должен быть для command -[Vv]. Использование обратной косой черты для обхода псевдонима работает только для обычных команд, но не для встроенных команд (поскольку встроенные символы не могут быть заключены в (t) csh так же, как псевдонимы).
Жиль "ТАК - перестань быть злым"

Кажется, что команда не доступна в моей системе (кроме: как вы отформатировали это, чтобы выделиться?), Но внутренняя обратная косая черта работает для меня. Благодарность!
piCookie

Приветствия @geekosaur - я не знал об этом \ поведении, и я думаю, что это будет очень удобно, так как я буду использовать псевдонимы все чаще и чаще. :)
Boehj

1

префикс вашей команды со словом «команда». Ex.

command ls

1
Работает ли это в tcsh, как требует вопрос? Работает ли он со встроенными командами?
Даг

0

Не делайте псевдонимов, которые встроены в оболочку Clobber. Ваша жизнь будет намного проще . Осталось много комбинаций клавиш, попробуйте cwизменить псевдоним заголовка окна :)

Изменить: двухэтапное решение для исправления чужого псевдонима:

  1. Найдите обезьяну, имеющую псевдоним cdдля чего-то другого, кроме команды change-directory, и запросите его передачу в колонку oped локальной газеты. У него не должно быть работы, на которой он может навязывать подобные идеи другим людям!
  2. echo unalias cd >> ~/.bashrc

Некоторые из псевдонимов, которые у меня есть, не мои собственные. Я ценю ваш совет и сделаю все возможное, чтобы прислушаться к нему, где это возможно. Теперь, когда есть псевдонимы, которые я хотел бы обойти, как мне это сделать?
piCookie

Конечно. unalias cd,
Калеб

Очевидно, я не совсем понял, Калеб, и я прошу прощения. Давайте назовем дело «cd» раскрытым. Я пытался выяснить, как сделать это для других псевдонимов без сглаживания. Извините, я этого не понял. Похоже, что внутренняя обратная косая черта это именно то, что я искал.
piCookie

cdПсевдоним может быть установка заголовка и изменения каталога. Это довольно распространенная практика из предыдущих дней precmdи PROMPT_COMMAND.
Микель
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.