Kısa çizgi dosyaları nasıl okunur


15

Bir tire dosyasını terminalden ayırmak dışında nasıl okuyabilirim? ./

Örneğin bir - fileokumak için

cat ./-file_name

S: Aynı şeyi başarmanın alternatif bir yolu var mı?


4
önerilen yol aslında ./önek kullanmaktır . Bu en taşınabilir (eğer usenet döneminin Unix SSS'si)
Olivier Dulac

find . -name "-filename" | xargs catborudan ./-filename gönderecektir. (Basitleştirilmiş?) Durumunuz için bir hata, ancak büyük dizinlerde / komut dosyalarında yardımcı olabilir.
Walter A

Yanıtlar:


11

Stdin'den girdi alan komutlar için yeniden yönlendirmeyi kullanabilirsiniz:

cat <-file_name

ya bu çalışır :) yani ./ diğer kullanarak onları okumak için 3 yolu var - ve - kullanarak başka bir <, aynı şeyi yapmak için daha fazla yolu ??
15'de vidhan

22

--Seçeneklerin sonunu işaretlemek için iki kez kullanın :

cat -- -<FILENAME>

Gibi diğer programlar touch, rmya git checkoutda bu kuralı kullanır:

$ touch -- -file
$ ll
total 0
-rw-r--r-- 1 ja ja 0 Mar 10 13:13 -file
$ echo hi! >> -file
$ cat -- -file
hi!
$ rm -- -file
$ echo $?
0

UYARI: Komut dosyalarında her zaman --sonra kullanmak iyi bir uygulamadır rm. Saldırgan --rfdosyayı bir dizine yerleştirebilir ve dosyayı rm *çalışma parametreleri olarak alabilir. Bunu gör:

$ touch A
$ touch B
$ mkdir dir
$ touch dir/C
$ touch -- -rf
$ rm *
$ ll
total 0
-rw-r--r-- 1 ja ja 0 Mar 10 13:21 -rf

Hata! Demek istediğimiz bu değil, dizinleri kaldırmak istemedik. Kullanmalıydık --:

$ touch A
$ touch B
$ mkdir dir
$ touch dir/C
$ touch -- -rf
$ rm -- *
rm: cannot remove `dir': Is a directory
$ ll
total 4.0K
drwxr-xr-x 2 ja ja 4.0K Mar 10 13:22 dir

3
Uygulanan her programa güvenemezsiniz --: birçoğu hepsi değil, hepsi.
glenn jackman

2
Gerçekten mi? Ben demedim tüm programlar uygulamak --yapmam bazı gösterdi sözü.
Arkadiusz Drabczyk

1
@vidhan: başka bir seçeneğin farkında değilim.
Arkadiusz Drabczyk

1
@vidhan, hayatınızı sebepsiz yere zorlaştırabilir ve benzer bir şey yapabilirsiniz, find . -name '-file_name' -exec cat {} \;ancak bunun pek bir anlamı yoktur.
terdon

2
Dosya adlandırılmışsa -ve başka bir şey yoksa bu işe yaramaz mı? Bu savaş oyununda
ThisClark

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.