शेल स्क्रिप्ट से वेब ब्राउज़र लॉन्च करने का साफ तरीका?


101

बैश स्क्रिप्ट में, मुझे उपयोगकर्ता वेब ब्राउज़र लॉन्च करने की आवश्यकता है। ऐसा करने के कई तरीके प्रतीत होते हैं:

  • $BROWSER
  • xdg-open
  • gnome-open गनोम पर
  • www-browser
  • x-www-browser
  • ...

क्या ऐसा करने के लिए एक और अधिक मानक-से-अन्य तरीका है जो अधिकांश प्लेटफार्मों पर काम करेगा, या मुझे केवल इस तरह से जाना चाहिए:

#/usr/bin/env bash

if [ -n $BROWSER ]; then
  $BROWSER 'http://wwww.google.com'
elif which xdg-open > /dev/null; then
  xdg-open 'http://wwww.google.com'
elif which gnome-open > /dev/null; then
  gnome-open 'http://wwww.google.com'
# elif bla bla bla...
else
  echo "Could not detect the web browser to use."
fi

आपका समाधान मुझे ठीक लगता है
जेमी वोंग

हां, हालांकि मैं xdg- ओपन और गनोम-ओपन स्वैप करूंगा
Ninjalj

4
अपने URL के बारे में सावधान रहें। ऐसा चरित्र प्राप्त करना आसान है जिसमें ?या &उसमें उद्धृत किया जाना चाहिए।
गाबे

आपको evalइसे छोड़ने में सक्षम होना चाहिए (यह एक सुरक्षा जोखिम है):$BROWSER http://wwww.google.com
अगली सूचना तक रोक दिया गया।

वहाँ भी है sensible-browser
मेकैनिकल घोंघा

जवाबों:


71

xdg-open मानकीकृत है और अधिकांश वितरणों में उपलब्ध होना चाहिए।

अन्यथा:

  1. eval बुराई है, इसका उपयोग न करें।
  2. अपने चर को उद्धृत करें।
  3. सही तरीके से सही परीक्षण ऑपरेटरों का उपयोग करें।

यहाँ एक उदाहरण है:

#!/bin/bash
if which xdg-open > /dev/null
then
  xdg-open URL
elif which gnome-open > /dev/null
then
  gnome-open URL
fi

हो सकता है कि यह संस्करण थोड़ा बेहतर हो (अभी भी अप्राप्त):

#!/bin/bash
URL=$1
[[ -x $BROWSER ]] && exec "$BROWSER" "$URL"
path=$(which xdg-open || which gnome-open) && exec "$path" "$URL"
echo "Can't find browser"

ओह! हाँ क्यों नहीं। धन्यवाद। (पहले मुझे -sविकल्प का उपयोग करना पसंद था , लेकिन यह लिनक्स पर मौजूद नहीं है।)
फिलिप


2
मुझे लगता है कि बुराई के लिए माइनस एक किया बुराई है। यह बैश है, जावास्क्रिप्ट नहीं। कैचिंग वाक्यांश प्रोग्रामिंग भाषाओं में नहीं चलते हैं।
डार एंथियस

3
सिवाय इसके कि OSX में उपलब्ध नहीं है
'15:56

1
बश का सुंदर उपयोग (दूसरा संस्करण)! आज कुछ नया सीखा।
टूटा हुआ नोव

96
python -mwebbrowser http://example.com

कई प्लेटफार्मों पर काम करता है


3
यदि उपयोगकर्ता ने पायथन स्थापित किया है ... लेकिन webbrowserमॉड्यूल का उल्लेख करने के लिए धन्यवाद !
निकुंज

2
@JulienNicoulaud मैं सिर्फ डेबियन स्थापित किया है और अजगर वहाँ है। मुझे लगता है कि यह कई लिनक्स वितरण के साथ बंडल है।
टॉम ज़ातो -

यह एक अच्छा मॉड्यूल है, लेकिन यह स्थानीय फ़ाइलों के साथ काम नहीं करता है। वेब डेवलपमेंट करते समय यह एक सामान्य उपयोग का मामला होगा।
हेक्साटोनिक

3
@ हेक्साटोनिक: यह स्थानीय फाइलों के साथ काम करता है, जैसेpython -m webbrowser file:///usr/share/doc/python/FAQ.html
15

56

OSX:

$ open -a /Applications/Safari.app http://www.google.com

या

$ open -a /Applications/Firefox.app http://www.google.com

या केवल...

$ open some_url

11
यह शायद ही बहुत पोर्टेबल है, या तो, लेकिन हाँ, यह है कि आप इसे OSX पर कैसे करते हैं।
ट्रिपल जू

2
सवाल कहता है "अधिकांश प्लेटफार्मों पर"!
मेकैनिकल घोंघा

9
हम में से कुछ OSX का उपयोग कर रहे हैं, इसलिए यह उत्तर उपयोगी है।

15

आप निम्नलिखित का उपयोग कर सकते हैं:

x-www-browser

यह उपयोगकर्ता के बजाय सिस्टम के डिफ़ॉल्ट X ब्राउज़र को नहीं चलाएगा।

देखें: यह धागा


x-www-browser <url>काम बहुत अच्छा करता है!
बेसस्टर

4
मैक ओएस में मौजूद नहीं है।
jamescampbell

4
लोल, मैं सिर्फ इस पर टिप्पणी करने के लिए यहां आया था और मैंने देखा कि मेरे पिछले स्वयं ने पिछले साल इस पर टिप्पणी की थी। यह कुछ मैट्रिक्स / इंसेप्शन स्टफ है।
jamescampbell

0

अन्य उत्तरों को लेना और एक ऐसा संस्करण बनाना जो सभी प्रमुख OS के लिए काम करता है और साथ ही यह सुनिश्चित करने के लिए जाँच करता है कि URL को रन-टाइम चर के रूप में पारित किया गया है:

#!/bin/bash
if [ -z $1 ]; then
  echo "Must run command with the url you want to visit."
  exit 1
else
  URL=$1
fi
[[ -x $BROWSER ]] && exec "$BROWSER" "$URL"
path=$(which xdg-open || which gnome-open) && exec "$path" "$URL"
if open -Ra "safari" ; then
  echo "VERIFIED: 'Safari' is installed, opening browser..."
  open -a safari "$URL"
else
  echo "Can't find any browser"
fi

-7

यह ठीक से लागू नहीं हो सकता है कि आप क्या करना चाहते हैं, लेकिन http-servernpm पैकेज का उपयोग करके सर्वर बनाने और लॉन्च करने का एक बहुत आसान तरीका है ।

एक बार स्थापित (बस npm install http-server -g) आप डाल सकते हैं

http-server -o

आपकी बैश स्क्रिप्ट में और यह वर्तमान निर्देशिका से एक सर्वर लॉन्च करेगा और उस पृष्ठ पर एक ब्राउज़र खोलेगा।


3
इसे npmस्थापित + http-serverपैकेज + एक अनावश्यक वेब सर्वर को लॉन्च करने की आवश्यकता है ...
निकोलज

1
यदि आप npm का उपयोग करने जा रहे हैं, तो एक पैकेज कहा जाता है open, लेकिन यह अभी भी ओवरकिल है
मैट फ्लेचर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.