Pertanyaan Bagaimana cara cd ke direktori dengan nama ini "-2" (dimulai dengan tanda hubung)?


Saya memiliki direktori bernama:

-2

Saya ingin melakukan cd ke dalamnya tetapi CD mengeluh:

bash: cd: -2: invalid option

Tanpa keberhasilan, saya sudah mencoba:

cd "-2"
cd '-2'
cd \-2

Ada solusi?

Edit: tidak ada file browser seperti mc, dll. Yang tersedia di server.


149
2018-01-03 20:29




Pertanyaan terkait tentang superuser: superuser.com/questions/361573/… - yms


Jawaban:


Setidaknya dua cara:

  1. Menggunakan -- argumen.

    cd -- -2
    

    Ini menggunakan konvensi umum untuk alat GNU yang tidak memperlakukan apa pun yang muncul setelahnya -- sebagai opsi baris perintah.

    Sebagai komentator dicatat, konvensi ini juga didefinisikan dalam standar POSIX:

    Perilaku Bawaan: Ketika bagian ini terdaftar sebagai "Tidak Ada.", Itu berarti bahwa implementasi tidak perlu mendukung opsi apa pun. Standar utilitas yang tidak menerima opsi, tetapi yang menerima operan, harus mengenali "--" sebagai argumen pertama yang harus dibuang.

    Persyaratan untuk mengenali "--" adalah karena aplikasi yang sesuai memerlukan cara untuk melindungi operand mereka dari setiap opsi arbitrer yang dapat diberikan oleh implementasi sebagai perpanjangan. Sebagai contoh, jika utilitas standar foo terdaftar sebagai tidak mengambil opsi, dan aplikasi yang diperlukan untuk memberikannya pathname dengan tanda hubung utama, itu bisa dengan aman melakukannya seperti:

    foo -- -myfile
    

    dan hindari masalah apa pun -m digunakan sebagai ekstensi.

    sebaik:

    Pedoman 10:
      Argumen -- harus diterima sebagai pemisah yang menunjukkan akhir opsi. Setiap argumen berikut harus diperlakukan sebagai operan, bahkan jika mereka mulai dengan '-' karakter. Itu -- Argumen tidak boleh digunakan sebagai opsi atau sebagai operan.

  2. Tentukan jalur secara eksplisit:

    cd ./-2
    

    Ini menentukan jalur yang secara eksplisit menamai direktori saat ini (.) sebagai titik awal.

    cd $(pwd)/-2
    cd /absolute/path/to/-2
    

    Ini adalah variasi di atas. Sejumlah variasi semacam itu dimungkinkan; Saya akan meninggalkannya sebagai latihan bagi pembaca untuk menemukan semuanya.


250
2018-01-03 20:32



Bukan hanya GNU, itu bagian dari standar POSIX. Lihat 1.11 Keterangan Utilitas Default dan 12.2 Pedoman Sintaksis Utilitas (panduan # 10). Dari cd halaman "Itu cd utilitas harus sesuai dengan ... bagian 12.2 ". - Dietrich Epp
Sekarang saya hanya ingin tahu tentang cara melakukan cd ke direktori bernama -! - sergiol
@sergiol Cara yang sama. - Michael Hampton♦
@ArtB: Tidak. Mengutip hanya memengaruhi pembagian bidang. Begitu "hello world" adalah satu argumen tetapi hello world dua, dan "-2" sama dengan -2. - Dietrich Epp
@sergiol: Baik cd -- -- atau cd ./-- harus bekerja. - Keith Thompson


Ini seharusnya berfungsi:

cd -- -2 

- berarti tidak ada opsi lagi


48
2018-01-03 20:33





Ini akan berfungsi jika '-2' ada di direktori saat ini.

    cd ./-2

Anda dapat mengisi otomatis dengan mengetik - dan menekan tab.


25
2018-01-04 06:19





cd /home/...../-2 juga berfungsi. Berikan jalur lengkap untuk mengakses.


10
2018-01-04 02:46





Hanya untuk melengkapi, jika Anda ingin menghapus / menghapus direktori ini, Anda dapat menggunakan perintah berikut:

rm -r -- -2

6
2018-01-04 14:14





Saya tahu pertanyaan ini sudah dijawab. Jika ada yang punya situasi seperti saya, ini untuk mereka:

Saya menjalankan aplikasi java dan mencari direktori yang dimulai dengan <path>, Saya seharusnya mengganti itu dengan jalan yang benar sebelum menjalankan aplikasi. Namun, saya lupa melakukan itu. Aplikasi ini membuat direktori bernama <path>.

saya mencoba untuk cd <path> - memberi saya kesalahan "-bash: kesalahan sintaks dekat baris baru token tak terduga" Berdasarkan saran di sini (saya mengerti bahwa untuk direktori yang dimulai dengan - dan bukan <) saya mencoba cd -- <path>. Namun, saya mendapat kesalahan yang sama.

Ketika saya mencoba cd \<path>\ - Ini berhasil!

Informasi latar belakang:

Simbol "<" dan ">" digunakan untuk mengarahkan STDIN dan STDOUT, oleh karena itu mereka harus diloloskan agar shell tidak menafsirkannya sebagai pengalihan.


-1
2017-07-05 14:00