কমান্ড লাইনগুলি কার্যকর করা হলে প্রতিবার বাশ স্ক্রিপ্টটি চালান


9

আমি একজন নতুন উবুন্টু / লিনাক্স ব্যবহারকারী, উপরের শিরোনাম হিসাবে আমি একটি প্রশ্ন জিজ্ঞাসা করতে চাই।

উদাহরণস্বরূপ, আমার কাছে বাশ ফাইল রয়েছে ./script, আমি কোনও কমান্ড লাইন টাইপ করার সময় এটি স্বয়ংক্রিয়ভাবে চালিত করতে চাই। একবার কমান্ড লাইন এক্সিকিউট করি pwdতারপরে ইজ এক্সিকিউট হয়ে ./scriptযাবে। আমি একবার পরবর্তী কমান্ড লাইন টাইপ করুন ls -laতারপর ./scriptআবার কার্যকর করা হবে।


4
আমরা জিজ্ঞাসা করতে পারি: টাইপ করা প্রতিটি আদেশে আপনি কী ধরনের ক্রিয়াটি করতে চান ? এবং এটি কেবল ইন্টারেক্টিভভাবে টাইপ করা ব্যক্তিদের জন্য হওয়া উচিত? বা কোনও স্ক্রিপ্টে কোনও কমান্ডের জন্য? এবং ssh এর মাধ্যমে টাইপ করা কমান্ডগুলি সম্পর্কে কী? ইত্যাদি এটি একটি এক্সওয়াই প্রব্লেম
অলিভিয়ার ডুলাক

উত্তর:


13

আপনার PROMPT_COMMANDপরিবর্তনশীল সেট করতে হবে । থেকে man bash:

PROMPT_COMMAND
              If set, the value is executed as a command prior to
              issuing each primary prompt.

উদাহরণস্বরূপ, /tmp/PCকমান্ড কার্যকর হওয়ার সময়ে এটি বর্তমান তারিখটি লিখবে :

 $ PROMPT_COMMAND="date > /tmp/PC"

1
হ্যাঁ, আমি এটি পেয়েছি .. বেশ দুর্দান্ত সমাধান। (উত্সাহিত)
এন্টার ফান

1
এটা ভুল. কমান্ডটি echo $(date)ঘোষণার সময় সঞ্চালিত হবে, তাই সর্বদা একই সময় (সংরক্ষণ করা) প্রদর্শিত হবে।
হিমাইল

@ হাইমাইল: অবশ্যই আপনি ঠিক বলেছেন, আমি এটি ঠিক করে দিয়েছি
আরকাদিউস দ্রবকিজেক

@ লাকফান যদি এই উত্তরগুলির মধ্যে একটির যদি আপনার সমস্যার সমাধান হয় তবে দয়া করে কিছুক্ষণ সময় নিন এবং বাম দিকে চেক চিহ্নটি ক্লিক করে এটি গ্রহণ করুন। এটি প্রশ্নটিকে উত্তর হিসাবে চিহ্নিত করবে এবং স্ট্যাক এক্সচেঞ্জের সাইটগুলিতে ধন্যবাদ প্রকাশ করার উপায়।
টেরডন

@ হেইমাইল: কেন? ...
আরকাদিউস দ্রবকিজিক

11

আপনি PROMPT_COMMANDপরিবেশের পরিবর্তনশীল সন্ধান করছেন, পরবর্তী প্রম্পটটি দেখানোর ঠিক আগে টার্মিনালে প্রদত্ত প্রতিটি কমান্ড কার্যকর হওয়ার পরে এই ভেরিয়েবলের মান কমান্ড হিসাবে কার্যকর হবে।

উদাহরণস্বরূপ, এটি সেট করুন:

export PROMPT_COMMAND='/path/to/script'

স্ক্রিপ্টটি তৈরি করুন /path/to/script, প্রথমে সম্পাদনযোগ্য।

এখন স্ক্রিপ্ট প্রতিটি কমান্ডের পরে চালানো হবে।

শুধু লক্ষণীয়, আপনি যদি ভেরিয়েবলটি রফতানি করতে না চান অর্থাৎ একটি পরিবেশের পরিবর্তে এটি শেল ভেরিয়েবল বানান, তবে ড্রপ করুন export:

PROMPT_COMMAND='/path/to/script'

থেকে man bash:

PROMPT_COMMAND 
If set, the value is executed as a command prior to issuing each primary prompt.

আমি পেয়েছি, আপনার সহায়তার জন্য আপনাকে অনেক ধন্যবাদ :) (upvated btw)
এন্টার ফান

আপনি কেন ব্যবহার করছেন export?
আরকাদিউস দ্রবকিজিক

@ আরকাদিউসড্র্যাবজাইক exportভেরিয়েবলকে PROMPT_COMMANDপরিবেশের পরিবর্তনশীল করে তুলবে অর্থাৎ চলকটি বর্তমান শেলের সমস্ত শিশু প্রক্রিয়াতে (যেমন সাবসেল) উপলভ্য হবে। আপনি যদি এটি কেবল বর্তমান শেল সেশনে (শেল ভেরিয়েবল) সীমাবদ্ধ রাখতে চান তবে সরান export
হিমাইল

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