Kötü bir fikirdir (dosya adlarında garip karakterler olması)
mv somefile.txt "foo
bar"
(ayrıca yapmış olabilir mv somefile.txt "$(printf "foo\nbar")"
veya mv somefile.txt foo$'\n'bar
... ayrıntılar kabuğuna özgüdür vb. kullanıyorum zsh
)
Globbing hakkında daha fazla bilgi edinin , örneğin glob (7) . Ayrıntılar mermiye özgü olabilir. Ancak bunun /bin/mv
(kabuğunuz tarafından), execve (2) yoluyla , genişletilmiş bir argüman dizisi verildiğini anlayın : argüman genişletme ve globbing, çağrılan kabuğun sorumluluğundadır.
Ve aynı şeyi yapmak için küçük bir C programını bile kodlayabilirsiniz:
#include <stdio.h>
#include <stdlib.h>
int main() {
if (rename ("somefile.txt", "foo\nbar")) {
perror("rename somefile.txt");
exit(EXIT_FAILURE);
};
return 0;
}
Programın üstüne kaydet foo.c
, derle ve gcc -Wall foo.c -o foo
çalıştır./foo
Benzer şekilde, Perl, Ruby, Python, Ocaml, vb.
Ama bu kötü bir fikir. Dosya adlarında yeni satırlardan kaçının (kullanıcıyı karıştırır ve birçok komut dosyasını kırabilir).
Aslında, dosya yollarında yalnızca aksanlı harfleri, rakamları ve +-/._%
karakterleri ( /
dizin ayırıcısı olarak) kullanmanızı öneririm . "Gizli" dosyalar (ile başlayan .
) dikkatli ve parcimon ile kullanılmalıdır. Bir dosya adında herhangi bir alan kullanmanın bir hata olduğuna inanıyorum. Bunun yerine bir alt çizgi kullanın (örn. foo/bar_bee1.txt
) Veya eksi (ör. foo/bar-bee1.txt
)