ব্যাশ স্ক্রিপ্টের ভিতর থেকে কীভাবে একটি ফাইল খুলব?


22

ঠিক আছে, তাই চলমান gedit myfile.txtভাল কাজ করে। তবে ব্যাশ স্ক্রিপ্টের ভিতর থেকে কোনও ফাইল খোলার ক্ষেত্রে, ফাইল টাইপের সাথে যুক্ত লিঙ্কযুক্ত ডেস্কটপ অ্যাপ ব্যবহার করে?

আমি নীচে চেষ্টা করেছি, যা টার্মিনালে ম্যানুয়ালি রান করার সময় দুর্দান্ত কাজ করে তবে আমি যখন এটি ব্যাশ ফাইলে রাখি তখন কিছুই ঘটে না:

#!/bin/bash
xdg-open "myfile.txt"&

পরিবর্তে আমার কী করা উচিত?

দয়া করে নোট করুন যে টার্মিনালটি বন্ধ হওয়ার পরেও আমার ফাইলটি উন্মুক্ত থাকতে হবে।


1
ফাইলটির পথ সরবরাহ করার চেষ্টা করুন .. এবং আপনি কি নিশ্চিত যে এটি উদ্ধৃতি সহ হওয়া উচিত? উদ্ধৃতি ছাড়াই চেষ্টা করুন
অভিষেক

7
আপনি কি নিশ্চিত যে আদেশটি কিছুই করে না? আমি তালিকাভুক্ত সামগ্রীগুলি সহ একটি স্ক্রিপ্ট তৈরি করেছি এবং এটি geditতালিকাভুক্ত ফাইলের সাথে খোলে (বা বিদ্যমান সেশনে একটি নতুন ট্যাব খুলবে)। প্রোগ্রামটি শেষ না হওয়া পর্যন্ত এটি অবরুদ্ধ করার পরিবর্তে তত্ক্ষণাত্ ফিরে আসে।
জেমস হেনস্ট্রিজ

3
এছাড়াও, টার্মিনাল থেকে আপনার স্ক্রিপ্টটি চালানোর সময় আপনি কোন ত্রুটিগুলি পেয়েছেন?
তাককাত

হাঁ। আমি আমার স্ক্রিপ্টে ফাইলটির পুরো পথটি ব্যবহার করেছি তবে এটি স্পষ্ট করতে এখানে সরিয়েছি। উদ্ধৃতিগুলির সাথে বা ছাড়াই কোনও পার্থক্য নেই। আমি চেষ্টা করেছি xtg-openউপর *.txt, *.htmlএবং আরো অনেক কিছু - শুধু অভ্যস্ত হবে।
শিল্প

5
@ অভিষেক: এমন কোনও পরিস্থিতি নেই যেখানে উদ্ধৃতিগুলি এমন পরিস্থিতিতে ক্ষতিকারক এবং এমন অনেকগুলি ক্ষেত্রে যেখানে উদ্ধৃতিগুলি বাদ দেওয়া সমস্যার কারণ হতে পারে। অকারণে এমনকি যখন আপনার কাছে নির্দিষ্ট কারণ না থাকে তবে সবসময় সমস্ত স্ট্রিংয়ের উদ্ধৃতি দেওয়ার অভ্যাস করা ভাল অভ্যাস।
স্কট সিরিয়েন্স

উত্তর:


16

আমি মনে করি আপনার স্ক্রিপ্টটি কাজ করা উচিত। তবে আপনি আরও কিছু তথ্য পেতে এতে কিছু যুক্ত করতে পারেন:

#!/bin/bash
T=`xdg-mime query filetype $1`
echo "opening file "  $1  " of type " $T "with " `xdg-mime query default $T`
xdg-open $1
echo "finished script"

টার্মিনালে এই স্ক্রিপ্টটি (my_open.sh নামকরণ) চালানোর সময়:

my_open.sh path/to/somefile.txt

আমি নিম্নলিখিত আউটপুট পেতে:

opening file  path/to/somefile.txt  of type  text/plain with  gedit.desktop
finished script

যা আমাকে জানায় যে ফাইলটির পথটি ঠিক আছে, মাইমটাইপটি স্বীকৃত এবং ডেস্কটপ ফাইল যা ফাইলটি খোলার জন্য ব্যবহৃত হয় তা ঠিক আছে। এবং জিডিটটি প্রশ্নযুক্ত ফাইলটি দিয়ে খোলে।

এখন যখন অন্য কোনও ফাইলে রান করুন:

my_open.sh path/to/README

আমি নিম্নলিখিত আউটপুট পেতে:

opening file  path/to/README  of type  text/x-readme with
finished script

বিভিন্ন মাইম টাইপ এবং অনুপস্থিত ডেস্কটপ ফাইলটি নোট করুন। তবুও, xdg- ওপেন সমস্ত পাঠ্য ফাইল (gedit) এর জন্য ডিফল্ট খুলবে।

সুতরাং, আপনি আপনার স্ক্রিপ্টে এর মতো কিছু যুক্ত করতে চাইতে পারেন এবং আপনি অপ্রত্যাশিত আউটপুট পান কিনা (যা আপনি আপনার প্রশ্নের সাথে যুক্ত করতে পারেন ...)।


ঠিক আছে, finished scriptশেষ পর্যন্ত গোলমাল ছাড়া । আমি প্রস্তাব দিচ্ছি [ catb.org/~esr/writings/taoup/html/ ( ( ইউনিক্স প্রোগ্রামিং আর্ট), নীরবতার নিয়ম। বিটিডব্লিউ .: ব্যাকটিকগুলি হ্রাস করা হয়েছে - পরিবর্তে $ (...) পছন্দ করুন, যা নীড়যোগ্য।
ব্যবহারকারী অজানা

2
ঠিক আছে, স্ক্রিপ্টটি অতিরিক্ত তথ্য দেওয়ার জন্য বোঝানো হয়েছে। 'সমাপ্ত স্ক্রিপ্ট' দ্বারা প্রদত্ত তথ্য হ'ল আপনার দরকার নেই nohupবা নয় &, তবে এটি xdg-openফিরে আসে এবং আপনাকে চালিয়ে যেতে দেয়।
xubuntix

প্রম্পটটির জন্য এটিই বোঝানো হয়।
ব্যবহারকারী অজানা

3
সত্য। কেবল ভেবেছিলাম এটি সেভাবে আরও সুস্পষ্ট হবে। আসলে, পুরো স্ক্রিপ্টটির প্রয়োজন নেই, কারণ এটি xdg-openইতিমধ্যে এর চেয়ে বেশি কিছু করে না , সুতরাং এটি কোনওভাবেই প্রোডাকশন মানের স্ক্রিপ্ট নয় ...
xubuntix

5

একটি বাশ স্ক্রিপ্ট পরীক্ষা করুন sh

#!/bin/bash
gedit myfile.txt

তারপরে, স্ক্রিপ্টটিকে এই হিসাবে সম্পাদনযোগ্য করে তুলুন:

chmod +x test.sh

পরিশেষে, স্ক্রিপ্টটি এইভাবে চালান:

./test.sh

আপনার উত্তরের জন্য ধন্যবাদ, তবে দুর্ভাগ্যক্রমে আমার উপরে উল্লিখিত ফাইলটির জন্য জিনোমের ডিফল্ট ফাইল সম্পাদক খুলতে হবে।
শিল্প

3

এক্সডিজি-ওপেনের পরিবর্তে জিনোম-ওপেন হতে পারে


আমি এই সমাধানটি সবচেয়ে ভালভাবে কাজ করতে পেলাম
জন

ব্যবহারকারী যদি জিনোমে নেই?
গড্ডার্ড

2

আপনি সঠিক পথে যাচ্ছেন। আপনি যদি টার্মিনাল উইন্ডোটি বন্ধ করার সময় গুই অ্যাপটি উন্মুক্ত থাকতে চান nohupতবে লাইনের শুরুতে আপনাকে কেবল একটি যুক্ত করা দরকার add

#!/bin/bash
nohup xdg-open "myfile.txt"&

যদি গুআই অ্যাপ্লিকেশনটি এটি না খোলার কারণ সম্ভবত আপনি DISPLAYযে শেলটি থেকে এটিকে চালু করার চেষ্টা করছেন তাতে পরিবেশ পরিবর্তনশীল সেট নেই। প্রতিধ্বনি করার চেষ্টা করুন$DISPLAY


3
এক্সডিজি- nohup&
ওপেনের

0

আপনার প্রশ্নের প্রথম অংশ

কমান্ডটি দিয়ে catআপনি টার্মিনালের ভিতরে কোনও ফাইল খুলতে পারেন, যদি এটি আপনি চান তবে (এটি আপনার প্রশ্নের প্রথম অংশে বর্ণিত)।

এটি ব্যবহার করতে আপনি কেবল টাইপ করতে পারেন cat FILENAME

অন্যান্য তথ্য

আপনার যদি আরও কমান্ডের প্রয়োজন হয়: কমান্ডগুলির একটি ভাল তালিকা এখানে

জিনোম ডিফল্ট সম্পাদক

আপনি যদি জিনোমের ডিফল্ট অ্যাপ্লিকেশনটিতে ফাইলটি খুলতে চান gedit

এটি ব্যবহার করতে, শুধু টাইপ করুন gedit FILENAME


এটি টার্মিনালে ফাইলটি খোলায়, কিন্তু জিনোমের ডিফল্ট সম্পাদক নয়
ইন্ডাস্ট্রিয়াল

@ ইন্ডাস্ট্রিয়াল আমার উত্তর সম্পাদনা করেছে
আলভার

দুর্ভাগ্যক্রমে, উন্মুক্ত অভ্যাসটিও কাজ করে না ...
শিল্প

@ ইন্ডাস্ট্রিয়াল আপনি কী চাইছেন? আপনার প্রশ্নটি আরও ব্যাখ্যা করুন! আপনি বিভিন্ন কথা বলেন এবং আমি তার একটিটির জবাব দিয়েছি তবে আপনি বলেন যে আপনি এটি ব্যবহার করতে চান না ...
আলভার

@Industrial গনোম এর ডিফল্ট টেক্সট এডিটর হয় ওরফে "টেক্সট এডিটর" তাই যদি আপনি gedit চালানোর gedit file.filetypeআপনি চান হিসাবে ফাইল খোলার হবে!
আলভার

0

যদিও আমি নিশ্চিত নই যে এখানে কী সম্পাদিত হবে এবং কিছু সাম্প্রতিক মন্তব্যগুলির উপর ভিত্তি করে যে কোনও একক স্ক্রিপ্টের কোনও ডিফল্ট ডিফল্ট অ্যাপ্লিকেশনটিতে খুলতে হবে বা অ্যাপ্লিকেশনটি এটিকে সমর্থন করতে পারে।

যদি তা হয় তবে এটি করার সহজতম উপায় হ'ল টার্মিনাল খোলা এবং স্ক্রিপ্টনাম / পাথ / থেকে / ফাইলনামে যাওয়া বা যদি পাথের মধ্যে কোনও স্পেস থাকে তবে স্ক্রিপ্টনাম '/ path / to / filename'

cd; mkdir -p bin && gedit ~/bin/openit1

এটি স্ক্রিপ্ট হিসাবে ব্যবহার করুন, আপনি স্ক্রিপ্টের জন্য যে কোনও নাম ব্যবহার করতে পারেন, আমি উদাহরণ হিসাবে ওপেনিট 1 ব্যবহার করব। নামের মধ্যে একটি সংখ্যা যুক্ত করতে সরাসরি ~ / বিন থেকে স্ক্রিপ্টগুলি ব্যবহার করার সময় এটি সর্বোত্তম হয় যাতে কোনও বিদ্যমান লিনাক্স কমান্ডের সাথে কোনও বিরোধ না হয়

#!/bin/bash
xdg-open "$1"

টার্মিনালে জিডিট বন্ধ করুন

chmod u+x ~/bin/openit1

আপনার $ PATH এ ~ / বিন যোগ করতে পুনরায় চালু করুন

একটি টার্মিনাল খুলুন এবং যেতে অনুরোধ জানাতে

openit1 /path/to/filename or openit1 'path/to/filename' 

যদি উত্স হিসাবে বর্ণিত হয় এবং উত্সটি ব্যবহার করে। স্ক্রিপ্ট প্রতি একটি নির্দিষ্ট ফাইলের জন্য স্ক্রিপ্ট এবং ড। স্ক্রিপ্টে বাম ক্লিক করে আপনাকে কেবল "টার্মিনাল চালান " এর পরিবর্তে " রান " চয়ন করতে হবে


Restart to add ~/bin to your $PATH- ওহহ, উইন্ডোজ পুরানো অভ্যাস? ;)
ব্যবহারকারী অজানা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.