බෑෂ් ඉතිහාස සෙවීම, අර්ධ + ඉහළ ඊතලය


160

මම සෙව්වා, නමුත් මේ ගැන කිසිවක් සොයාගත නොහැකි විය. මම පර්යන්තයක් භාවිතා කරමින්, බාෂ් හි ක්‍රියාකාරීත්වයක් සොයමි.

ආපසු හැරී බලන විට, මට ඩෙබියන් පද්ධතියක පරිශීලකයෙකු සිටි අතර, මිතුරෙකු මට පහසු ඉතිහාස සෙවුම් අංගයක් ලබා දුන්නේය (මම එවකට tcsh භාවිතා කළ බව විශ්වාස කරමි), එහිදී මම පෙර විධානයක ආරම්භය ටයිප් කර, ඊතලය පහර දෙන්න, එය අර්ධ නූල් මත පදනම්ව සෙවීමක් කරනු ඇත.

උදා: මගේ ඉතිහාසය නම්:

./script.pl
./script.pl arg1
cat output
cat output | grep yada

මම යතුරු ලියනය .කර ඊතලය එබීමෙන් එය මට පෙන්වනු ඇත : ./script.pl arg1. එය නැවත ඔබන්න, එය පෙන්වනු ඇත ./script.pl.

එය grep.bash_history මත සිදු කරනු ඇත. මෙම ක්‍රියාකාරීත්වය ලබා ගැනීමට ක්‍රමයක් තිබේද?



1
Ar මාර්සල් පෙනෙන්නේ එය එකම පිළිතුරක් විය හැකි බව, මම එය සෙවුමේදී දුටුවෙමි, නමුත් එය මගේ ප්‍රශ්නයට අයිපයිතන් සහ ෂෙල් මූල පද සමඟ සම්බන්ධ නොකළෙමි.
TLP

මේ වගේ ශබ්ද - github.com/zsh-users/zsh-autosuggestions .
slm

Answers:


214

ඔබේ විවෘත කරන්න ~/.inputrc. ඔබට මෙම ගොනුව නොමැති නම්, එය නිර්මාණය කරන්නේ කෙසේද යන්න සඳහා අවසානය බලන්න. මෙම රේඛා එක් කරන්න:

## arrow up
"\e[A":history-search-backward
## arrow down
"\e[B":history-search-forward

ආරම්භ වන රේඛා #අදහස් දැක්වීම් වේ. පසුගාමී දේ සහ ඉදිරියට යන දේ මට මතක නැත. එය අත්හදා බලන්න. සමහර විට ඔබට පසුපසට හා ඉදිරියට යා යුතුය.

නව හැසිරීම .ලදායී වීමට විවෘත ටර්මිනල් කවුළු නැවත විවෘත කරන්න.


ටිකක් පසුබිම් තොරතුරු:

කඩිනමින් හැසිරවීමට බාෂ් කියවීම් රේඛාව භාවිතා කරයි. ~/.inputrcකියවීමේ රේඛාව සඳහා වන වින්‍යාස ගොනුව වේ. මෙය කියවීම් රේඛා පුස්තකාලය භාවිතා කරන වෙනත් මෘදුකාංගවල ද ක්‍රියාත්මක වන බව සලකන්න, උදාහරණයක් ලෙස IPython .

කියවීම් රේඛාව පිළිබඳ වැඩි විස්තර සඳහා bash අත්පොත කියවන්න . එහිදී ඔබට ඉතිහාසය හා සම්බන්ධ තවත් කියවීම් විධාන සොයාගත හැකිය .

ඊතල යතුරු සඳහා ගැලවීමේ කේත ලබා ගැනීම සඳහා ඔබට පහත සඳහන් දෑ කළ හැකිය:

  1. catපර්යන්තයකින් ආරම්භ කරන්න (යන්තම් cat, තවත් තර්ක නැත).
  2. යතුරුපුවරුවේ යතුරු ටයිප් කරන්න, ඔබට ^[[Aඉහළ ඊතලය සහ ^[[Bපහළ ඊතලය වැනි දේ ලැබෙනු ඇත .
  3. ^[සමඟ ප්රතිස්ථාපනය කරන්න \e.

ඔබට දැනටමත් ~/.inputrcගොනුවක් නොමැති නම් , පෙරනිමි සැකසුම් පිටපත් කරන්න, නැතහොත් අනෙක් සියලුම පෙරනිමි යතුරු බන්ධන අභිබවා යනු ඇත:

cp /etc/inputrc ~/.inputrc

හෝ ~/.inputrcපහත දැක්වෙන පේළියෙන් ඔබේ ගොනුව ආරම්භ කරන්න

$include /etc/inputrc

4
නියමයි, නමුත් මෙම විසඳුම ctrl-left / ctrl-right කෙටිමං අක්‍රීය කරයි.
ඊයල්

කාටහරි මට කියන්න පුළුවන්ද මම කොහොමද මේක හදන්නේ කියලා
හිතේෂ් කුමාර්

@lesmana, මම බළලුන්ගේ කොටස සඳහා පමණක් අමතර ලකුණු ලබා දෙමි
මයික් ඩී

Ial ඊයාල්, මට මෙය ලබා ගත හැකි නමුත් ctrl-left / ctrl-right කෙටිමං ආරක්ෂා කර ගන්නේ කෙසේද යන්න පිළිබඳව යමෙකුට උපදෙස් තිබේද?
kbrose

9
සියලු පෙරනිමි සංරක්‍ෂණය කිරීම සඳහා $include /etc/inputrc, පළමු පේළියේ එකතු කිරීම වඩාත් සුදුසුය.
ටියුලියෝ කැසග්‍රැන්ඩේ

32

පහත දැක්වෙන අන්තර්ගතයන් සමඟ /etc/profile.d/ හි 644 මාදිලිය සමඟ setup_readline.sh නමින් ගොනුවක් සාදන්න, පුරනය වී ඔබ කැමති යතුරු පරීක්ෂා කරන්න:

bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

මම හිතන්නේ මෙය කිරීමට හොඳම ක්‍රමයයි. බොහෝ විට ඔබ අරක්කැමි, රූකඩ වැනි වින්‍යාස කළමනාකරණ පද්ධති භාවිතා කරන්නේ නම්

පද්ධති වින්‍යාසය තවමත් ස්පර්ශ කර නැත!


4
නියමාකාරයෙන් ~ / inputrc මට වැඩ කළේ නැත - නමුත් මෙම විධානයන් .bash_profile තුළට දැමීම.
ජෝ

1
.inputrc මගේ නිවසේ ෆෝල්ඩරයේ නොපවතින අතර කෙසේ හෝ .bashrc හි මේ ආකාරයේ සැකසුම් තිබීමට මම කැමැත්තෙමි, එබැවින් මගේ සැකසුම් සඳහා එක් ගොනුවක් පමණ ගෙන යා හැකිය. එබැවින් මෙය වඩා හොඳ පිළිතුරක් නම් පසුව පිළිගත් පිළිතුරකි.
ෂිටාල් ෂා

.inputrc මා වෙනුවෙන් විශිෂ්ට ලෙස ක්‍රියා කරයි, නමුත් මම පැටවූ පසු නොවේ screen. අමුතුම දෙය නම්, වෙනත් .inputrc කෙටිමං ක්‍රියා කරයි, නමුත් මේවා නොවේ. ඒ නිසා මම දැන් විසඳුම් දෙකම භාවිතා කරමි.
ඕවල්ලොෆිල්

නිදසුනක් ලෙස, ඔබ යම් දෙයක් කිරීමට සේවාදායකයකට පිවිසෙන විට මේවායින් මඟ හැරී යන විට මෙය ඉතා ප්‍රයෝජනවත් වන අතර සේවාදායකයේ ~ / .inputrc සංස්කරණය කර නැවත පූරණය කිරීමට අවශ්‍ය නොවේ.
danmactough

14

Ctrl + R මඟින් ඔබට මෙවැනි ක්‍රියාකාරීත්වයක් ලබා දෙනු ඇත. අර්ධ විධානයක් ටයිප් කිරීම අරඹන්න, එය ඔබට ඉහළ සහ පහළ ඊතල සමඟ සැරිසැරීමට හැකි පැරණි ඒවා සමඟ පැමිණෙනු ඇත. වැඩි විස්තර: http://www.nuxified.org/blog/ctrl_r_in_the_bash_shell


2
ඔබගේ පිළිතුරට ස්තුතියි. ඔව්, මම එය අත්හදා බැලුවෙමි, නමුත් මම එය ටිකක් සොයා ගතිමි. අර්ධ වශයෙන් ආරම්භ වන විධාන හරහා අනුචලනය කිරීමට එය මට ඉඩ නොදේ, එය පෙන්වන්නේ පළමුවැන්න පමණි. එය අක්ෂර සඳහා සම්පූර්ණ විධානයම සොයන අතර එය කිසිසේත්ම නිෂ් .ල ය.
TLP

5
@TLP, නැවත පහර දීමCtrl+r
akostadinov

4

මගේ විශ්වාසනීය 14.04 යටතේ මා විසින් නිර්මාණය කළ යුතු ~ ~.

shopt -s histappend  
PROMPT_COMMAND='history -a'  

එය දැනටමත් ප්‍රංශ භාෂාවෙන් https://doc.ubuntu-fr.org/terminal?&#pour_completer_les_commandes_a_partir_de_l_historique හි විස්තර කර ඇත .


3
මෙම විධානය මූලික වශයෙන් උපදෙස් දෙන්නේ සැසිය අවසන් වන තෙක් බලා සිටීම වෙනුවට ඉතිහාස ගොනුවට වහාම විධානය එකතු කරන ලෙසයි. ඔබට බොහෝ පර්යන්ත විවෘතව ඇති අතර ඉතිහාසය ලිහිල් කිරීමට අවශ්‍ය නැති නමුත් අවශ්‍ය නොවේ නම් එය ප්‍රයෝජනවත් වේ. Digitalocean.com/community/tutorials/…
Shah

3

සමහර විට ඔබට https://github.com/dvorka/hstr උත්සාහ කිරීමට අවශ්‍ය විය හැකි අතර එය ප්‍රමිතික මත පදනම්ව (කවදාද, කොපමණ වාර ගණනක් සහ විධාන වැදගත්ද යන්න) - ඔබට භාවිතා කළ හැකිය ඉතිහාසය පහසුවෙන් සැරිසැරීමට ඊතල යතුරු:

රූප විස්තරය මෙහි ඇතුළත් කරන්න

එය ඉතා පහසුවෙන් කළ හැකි බැඳී කිරීමට Ctrl-rසහ / හෝCtrl-s


2

පහත දැක්වෙන විසඳුම ඉහත සඳහන් කළ ප්‍රවේශයන් කිහිපයක් ඒකාබද්ධ කර විස්තාරණය කරයි: පහත දැක්වෙන හැසිරීම සාක්ෂාත් කර ගැනීම සඳහා පහත දැක්වෙන රේඛා ඔබේ ~/.bash_aliasesගොනුවට එක් කරන්න (අවශ්‍ය නොවේ ~/.inputrc):

  1. CTRL + UP සහ CTRL + DOWN එබීමෙන් ඉතිහාසයේ ඉහළට / පහළට ගමන් කරන්න (එකම උපසර්ගයක් සහිත ඇතුළත් කිරීම් පමණි). යූපී සහ ඩවුන් හරහා පමණක් සම්පූර්ණ ඉතිහාසයේ ඉහළට / පහළට ගමන් කිරීමේ සම්මත ක්‍රියාකාරිත්වයට මෙය සමපාත විය හැකිය
  2. CTRL + RIGHT සහ CTRL + LEFT එබීමෙන් විධාන රේඛාවක ඊළඟ / පෙර වචනයට යන්න
bind '"\e[1;5A":history-search-backward'
bind '"\e[1;5B":history-search-forward'
bind '"\e[1;5C":forward-word'
bind '"\e[1;5D":backward-word'

source ./bash_aliasesවෙනස්කම් යෙදීම සඳහා කවචයට නැවත පිවිසෙන්න (හෝ ධාවනය කරන්න ).


1

ඉහත සඳහන් කළ @lesmana ට සමාන විකල්පයක් ඇත, නමුත් ඔබට නව .inputrc ගොනුවක් සෑදිය යුතු නැත.

ඒ වෙනුවට, ඔබට sudo අවසර තිබේ නම්, ඔබට මෙය / etc / inputrc ගොනුවේ සක්‍රීය කළ හැකිය. මෙම ගොනුවේ ඉතිහාසය සෙවීමේ අංගය ඇතුළුව විවිධ යතුරුපුවරු සැකසුම් ඇත (අවම වශයෙන් 18.04 සඳහා). / Etc / inputrc වෙතින් උපුටා ගැනීම:

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

සුඩෝ ලිපිගොනු සංස්කාරකයක් භාවිතා කරමින් පහළ පේළි දෙක ඉවත් කරන්න (උදා: $ sudo vim), සහ නව පර්යන්ත සැසියකට ඉතිහාස සෙවුම් අංගයක් ඇත (සියලුම පරිශීලකයින් සඳහා). මේ ආකාරයෙන්, ඔබට ~ / .inputrc ගොනුවක් සෑදීම ගැන කරදර විය යුතු නැත, $includeඔබේ ctrl-arrow ආදාන ආරක්ෂා කර ගැනීම සඳහා අදහස් දැක්වීමේදී සඳහන් කර ඇති ulTulio Casagrande ලෙස ප්‍රකාශයක් එක් කිරීමට ඔබට අවශ්‍ය නොවේ .

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.