Come posso bypassare temporaneamente un alias in tcsh?


17

Sto usando tcsh. bash e zsh e altri suggerimenti non aiuteranno qui.

Ho diversi alias che hanno lo stesso nome di un altro comando, quindi se lo facessi unalias, digitare la stessa cosa ora farebbe qualcosa di diverso.

Il più delle volte voglio il comando con alias, motivo per cui li ho. Tuttavia, a volte voglio il comando unalias.

Senza effettivamente unaliasing e ridefinizione del comando, esiste un modo semplice per dire a tcsh di usare invece il comando unalias?

Ad esempio, vi è alias di vim, ma a volte voglio solo usare vi. cd è alias per cambiare il titolo della mia finestra, ma a volte voglio lasciarlo da solo.

Ovviamente potrei digitare / usr / bin / vi ma dato che cd è un comando integrato della shell, non esiste un equivalente. C'è una soluzione generale?

Risposte:


29

Puoi usare una barra rovesciata:

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

Per i builtin della shell, si ottiene un gotcha: una barra rovesciata principale impedisce l'utilizzo di alias e builtin, ma una barra rovesciata interna elimina solo l'aliasing.

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

(Sono tentato di chiamare quell'altro argomento contro l'uso della cshfamiglia di conchiglie.)


Continuo a ricevere "comando: comando non trovato". per comando e "cd: comando non trovato" per \ cd. 'Command' è un tcsh integrato?
piCookie,

sospiro stranezza POSIX ... ci sono falsi /usr/binqui dentro . Ma il manuale conferma che la barra rovesciata dovrebbe funzionare ... e si scopre che funziona, ma devi citare un carattere interno per evitare l'aliasing pur supportando i builtin. A proposito, se si sta cercando di fare qualcosa dopo cd, dare un'occhiata a alias cwdcmdin tcsh(1); questo ti evita anche di dover trattare con pushd/ popdecc.
geekosaur,

commanddi solito è un built-in nelle shell POSIX, e deve essere per command -[Vv]. L'uso di una barra rovesciata per bypassare l'alias funziona solo per i comandi regolari, non per i builtin (perché i builtin non possono essere citati in (t) csh più di quanto non facciano gli alias).
Gilles 'SO- smetti di essere malvagio'

Sembra che il comando non sia disponibile sul mio sistema (a parte: come lo hai formattato per distinguerlo?), Ma la barra rovesciata interna funziona per me. Grazie!
piCookie,

Saluti @geekosaur - Non sapevo di questo \ comportamento e penso che sarà abbastanza utile quando comincio a usare gli alias sempre più frequentemente. :)
boehj,

1

prefissa il tuo comando con la parola 'comando'. Ex.

command ls

1
Funziona in tcsh, come richiede la domanda? Funziona con i comandi integrati?
dhag,

0

Non creare alias che bloccano i builtin della shell. La tua vita sarà molto più semplice . Sono rimaste molte combinazioni di tasti, prova cwcon l'alias del titolo della finestra di modifica :)

Modifica: soluzione in due passaggi per correggere gli alias che non sono tuoi:

  1. Trova la scimmia che si è allontanata cdda qualcosa di diverso dal comando change-directory e richiedi il suo trasferimento nella colonna selezionata del documento locale. Non dovrebbe avere un lavoro in cui può forzare idee simili a quelle degli altri!
  2. echo unalias cd >> ~/.bashrc

Alcuni degli alias che ho non sono fatti da me. Apprezzo il tuo consiglio e farò del mio meglio per ascoltarlo dove possibile. Ora che ci sono alias che vorrei ignorare, come posso fare?
piCookie,

Sicuro. unalias cd.
Caleb,

Evidentemente, non ero affatto chiaro, Caleb, e mi scuso. Chiamiamo il caso "cd" risolto. Stavo cercando di scoprire come farlo per altri alias senza unias. Mi dispiace di non averlo capito. Sembra che una barra rovesciata interna sia esattamente quello che stavo cercando.
piCookie,

L' cdalias potrebbe impostare il titolo e cambiare directory. Questa è una pratica abbastanza comune dai giorni precedenti precmde PROMPT_COMMAND.
Mikel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.