প্রায়শই ব্যবহৃত আদেশগুলি কীভাবে দ্রুত সঞ্চয় এবং অ্যাক্সেস করবেন?


37

আমার নিয়মিতভাবে সম্পাদন করা দরকার এমন অনেকগুলি কমান্ড রয়েছে, প্রায়শই সামান্যতম প্রকরণের সাথে।

এগুলি অ্যাক্সেস করার জন্য এই মুহুর্তে আমি সেগুলি সবগুলিতে সংরক্ষণ করছি .bash_historyএবং ব্যবহার করছি CTRL- Rতবে আমি আরও অবাক করছি যে এর থেকে আরও ভাল উপায় আছে কিনা। আমি যা খুঁজছি:

  • নতুন কমান্ড যুক্ত করা সহজ
  • একটি ওয়ান্টেড কমান্ডটি অনুসন্ধান এবং পুনরায় কার্যকর করা সহজ
  • পরামর্শগুলিতে অযাচিত আদেশগুলি এড়িয়ে চলুন

দুর্ভাগ্যক্রমে, bash_history তৃতীয় দাবিতে এতটা শক্তিশালী নয়: আমি যদি কিছু করি cdএবং ls, এটি ইতিহাসের ফাইলটি দ্রুত পূরণ করে। আমি সম্প্রতি শিখেছি HIST_SIZEএবং নকল বা নির্দিষ্ট কমান্ডগুলি এড়াতে আপনি ইতিহাসটি কনফিগার করতে পারেন তবে সেগুলি কনফিগার করার আগে আমি নিশ্চিত করতে চেয়েছিলাম যে এটি সর্বোত্তম উপায়।


7
দৈনন্দিন আদেশের জন্য, aliasসম্ভবত আরও দরকারী useful যেমন। alias gfc="git fetch origin"
সংখ্যা

উত্তর:


20

আমি নীচের রিডলাইন কমান্ডগুলি খুব দরকারী বলে মনে করি

history-search-backward,
history-search-forward

(সচেতন তারা স্বাভাবিক থেকে ভিন্ন হতে reverse-search-history, forward-search-history, বাঁধা Ctrl- R, Ctrl- S)।

আমার সাথে এই কমান্ডগুলি যুক্ত রয়েছে Ctrl- Upএবং Ctrl- Downনীচের লাইনগুলি এতে রেখে ~/.inputrc:

"\e[1;5A": history-search-backward
"\e[1;5B": history-search-forward

তারা কীভাবে কাজ করে: কমান্ডের শুরুতে কয়েকটি অক্ষর লিখুন, টিপুন Ctrl- Upএবং সেই উপসর্গ দিয়ে শুরু হওয়া পরবর্তী পুরানো কমান্ডটি প্রদর্শিত হবে, পরবর্তীটি দেখতে আবার টিপুন এবং আরও কিছু। আপনি যখন সন্তুষ্ট হন, সম্ভবত কমান্ডটি সংশোধন করার পরে, Enterকার্যকর করতে টিপুন ।


1
এটির জন্য +1, আমি কেবল এটিই করি যদিও আমার কাছে কেবল এগুলি আপ তীর এবং ডাউন তীর কী (কোনও সিটিআরএল সংশোধক নয়) আবদ্ধ, যা আমার পক্ষে কাজ করে। আপনি কি করতে চান তাহলে একইভাবে লাইন আপনার যা দরকার হয় "\e[B": history-search-forwardএবং"\e[A": history-search-backward
সাইমন হুইটেকার

আপনার বাফার যথেষ্ট পরিমাণে বড় হয়েছে তা নিশ্চিত করার জন্য ক্রমবর্ধমান HISTFILESIZEএবং / বা HISTSIZE(zsh কেবল সমর্থন করে HISTSIZE, ব্যাশ উভয় সমর্থন করে) বিবেচনা করুন। সুতরাং প্রশ্ন ব্যাশ হিস্টিজ বনাম হিস্টফিলিজ? আরও আলোকিত করতে পারে।
আদম কাটজ

56

অন্য টিপ: আমি মাঝে মাঝে কোনও আদেশ বুকমার্ক / ট্যাগ করতে মন্তব্যগুলি ব্যবহার করি:

my_command #bookmark

তারপর:

[ctrl-r]#bookmark

ভাল লাগবে!
গ্রেগ

17
Bashtags! জিনিয়াস। :-)
সাইমন হুইটেকার

খুব সুন্দর! আমি এটি আমার
মাইএসকিএল

এটা দারুণ! দুর্ভাগ্যক্রমে, zshell # একটি ইন্টারেক্টিভ সেশনে একটি মন্তব্যের শুরু হিসাবে বিবেচনা করে না। এর জন্য অনুরূপ কৌশল সম্পর্কে জানেন?
নাথান লং

1
@NathanLong: $_bookmark। এটি যুক্তিযুক্ত হতে পারে যে এটি একটি ভয়াবহ হ্যাক এই সত্যটি কাজে লাগিয়েছে যে অস্তিত্বের পরিবর্তনশীলগুলি কিছুতেই প্রসারিত হয় না, তবে এটি অবশ্যই কার্যকরভাবে কাজ করে, স্পষ্টতই অনুমতি দেওয়া হয়নি (পরিবর্তে _ এর ব্যবহার করুন)।
কাম্পু

7

যদিও খুব সীমিত সুযোগ, আমি এই দুটি সম্প্রসারণ স্থানধারককে নির্দেশ করতে চাই:

!! 

শেষ কমান্ডের জন্য একটি স্থানধারক সম্প্রসারণ। আপনি যদি sudoকমান্ডের সামনে রাখতে ভুলে যান তবে দরকারী ।

!$ 

শেষ পরামিতি পুনরাবৃত্তি। আপনি যদি একটি পৃথক কমান্ডের সাথে পুনরাবৃত্তি করতে চান তবে দরকারীa/very/long/path/name/you/do/not/want/to/type/again


হ্যাঁ, দুর্দান্ত টিপ ... যদি কেবল সেগুলি ব্যবহার করতেই আমার মনে পড়ে :) :)
জয়

6

'ওরফে' ব্যবহার করুন

alias এটির জন্য একটি দুর্দান্ত সরঞ্জাম।

  • বর্তমান শেল সেশন চলাকালীন কমান্ড লাইনে আপনি সহজেই একটি ঘোষনা করতে পারেন।
  • আপনি যদি ভবিষ্যতে এটি ব্যবহার করেন তবে আপনি এটি আপনার শেল কনফিগারেশনে যুক্ত করতে পারেন।

আপনি যখন কোনও নাম ব্যবহার করেন, ঠিক এটির মতো আপনি এটি টাইপ করেন, সুতরাং এটি বেশ নমনীয়। উদাহরণস্বরূপ, আপনি এটি পাইপ দিয়ে ব্যবহার করতে পারেন:

alias findfoo="grep 'foo'"
echo 'foo1 \n foo2 \n bar1 \n bar2 \n foo3' | findfoo # Does your custom grep

আপনি ইতিমধ্যে নির্দিষ্ট করে নেই এমন কোনও পতাকা পেরিয়ে আপনার "সামান্য প্রকরণ" করতে সক্ষম হবেন।

echo 'foo1 \n foo2 \n bar1 \n bar2 \n foo3' | findfoo -v # finds non-matches

5

আমি আমার ঘন ঘন কমান্ডগুলির জন্য নূন্যতম শেল স্ক্রিপ্ট তৈরি করি এবং তাদের সংক্ষিপ্ত নাম রাখি। এগুলি সমস্ত একই জায়গায় সংরক্ষণ করা হয়, যা যুক্ত করা হয় PATH

এইভাবে আমার খুব জটিল কমান্ডের শর্টকাট অ্যাক্সেস রয়েছে এবং aliasআমি আমার কাজের পরিবর্তনশীল অংশগুলিকে আমার শর্টকাটের কমান্ড লাইন আর্গুমেন্টে পরিণত করতে পারি unlike


3
আপনি যদি কেবল যুক্তিগুলি পাস করতে চান তবে পরিবর্তে কার্যকারিতা সংজ্ঞায়িত করুন। আপনার যদি পূর্ণ স্ক্রিপ্টগুলির প্রয়োজন হয় তবে এটি একটি ভাল সমাধান :)
Konerak

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

4

আমি গিটে .bash_history এর একটি অনুলিপি রক্ষণ করছি । এটি সহজ করার জন্য, আমি সেট করেছি

# don't put duplicate lines in the history
# don't save commands which start with a space
HISTCONTROL=ignoredups:erasedups:ignorespace

# append to the history file, don't overwrite it
shopt -s histappend

মধ্যে .bashrc , এবং নিম্নলিখিত কমান্ড একটি (সাধারণ ব্যবহারের জন্য পরিবর্তিত) পরিষ্করণ স্ক্রিপ্ট

# Ensure a single space at the end of each line to easier add more parameters
sed -i -e 's/ *$/ /' "~/.bash_history"

sort --unique --output="~/.bash_history" "~/.bash_history"

যা আমি লাইন যুক্ত করার আগে চালাচ্ছি git gui। যেহেতু ইতিহাস ফাইলটি প্রতিটি কমান্ডের সাথে সংশোধিত হয়েছে, তাই আমি সেই নির্দিষ্ট সংগ্রহস্থলটি আপডেট করার জন্য একটি বিশেষ কমান্ড পেয়েছি:

git stash && git pull && git stash pop

+1 প্রাথমিকভাবে উল্লেখ করার জন্য HISTCONTROL=ignorespace, যা ইতিহাসকে বিশৃঙ্খলা না করার জন্য গুরুত্বপূর্ণ, কখনও কখনও।
কোডলিবেটর

2

ইতিহাস জড়িত অন্যান্য সমস্ত উত্তরগুলির মধ্যে।

আমি সেট

HISTFILESIZE=2024
HISTSIZE=1024

~ / .bash_profile এ

অন্যান্য মন্তব্য ছাড়াও আবার: ইতিহাস

আর একটি দরকারী বৈশিষ্ট্য ...

একটি ইতিহাস স্মরণ সঙ্গে শুরু

!first few letters<ESC>Ctrl-E

প্রথম কয়েকটি অক্ষর দিয়ে শুরু করা শেষ আদেশটি মনে করবে all

উদাহরণ:

!find<ESC>Ctrl-E

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


বাহ, !find<ESC>CTRL-Eকাজ করে, তবে আমি সন্দেহ করি যে আমি কাল এটি স্মরণ করতে সক্ষম হব। সেই ইসি সিটিআরএল-ই কী?
কোনারাক

কেবল একটি বর্ধিত কী
বাধ্যতা

0

ব্যবহার করতে শেখা Ctrl-Rএবং Ctrl-Sসহজে কমান্ডগুলি আপনাকে ইতিহাসে খুঁজছেন জন্য অনুসন্ধান করতে অনুমতি দেয়, এবং আপনি ইতিমধ্যে সদৃশ উপেক্ষা করুন এবং ব্যাশ ইতিহাস ফাইলের সাইটে পরিবর্তন করতে HISTCONTROL এনভায়রনমেন্ট ভেরিয়েবল পাওয়া যায় নি।

আমি সাধারণত অনেকগুলি Ctrl-Rঅনুসরণ করি Ctrl-Eএবং কিছু প্যারামিটারগুলি পরিবর্তন করি, যদি আমি উদ্ধারকালে Ctrl-Rখুব বেশি বার আঘাত করে একটি সন্ধানকারী কমান্ডটি এড়িয়ে যায় Ctrl-S


2
প্রায়শই tty এমনভাবে সেটআপ করা হয় যে Ctrl-S "স্টপ" ক্রম হয় এবং সামনের দিকে অনুসন্ধানের জন্য (সরাসরি) উপলব্ধ হয় না।
এনজোটিব

এই ধরনের ক্ষেত্রে <kbd> Ctrl-S </kbd> ব্যতীত অন্য কোনও কিছুতে ফরোয়ার্ড অনুসন্ধান পুনরায় করা যেতে পারে।
ইভেজেনি


0

উপরের ভাল উত্তরগুলি ছাড়াও, আপনি যদি কেডি বা জিনোমের উপর ভিত্তি করে কোনও গুই ব্যবহার করছেন, তবে অটকে আশ্চর্যজনকভাবে সহায়ক হতে পারে।

https://code.google.com/p/autokey/

এটি আপনাকে এমন কয়েকটি বাক্যাংশ তৈরি করতে দেয় যা কয়েকটি অক্ষরে টাইপ করে বা হটকি চেপে ট্রিগার করা হয়। এই বাক্যাংশগুলি পরে প্রতিস্থাপন করা হয় বা আপনার ইনপুটটিতে যুক্ত করা হয়।

এটি পাইথনটিতে লিখিত স্ক্রিপ্টগুলি সমর্থন করে যা অজগরটি জানলে আপনি প্রায় কিছু করতে পারেন। আমি পাইথন এখনও জানি না, তবে ঝরঝরে জিনিসগুলি করার জন্য আমি ইতিমধ্যে কয়েকটি প্রাথমিক স্ক্রিপ্ট পেয়েছি।

আপনার কীবোর্ড থেকে সমস্ত কিছু আসবে বলে মনে হচ্ছে, তাই এটি কোনও অ্যাপ্লিকেশনের সাথে কাজ করে যা কীবোর্ড ইনপুট গ্রহণ করে - এবং নিজেই আপনার ডেস্কটপের সাথে।

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


0

অন্যরা যেমন বলেছেন যে ওরফে আপনার বন্ধু। আরও কিছু জটিল জিনিসের জন্য (যখন আপনাকে নির্দেশের মধ্যে কোথাও যুক্তি প্রয়োজন) আমি আমার .zshrc এ ফাংশন ব্যবহার করি, যেমন:

function ff() { find . -iname "*$**" }

এটি সনাক্ত করার মতো কাজ করে (কোনও কারণে ডিবির জন্য উপলব্ধ না হলে আমি এটি ব্যবহার করি)। অথবা

function chuck() { ps aux | grep $1 | tr -s '\t' ' ' | cut -f2 -d' ' | xargs kill $2 }

কিল্লার বিকল্পের জন্য।


0

Cntl-Rপিছনে ফিরে তাকানোর জন্য অতিরিক্ত ব্যবহার করার জন্য .bash_history, আমার কাছে ~/developডিরেক্টরিতে একটি README ফাইল রয়েছে যেখানে আমি git/ এর জন্য দীর্ঘ কমান্ডগুলি svnরেখেছি, সুতরাং যখন আমার প্রয়োজন হবে আমি পরে তাদের কাছে ফিরে আসতে পারি। একইভাবে, ~/install/READMEলিনাক্স / উবুন্টুর নতুন সংস্করণ ইনস্টল করার পরে আমি সাধারণত ইনস্টল করা সমস্ত সাধারণ প্যাকেজ নাম রাখার জন্য একটি ফাইল রাখার পরিকল্পনা করছি । সুতরাং ধারণাটি হ'ল প্রতিটি ডিরেক্টরিতে যেমন README ফাইল থাকা উচিত, যেমন ভিডিও, অডিও, ... এবং সেগুলিতে সাধারণ কমান্ড / টিপস রাখুন, যাতে আপনার পরবর্তী সময়ে জানা দরকার।

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