Como ignorar temporariamente um alias no tcsh?

17

Estou usando o tcsh. bash e zsh e outras sugestões não ajudarão aqui.

Eu tenho vários aliases que são nomeados da mesma forma que outro comando; portanto, se eu o dessaliasse, digitar a mesma coisa agora faria algo diferente.

Na maioria das vezes, quero o comando com alias, e é por isso que os tenho. No entanto, às vezes eu quero o comando imparcial.

Sem realmente desalinhar e redefinir o comando, existe uma maneira simples de dizer ao tcsh para usar o comando desalinhado?

Por exemplo, vi é alias ao vim, mas às vezes eu quero apenas usar o vi. cd é um alias para alterar o título da minha janela, mas às vezes eu quero deixá-lo em paz.

Obviamente, eu poderia digitar / usr / bin / vi, mas como cd é um comando interno do shell, não há equivalente. Existe uma solução geral?

piCookie
fonte

Respostas:

29

Você pode usar uma barra invertida:

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

Para os buildins de shell, acaba havendo uma pegadinha: uma barra invertida principal impede que aliases e builtins sejam usados, mas uma barra invertida interna suprime apenas alias.

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

(Estou tentado a chamar isso de outro argumento contra o uso da cshfamília de conchas.)

geekosaur
fonte
Eu continuo recebendo "comando: comando não encontrado". para comando e "cd: comando não encontrado" para \ cd. 'Command' é um tcsh embutido?
PiCookie
suspiro POSIX esquisitice ... há falsificações /usr/binaqui. Mas o manual confirma que a barra invertida deve funcionar ... e acontece que sim, mas você precisa citar um caractere interno para evitar aliases enquanto ainda suporta os componentes internos. BTW, se você está tentando fazer algo após a cd, dê uma olhada alias cwdcmdem tcsh(1); Isso também evita que você tenha que lidar com pushd/ popdetc
geekosaur
commandgeralmente é um componente embutido nos shells POSIX e precisa ser command -[Vv]. Usar uma barra invertida para ignorar o alias funciona apenas para comandos regulares, não para builtins (porque os builtins não podem ser citados no (t) csh da mesma forma que os aliases).
Gilles 'SO- stop be evil'
Parece que o comando não está disponível no meu sistema (aparte: como você formatou isso para se destacar?), Mas a barra invertida interna funciona para mim. Obrigado!
PiCookie
Felicidades @geekosaur - eu não sabia sobre esse comportamento e acho que será bastante útil quando eu começar a usar aliases com mais e mais frequência. :)
boehj
1

prefixe seu comando com a palavra 'comando'. Ex.

command ls
Weston Ganger
fonte
1
Isso funciona no tcsh, conforme a pergunta exige? Funciona com comandos internos?
dhag
0

Não crie pseudônimos que incorporam shell shell. Sua vida será muito mais fácil . Existem muitas combinações de teclas, tente cwo alias do título da janela de alteração :)

Editar: solução em duas etapas para corrigir alias que não são seus:

  1. Encontre o macaco que fez o alias cdde algo diferente do comando change-directory e solicite sua transferência para a coluna oped do jornal local. Ele não deveria estar mantendo um emprego em que pudesse forçar idéias como essa nas conchas de outras pessoas!
  2. echo unalias cd >> ~/.bashrc
Caleb
fonte
Alguns dos pseudônimos que tenho não são de minha autoria. Agradeço seu conselho e farei o possível para atendê-lo sempre que possível. Agora que não são aliases gostaria de desvio, como faço?
PiCookie
Certo. unalias cd.
Caleb
Evidentemente, eu não estava claro, Caleb, e peço desculpas. Vamos resolver o caso 'cd'. Eu estava tentando descobrir como fazer isso para outros aliases sem desalinhamento. Me desculpe, eu não entendi isso. Parece que uma barra invertida interna é exatamente o que eu estava procurando.
PiCookie
O cdalias pode estar definindo o título e alterando o diretório. Essa é uma prática bastante comum dos dias anteriores precmde posteriores PROMPT_COMMAND.
Mikel