GNU/Linux >> Belajar Linux >  >> Ubuntu

Mengapa Saya Tidak Dapat Meng-Cd Ke Tilde yang Dikutip ('~')?

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"
    

Ubuntu
  1. Mengapa Podman rootless tidak dapat menarik gambar saya?

  2. Mengapa Saya Tidak Dapat Menggunakan Cd Dalam Skrip Bash??

  3. Mengapa Xargs Tidak Dapat Bekerja Dengan Tail -f?

  1. Mengapa Saya Tidak Dapat Mengekspor Tampilan Linux?

  2. Tidak Dapat Terhubung Ke Nirkabel 13.10?

  3. Tidak Dapat Mengupgrade Gnupg?

  1. Mengapa The Tilde (~) Tidak Memperluas Di Dalam Kutipan Ganda?

  2. Mengapa Saya Tidak Dapat Mendengar Ping yang Dapat Didengar?

  3. Mengapa saya tidak dapat mengakses situs web dan cPanel saya?