ব্যাশ স্ক্রিপ্ট থেকে ইতিহাস কল করার সময় "সীমার বাইরে ইতিহাস অবস্থান"


0

আমি থেকে একটি লাইন মুছে ফেলার জন্য একটি সহজ স্ক্রিপ্ট করতে চান bash_history, লাইন নম্বর ব্যবহারকারী ইনপুট উপর ভিত্তি করে।

echo -n "Delete History Line Number: "
read num
history -d $num

ত্রুটি হল "ইতিহাসের সীমার বাইরে অবস্থান" (যা এটি হওয়া উচিত নয়, আমি ব্যাপ্তির মধ্যে একটি সংখ্যা ব্যবহার করছি)।

কেন এই কাজ না?


1
আপনি যদি নির্দিষ্ট সমস্যাটি বর্ণনা করেন তবে স্ট্যাক ওভারফ্লোে এর মতো একটি প্রশ্ন উত্তর দেওয়া হবে।
gparyani

আপনি একটি ত্রুটি আউটপুট পেয়েছেন? যদি তাই হয়, বিশেষ করে কি?
nerdwaller

ত্রুটিটি "সীমার বাইরে ইতিহাস অবস্থান" (যা এটি হওয়া উচিত নয়, আমি পরিসরের মধ্যে একটি সংখ্যা ব্যবহার করছি)
Adam

1
আপনি ধাঁধা সমাধান করার জন্য bash এর উৎস পড়তে হবে।
ott--

কেন এই প্রশ্ন জিজ্ঞাসা উপযুক্ত জায়গা নয়? এটি নির্দিষ্ট এবং সংক্ষিপ্ত এবং এখানে তালিকাভুক্ত সমস্ত নির্দেশিকা পূরণ করতে মনে হচ্ছে: superuser.com/about
Adam

উত্তর:


5

আপনার স্ক্রিপ্ট উদ্দেশ্য হিসাবে কাজ করবে না কেন দুটি কারণ আছে:

  1. চলমান স্ক্রিপ্টের জন্য বিশ পরিবেশটি "অ-ইন্টারেক্টিভ" এবং এর ইতিহাস বৈশিষ্ট্যগুলি সক্ষম নেই।
  2. চলমান স্ক্রিপ্টের জন্য বশ পরিবেশটি আপনি ইন্টারেক্টিভভাবে কাজ করছেন এমন পরিবেশ থেকে আলাদা।

আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে নির্বাহ করার পরিবর্তে স্ক্রিপ্টটিকে উৎস করার সবচেয়ে সহজ সমাধান হতে পারে। দেখ এস এস পোস্ট sourcing এবং নির্বাহের পার্থক্য ব্যাখ্যা আরও তথ্যের জন্য.


0

উৎস পদ্ধতির মাধ্যমে তার কাজ,

আমার source_file.sh ধারণ করা

# cat /root/source_file.sh
#!/bin/bash
history -d $1

এবং আমার master_file.sh নিচে লাইন আছে

# cat /root/master_file.sh
#!/bin/bash
if [ "$1" == "" ]; then
echo -e "Enter command number from history(syntax: source script_name.sh xxxx)"
else
source /root/source_file.sh && echo -e "Line number $1 removed successfully"

ফাই

আমরা এখন স্ক্রিপ্ট পরীক্ষা করতে পারেন,

# source /root/master_file.sh
Enter command number from history(syntax: source script_name.sh xxxx)

ঠিক আছে লাইন নম্বর যোগ করুন

# history | tail -n 10
 1193  grep disable /etc/sysconfig/selinux
 1194  grep enforce /etc/sysconfig/selinux
 1195  sestatus
 1196  arch
 1197  uname -r
 1198  uname -a
 1199  history
 1200  history | tail -n 10
 1201  pwd
 1202  history | tail -n 10

চলুন লাইন 1196 মুছে ফেলুন

# source /root/master_file.sh 1196
Line number 1196 removed successfully

# history | tail -n 10
 1194  grep enforce /etc/sysconfig/selinux
 1195  sestatus
 1196  uname -r
 1197  uname -a
 1198  history
 1199  history | tail -n 10
 1200  pwd
 1201  history | tail -n 10
 1202  source /root/master_file.sh 1196
 1203  history | tail -n 10
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.