Il comando della shell di lavoro non è alias


2

Posso correre,

 svn status |grep -v .jasper$ |cut -d ' ' -f8 |sed '/.*\..*/!d' |xargs ls -altr --color=auto

va bene. Ma quando vado ad aggiungere questo come alias (alias svtr = "...") viene visualizzato un errore che dice ...

-bash: !d': event not found

Qualche idea?

Risposte:


2

Usare la barra rovesciata \per sfuggire al tuo !dovrebbe funzionare.

alias svtr="svn status |grep -v .jasper$ |cut -d ' ' -f8 |sed '/.*\..*/\!d' |xargs ls -altr --color=auto"
alias svtr
alias svtr='svn status |grep -v .jasper$ |cut -d '\'' '\'' -f8 |sed '\''/.*\..*/\!d'\'' |xargs ls -altr --color=auto'

In realtà, questo elimina solo l'errore, perché all'interno ""della shell cerca di interpretare !.

potresti voler ripristinare le virgolette (ad esempio, utilizzare la virgoletta singola per definire l'alias e utilizzare la virgoletta doppia all'interno del comando aliasato e, se necessario, evitare le virgolette singole.


Grazie! La seconda soluzione ha funzionato dopo che ho rimosso il carattere di escape davanti a!
JJRhythm,

2

Questo è il !dtuo sedcomando, perché !è il carattere di espansione della cronologia di Bash. Disattiva temporaneamente l'espansione della cronologia, in questo modo:

set -H
alias svtr="..."
set +H

Questo dovrebbe farlo.


Ho provato questo e ho ricevuto lo stesso errore.
JJRhythm,

Scusa, ma funziona per me.
Fran,
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.