কোনও বাশ ইতিহাসের পরিবর্তনটি পূর্বাবস্থায় ফেলার কোনও উপায় আছে কি?


9

টিপে টিপে, আমি পূর্বে প্রবেশ করা কমান্ডগুলি দিয়ে যেতে পারি। আমি লক্ষ্য করেছি যে আমি যদি তাদের মধ্যে একটির সংশোধন করি তবে তা ইতিহাসকে বদলে দেয়। উদাহরণস্বরূপ, যদি আমি টাইপ করি:

echo a
echo b
echo c
[up][up][backspace]d[ctrl+c]

ইতিহাস এখন দেখায় যে দ্বিতীয় কমান্ড ছিল echo d, ছিল না echo b। আমি কীভাবে echo bইতিহাসে প্রথম রাখব ?

উদাহরণস্বরূপ, বলুন যে আমি অনেকগুলি বিকল্প সহ সত্যই দীর্ঘ কমান্ড চালাচ্ছি। তারপরে আমি এটিকে আবার একটি সামান্য পরিবর্তন দিয়ে চালাতে চাই, তাই আমি ইতিহাসটি সন্ধান করতে ফিরে এলাম, পরিবর্তনটি করতে পারি, কিন্তু তখন বুঝতে পারি যে অন্য কোনও বিকল্পের কথা চিন্তা করেই আসলে এটি পুনরায় চালানোর দরকার নেই পরিবর্তে করতে। তারপরে, আমি ফিরে গিয়ে নিজেকে স্মরণ করিয়ে দিতে চাই যে আমি যে আদেশটি দৌড়েছি তা কী ছিল - তবে অপেক্ষা করুন, ইতিহাসটি এখন ভুল জিনিসটি প্রদর্শন করছে!

এটি খুব কমই সামনে আসে, তবে যখন আমি এটি সত্যিই বিরক্তিকর মনে করি। মূল ইতিহাসটি স্বয়ংক্রিয়ভাবে সংরক্ষণ করার কোনও উপায় আছে?


1
সঙ্গে historyসব কমান্ড দেখতে পারেন। আপনার যা প্রয়োজন তা নির্বাচন করার পরে। আপনি এখন কোন শেল ব্যবহার করছেন?
হাস্তুর

6
আমি এটি পুনরুত্পাদন করতে পারি না। যদি আমি ডি, Ctrl + C টিপুন এবং প্রেস [আপ] এ গ পরিবর্তন আবার, এটা এখনও বলছেন echo c
মার্টিন ভন উইট্টিচ

উত্তর:


6

আপনার মধ্যে রাখার চেষ্টা করুন ~/.inputrc

 set revert-all-at-newline on

কিছু ক্ষেত্রে আপনি এটি ডিফল্ট মান (অফ) -এ খুঁজে পেতে পারেন। মৃত্যুদন্ড কার্যকর হওয়ার পরে ফিরে আসার আগে ইতিহাসের লাইনে সমস্ত পরিবর্তন পূর্বাবস্থায় ফিরিয়ে আনতে
বাধ্য readlineকরা উচিত accept-line। (আরও তথ্য man bash)

সম্পাদনা করুন:
CTRL+c এবং তারপর set revert-all-at-newline onথেকে ঠিক কাজ করে bash-4.3.30

# GNU bash, version 4.3.30(1)-release
# Emacs-mode

echo c
[up][backspace]d[Ctrl+c][up] # you should see echo c

কিন্তু:

echo c
[up][backspace]d[down][Ctrl+r]echo[Ctrl+j][Ctrl+c][up] # you should see echo d

ভাল, এটি আরও ভাল সমাধান। মজার বিষয় হচ্ছে, সিটিআরএল-সি আসলে এটি পরিবর্তিত মান মনে রাখার কারণ ঘটায়, যদিও লাইনটি পুরোপুরি মুছে ফেলা হয় বা ডাউন করা হয় এবং তারপরে এন্টার চাপলে বা অন্য কোনও কমান্ড চালানো ইতিহাস পুনরুদ্ধার করে।
ডিন সেরনেভি

@ ডিয়ানসেরেণীভি: ধন্যবাদ আমিও আপনার কাজের মতো পছন্দ করেছি এবং আমি সিটিআরএল- nanoএও ব্যবহার শুরু করেছি :-)
হাস্তুর ২

4

সাধারণত:

CTRL-a # ENTER

এটা করবো.

আপনি পরিবর্তিত কমান্ডটি কার্যকর করলে মূল কমান্ডটি মনে রাখা হবে। অবশ্যই, আপনি আসলে সম্পাদন করতে চান না, যাতে আপনি এই লাইনের সাথে মন্তব্য করতে পারেন #

আপনার উদাহরণে, তারপর আপনি আপনার ইতিহাসে প্রয়োগ করা হবে: echo a, echo b, echo c, # echo d


1
alt-shift-3আপনার বাশ যদি ব্যবহার করে থাকে তবে আপনি বর্তমান কমান্ড লাইনটি মন্তব্য করতে টিপতে পারেন readline/insert-commentইন man 3 readline(বা man bash) তথ্যের জন্য আরও।
সাইচোই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.