[Çözüldü] Terminal'de Parantez kullanma sorunu

Başlatan paranoid, 30 Mart 2017 - 17:58:31

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

paranoid

Arkadaşlar öncelikle herkese merhaba , cd komutu ile wine'ın Program Files (x86) dizinine gitmem gerekiyor ancak gidemiyorum , terminal şöyle bir çıktı veriyor ;

paranoid@paranoid-desktop:~/.wine/drive_c$ cd Program Files (x86)
bash: syntax error near unexpected token `('

Sebebi nedir acaba?

ata1

cd Program Files [(x86)]
bu şekilde denermisin

paranoid

Tekrar aynı hatayı alıyorum maalesef.

Kaleihan

Parantezden ayrı benim kafama yatmayan bir şey var. dizin isminin arasında " " bırakmışsın bu nasıl oluyor :D program onu iki farklı kelime olarak algılar.
Program\ Files\ şeklinde yazarsan boşluklarda hata çıkmayacağını düşünüyorum. Şu parantez olayını bilmiyorum ama. belki onda da aynı şekilde kaççış dizisi yani "\" işe yarayabilir.

htaslan

#4
[bir yanlışı düzelterek başlayalım: terminal değil, kabuk]

kabuk hareket alanın öyle çok geniş bir ortam değildir. bazı karakterlerin  kabuk için özel anlamı vardır. nedir bunlar? wildcards (joker karakterler), parantezler gibi gibi. senin sorununa gelelim. senin yaşadığın sorunda birden fazla aksayan nokta var.

cd foo bar baz

derken şu oluyor. cd programı aldığı argümanlara dizin bazında girmeye çalışacak. bu argümanlar neler? foo, bar, baz. çünkü cd'den sonraki boşlukla ayrılmış her şey cd ye argümandır. peki boşluğu kullanamaz mısın? kullanırsın. bunu tek tırnaklarla yaparsın. çift tırnak değil yalnız dikkat et. ha burda çift tırnağı da kullanırsın bir sorun olmaz ama tek tırnak git. çift tırnağa ayrıca bir parantez açarız yeri gelince. burada parameter expansion olayları var. yani şunu yap

cd 'foo bar baz'

dersen cd ye bu sefer "foo bar baz" tek başına argüman olarak geçer. doğru kullanım budur. ama şunu da yapabilirdin

cd foo\ bar\ baz

bu da olur. bu ne yapar. kabuk için anlamlı karakterlerdenn kaçmanı sağlar (escape character).

şimdi gelelim asıl yaşadığın soruna ("unexpected token"). kabuk yazdığın şeyi parse edip prosesi başlatmadan önce kabuğa özgü şeyleri çözmeye çalışır. sen burda kabukta anlamlı ne yaptın? parantez kullandın. parantezin kabuktaki anlamı şudur: yeni bir alt kabuk aç. bu yanlış bir kullanım. ama bu demek değil ki parantez kullanamazsın. şu

cd '(foo)'

veya

cd \(foo\)

senin istediğinde şu

cd 'Program Files (x86)'

paranoid

İlginiz için teşekkür ederim,sorunum çözüldü.

ata1