Mac OS X “open” komutunun Linux eşdeğeri [kapalı]


214

Mac OS X'te "open" komutunu komut satırında çok kullanışlı buldum. "Adam açık" dan:

openKomutu (veya bir dizin veya URL) Bir dosya açar, sen varmış gibi dosyanın simgesini çift tıkladım. Hiçbir uygulama adı belirtilmezse, belirtilen dosyaları açmak için LaunchServices aracılığıyla belirlenen varsayılan uygulama kullanılır.

Yani, bir PDF dosyasını varsayılan PDF görüntüleyicisiyle açmak istiyorsam (Önizleme olur), sadece şunları yapmam gerekir:

open my.pdf

Ancak Linux'ta, komut satırından bir PDF dosyası açmak için, varsayılan PDF görüntüleyicisinin örneğin "evince" (kim tahmin ederdi?) Olduğunu ve

evince my.pdf

Peki, Linux komut satırında 'open' komutunun basit bir eşdeğeri var mı?

Teşekkürler!


6
Belki bu soru superuser.com'a taşınmalıdır?
quazgar

1
Süper Kullanıcı uygunsuz görünüyor - "sıradan kullanıcılar" veya muhtemelen "diğer uygulamaları kodlamak isteyen programcılar", yani otomatikleştirmek için bir StackOverflow var mı?
Krazy Glew

askubuntu sığabilir.
Gopherkhan

Yanıtlar:


238

Deneyebilirsiniz xdg-open, çoğu Linux dağıtımında var. Dosyanız için varsayılan ilişkilendirilmiş uygulamayı açar.

Bilginize https://portland.freedesktop.org/doc/xdg-open.html


13
openBununla birlikte, bunun arasındaki büyük fark , bunun dosyayı / uygulamayı arka planda açmamasıdır. Linux uygulamaları çok konuşkan görünüyor ve çoğu kez doğrudan terminalinize çok sayıda teşhis ve uyarı satırı veriyor (hiçbir şey yanlış gitmese de). Genelde xdg-open <file> &> /dev/null &bunun gibi bir şey yapmam gerekir . Bu konuda xdg-open'dan daha iyi bir şey var mı?
Suan

13
@Suan: Uygulama başlatıldığında terminalde çalışmaya devam edebileceğiniz bir şekilde, terminalden ayrılmış "arka planda" uygulamayı açar. Bu nedenle, izlemeye &gerek yoktur. "Birden fazla tanılama satırı" gelince, bunlar uygulamanın kendisinden değil, kendisinden xdg-open. Herhangi bir çıktı istemiyorsanız, doğrudan &> /dev/nullkullanmanız gerekir evince(OP örneği), bu nedenle şikayetiniz geçersizdir. xdg-opengerçekten de gidilecek yoldur.
MestreLion

15
@MestreLion Mac'in açık olması uygulama çıktısının terminale yansıtılmasına neden olmadığından şikayetin tamamen geçersiz olduğunu düşünmüyorum.
Max Nanasy

7
@MaxNanasy: Çıktı değil mi, uygulamalardan olup xdg-openolmadığını 'nin suçu onlar konuşkan. Ve bu tür mesajları bastırmak , xdg değil kullanıcının tercihi olmalıdır . Yani "daha iyi" bir şey istemek geçersiz bir şikayettir xdg-open. Ayrıca, Mac'in openbu iletileri çıktılamak için bir seçeneği yoksa, openbunun daha kötü olduğunu söyleyebilirim xdg-open, çünkü dosyaları başlatmak için komut satırını kullandığınızda genellikle bu çıktıyla ilgilenirsiniz (aksi halde, neden dosyayı çift tıklatmıyorsunuz?) Nautilus gibi bir tarayıcıda mı?)
MestreLion

12
@MestreLion Şikayetin önemsiz olduğu bir durum ortaya çıkabilmesine rağmen, alias open='xdg-open &>/dev/null'yaklaşık olarak istenen davranışı sağlar (xdg-open'ın kendisinden kaynaklanan hatalar (sadece başlatılan programın aksine) da susturulur, bu istenmeyen bir durumdur).
Max Nanasy

76

Aradığınız eşdeğer xdg-open, OS X'in openkomutuyla aynı şekilde kullanılabilir . Örneğin:

xdg-open ~/Documents/Chubby_Bubbies.odt

Ancak, bunu hızlı ve doğru bir şekilde yazmak gerçekten zordur. Bunun yerine, işlemi daha hızlı yapan xdg-open için bir takma ad yapmalısınız.

Tabii ki, openOS X ile eşleştirmek için takma adlandırabilirsiniz (istediğiniz herhangi bir şeyi seçebilirsiniz), ancak kişisel olarak, ]hız nedenlerinden dolayı kısayolum için doğru köşeli ayraç ( ) kullanıyorum. Bunu kullanmak için .bashrcdosyanıza aşağıdakileri ekleyin :

alias ']'='xdg-open'

Ardından, herhangi bir kaynağı açmak için kaynağı aşağıdaki örneklerden herhangi biri gibi kullanın:

] www.google.com
] file.txt
] ~/Pictures
] ssh://myserver.local/home/jeremy

Ayrıca bu, geçerli dizinde bir dosya tarayıcısı (örn. Nautilus) açmanıza izin verir:

] .

Deneyimden, tek harfli takma adların yukarıdaki kısayol için en iyi sonucu verdiğini buldum. Sonuçta, amaç verimliliktir. Ve geri dönüp OS X'te aynı takma adı yapabilirsiniz - bunu okuyucuya bir alıştırma olarak bırakıyorum. :-)


26
Hem Linux hem de Mac'te tutarlı olmasını sağlamak için 'open' ile 'xdg-open' arasında bir takma ad yaptım.
Adam Byrtek

Bu iyi ama harika değil, bir .url dosyasını açmaya çalıştım ve gedit'te açtım.
sorin

18
@sorin Sanki benim hatammış gibi mi ses çıkarmaya çalışıyorsun ?!
Jeremy Visser

7
@sorin: xdg-opensisteminizin dosya için varsayılan uygulamasını açar. Sizin durumunuzda, .urldosyalar gedit'te açılacak şekilde ayarlanmıştır. Bunu değiştirmek isterseniz, Nautilus'ta dosyayı sağ tıklayın ve varsayılan uygulamayı değiştirmek için Özellikler> Birlikte Aç seçeneğine gidin ve xdg-openuygun şekilde çalışacaktır.
MestreLion

İşte yaptığım bir Gist , ilk yorumdaki 'Tamamen' bölümü altında komutu kopyalayıp yapıştırın ve yürütün.
ozanmuyes

14

Bunu kendim hallettim, bu yüzden Suan'ın sorduğu şeyle özellikle alakalı olan nasıl yaptığımı yazacağımı düşündüm. Bu adımlar, terminalinize ihtiyacınız olmayan mesajlarla değil, sadece "open" yazmanıza izin verir:

Adlı bir komut dosyası oluşturun openiçinde ~/biniçerik adildir,:

xdg-open "$1" &> /dev/null &

Komut dosyasını kaydedin ve kapatın, ardından "source .profile" (veya ilgiliyse .bash_profile) yazın. Bu yüzden "Müzik Aç" yazdığınızda, müzik klasörünüzü nautilus GUI'de açacak ve terminalinize hiçbir şey girmemelisiniz.


Takma ad ve garip konum nedir? Sadece betiğin kendisini arayın ve open$HOME/bin/open
PATH'nize

Makinemde (ubuntu 11.10) yolunuza 'open' adlı bir komut dosyası eklerseniz ve / bin / open tarafından geçersiz kılınır. Bu yüzden takma ad olmadan çalışmanın bir yolunu bulamıyorum.
Anake

Hüner önceki gelen bir dizinde kendi el yazısı sahip olmaktır PATHdaha /bin. Kural olarak, eğer varsa $HOME/bin, herhangi bir sistem dizininden önce PATH başlangıcına eklenir. Genellikle, bu sizin .profileveya benzeri tarafından yapılır . Örneğin, .profileUbuntu'daki varsayılan tam olarak bunu yapar.
tripleee

2
Çıktıyı yeniden yönlendirmek /dev/nullbiraz kaprislidir; belki çıktıyı bir şeye yönlendirebilir $HOME/.xsession-errorsveya bir şeyleri gidermeniz gerektiğinde tanılama tamamen kaybolmaz.
tripleee

1
@efdee: tüm değişkenleri doğru şekilde alıntılamak iyi bir programlama uygulamasıdır ve bash betiklerinde hayati önem taşır. Bunun bir ilgisi yok xdg-open, bu bir kabuk sorunu.
MestreLion

11

Geleneksel olarak, "see" komutunu kullanabilirsiniz. Hangi sadece run-mailcap kullanır. Bu Gnome ve X vb. Olmadan çalışacaktır.

man see

3
Sorun run-mailcap(ve birçok takma adı) ayrı (ve çok eski) bir uygulama ilişkilendirme veritabanı kullanıyor. Örneğin benim sistemimde, .mp3şarkılar VLC'de doğru bir şekilde açılırken , .txtdosyalar daha az açılır (gedit yerine) ve .pdfdosyalar açılamaz! (Hata: "application / pdf" türü için "görünüm" posta başlığı kuralı bulunamadı)
MestreLion

Dediğim gibi, her sisteme bağlı. Çok az uygulama kendilerini run-mailcaptanıyacak şekilde kaydolur . xdg-opendahili olarak kullanır gvfs-open(Ubuntu gibi Gnome sistemlerinde), bu da xdg'nin mime-database spesifikasyonunu kullanır ve çok daha fazla uygulama kullanır.
MestreLion

gimpBenim için 50'den fazla sayfa PDF'i açtı . Ben sadık kalacağım xdg-open.
user1717828

lessXxt''de txt dosyalarını açma
Timo

4

gnome-açık


7
gnome-open artık kullanımdan kaldırıldı ve xdg-openkullanıcı Gnome'da ise (şimdi kullanıyor gvfs-open) zaten dahili olarak kullanıldı
MestreLion

2

Eğer pandomim sisteminiz doğru ayarlandıysa kullanabilirsiniz mimeopen. Bazı kullanışlı seçeneklere sahip olduğu için man sayfasına göz atın.


1
Bu cevabın genişletilmesi güzel olurdu. Bunun nasıl çalıştığını görmek isterdim
Magnus

-3

Gnome Desktop ortamında aşağıdaki komutu kullanıyorum:

nautilus `pwd` &

Bu "açık" ile benzerdir. Mac'te komut


11
Bu yanıtın birden fazla sorunu vardır: A) Kullanıcının istediği gibi dosyayı değil, geçerli dizini açar. B) kullanabilirsiniz .yerine "nin pwd" C) değiştirmek eğer pwdbir dosya için, kullanıcı hala Nautilus ilk sadece D) Açılış nautilus açar sonra ENTER vurmak gerekir o dosyayı açmak için bir çok dolaylı bir çözümdür.
MestreLion
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.