Menulis skrip pertama saya jadi saya yakin ini adalah pertanyaan mendasar, tetapi bisakah seseorang menjelaskan kepada saya mengapa saya bisa:
cd ~
cd bin
cd ~/bin
cd 'bin'
Tapi tidak
cd '~'
cd '~/bin'
Saya perlu cd
ke jalur direktori dengan spasi di salah satu nama direktori, jadi saya memerlukan tanda kutip (ini Windows Program Files
di bawah anggur). Saya bisa mengatasinya dengan dua cd
perintah, tapi kenapa saya tidak bisa memasukkan ~
dalam tanda kutip?
Jika saya mengetik cd '~'
(atau cd "~"
) Saya mendapatkan:
bash: cd: ~: No such file or directory
Jawaban yang Diterima:
Seperti yang dicatat @karel dalam jawabannya, ~
adalah karakter khusus dan diperluas oleh Bash ke direktori home pengguna saat ini. Lihat manual Bash tentang “Tilde Expansion”, atau cari judul “Tilde Expansion” di halaman manual (man bash
).
Kutipan apa pun di sekitar ~
mencegah ekspansi gelombang ini.
Untuk menjawab pertanyaan Anda tentang bagaimana Anda masih dapat menggunakannya untuk cd
ke dalam direktori dengan spasi di namanya, ada beberapa alternatif:
-
Abaikan tanda kutip dan hindari spasi dengan garis miring terbalik:
cd ~/foo/spaces are cool/bar
-
Kutip sisa jalan, tetapi hilangkan mereka di sekitar tilde dan garis miring pertama:
cd ~/"foo/spaces are cool/bar"
Seperti yang Anda lihat, Anda dapat menggabungkan string yang dikutip dan tidak dikutip di Bash hanya dengan menuliskannya di samping satu sama lain tanpa spasi di antaranya.
-
Gunakan variabel lingkungan
$HOME
alih-alih tilde, yang masih diperluas di dalam "tanda kutip ganda" (tetapi bukan 'tanda kutip tunggal'):cd "$HOME/foo/spaces are cool/bar"