ম্যাক টার্মিনাল যখন একই হয় তখন তারা কেন পরপর দুটি আদেশ মনে রাখে?


10

আমি সম্প্রতি এবং উবুন্টুতে কাজ করার আগে ম্যাক ব্যবহার শুরু করেছি।

ধরুন আমি আমার টার্মিনালে একের পর এক এই কমান্ডগুলি চালাচ্ছি:

python3 main.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py

এখন ধরুন আমি python main.pyআবার দৌড়াতে চাই , তাই আমি আপ কীটি ক্লিক করব। আমাকে উবুন্টুতে কেবল দুবার কিন্তু ম্যাকের উপরে 7 বার ক্লিক করতে হবে।

যদি টানা দুটি কমান্ড একই হয় তবে টার্মিনালের দুটি পৃথক কমান্ডের পরিবর্তে কেবল একটি কমান্ড মনে রাখা উচিত।

আমি কীভাবে ম্যাকস এ এটি ঘটতে পারি?


6
কেবল পেডেন্টিকের কাছে, এটি আসলে ম্যাক টার্মিনাল নয় যা এটি করছে। এটি বাশ, আপনার শেলটি টার্মিনালে চলছে। অনেকগুলি শেল রয়েছে এবং বিভিন্ন স্ক্রিপ্টগুলির সাথে zsh কাস্টমাইজzsh করার জন্য ডিফল্ট শেলটি অন্যরকম কিছু দিয়ে প্রতিস্থাপন করা এবং সাধারণ ।
gman

উত্তর:


13

আপনার নিজের মধ্যে HISTCONTROL এনভায়রনমেন্ট ভেরিয়েবল যুক্ত করা দরকার .bash_profile। আপনার .bash_profileনিম্নলিখিত লাইনে যুক্ত করুন:

export HISTCONTROL=ignoreboth:erasedups

আপনার বাশ সেশনটি বন্ধ করুন এবং পুনঃসূচনা করুন এবং দ্বিধাগুলি চলে যাবে। বিকল্পভাবে, আপনি কেবল একই লাইনটি কার্যকর করতে পারেন এবং এটি সেই সেশনের জন্য কার্যকর হবে (এটি পরীক্ষার জন্য এটি ব্যবহার করুন)।


(টার্মিনালে) এর জন্য ম্যানুয়াল পৃষ্ঠাbash থেকে :

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


4

কেন এমন হয়?

বাশের কমান্ডের ইতিহাসে নকলগুলি হ্যান্ডেল করতে MacOS এবং উবুন্টুকে বাক্সের বাইরে আলাদাভাবে কনফিগার করা হয়েছে। এই কনফিগারেশনগুলি প্রচুর তথাকথিত " ডট-ফাইল " এ সঞ্চয় করা হয়। এগুলি wide / .bash * এর পাশাপাশি সিস্টেম ওয়াইড / ইত্যাদি / প্রোফাইল রূপ ধারণ করে। এই সমস্ত ফাইল আপনার পছন্দ অনুসারে কাস্টমাইজ হতে পারে এবং ইন্টারেক্টিভ শেল, লগইন শেলস, রিমোট শেলস ইত্যাদির মধ্যে পার্থক্য করতে পারে এই ফাইলগুলি একটি নির্দিষ্ট ক্রমে পড়ে এবং নির্দিষ্ট ফাংশন সরবরাহ করে।

ম্যাকোজে একই আচরণ কীভাবে পাবেন?

আপনি যদি কেবল এটির চান তবে "কমান্ড লাইনের সঠিক সদৃশগুলি উপেক্ষা" এর একক কাস্টমাইজেশন আপনি অ্যালানের উত্তরের মতো কিছু নিয়ে যেতে পারেন, উদাহরণস্বরূপ আপনার bash_profile ফাইলটিতে একটি একক লাইন যুক্ত করতে পারেন। এখানে "সঠিক উপায়" ছাড়াও অসংখ্য অপশন রয়েছে।

যদি আপনার বাশের জন্য এটি একমাত্র কাস্টমাইজেশন না হয় তবে এটি সর্বোত্তম বিকল্প নাও হতে পারে:

আরও কয়েকটি নোট:

  • গ্রাফিকাল অ্যাপ্লিকেশনগুলিতে বা শি (বা শ্যাশ হিসাবে আহ্বান জানানো) এর জন্য যে কোনও কিছু উপলভ্য হওয়া উচিত ~ /। প্রোফাইলে থাকতে হবে
  • ~ / .bashrc অবশ্যই কিছু আউটপুট দেবে না
  • লগইন শেলগুলির জন্য কেবল যে কোনও কিছু উপলভ্য হওয়া উচিত /। প্রোফাইলে থাকা উচিত
  • নিশ্চিত করুন যে ~ / .Bash_Lgin বিদ্যমান নেই।

এর মানে হল যে, যখন জিনিষ আরো জটিল পেতে এটা ভাল ধারণা থেকে ছড়িয়ে একাধিক ফাইল মধ্যে customisations, তাদের প্রতিটি বিশেষ এবং অত্যন্ত তাদের বিষয়বস্তুর মধ্যে আদেশ:

সকল exportsসরলীকৃত ভুল নিজস্ব ফাইলে রক্ষিত হতে পারে।

আপনার ব্যবহারকারী ডিরেক্টরিতে মূল হিসাবে বাশ দ্বারা পঠিত একটি ফাইল তৈরি করুন, উদাহরণস্বরূপ .exportsযা এতে রয়েছে:

# Omit duplicates and commands that begin with a space from history.
export HISTCONTROL='ignoreboth'; 

এটি "উত্সাহিত" হওয়া দরকার যাতে ফাইলটি ইন্টারঅ্যাক্টিভ স্টার্টআপে বাশ দ্বারা পড়তে পারে:

সোর্সিং ফাইলগুলি
যদি আপনার কাছে অনেকগুলি শেল কনফিগারেশন থাকে তবে আপনি সেগুলি কয়েকটি সাবফাইলে বিভক্ত করতে এবং আপনার .bashrc থেকে লোড করতে উত্স অন্তর্নির্মিতটি source ~/.exportsএটি যুক্ত করে ব্যবহার করতে পারেন।

বিকল্পভাবে, লোড করার আগে ফাইলগুলি আসলে বিদ্যমান কিনা তা নিশ্চিত করার জন্য

if [ -f ~/.exports ]; then
. ~/.exports
fi

কমান্ডটি বর্তমানে চলমান শেলের প্রসঙ্গে . ~/.exportsউত্স তৈরি করবে ~/.exports

এটি এলিয়াস যোগ করার জন্য বিশেষভাবে কার্যকর, পৃথক ফাইল আপনি পরিবর্তনগুলি করার পরে এগুলি পুনরায় লোড করা সহজ করে তোলে।


2
কীভাবে .exportsপঠিত হয় (উত্সাহিত)?
fd0

1
@ fd0, নিজেই, এটি ম্যাকওএসে উত্সাহিত হয় না। অ্যালানের উত্তর এটি অর্জনের একটি সঠিক উপায়।
ব্যবহারকারী 3439894

এর মান যদি HISTCONTROLসেট করা হয় .bashrcএবং ~/.bashrcএ sourced হয় ~/.bash_profileতারপর কোন প্রয়োজন নেই পরিবর্তনশীল। একটি ইন্টারেক্টিভ লগইন শেল এবং একটি ইন্টারেক্টিভ শেল উভয়েরই ভেরিয়েবল সেট থাকবে। exportHISTCONTROL
fd0

@ fd0 ঠিক: যদি । / যদি আমি বুঝতে না পারি: আমার বক্তব্যটি ছিল অ্যালানের একযোগে পোস্ট করা একটি / এবং রক্ষণাবেক্ষণের জন্য একটি প্রোফাইলে সরবরাহ করা তবে বাকিটি যতটা সম্ভব পরিষ্কার এবং পরিচ্ছন্ন কারণ এটি এমন একটি দৃশ্যের জন্য যেখানে প্রচুর বিকল্প / সেটিংস বিবেচনা করা হয়। উপরের পদ্ধতিটি 'ভুল' হিসাবে আপনি বুঝতে পারছেন বলে আপনার শেষ পয়েন্টটি কোনও যুক্ত করার পরামর্শ বা সংশোধন হিসাবে বোঝানো হয়েছে? এখন, আমি আপনার মতামতটি আমার এবং অ্যালান এর মধ্যে জটিলতার স্তরের মাঝে পড়ি?
LаngLаngС

1

প্রতিটি নতুন কমান্ড অবিচ্ছিন্নভাবে রেকর্ড করা জটিল is প্রথমে আপনাকে যুক্ত করতে হবে ~/.profileবা অনুরূপ:

HISTCONTROL=erasedups
PROMPT_COMMAND='history -w'

তারপরে আপনাকে যুক্ত করতে হবে ~/.bash_logout:

history -a
history -w
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.