ব্যাশ স্ক্রিপ্টের ভিতরে চলাকালীন "ইতিহাস" কাজ করা বন্ধ করে দেয়


9

আমি একটি নির্দিষ্ট স্ট্রিং সন্ধানের জন্য আমার বাশ ইতিহাসকে গ্রেপ করার জন্য একটি সাধারণ স্ক্রিপ্ট লিখছি। কমান্ড লাইনে, আমি নিম্নলিখিতটি করতে পারি, যা ভাল কাজ করে:

history | grep git

যাইহোক, যখন আমি উপরের মতো একই কমান্ডের সাহায্যে একটি বাশ স্ক্রিপ্ট তৈরি করি, হঠাৎ historyকিছুই প্রত্যাবর্তন করে না:

#!/bin/bash
history | grep git

আমি যখন প্রথম লাইনটি সরিয়ে ফেলি তখন #!/bin/bashআমার স্ক্রিপ্ট আবার কাজ করে। এখানে কি হচ্ছে? আমি কীভাবে historyব্যাশ স্ক্রিপ্টের ভিতরে ব্যবহার করতে পারি ?

উত্তর:


8

নিম্নলিখিতটির জন্য bash 4.0 or higher only, তবে এটি কৌশলটি করে। :)

#!/bin/bash -i
history | grep sometext

কাজ করে! চেষ্টা কর. ( -i= আমি স্পর্শকাতর, একটি পতাকা বাশ 3.x এবং এর আগে উপলভ্য নয় )


ধন্যবাদ সেই বধূকে যারা সম্প্রতি আমাকে হ্রাস করেছে কেবল কারণ সে। (সম্ভবত bashহতাশার বাইরে, কোনও ভি 3 ব্যবহারকারী) কমপক্ষে মার্টিনের জন্য আমার সমাধানটি খুব সহায়ক হয়েছিল, এটি (কমপক্ষে) এক আরামের।
সিনট্যাক্সারর

24/7 সাপোর্ট ইঞ্জিনিয়ারদের জন্য অফিস-ঘন্টা সময় কাজ করতে এমন একটি সরঞ্জাম লিখতে গিয়ে আমার একই প্রশ্ন ছিল .. ধন্যবাদ!
হেনরি ভ্যান মেগেন

14

আপনি যখন বাশ শেল স্ক্রিপ্টটি চালান, উদাহরণস্বরূপ একটি এক্সিকিউটেবল ফাইল চালিয়ে যাঁর শেবাং লাইন থাকে #!/bin/bash, স্ক্রিপ্টটি একটি অ-ইন্টারেক্টিভ শেলটিতে চালিত হয়। অ-ইন্টারেক্টিভ শেলের একটি বৈশিষ্ট্য হ'ল ইতিহাস অক্ষম। সুতরাং আপনি যদি চান যে আপনার স্ক্রিপ্টটি ইতিহাস ব্যবহার করতে সক্ষম হয়, আপনার এ জাতীয় কিছু করা দরকার:

#!/bin/bash
HISTFILE=~/.bash_history   # Or wherever you bash history file lives
set -o history             # enable history
history | grep git

অবশ্যই, এই ক্ষেত্রে আপনি সবেমাত্র করতে পারতেন:

grep git ~/.bash_history

যেহেতু উপরের উভয়ের উভয়ের জন্য ইতিহাসের ফাইল ( ~/.bash_history) আপ টু ডেট হওয়া দরকার যা এটি প্রায় অবশ্যই হবে না।

শেবাং লাইনটি সরানোর পরে আপনি কীভাবে আপনার স্ক্রিপ্টটি চালাবেন তা আমি নিশ্চিত নই। ফাইলটি সোর্সিং (উদাহরণস্বরূপ, সহ .) স্ক্রিপ্ট চালানোর মতো নয় কারণ বর্তমান শেলটিতে কমান্ডগুলি চালিত হয় যা ইতিহাস সক্ষম করে।


history -aসর্বশেষ কমান্ডগুলি প্রথমে ফাইলটিতে যুক্ত করা হয়েছে তা নিশ্চিত করার জন্য সেট কমান্ডের ঠিক পরে কী করবেন ?

4
@ আলোকিত: সাহায্য করবে না won't স্ক্রিপ্টটি চালনার জন্য শেলটি সম্পূর্ণ পৃথক প্রক্রিয়া; এটি একটি খালি ইতিহাস দিয়ে শুরু হয়।
ধনী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.