Saya baru mengenal linux, saya ingin menyalin file dari jarak jauh ke sistem lokal ... sekarang saya menggunakan perintah scp di sistem linux .. Saya punya beberapa folder atau nama file dengan spasi, ketika saya mencoba menyalinnya file, itu menunjukkan pesan kesalahan: "Tidak ada file atau direktori"
Saya mencoba:
scp [email protected]:'/home/5105/test/gg/Untitled Folder/a/qy.jpg' /var/www/try/
Saya melihat beberapa referensi online tetapi saya tidak mengerti betul, dapatkah ada yang membantu ini?
bagaimana saya bisa keluar dari spasi dalam nama file atau nama direktori selama menyalin ...
Jawaban:
Pada dasarnya Anda perlu melarikan diri dua kali, karena lolos secara lokal dan kemudian di ujung yang jauh.
Ada beberapa opsi yang dapat Anda lakukan (dalam bash):
sumber
scp [email protected]:'$(ls -t | head -1)' .
mendapatkan file yang paling baru dibuat di server, atauscp [email protected]:'dir/*.{xml,pdf}' .
untuk mendapatkan semua file xml dan pdf dari direktori jarak jauh. Secara umum, saya lebih suka ini daripada memiliki kenyamanan dengan file yang memiliki spasi. File dengan spasi selalu mengganggu.bekerja
tidak bekerja
Alasannya adalah bahwa string ditafsirkan oleh shell sebelum path dilewatkan ke perintah scp. Jadi ketika sampai ke remote, remote mencari string dengan tanda kutip tidak terhapus dan gagal
Untuk melihat ini dalam tindakan, mulailah sebuah shell dengan opsi -vx yaitu
bash -vx
dan itu akan menampilkan versi interpolasi dari perintah saat menjalankannya.sumber
"
atau tunggal'
yang samaAnda juga dapat melakukan sesuatu seperti:
Tingkat kutipan pertama akan ditafsirkan oleh scp dan kemudian tingkat kutipan kedua akan mempertahankan spasi.
sumber
Gunakan 3 garis miring terbalik untuk keluar dari spasi dalam nama direktori:
scp user@host:/path/to/directory\\\ with\\\ spaces/file ~/Downloads
harus menyalin ke
Downloads
direktori Andafile
dari direktori jarak jauh yang disebutdirectory with spaces
.sumber
Saya mengalami kesulitan besar untuk mendapatkan ini bekerja untuk variabel shell yang berisi nama file dengan spasi. Untuk beberapa alasan menggunakan
seperti pada jawaban @ Adrian sepertinya gagal.
Ternyata apa yang paling berhasil adalah menggunakan ekspansi parameter untuk menambahkan backslash ke spasi , sebagai berikut.
sumber
file="${file//\ /\\\ }"
Maaf karena menggunakan pertanyaan Linux ini untuk memberikan tip ini untuk Powershell pada Windows 10: karakter antariksa yang melarikan diri dengan garis miring terbalik atau tanda kutip tidak berfungsi untuk saya dalam kasus ini. Tidak efisien, tapi saya menyelesaikannya menggunakan "?" sebagai gantinya char:
untuk file "task.txt Jun-22.bkp" Saya mengunduhnya menggunakan "task.txt? Jun-22.bkp"
sumber