তীর কীগুলি ব্যবহার না করে আমি কীভাবে শেষ কমান্ডটির পুনরাবৃত্তি করব?


115

আমি জানি আমি Upআগের কমান্ডগুলির মাধ্যমে পুনরাবৃত্তি করতে পারি । চলমান গত কমান্ড কেবল জড়িত Up+ + Enter। তবে আমি প্রচুর সময় ব্যয় করায় হ্যাপি হ্যাকিং কীবোর্ডটি কেনার কথা ভাবছিলাম vim

এই কীবোর্ডটির কোনও তীরচিহ্ন নেই, এবং এই জাতীয় আচরণটি কীভাবে করা যায় তার একমাত্র উপায় Ctrl+ টিপুন Rএবং আমার পূর্ববর্তী কমান্ডটি পুনরাবৃত্তি করা শুরু করা।

ইউনিক্স টার্মিনালে তীর কীগুলি ব্যতীত Up+ অনুকরণ করার কোন সহজ উপায় আছে Enter?


1
আপনার ব্যবহৃত শেলটি দিয়ে টার্মিনাল ট্যাগটি প্রতিস্থাপন করা উচিত ।
ক্রিশ্চিয়ান সিউপিতু

2
@ ইলুমিন- মাউস নেই ...
কোয়ান্ট

2006 সালে কি হ্যাপি হ্যাকিং কীবোর্ড বন্ধ ছিল না ?
পিটার মর্টেনসেন

@ পিটারমোরটেনস এখনও এটি উপলভ্য নয়। আপনি প্রথম সংস্করণটি উল্লেখ করছেন, তবে আরও নতুন মডেলগুলি উপলভ্য থাকবে।
কোয়ান্ট

উত্তর:


164

সঙ্গে cshবা কোনো শেল বাস্তবায়ন csh-একটি ইতিহাস প্রতিকল্পন ( tcsh, bash, zsh):

!!

তারপরে Enter


বা বিকল্পভাবে :

!-1

তারপরে Enter


বা Ctrl+ P,Enter


যাদু স্থান

এছাড়াও, এটি নোট করুন !!এবং !-1আপনার জন্য স্বয়ংক্রিয়ভাবে প্রসারিত হবে না, যতক্ষণ না আপনি এগুলি সম্পাদন করেন (যখন এটি খুব দেরী হতে পারে)।

তাহলে ব্যবহার bash, আপনি লাগাতে পারেন bind Space:magic-spaceমধ্যে ~/.bashrc, তারপর টিপে Spaceকমান্ড পর তাদের ইনলাইন স্বয়ংক্রিয় প্রসারিত হবে, আপনি সঞ্চালনের আগে তাদের পরিদর্শন করতে সক্ষম হবেন। কিছুক্ষণ আগে চালানো কমান্ড থেকে ইতিহাস বিস্তারের জন্য এটি বিশেষভাবে কার্যকর, উদাহরণস্বরূপ !echoশেষ কমান্ড রান টানা শুরু করবে echo। ম্যাজিক স্পেস সহ, আপনি কমান্ডটি চালানোর আগে পূর্বরূপ পাবেন।

যে করছেন সমতুল্য bindkey ' ' magic-spaceমধ্যে tcshবা zsh


1
@ আরমান খুশী ইতিহাসের সম্প্রসারণ কমান্ডগুলির একটি সম্পূর্ণ প্রচুর পরিমাণ রয়েছে; লিঙ্কটি তাদের কয়েকটি তালিকাভুক্ত করে। আমি যাদু স্থান সম্পর্কে কিছু তথ্য সম্পাদনা করেছি যা এর কয়েকটি ব্যবহারে সহায়তা করতে পারে।
স্পারহক

3
magic-spaceএটি একটি মিষ্টি বিকল্প!
fduff

1
এর রয়েছে histverifyকরার অপশন shoptযা readline কারণ ইতিহাস সম্প্রসারণ সম্পাদন করতে কিন্তু Enter কী প্রথম টেপার কমান্ড প্রয়োগ করা হবে না। যা আপনাকে ফলাফলটি মূল্যায়ন করতে এবং সিদ্ধান্ত নিতে দেয় যে আপনি এটি চালাতে চান কিনা।
এটান রিজনার

2
কখনই বুঝিনি কেন !! সিটিআরএল-পি এর চেয়ে অনেক বেশি ব্যবহৃত হয়। সিটিআরএল-পি আপনাকে এটি কার্যকর করার আগে কমান্ডটি দেখতে দেয় - এবং আপনি এটিতে পরিবর্তনও করতে পারেন। আমি সবসময় মনে করি আমি সাথে পাশা ঘূর্ণিত করছি !!
অগনিত

1
@ অ্যাবনেট আরেকটি ব্যবহারের জন্য যা আমি সন্ধান পেয়েছি !!তা হ'ল জায়গায় জায়গায় এর সম্প্রসারণটি ব্যবহার করা । উদাহরণস্বরূপ sudo !!
স্পারহাক

50

কমান্ড লাইন সম্পাদনা বৈশিষ্ট্যযুক্ত বেশিরভাগ শেলগুলি ইমাক্স কী বাইন্ডিংগুলিকে সমর্থন করে। (একটি ক্ষুদ্র উপসেট)

Up     Ctrl+P
Down   Ctrl+N
Left   Ctrl+B
Right  Ctrl+F
Home   Ctrl+A
End    Ctrl+E
Delete Ctrl+D

বিকল্পভাবে, আপনি set -o viনিজের শেল স্টার্টআপ ফাইলটিতে (যেমন, ~/.bashrc) ভিআই কমান্ড সম্পাদনা মোড ব্যবহার করতে আপনার শেল সেট আপ করতে পারেন । তারপরে, উদাহরণস্বরূপ, আপনি পারেন

  • EsckEnter পূর্ববর্তী কমান্ডটি পুনরায় কার্যকর করতে ব্যবহার করুন (একই !!)) বিয়োগ কীটি -"মুভ আপ" কমান্ড হিসাবেও কাজ করে।
  • পূর্ববর্তী 12 তম আদেশটি (একই ) পুনরায় কার্যকর করতে ব্যবহার করুন EsckkkkkkkkkkkkEnter বা ব্যবহার করুন ।Esc12kEnter!-12
  • ব্যবহার করুন Escএবং একটি মোশন কমান্ড (যেমন, kযথাযথভাবে পুনরাবৃত্তি করা) এবং তারপরে আপনি সেখানে পাওয়া বাশ কমান্ড লাইনটি সম্পাদনা করুন। মনে রাখবেন আপনি যদি এখনও করা হবে, viকমান্ড মোড যাতে আপনি আপনার ব্যবহার করতে হবে vi(যেমন সম্পাদনা কমান্ড I, A, C, R, বা তাদের ছোট হাতের প্রতিরূপ এক) প্রকৃতপক্ষে কমান্ড ইতিহাস থেকে যোগ করতে।
    সুতরাং, উদাহরণস্বরূপ, EsckisudoSpaceEnterসমতুল্য sudo !!
  • উন্নত ব্যবহারকারীদের জন্য: আপনি এমনকি কপি করতে পারেন ( Y ANK) এক লাইন এবং পেস্ট (থেকে টেক্সট পি হিসাবে) এটিকে অন্য, তাই আপনি তুলনীয় ফলাফল সাধন করতে পারেন !-2:- !$। (দুর্ভাগ্যক্রমে, এটি নামযুক্ত বাফারগুলিকে সমর্থন করে বলে মনে হয় না))

টার্মিনালের সাথে ইমাসের সম্পর্ক সম্পর্কে আমি জানতাম ... তবে viকৌশলটি দুর্দান্ত ছিল !!!
ডক্স

আমি deleteZsh এ Ctl + u এর জন্য পেয়েছি
টিমো

1
এটি রিডলাইন গ্রন্থাগার দ্বারা প্রয়োগ করা হয়েছে। এর ডকুমেন্টেশনে আরও শর্টকাট পাওয়া যেতে পারে।
স্পাইডি

28

আমার প্রিয় এক CTRL+ Pতারপর CTRL+O

এটি ডিফল্টরূপে কাজ করে, কোনও অতিরিক্ত কনফিগারেশন প্রয়োজন নেই। ^ P আপনাকে শেষ কমান্ডে স্যুইচ করতে দেবে এবং ^ O আপনাকে বর্তমান লাইনটি কার্যকর করতে দেবে

নোট করুন যে CTRL+ Oআপনার পছন্দ হিসাবে যতবার ব্যবহার করা যেতে পারে


2
^ ও আমার ম্যাকটিতে কিছু করে না।
স্নো ক্র্যাশ

1
@ স্নোক্র্যাশ চেষ্টা করুন^J
ডেইজি

এটি কেবল একটি ফাঁকা রেখা প্রতিধ্বনিত করে এমনকি আমি একটি lsবা এর pwdআগেও করেছি ।
স্নো ক্র্যাশ

@ স্নোক্র্যাশ এটি ^ পি এর পরে ^ জে ...
ডেইজি

Ctrl + P এইচপি-ইউএক্সে কাজ করে না (আমি জানি না এটি কোন শেল ব্যবহার করছে)। কর্মক্ষেত্রটি `zsh 'রচনা করা।
পিটার মর্টেনসেন

15

নিশ্চিত! যেহেতু আপনি কী- viবাইন্ডিংগুলিতে অভ্যস্ত, তাই আপনার শেলটি তাদের প্রতিক্রিয়া জানাতে কনফিগার করবেন না কেন? কারণ bashএটি আপনার মধ্যে রাখুন ~/.inputrc:

set editing-mode vi

ব্যাশের চলমান দৃষ্টান্তগুলি ফাইলটি পুনরায় পড়বে না, তাই লগ আউট করে ফিরে।

zshএমনকি এটি আপনার জন্য সনাক্ত করতে পারে: আপনার কোনও স্টার্টআপ স্ক্রিপ্ট যদি একরকম বা অন্যটি ব্যবহার করে সম্পাদনা মোডে চাপ দেয় না bindkey এবং যদি আপনার $EDITORপরিবেশের ভেরিয়েবলটি সনাক্ত করা যায় vi, তবে এটি স্বয়ংক্রিয়ভাবে viকীবাইন্ডিং সক্ষম করবে । আপনার যদি এটি জোর করার প্রয়োজন হয় তবে এটি আপনার ~/.zshrc:

bindkey -v

এরপর, ব্যবহার ESCকমান্ড লাইন লিখুন এবং যথারীতি kএবং jনিচে উপরে উঠানো এবং।

এছাড়াও : বেশিরভাগ শেলের মধ্যে ডিফল্ট শেল বাইন্ডিংগুলি হ'ল ইম্যাক্স বাইন্ডিংস, সুতরাং বাস্তবে Crtl-Pএবং Ctrl-Nআপনাকে কোনও পরিবর্তন না করেই ইতিমধ্যে কাজ করা উচিত।


9

কোনো POSIX শেল বাস্তবায়নের সঙ্গে ব্যবহারকারী পোর্টেবিলিটি বিকল্প (অন্তর্ভুক্ত ksh, zsh, bash, yash), তবে আপনাকে ব্যবহার করতে পারেন fcকমান্ড প্রয়োগ করুন:

fc -e : -1

একটি উদাহরণ দেখুন:

$ echo "hello"
hello

$ fc -e : -1
echo "hello"
hello

জোনাথন লেফলারের ইতিহাসের উত্তর থেকে আরও কিছু কমান্ড কার্যকর করা হয়েছে More


6

আপনার সকল ম্যাক iterm2 ব্যবহারকারীদের জন্য:

আপনি + বেঁধে রাখতে Rপারেন 0x0C 0x10 0x0d। এটি টার্মিনালটি সাফ করবে এবং শেষ কমান্ডটি চালাবে।

এটি 2 কী পছন্দসমূহ


টার্মিনাল সাফ না করে শেষ কমান্ডটির পুনরাবৃত্তি করার কোনও উপায় আছে কি?
লুক ডেভিস

আহ, কিছুই নয়: যে কেউ এটি পড়ছেন, টার্মিনাল সাফ না করে পুনরাবৃত্তি করতে ব্যবহার করুন 0x10 0x0d(অর্থাত্ বাদ দিন 0x0C)।
লুক ডেভিস

5

আমি দেখতে পাই যে প্রায়শই সুপার ব্যবহারকারী হিসাবে কমান্ডগুলি পুনরায় করা দরকার

sudo !!

পূর্ববর্তী কমান্ডটি আবার করায় যেন আমি sudoপ্রথম স্থানে টাইপ করার কথা মনে রেখেছি ।


2
আমি সত্যিই এটি পছন্দ করি, "অনুমোদন অস্বীকৃত" এর প্রতিও একটি ভাল প্রতিক্রিয়া বলে মনে হচ্ছে। "মানে সুডো এফএফএস!"
ভিক্টর মেলগ্রেন

3

kshশেল একটি ডিফল্ট ওরফে হয়েছে rযে সাম্প্রতিকতম কমান্ড পুনরাবৃত্তি। এটি আবদ্ধ fc -s:

alias r='fc -s'

মজার বিষয় হচ্ছে, বিল্টিনের ( এবং ম্যানুয়াল নিজে থেকেই) bashডকুমেন্টেশনেও এটি উল্লেখ করা হয়েছে তবে এটি শেলের কোনও ডিফল্ট নাম নয়:fchelp fc

এটির সাথে ব্যবহার করার জন্য একটি দরকারী নাম r='fc -s', যাতে টাইপিং r cc শেষ কমান্ডটি দিয়ে শুরু হয় ccএবং টাইপ করা rশেষ কমান্ডটি পুনরায় কার্যকর করে।

ইন bash, ইতিহাসের প্রসারকে বন্ধ করে দিলেও এটি কাজ করবে set +H

ইন zshশেল, একটি হল rbuiltin যে একই হতে নথিভুক্ত করা fc -e -

fcইউটিলিটি একটি POSIX মান ইউটিলিটি


2

সঙ্গে cshবা কোনো শেল বাস্তবায়ন csh-একটি ইতিহাস প্রতিকল্পন ( tcsh, bash, zsh), তবে আপনাকে ব্যবহার করতে পারেন !<beginning of command>ফোন করতে গত কমান্ড দিয়ে শুরু <beginning of command>

উদাহরণস্বরূপ যদি আপনি দৌড়েছিলেন

$ tail file.txt
$ less otherfile.txt
$ !ta

!ta মৃত্যুদন্ড কার্যকর করা হবে tail file.txt


1

tl; dr !!স্রেফ আপনার বর্তমান কমান্ডটিতে শেষ কমান্ড যুক্ত করে। <backtick>!!<backtick> শেষ কমান্ড কার্যকর করে এবং আপনার বর্তমান কমান্ডে আউটপুট যুক্ত করে।

আসলে 2 টি রূপ রয়েছে:

  1. শেষ আদেশ নিজেই
  2. শেষ আদেশের ফলাফল

আমি আপনাকে 2 টি উদাহরণ দেখাব:

উদাহরণ 1

$ mkdir /test
mkdir: /test: Permission denied

$ sudo !!
sudo mkdir /test
Password:

আপনি উপরের মত দেখতে, আমি একটি কমান্ড চালাচ্ছি এবং মূলত শেষ কমান্ড সংযোজন।

অন্য একটি প্রকরণ

উদাহরণ 2

$ find ~/Documents "test.txt"
/Users/<user>/Documents/test.txt

$ vi `!!`
# Opens test.txt. But if you do
$ vi !!
vi find ~/Documents -name "test.txt"
VIM - Vi IMproved 8.1 (2018 May 18, compiled Oct 29 2018 06:55:58)
Unknown option argument: "-name"
More info with: "vim -h"

জন্য +1 vi `!!`। খুব দরকারী
লে_ডেইম

0

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


0

আপনি !nটার্মিনালে nth কমান্ড কার্যকর করতে ব্যবহার করতে পারেন । যেখানে 'এন' হ'ল historyকমান্ডের লাইন নং ।


কোন শেল !?শেষ কমান্ড প্রসারিত ? আপনি কি নিশ্চিত যে আপনি এটি মেশাচ্ছেন না !!(যা ইতিমধ্যে অন্যান্য উত্তরে coveredাকা পড়েছে)?
অ্যান্টনি জিওগেইগান

দুঃখিত, আসলে আমি এই সময় এই আদেশটি পরীক্ষা করছিলাম। সম্পাদিত উত্তর চেক করুন। @AnthonyGeoghegan
রবি Sevta

এই শর্টকাটটি আমি খুঁজছিলাম। ধন্যবাদ!
লে_ডেইম

0
  • ইতিহাস টাইপ করুন এবং যে কমান্ডটি কার্যকর করতে এবং ব্যবহার করতে চান তার সামনে নম্বরটি নোট করুন !number

  • এছাড়াও আপনি ব্যবহার করতে পারেন ! -1 (1 গত কমান্ড আপনাকে চালানো হচ্ছে, গণনা সংখ্যা আপনি গত 1 যেমন মৃত্যুদন্ড কার্যকর পালন নীচের থেকে এটা করতে পেতে সঙ্গে এটি প্রতিস্থাপন)

  • ! -2 (দ্বিতীয় শেষ এবং তাই)

0

বেশ কয়েকটি স্তর রয়েছে যাতে আপনি সর্বশেষ আদেশটি জানতে চাইতে পারেন।

লাইন সম্পাদক

লাইন সম্পাদক (যেখানে আপনি আপনার আদেশগুলি টাইপ করেন) সরাসরি ksh, বাশ লাইব্রেরি রিডলাইন দ্বারা এবং zsh এ লাইব্রেরি zle দ্বারা সরবরাহ করা হয়। অন্যান্য শেল, যেমন ড্যাশগুলিতে এই কীগুলি বোঝার জন্য কোনও সম্পাদনা গ্রন্থাগার নাও থাকতে পারে ( --with-libeditঅপশনটি সক্ষম না করে সংকলিত না হলে )।

Ksh, bash, zsh এ এই কাজ:

Ctrl- P# ইম্যাকস মোড (পূর্ববর্তী)
Ctrl- N# ইমাক্স মোড (পরবর্তী)
ESC- k # ভিআই মোড ESC কমান্ড মোডে যেতে হবে এবং k আপ আপ করতে হবে
ESC- j # vi মোড ESC কমান্ড মোডে যাবে এবং j ডাউন ডাউন হবে

ইতিহাস

অনেকগুলি শেল সরবরাহিত ইতিহাস ব্যবস্থা কিছু শর্টকাটগুলির প্রসারিত করতে দেয়:

!!    # bash and zsh, may be provided by `alias \!\!='fc -e -'` in ksh.
!-1   # bash and zsh only

কমান্ড

কিছু কমান্ড রয়েছে যা ইতিহাসের আদেশগুলি পুনরুদ্ধার করতে সক্ষম।

বেশ ভার্বোজ কমান্ডের মতো (কেবল মুদ্রণের জন্য):

history 2 | head -n-1

বা পুরানো এবং অতএব সাধারণত আরও বহনযোগ্য fcকমান্ড (সরাসরি পুনরায় কার্যকর করা):

fc -e - -1

অথবা হতে পারে সহজতর fc -s -1, তবে zsh fc এর জন্য এই জাতীয় বিকল্প গ্রহণ করে না।

আপনি যদি কেবল কমান্ডটি মুদ্রণ করতে চান তবে : ব্যবহার করুন fc -nl -1 -1

সম্পাদনা করতে, সেট FCEDITএকটি টেক্সট এডিটর (উদা, ইডি, Emacs, ষষ্ঠ, ইত্যাদি) এবং সরাসরি এফসি ব্যবহার করুন: fc -1

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