আমি .sh স্ক্রিপ্টগুলি কীভাবে চালাব?


344

আমি যখনই একটি .sh ফাইল খুলি, এটি টার্মিনালের পরিবর্তে জিডিটে এটি খুলবে। আমি অনুরূপ কোনো বিকল্প খুঁজে পাচ্ছি না ডান ক্লিকখুলুনঅন্যান্য অ্যাপ্লিকেশান ...টার্মিনাল

টার্মিনালে এই ফাইলটি কীভাবে খুলব?


সেই স্ক্রিপ্টটি কি আরও ব্যবহারের জন্য এনভিভ ভেরিয়েবল সেট আপ করার লক্ষ্য রাখে?
রব

1
স্ক্রিপ্টগুলিতে আপনার এক্সটেনশন ব্যবহার করা উচিত নয়। ভবিষ্যতের কোনও সময়ে, আপনি দেখতে পাবেন যে আপনার বর্তমান স্ক্রিপ্টটি যে কাজটি করছে তা করতে আলাদা একটি ভাষা আরও উপযুক্ত। এবং তারপরে আপনার সমস্যা আছে। আপনি কি পুরোপুরি পুরোপুরি বিভ্রান্তিকর এক্সটেনশান দিয়ে রেখেছেন বা আপনার নামটি পরিবর্তন করে রেখেছেন, সম্ভবত যেখানে আপনার স্ক্রিপ্টটি ব্যবহার করা হয়েছে সেখানে অনেকগুলি সম্পাদনা করতে হবে?
গিরিহা

আপনার ফাইল এক্সটেনশন দরকার নেই। এটি রাখা ভাল তবে প্রয়োজন নেই। ওএস ফাইল এক্সটেনশনের দিকে নজর দেয় না। এটি ডেটা দেখায়
অ্যাকশনপার্সনিপ

5
মেহ, আপনি যদি রুবিতে foo.sh পুনরায় লেখেন, আপনি সর্বদা শুরু করতে ruby foo.rb
.sh

ডলফিনে আপনি এফ 4 টিপতে পারেন এবং একটি কনসোল খোলে
Motte001

উত্তর:


523

আপনার স্ক্রিপ্টে কার্য সম্পাদনের অনুমতি দিন:

chmod +x /path/to/yourscript.sh

এবং আপনার স্ক্রিপ্ট চালাতে:

/path/to/yourscript.sh

যেহেতু .বর্তমান ডিরেক্টরিটিকে বোঝায়: যদি বর্তমান ডিরেক্টরিতে থাকে yourscript.shতবে আপনি এটিকে সহজ করতে পারবেন:

./yourscript.sh

13
টার্মিনালের একমাত্র উপায়ে চালানো অনুমতিগুলি দেখানোর জন্য কেবলমাত্র +1 উত্তর।
হাইলউড

83
যদি আপনি তা করেন bash /path/to/yourscript.shতবে আপনার প্রয়োজন নেইchmod +x
আলেকসান্দ্র লেভুকুক

4
আসলে, আপনি . /path/to/yourscript.shযদি স্ক্রিপ্টটিতে কিছু পরিবেশের ভেরিয়েবল সেট আপ করতে হয় তবে আপনি ব্যবহার করতে পারেন ।
রব

1
Theতিহ্যবাহী কেউই উল্লেখ করে না: ./path/to/yourscript.sh(জায়গা ছাড়াই .)? আমি দেখতে পেলাম যে একটি হ'ল ব্যবহার করা সহজ এবং সহজ ... তবে যাইহোক, এখানে আমার বিকল্পটি রয়েছে যা প্রায় একই রকম করা উচিত ./, যদিও আপনি কেন ব্যবহার করবেন না তা আমি দেখছি না ./: (FILENAME=~/rem4space.sh;SLL=$(cat $FILENAME|head -1|sed 's:^#!\(.*\):\1:g');[ ! -z $SLL ] && exec $SLL $FILENAME;sh $FILENAME)... FILENAMEআপনার পছন্দ অনুসারে সম্পাদনা করুন । এছাড়াও নোট করুন যে shকোনও বিকল্প না থাকলে ব্যবহার করা হবে।
মিজিন

88

ফাইল ম্যানেজার থেকে চালনার জন্য আপনাকে শেল স্ক্রিপ্টগুলি নির্বাহযোগ্য হিসাবে চিহ্নিত করতে হবে:

  1. আপনার .shফাইলটিতে ডান ক্লিক করুন এবং বৈশিষ্ট্য নির্বাচন করুন :

    এখানে চিত্র বর্ণনা লিখুন

  2. ইন অনুমতিসমূহ ট্যাবে, চেক প্রোগ্রাম হিসাবে ফাইল নির্বাহ অনুমতি দিন :

    এখানে চিত্র বর্ণনা লিখুন

  3. প্রোপার্টি উইন্ডোটি বন্ধ করুন এবং ফাইলটিতে ডাবল ক্লিক করুন। একটি ডায়ালগ পপ আপ করবে আপনাকে একটি টার্মিনালে স্ক্রিপ্টটি চালনার বিকল্প দেয়:

    এখানে চিত্র বর্ণনা লিখুন


10
এটি উবুন্টু 13.04 এ কাজ করছে না। জেডিট খোলার উপায় যাইহোক রাখে, কখনও আমাকে কার্যকর করতে বলেন না। সম্পাদনা করুন: এনভিএম, অনিষ্টকারী এটির উত্তর দেয়।
এমপেইন

এটি ব্যবহার করার আগে আমাদের chmod ব্যবহারের জন্য ফাইল অনুমতি নিতে হবে। chmod + x filename.sh বা chmod 755 filename.sh
অরবিন্দ রাওয়াত

আমার পপআপ নেই! আইডিই সরাসরি খোলা হয়, পপআপ নয়
সবুজ

আমি কীভাবে আমার ইন্টারফেসের কোথাও "টার্মিনাল রান" খুঁজে পাব না? (উবুন্টু 18.04)
ড্যানিয়েল মুলার

1
@ ড্যানিয়েলমেলার, আপনার প্রশ্নের উত্তর এখানে। জিজ্ঞাসাবাবু / প্রশ্ন
অখিলেশ ধর দুবে

33

একটি টার্মিনাল খুলুন এবং .shফাইলটি যেখানে অবস্থিত ফোল্ডারে নেভিগেট করুন। তারপরে টাইপ করুন:

sh <name of file>.sh

কোনও অ্যাপ্লিকেশন খোলার সেরা উপায় way .Sh ডিরেক্টরিতে নেভিগেট করুন তারপরে কমান্ড প্রম্পটে এটি খুলুন। sh <ফাইলের উপরের চিত্রের নাম>> ব্যবহার করুন যদি chmod + x /path/to/yourscript.sh ব্যবহারের অনুমতি প্রয়োজন হয় বা ডান ক্লিক করুন এবং সবার জন্য অনুমতি পরিবর্তন করুন
দুর্গেশ কুমার

24

পূর্বশর্ত

আপনি .sh ফাইলটি চালানোর আগে আপনার এটিকে কার্যকর করার প্রয়োজন:

  1. ফাইলটিতে রাইট ক্লিক করুন
  2. বৈশিষ্ট্য নির্বাচন করুন
  3. অনুমতি নির্বাচন করুন
  4. প্রোগ্রাম হিসাবে এক্সিকিউটিং ফাইলের অনুমতি দিন নির্বাচন করুন

সতর্কতা

আপনি যে উত্সটি পেয়েছেন সেখান থেকে আপনি যে উত্সটি বিশ্বাস করেছেন তা নিশ্চিত করুন। এটি কোনও ভাইরাস হতে পারে

খুব সহজ উপায়

  1. ফাইলটিতে ডাবল ক্লিক করুন
  2. টার্মিনালে রান ক্লিক করুন

এই সমস্যা আছে। টার্মিনালটি অবিলম্বে বন্ধ হয়ে যাবে এবং আপনি আউটপুটটি দেখতে পারবেন না।

সহজ উপায়

  1. অ্যাপ্লিকেশনগুলি খুলুন -> আনুষাঙ্গিক -> টার্মিনাল
  2. টার্মিনালে .sh ফাইলটি টেনে টানুন এবং এন্টার টিপুন

পেশাদাররা যেভাবে এটি করেন

  1. অ্যাপ্লিকেশনগুলি খুলুন -> আনুষাঙ্গিক -> টার্মিনাল
  2. .Sh ফাইলটি কোথায় সন্ধান করুন

    • lsএবং cdকমান্ড ব্যবহার করুন
    • lsবর্তমান ফোল্ডারে ফাইল এবং ফোল্ডারগুলি তালিকাভুক্ত করবে । এটি ব্যবহার করে দেখুন: "ls" টাইপ করুন এবং এন্টার টিপুন।
    • আপনি যে ফোল্ডারে যেতে চান তা একবার চালান cd , তারপরে একটি স্পেস এবং তারপরে একটি ফোল্ডার নাম পরে যান
    • আপনি যদি চান না এমন কোনও ফোল্ডারে প্রবেশ করেন cd ..তবে এক স্তর উপরে চলে যান
  3. .Sh ফাইলটি চালান

    • একবার আপনি এটি চালানোর script1.shসাথে উদাহরণস্বরূপ দেখতে পাবেন ls:

      ./script.sh

কেন এটি জটিল উপায়ে?

টার্মিনালটিতে শক্তিশালী সরঞ্জামগুলির সমৃদ্ধ সেট রয়েছে যা কমান্ডগুলি টাইপ করে অ্যাক্সেসযোগ্য। পেশাদাররা .sh ফাইলটি টাইপ করে lsএবং সনাক্ত করে cd। একবার আপনি সঠিক বর্তমান ফোল্ডারে চলে গেলে আপনি স্ক্রিপ্টটি এভাবে চালাতে পারেন:

./script1.sh

অথবা আপনি চালাতে এবং কোনও ফাইলে আউটপুট পুনর্নির্দেশ করতে পারেন:

./script1.sh > out.txt

অথবা আপনি কীওয়ার্ডগুলির জন্য আউটপুট ফিল্টার করতে পারেন (যেমন "আপেল") তারপরে কোনও ফাইলে পুনঃনির্দেশ করুন:

./script1.sh | grep apples > ./only-apples

কেবলমাত্র কয়েকটি কমান্ড টাইপ করে সেই ফাইলটিতে আপনি করতে পারেন এমন হাজার হাজার জিনিস।

আর একটি, আপনি একটি সাধারণ কমান্ড দিয়ে ইন্টারনেট থেকে একটি ফাইল ডাউনলোড করতে পারেন:

wget www.google.com/images/logos/ps_logo2.png

এবং তারপরে ফাইলটি খুলুন:

shotwell ps_logo2.png

6
তোমার দর্শন লগ করা নিশ্চিত না যে পথ পেশাদার এটা করতে সঠিক, এটি আরো একটি ক্ষেত্রে সহজ উপায় উন্নত (জন্য আউটপুট নিয়ন্ত্রণ জন্য) প্রণালী
Hailwood

আমার প্রথম পরীক্ষায় পেশাদাররা যেভাবে এটি করেছে তা আমি জেনে রাখা ভাল। আমি ভেবেছিলাম এটি প্রাথমিক ব্যবহারকারীর উপায়।
নেলসনগন

19

উবুন্টু ১৩.০৪-তে নটিলাসে খোলার এক্সিকিউটেবল ফাইলগুলি এখন ব্যবহারকারীকে মৃত্যুদণ্ড কার্যকর করার অনুরোধ না করে ডিফল্টরূপে জিডাইটে খোলা হয়। ক্লাসিক আচরণ সক্ষম করতে আপনার পছন্দগুলি সামঞ্জস্য করতে হবে:

নটিলাস → সম্পাদনা মেনু → পছন্দসমূহ → আচরণ ট্যাব each প্রতিবার জিজ্ঞাসা করুন নিকটে রেডিও বোতামটি ক্লিক করুন।


যে ব্যক্তি প্রশ্নটি জিজ্ঞাসা করেছেন তিনি উবুন্টু 10.10
এডউইন

1
ধন্যবাদ!!! আমি জানি না কেন তারা এটিকে পরিবর্তন করবে, কীভাবে কোনও কিছু সম্পাদন করতে হবে তা বুঝতে পারিনি couldn't
এমপেইন

1
সর্বশেষ উবুন্টাসের জন্য এটি সঠিক উত্তর।
গ্যারেক্স

15.10-এ আপনি কীভাবে নটিলাসে যাবেন?
ইয়াকভ আইনস্পান

উবুন্টু 18.04 অনুসারে, আপনি ডিরেক্টরিটি খোলার মাধ্যমে এবং তারপরে উপরের বারে "ফাইল -> পছন্দসমূহ" ক্লিক করে পছন্দগুলি অ্যাক্সেস করতে পারবেন।
tparker

7

ডিরেক্টরিটি যেখানে .shফাইলটি ব্যবহার করে রয়েছে সেখানে যান cd। এই উদাহরণে আমি আমার shফাইল হিসাবে সংরক্ষণ করেছি~/Desktop/shell_practice/test.sh

প্রথমে pwdআপনি কোথায় আছেন তা নির্ধারণের জন্য করুন, এবং যদি এটি ফিরে আসে /home/username( usernameআপনার আসল ব্যবহারকারীর নাম কোথায় ), আপনি চালাতে পারেন

cd Desktop/shell/practice

আপনি যদি অন্য কোথাও বলে মনে করেন তবে আপনি পরম পথটি ব্যবহার করতে পারেন

cd ~/Desktop/shell/practice

অথবা

cd $HOME/Desktop/shell/practice

অথবা এমনকি

cd /home/$USER/Desktop/shell/practice

এগুলি একই স্থানটি বর্ণনা করার সমস্ত উপায়। একবার আপনি এটি আপনার স্ক্রিপ্টের স্থানে পৌঁছে দিলে টাইপ করুন

ls

আপনি যদি shআউটপুটটিতে ফাইলটি দেখতে পান তবে আপনি এটি কার্যকর করতে ব্যবহার করতে পারেন chmod। আমার ক্ষেত্রে, মনে রাখবেন, ফাইলের নামটি test.shতাই আমি চালাতে পারি

chmod u+x test.sh

এখন যেহেতু আমরা স্ক্রিপ্টের মতো একই ডিরেক্টরিতে আছি, আমরা ফাইলটি তার অবস্থান ./(ফাইলের নাম থেকে পৃথক করার জন্য একটি পথ বিভাজক দ্বারা অনুসরণ করা বর্তমান ডিরেক্টরি) দিয়ে ফাইলটি চালাতে চাইলে শেলটি নির্দিষ্ট করতে হবে। আমার ফাইলটি চালাতে আমি টাইপ করব:

./test.sh

যদি আপনার স্ক্রিপ্টটি সঠিকভাবে লেখা থাকে তবে এটি ত্রুটি ছাড়াই চলবে ...

এখানে একটি সরাসরি উদাহরণ: এখানে লাইভ উদাহরণ


এটি আমার পক্ষে উবুন্টুতে
নেটবিয়ান

1
Wb, @ RuD3B0y, আমি উত্তরগুলিকে নুবসের জন্য সেরা রাখার চেষ্টা করেছি, কোনও উচ্চ প্রযুক্তির সামগ্রী নেই, যদি আপনার কিছু সম্পাদনা থাকে তবে আপনাকে স্বাগত জানানো হবে।
Thexorist

4

2 প্রধান পদক্ষেপ।

  1. টার্মিনালে, ডেস্কটপে ".sh" এক্সটেনশান সহ স্ক্রিপ্ট লিখতে এবং সংরক্ষণ করতে gedit ব্যবহার করুন। (তবে যে কোনও পাঠ্য সম্পাদক ব্যবহার করা যেতে পারে)

  2. নটিলাস খুলুন এবং স্ক্রিপ্ট.শ ফাইলটিতে ডান ক্লিক করুন।

    • বৈশিষ্ট্যের অধীনে, "এক্সিকিউট করা ফাইলটিকে অনুমতি দিন .."

    • নটিলাস মেনুতে, ফাইল ক্লিক করুন, তারপরে পছন্দগুলি, তারপরে আচরণ

    • "খোলার পরে এক্সিকিউটেবল টেক্সট ফাইলগুলি চালান" পরীক্ষা করে দেখুন।

এখন, আপনি যখন ডেস্কটপে ফাইলটি ডাবল ক্লিক করেন, এটি কার্যকর করা উচিত। .বা প্রয়োজন নেই./


3
  1. .shফাইলটিতে রাইট-ক্লিক করুন এবং এটি সম্পাদনযোগ্য করুন।

  2. একটি টার্মিনাল খুলুন ( Ctrl+ Alt+ T)।

  3. .shটার্মিনাল উইন্ডোতে ফাইলটি টানুন এবং বিস্ময়ে দেখুন।


1
উবুন্টুকে জিজ্ঞাসা করুন স্বাগতম! আমি এই উত্তরটি সম্পাদনা করার পরামর্শ দিচ্ছি যাতে এটি প্রথম ধাপে কীভাবে করা যায় সে সম্পর্কে সুনির্দিষ্ট বিবরণ সহ এটি প্রসারিত করুন। (আরও দেখুন কীভাবে আমি উত্তম উত্তর লিখব? আস্কউবুন্টুতে কী ধরণের উত্তরগুলি সবচেয়ে মূল্যবান বলে মনে করা হয় সে সম্পর্কে সাধারণ পরামর্শের জন্য।)
ডেভিড ফোস্টার

3

এটি করার কয়েকটি উপায় রয়েছে।

বিকল্প 1

  1. টার্মিনালে, ব্যাশ ফাইলটি যে ডিরেক্টরিটি ব্যবহার করছে তা অ্যাক্সেস করুন cd ডিরেক্টরি (ডিরেক্টরি পরিবর্তন করুন)

    যাত্রা। cd Downloads

  2. চালান bash <filename>.sh

    এটি .run ফাইলগুলির সাথেও কাজ করে। রিথম্বক্স আপডেট করার ক্ষেত্রে এই ওয়েবপৃষ্ঠায় এই ব্যবহারের একটি উদাহরণ রয়েছে

বিকল্প 2

  1. টার্মিনালে, বাশ ফাইলটি যে ডিরেক্টরিটিতে রয়েছে সেটিতে নেভিগেট করুন।

  2. চালান chmod +x <filename>.sh

  3. নটিলাসে, ফাইলটি খুলুন।


3

জন্য উবুন্টু 18.04 আছে একটু পরিমার্জন, হিসাবে আপনি একটি পপ-আপ ডায়ালগ পাবেন না হয়।

সুতরাং আপনার যা করা দরকার তা হ'ল:

ফাইলগুলিতে ডান ক্লিক করুন, পছন্দসমূহ নির্বাচন করুন> আচরণের ট্যাব নির্বাচন করুন> এক্সিকিউটেবল টেক্সট ফাইলের অধীনে 'কী করতে হবে' বিকল্পটি চিহ্নিত করুন।

এখন, আপনি যখন কোনও .sh ফাইলটিতে ডাবল ক্লিক করেন, আপনি একটি পপআপ পাবেন, সেখানে আপনি আপনার .sh ফাইলটি চালানোর জন্য "রান ইন টার্মিনাল" বিকল্পটি নির্বাচন করতে পারেন।

এখানে চিত্র বর্ণনা লিখুন


2

উবুন্টু 16.04 এ এটি টার্মিনালে এটি কীভাবে খুলতে হবে:

যান File Manager > Edit > Preferences > Behaviorজন্য Executable Text Filesনির্বাচন Ask each time

সমস্যাটি হ'ল এটি ডিফল্টরূপে সেট হয়েছে View Executable Files when they are opened


1

আপনি যদি আপনার শেল স্ক্রিপ্ট বা অন্য নির্বাহযোগ্যকে আপনি / usr / স্থানীয় / বিনে তৈরি করেন তবে এটি কমান্ড লাইনে কোনও ফোল্ডার পথ সরবরাহ না করে বা। / নাম যুক্ত করে সন্ধান করা হবে এবং কার্যকর করা হবে। উদাহরণস্বরূপ, ডিস্ক ইউআইডিগুলি প্রদর্শনের জন্য আমি নিম্নলিখিত সহজ 3 লাইন বাশ স্ক্রিপ্ট তৈরি করেছি:

#!/bin/bash
echo "* UUIDs must match in /etc/fstab and /boot/grub/menu.lst"
sudo blkid

আমি ফাইলটিকে ইউইড বলেছিলাম এবং এটি / ইউএসআর / স্থানীয় / বিনে রেখেছি। কমান্ড লাইনে আমার যা প্রবেশ করা দরকার তা হ'ল:

uuid

0

ঠিক আছে, আমিও একই সমস্যার মুখোমুখি হয়েছি। আমি .sh ফাইলটি সম্পাদন করতে চেয়েছিলাম এবং এটি গেডিটের সাথে সেন্টোস on এ খোলা হয়েছিল So সুতরাং আমি যা করেছি তা এখানে:

  1. আমি যে .shফাইলটি সম্পাদন করতে চাইছিলাম তার পথে আমি নেভিগেট করেছি।
  2. আমি টার্মিনালটি খুললাম।
  3. এবং আমি টার্মিনাল উইন্ডোতে টেনে টেনে এনে ফেলেছি এবং এটি স্বয়ংক্রিয়ভাবে সেই ফাইলটিকে ইনপুট হিসাবে পথের সাথে নিয়ে গেছে।
  4. এন্টার প্রবেশ করুন এবং আপনি যেতে ভাল!

0

কয়েকটি বিতরণে আমি যে সমস্যাটি পেয়েছি তা হ'ল তারা নটিলাসে পছন্দসই বিকল্পটি গোপন করেছে তবে জিনোম 3 ব্যবহার করে উবুন্টু এবং অন্যান্য বিতরণগুলিতে এটি ঠিক করা একইভাবে (আক্ষরিকভাবে এটির ফেডোরা সংস্করণটি সম্পন্ন করে আমাকে স্মরণ করিয়ে দেওয়ার জন্য প্রকৃত ফিক্স পোস্ট করা হয়েছে) ভবিষ্যতে কিভাবে)।

  1. ইনস্টল করুন dconf-editor

    sudo apt-get install dconf-editor
  2. dconf-editorআপনি এটি ব্যবহারকারীর অ্যাকাউন্টটি ব্যবহার করে চালান , অর্থাৎ রুট নয়

    dconf-editor
  3. নিম্নলিখিত স্কিমা নেভিগেট করুন:

    org.gnome.nautilus.preferences

  4. ডিফল্টরূপে না খোলার জন্য ডিফল্ট বিকল্পটি পরিবর্তন করুন:

    এই executable-text-activationক্লিক শব্দ displayএবং পরিবর্তনask

এটি আপনাকে এগিয়ে যাওয়া ফাইল সম্পাদনা করতে, দেখতে বা চালানোর বিকল্প দেয়


0

আমি লিনাক্সের নুব এবং আমার ঠিক একই সমস্যা ছিল। অন্য সব ব্যর্থ হলে:

  1. টার্মিনাল খুলুন
  2. .Sh ফাইলযুক্ত ফোল্ডারটি খুলুন
  3. টার্মিনাল উইন্ডোতে ফাইলটি টেনে আনুন
  4. ফাইলটির পথ টার্মিনালে উপস্থিত হয়। টিপুন Enter
  5. ভয়েলা, আপনার .sh ফাইলটি চালানো হয়েছে।

-2

.অন্যান্য উত্তরের পরামর্শ সহ আপনি কৌশলও ব্যবহার করতে পারেন ।

উদাহরণ স্বরূপ:

chmod +x filename.sh, ধরে নিলাম আপনি ইতিমধ্যে ফাইলের পথে চলে গেছেন তারপর এই কমান্ডের যে কোনও একটি দিয়ে ফাইলটি চালান:

sh filename.sh

./filename.sh

. filename.sh

2
সতর্কতা : এই তিনটি কমান্ড সমতুল্য নয় । যদি আপনার শেবাং কোনও ভিন্ন বাইনারি (যেমন স্ট্যাক) উল্লেখ করে তবে তৃতীয় কমান্ড বাশের সাথে যুক্তিগুলি পার্স করার চেষ্টা করবে, যা ব্যর্থ হবে।
জেজেন টমাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.