È una cattiva idea (avere strani personaggi nei nomi dei file) ma potresti farlo
mv somefile.txt "foo
bar"
(avresti potuto anche fare mv somefile.txt "$(printf "foo\nbar")"o mv somefile.txt foo$'\n'bar, ecc ... i dettagli sono specifici per la tua shell. Sto usando zsh)
Maggiori informazioni sul globbing , ad es. Glob (7) . I dettagli potrebbero essere specifici della shell. Ma capire che /bin/mv è dato (dalla shell), via execve (2) , un espanso matrice di argomenti: espansione argomento e glob è la responsabilità del guscio chiamante.
E potresti persino programmare un minuscolo programma C per fare lo stesso:
#include <stdio.h>
#include <stdlib.h>
int main() {
if (rename ("somefile.txt", "foo\nbar")) {
perror("rename somefile.txt");
exit(EXIT_FAILURE);
};
return 0;
}
Salvare sopra il programma in foo.c, compilarlo con gcc -Wall foo.c -o foo quindi eseguire./foo
Allo stesso modo, potresti codificare uno script simile in Perl, Ruby, Python, Ocaml, ecc ...
Ma questa è una cattiva idea. Evita le nuove righe nei nomi dei file (confonderà l'utente e potrebbe spezzare molti script).
In realtà, consiglio anche di usare solo lettere, cifre e +-/._% caratteri non accentati ( / essendo il separatore di directory) nei percorsi dei file. I file "nascosti" (a partire da .) devono essere usati con cautela e parcimonio. Credo che usare qualsiasi tipo di spazio nel nome di un file sia un errore. Utilizzare invece un trattino basso (ad es. foo/bar_bee1.txt) O un segno meno (ad es. foo/bar-bee1.txt)