GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara membuat file yang dinamai seperti argumen baris perintah?

Panggil perintah seperti ini:

mkdir -- -a

-- berarti opsi berakhir setelah itu, jadi -a ditafsirkan secara harfiah dan bukan sebagai opsi untuk mkdir . Anda akan menemukan sintaks ini tidak hanya di mkdir , tetapi semua utilitas yang sesuai dengan POSIX kecuali untuk echo dan test . Dari spesifikasinya:

Argumen -- harus diterima sebagai pembatas yang menunjukkan akhir opsi. Argumen berikut harus diperlakukan sebagai operan, meskipun dimulai dengan karakter '-'. Argumen -- tidak boleh digunakan sebagai opsi atau sebagai operan.

Menggunakan -- sebagai pengaman direkomendasikan untuk hampir semua tindakan di mana Anda berurusan dengan nama file dan ingin memastikannya tidak merusak perintah, mis. saat memindahkan file dalam satu lingkaran, Anda mungkin ingin memanggil yang berikut, sehingga file bernama -i tidak (dalam?) diuraikan dengan benar sebagai opsi:

mv -- "$f" new-"$f"

Cara paling sederhana yang harus bekerja dengan program yang masuk akal adalah dengan menggunakan nama jalur relatif di depan - , mis. mkdir ./-a akan membuat direktori bernama -a dalam direktori kerja saat ini.

Contoh paling umum menggunakan "trik" ini adalah ketika Anda ingin menghapus file yang dimulai dengan tanda hubung, maka Anda dapat melakukan rm ./-a .


Alasan mengapa mkdir '-a' , atau mkdir \-a tidak berfungsi karena kedua metode ini (menggunakan tanda kutip atau garis miring terbalik) digunakan untuk mencegah shell Anda (kemungkinan bash ) dari memberi mereka arti khusus. Sejak -a tidak berarti sesuatu yang istimewa untuk shell, ini tidak berpengaruh pada bagaimana itu diteruskan ke mkdir .

Sejauh mkdir bersangkutan, ia menerima daftar argumen dari shell, dan ia tidak tahu apakah Anda memberi tanda kutip atau tidak, atau apakah ada garis miring terbalik. Itu hanya melihat satu argumen -a . Itu sebabnya Anda membutuhkan -- seperti yang dijelaskan dalam jawaban lain.


Linux
  1. Bagaimana Mengurai Setiap Baris File Teks Sebagai Argumen Untuk Perintah?

  2. Bagaimana cara membuat file dengan ukuran tertentu dari baris perintah?

  3. Bagaimana cara menyembunyikan kata sandi yang diteruskan sebagai argumen baris perintah?

  1. Cara Mengubah Izin dan Pemilik melalui Command Line

  2. Cara Membuat Database di MySQL Menggunakan Command Line

  3. Cara Mengekstrak File tar.gz di Linux dengan Menggunakan Command Line

  1. Bagaimana Cara Melewati Argumen Baris Perintah Menjadi Skrip Shell?

  2. Cara membuat file sparse di Linux menggunakan perintah 'dd'

  3. Bagaimana cara mengganti file di jar dengan baris perintah di linux?