“-2” adındaki bir dizine cd (nasıl tire ile başlar)?


Yanıtlar:


272

En az iki yol:

  1. --Argümanı kullan .

    cd -- -2
    

    Bu, GNU araçları için ortak olan --ve komut satırı seçeneği olarak görünen hiçbir şeyi ele almayan bir kural kullanır .

    Bir yorumcunun belirttiği gibi, bu kural POSIX standardında da tanımlanmıştır :

    Varsayılan Davranış: Bu bölüm "Yok" olarak listelendiğinde, uygulamanın herhangi bir seçeneği desteklemesi gerekmediği anlamına gelir. Seçenekleri kabul etmeyen ancak işlenenleri kabul eden standart uygulamalar, "--"atılacak ilk argüman olarak tanınır .

    Tanıma gerekliliği "--", uygunluk gerektiren uygulamaların, işleçlerini, uygulamanın bir uzantı olarak sağlayabileceği herhangi bir isteğe bağlı seçeneklerden koruyacak bir yola ihtiyaç duymasıdır. Örneğin, standart yardımcı program foo, hiçbir seçenek almıyorsa listeleniyorsa ve ona, baştaki tire ile bir yol adı vermek için gereken uygulama güvenli bir şekilde yapabilir:

    foo -- -myfile
    

    ve -m uzantısı olarak kullanılan herhangi bir sorunu önlemek .

    yanı sıra :

    Kılavuz İlke 10:
    Argüman --, seçeneklerin sonunu belirten bir sınırlayıcı olarak kabul edilmelidir. Aşağıdaki herhangi bir argüman, '-'karakterle başlasalar bile operand olarak değerlendirilmelidir . --Argümanı bir seçenek olarak ya da bir işlemci olarak kullanılmamalıdır.

  2. Yolu açıkça belirtin:

    cd ./-2
    

    Bu, geçerli dizini ( .) açıkça başlangıç ​​noktası olarak adlandıran yolu belirtir .

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

    Bunlar yukarıdaki varyasyonlardır. Herhangi bir sayıda bu çeşitlilik mümkün olabilir; Hepsini keşfetmek için onu okuyucuya bir egzersiz olarak bırakacağım.


23
Bu sadece GNU değil, POSIX standardının bir parçası. Bkz. 1.11 Yardımcı Program Tanım Varsayılanları ve 12.2 Yardımcı Program Sözdizimi İlkeleri (kılavuz # 10). Gönderen cdsayfa " cdyarar için ... bölümün 12.2 uyacaktır".
Dietrich Epp

Şimdi sadece - - adlı bir dizine cd yazmak için merak ediyorum!
sergiol

2
@sergiol Aynı şekilde.
Michael Hampton

1
@ArtB: Hayır. Alıntı sadece alan bölmeyi etkiler. Öyleyse "hello world"bir argüman ama hello worldiki ve "-2"aynı -2.
Dietrich Epp

1
@sergiol: Ya çalışmalı ya cd -- --da cd ./--çalışmalı.
Keith Thompson


26

Eğer '-2' mevcut dizinde ise bu işe yarar.

    cd ./-2

Yazarak ve tamamlayarak sekmesine basarak otomatik tamamlayabilirsiniz.


11

cd / home /...../-2 da çalışır. Erişmek için tam yol ver.


7

Sadece tamamlamak için, bu dizini silmek / silmek isterseniz, aşağıdaki komutu kullanabilirsiniz:

rm -r -- -2

... ve sadece tamamlamak için bunu asla yapmam, bunun yerine mc gibi grafiksel bir araç kullanacağım veya önce dizini yeniden adlandıracağım.
Nick,

-1

Bu sorunun çoktan cevaplandığını biliyorum. Herhangi birinin benim gibi bir durumu varsa, bu onlar için:

Bir java uygulamasını çalıştırdım ve başlangıç ​​ile başlayan bir dizin arıyordum <path>, uygulamayı çalıştırmadan önce bunu uygun yolla değiştirmem gerekiyordu. Ancak, bunu yapmayı unuttum. Uygulamanın adı verilen bir dizin oluşturdu <path>.

Ben denedim cd <path>- bana hata verdi "-bash: beklenmedik belirteci newline yakınındaki sözdizimi hatası" Buradaki öneriye dayanarak (bunun 'ile başlayan dizin için olduğunu biliyorum - <değil) denedim cd -- <path>. Ancak aynı hatayı aldım.

Denedim cd \<path>\- bu işe yaradı!

Arkaplan bilgisi:

"<" Ve ">" sembolleri STDIN ve STDOUT'u yeniden yönlendirmek için kullanılır, bu nedenle kabuğun onları yönlendirme olarak yorumlamaması için kaçmaları gerekir.

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.