শেল স্ক্রিপ্ট থেকে ওয়েব ব্রাউজার চালু করার পরিষ্কার উপায়?


103

ব্যাশ স্ক্রিপ্টে, আমার ব্যবহারকারীর ওয়েব ব্রাউজারটি চালু করা দরকার। এটি করার অনেকগুলি উপায় রয়েছে বলে মনে হচ্ছে:

  • $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

আপনার সমাধানটি আমার কাছে দুর্দান্ত বলে মনে হচ্ছে
জ্যামি ওয়াং

হ্যাঁ, যদিও আমি এক্সডিজি-ওপেন এবং জিনোম-ওপেন অদলবদল করব
নিনজালজ

4
আপনার ইউআরএল সম্পর্কে সতর্কতা অবলম্বন করুন। এটির মতো ?বা &সেখানে একটি চরিত্র পাওয়া সহজ , যা উদ্ধৃত করা দরকার।
গাবে

আপনি এটি eval(এটি একটি সুরক্ষা ঝুঁকি) ফেলে দিতে সক্ষম হবেন :$BROWSER http://wwww.google.com
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

এছাড়াও আছে sensible-browser
যান্ত্রিক শামুক

উত্তর:


72

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বিকল্পটি ব্যবহার করতে পছন্দ করতাম তবে এটি
ফিলিপ


4
আমি খারাপ বলার জন্য বিয়োগফলটি করেছি is এটি বাশ, জাভাস্ক্রিপ্ট নয়। ক্যাচ বাক্যাংশগুলিতে প্রোগ্রামিং ভাষা জুড়ে না।
দার্ট এগারিজিয়াস


4
বাশের সুন্দর ব্যবহার (২ য় সংস্করণ)! আজ নতুন কিছু শিখেছি।
ব্রেকডফুট

96
python -mwebbrowser http://example.com

অনেক প্ল্যাটফর্মে কাজ করে


4
যদি পাইথন ইনস্টল থাকে ... তবে webbrowserমডিউলটি উল্লেখ করার জন্য ধন্যবাদ !
নিকুলাজ

4
@ জুলিয়াননিউক্লাউড আমি সবেমাত্র ডেবিয়ান ইনস্টল করেছি এবং পাইথন আছে আমি মনে করি এটি অনেকগুলি লিনাক্স বিতরণের সাথে বান্ডিল হয়েছে।
টোমা জ্যাটো - মনিকা

এটি একটি দুর্দান্ত মডিউল, তবে এটি স্থানীয় ফাইলগুলির সাথে কাজ করবে বলে মনে হয় না। ওয়েব ডেভলপমেন্ট করার সময় এটি সাধারণ ব্যবহারের ক্ষেত্রে হবে।
হেক্সাটোনিক

4
@Hexatonic: এটা স্থানীয় ফাইলগুলির সাথে কাজ করে যেমন,python -m webbrowser file:///usr/share/doc/python/FAQ.html
JFS

58

ওএসএক্স:

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

বা

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

বা কেবল ...

$ open some_url

11
এটি হয় খুব শক্তভাবে পোর্টেবল হয়, তবে হ্যাঁ, আপনি এটি ওএসএক্সে কীভাবে করেন।
ট্রিপলি

4
প্রশ্নটি "বেশিরভাগ প্ল্যাটফর্মগুলিতে" বলে!
যান্ত্রিক শামুক 4

10
আমাদের মধ্যে কয়েকজন ওএসএক্স ব্যবহার করছে, সুতরাং এই উত্তরটি দরকারী।

15

আপনি নিম্নলিখিত ব্যবহার করতে পারেন:

x-www-browser

এটি ব্যবহারকারীর নয় বরং সিস্টেমের ডিফল্ট এক্স ব্রাউজারটি চালায়।

দেখুন: এই থ্রেড


x-www-browser <url>কাজটি খুব ভাল করে!
বাস্টার

4
ম্যাক ওএসে নেই।
জামেস্ক্যাম্পবেল

4
লোল, আমি এই বিষয়ে মন্তব্য করতে এখানে এসেছি এবং দেখেছি যে আমার পূর্ববর্তী স্ব গত বছর এ সম্পর্কে মন্তব্য করেছিলেন। এটি কিছু ম্যাট্রিক্স / ইনসেপশন স্টাফ।
জামেস্ক্যাম্বেল

0

অন্যান্য উত্তরগুলি গ্রহণ করে এবং এমন একটি সংস্করণ তৈরি করা যা সমস্ত বড় ওএসের জন্য কাজ করে পাশাপাশি কোনও ইউআরএল রান-টাইম ভেরিয়েবল হিসাবে প্রবেশ করেছে কিনা তা পরীক্ষা করে দেখুন:

#!/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-serverএনপিএম প্যাকেজ ব্যবহার করে একটি সার্ভার তৈরি ও চালু করার সত্যিই সহজ উপায় রয়েছে ।

একবার ইনস্টল হয়ে (ঠিক npm install http-server -g) আপনি রাখতে পারেন

http-server -o

আপনার বাশ স্ক্রিপ্টে এবং এটি বর্তমান ডিরেক্টরি থেকে একটি সার্ভার চালু করবে এবং সেই পৃষ্ঠায় একটি ব্রাউজার খুলবে।


4
এটি npmইনস্টল করতে হবে + http-serverপ্যাকেজ + একটি
অনিবদ্ধ

4
আপনি যদি এনপিএম ব্যবহার করতে যাচ্ছেন, সেখানে একটি প্যাকেজ বলা হয়েছে open, তবে এটি এখনও বেশি পরিমাণে
ম্যাট ফ্লেচার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.