Ini mungkin pertanyaan sederhana, tetapi bagaimana cara menggunakan file yang dimulai dengan "-" dengan program baris perintah?
Sebagai contoh, saya mencoba untuk menggunakan pdfgrep
file bernama -2013-01-01.pdf
tetapi mengeluh bahwa tidak ada opsi yang ditentukan untuk 2, 0, 1, 3 dan seterusnya.
Mengubah nama file menjadi sesuatu yang tidak dimulai dengan "-" menyelesaikannya, tetapi ini bukan pilihan karena file tidak dibuat oleh saya. Saya hanya ingin memeriksa perubahan spesifik yang saya tahu akan datang.
command-line
special-characters
filename
Kristoffer
sumber
sumber
grep -i dfv -- -myfile1 -myfile2
,.Jawaban:
Sangat sering
--
digunakan pada command-line untuk memberi sinyal ke suatu program yang tidak lagi menggunakan perintah yang akan digunakan. Ini sangat berguna jika file berisi tanda hubung, yang akan coba ditafsirkan oleh program sebagai opsi.Tanpa itu
--
, ada kesalahan yang dihasilkan:Dengan yang
--
digunakan kami memiliki perintah yang sukses:pdfgrep
diprogram untuk memahami--
artinya bahwa argumen baris perintah berikut ini bukan opsi. Sebagian besar program melakukan hal yang sama, tetapi tidak semua program mengerti--
. Untuk program yang tidak, solusinya adalah dengan mengawali nama file dengan./
, seperti ini:Ini harus bekerja dengan perintah apa pun, kecuali karena alasan tertentu perintah tidak dapat menerima jalan, hanya nama file murni.
Untuk pengantar umum pada baris perintah, lihat PDF yang bermanfaat ini .
sumber
--
tidak tidak bekerja dengan semua program baris perintah. Saya berasumsi dari komentar OP itu bahwapdfgrep
salah satunya tidak mengenali--
. Tetapi penerimaan di sini menyarankan sebaliknya. Bagaimanapun, program harus dikodekan untuk dikenali--
. Banyak program menggunakan pustaka untuk menguraikan argumen mereka, yang memang mengenali--
. Tetapi ada yang tidak, dan ada yang tidak dikodekan untuk dikenali--
.--
solusi yang biasa adalah meletakkan./
di depan file:pdfgrep ./-2013-01-01.pdf
./
di depan adalah solusi yang paling portabel dan tangguh. Bekerja pada program apa pun, pada versi unix apa pun.Anda menambahkan nama file dengan
./
(atau jalur relatif atau absolut lain yang berfungsi). Dengan cara ini portabel.Contoh:
Penggunaan
--
untuk menunjukkan akhir opsi tidak selalu tersedia. Beberapa perintah akan mengetahuinya, beberapa tidak. Dan ini akan berubah di berbagai sistem. Jadi pada akhirnya, ini kurang portabel.sumber