2009-08-02 14 views
11

Io sono l'editing qualcun script altro e vedo s/ha usato questo \c piace molto spessoUso di c in shell scripting

echo "bla bla \c" 

che quando viene utilizzato semplicemente stamperà

bla bla \c 

sulla schermo.

Quindi, mi chiedevo perché usarlo o potrebbe essere mi manca qualcosa, perché non sta facendo nulla? Ho controllato i caratteri di fuga e non ho trovato nulla di simile. C'è un uso speciale di \ c negli script di shell, principalmente nelle shell di bash e korn?

risposta

22

Il \ c mantiene il cursore sulla stessa linea dopo la fine del l'eco, ma per attivarla, è necessario il flag -e:

echo -e "bla bla \c" 
8

Credo che il tentativo è quello di terminare senza un eco nuova linea.

Se non funziona sul vostro sistema, è possibile sostituire in questo modo,

echo "test \c"; echo " same line" 

può diventare,

echo -n "test"; echo " same line" 

Un cambiamento più facile sarà (come suggerito da Neil, +1 lì),

echo -e "test \c"; echo " same line" 
+4

L'utilizzo di printf è più portatile di echo -n. –

+0

@ William, sono completamente d'accordo. Ma, quando stai facendo il porting degli script, un trucco breve come '-e' o' -n' funziona più velocemente. – nik

1

alcuna interruzione automatica linea, apparently:

Usa nelle shell di Unix

conchiglie

UNIX Korn utilizzare il carattere \ c escape per segnalare continuazione (senza interruzione di riga automatica):

echo "Immettere il percorso del file di dati: \ c"

0

In effetti il ​​comportamento di "eco" varia a seconda della shell utilizzata.
Con una semplice shell Bourne, '\ c' sarà interpretato di default (quindi il cursore rimane sulla linea).
Con Bash, non viene interpretato per impostazione predefinita (quindi viene visualizzata la stringa '\ c'), quindi è necessario aggiungere l'opzione '-e' per abilitarlo.

2

POSIX afferma che:

\ c Sopprimere il < nuova riga> che altrimenti segue l'ultimo argomento in uscita. Tutti i caratteri che seguono '\ c' negli argomenti devono essere ignorati.

Fondamentalmente un echo utilità POSIX XSI conforme deve uscire quando trova un \ c, come risulta dalle seguenti comandi:

echo -e "foo bar \c baz" "quux" 
0

NOME eco - visualizzare una riga di testo

SINTESI echo [BREVE OPZIONE] ... [STRING] ... echo LUNGO OPZIONE

DESCRIZIONE Echo the STRING (s) sullo standard output.

-n  do not output the trailing newline 

    -e  enable interpretation of backslash escapes 

    -E  disable interpretation of backslash escapes (default) 

    --help display this help and exit 

    --version