¿Cómo omito temporalmente un alias en tcsh?

17

Estoy usando tcsh. bash y zsh y otras sugerencias no ayudarán aquí.

Tengo varios alias que reciben el mismo nombre que otro comando, por lo que si lo desanudo, escribir lo mismo ahora haría algo diferente.

La mayoría de las veces quiero el comando con alias, por eso los tengo. Sin embargo, a veces quiero el comando sin alias.

Sin realmente desalinear y redefinir el comando, ¿hay una manera simple de decirle a tcsh que use el comando sin alias en su lugar?

Por ejemplo, vi tiene un alias de vim, pero a veces solo quiero usar vi. cd tiene un alias para cambiar el título de mi ventana, pero a veces quiero dejarlo solo.

Obviamente, podría escribir / usr / bin / vi pero dado que cd es un comando incorporado de shell, no hay equivalente. ¿Hay una solución general?

piCookie
fuente

Respuestas:

29

Puedes usar una barra invertida:

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

Para los componentes integrados de shell, resulta ser un problema: una barra diagonal inversa anterior evita que se usen tanto alias como componentes internos, pero una barra diagonal inversa interna suprime solo los alias.

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

(Estoy tentado de llamar a eso otro argumento contra el uso de la cshfamilia de los proyectiles).

geekosaur
fuente
Sigo recibiendo "comando: comando no encontrado". para el comando y "cd: Comando no encontrado" para \ cd. ¿Es 'comando' un tcsh incorporado?
piCookie
suspiro POSIX rareza ... hay falsificaciones /usr/binaquí. Pero el manual confirma que la barra invertida debería funcionar ... y resulta que sí, pero debe citar un carácter interno para evitar el alias mientras aún admite las incorporaciones. Por cierto, si usted está tratando de hacer algo después de una cd, echar un vistazo a alias cwdcmden tcsh(1); esto también le ahorra tener que lidiar con pushd/ popdetc.
geekosaur
commandgeneralmente es un shells POSIX incorporado, y debe ser para command -[Vv]. El uso de una barra diagonal inversa para omitir el alias solo funciona para los comandos regulares, no para los builtins (porque los builtins no se pueden citar en (t) csh más que los alias).
Gilles 'SO- deja de ser malvado'
Parece que el comando no está disponible en mi sistema (aparte: ¿cómo formateaste eso para destacar?), Pero la barra invertida interna funciona para mí. ¡Gracias!
piCookie
Cheers @geekosaur: no sabía sobre este comportamiento y creo que será bastante útil a medida que empiece a usar alias cada vez con más frecuencia. :)
boehj
1

prefija su comando con la palabra 'comando'. Ex.

command ls
Weston Ganger
fuente
1
¿Funciona esto en tcsh, como lo requiere la pregunta? ¿Funciona con comandos integrados?
dhag 18/09/2015
0

No hagas alias que construyan cáscara de caparazón. Tu vida será mucho más fácil . Quedan muchas combinaciones de teclas, intente cwcambiar el alias del título de la ventana :)

Editar: solución de dos pasos para corregir alias que no son suyos:

  1. Encuentra al mono que se alias cda otra cosa que no sea el comando change-directory y solicita su transferencia a la columna abierta del periódico local. ¡No debería estar haciendo un trabajo en el que pueda forzar ideas como esa a las conchas de otras personas!
  2. echo unalias cd >> ~/.bashrc
Caleb
fuente
Algunos de los alias que tengo no son míos. Agradezco su consejo y haré todo lo posible para atenderlo siempre que sea posible. Ahora que no son los alias que me gustaría de derivación, ¿cómo?
piCookie
Seguro. unalias cd.
Caleb
Evidentemente, no estaba nada claro, Caleb, y me disculpo. Llamemos al caso 'cd' resuelto. Estaba tratando de descubrir cómo hacer esto para otros alias sin desajustes. Lamento no haberlo entendido. Parece que una barra invertida interna es exactamente lo que estaba buscando.
piCookie
El cdalias podría estar configurando el título y cambiando el directorio. Esa es una práctica bastante común de los días anteriores precmdy anteriores PROMPT_COMMAND.
Mikel