මට ඉතිහාසය කඩිනමින් සොයා බලා ප්රති result ලය ක්රියාත්මක කළ හැකිද?
මට ඉතිහාසය කඩිනමින් සොයා බලා ප්රති result ලය ක්රියාත්මක කළ හැකිද?
Answers:
ටයිප් Ctrl Rවිධාන රේඛාවේ දී ඇති අතර පෙර පැවති විධාන ටයිප් කිරීම ආරම්භ කරන්න. ප්රති result ලයක් දර්ශනය වූ පසු Ctrl Rඅනෙක් තරඟ බැලීමට දිගටම පහර දෙන්න . ඔබට අවශ්ය විධානය දර්ශණය වූ විට, ඔබන්නEnter
අතර බව සටහන Ctrl Rප්රකෘතිය වේ, ඔබ අණ අවශ්ය නම්, ( reverse-search-history
) වෙත බැඳී කිරීමට Ctrl Tඔබ පහත සඳහන් සමඟ බව වින්යාස හැකි:
බන්ධනය '' t Ct ": ප්රතිලෝම-සෙවුම්-ඉතිහාසය '
ඔබට කියවිය හැකි වෙනත් කියවීම් බන්ධනය කළ හැකි විධාන රාශියක් තිබේ. bash
මෑන් පිටුව දෙස බලන්න .
අන්තර්ක්රියාකාරී විධාන ඉතිහාසය සෙවීමට සහ ප්රවේශ වීමට බාෂ්ට බොහෝ පහසුකම් ඇත. වඩාත්ම මූලික වන්නේ history
බිල්ඩින් ය. යතුරු ලියනය කිරීම:
$ ඉතිහාසය
සංඛ්යාත්මක දර්ශකයක් සමඟ විධාන ලැයිස්තුවක් මුද්රණය කරයි, වැනි:
$ ඉතිහාසය 1 පැහැදිලි 2 ls -al 3 vim ~ / somefile.txt 4 ඉතිහාසය $
මිච් පෙන්වා දුන් !
පරිදි, ඔබට මෙම විධානයන්ගෙන් ඕනෑම සංඛ්යාවක් ඒවායේ සංඛ්යාත්මක දර්ශකය භාවිතයෙන් ක්රියාත්මක කළ හැකිය .
$! 1
clear
විධානය ක්රියාත්මක කරයි . බිල්ටින් හි ඉතිහාසය තුළම බොහෝ විශේෂාංග ඇත, ඔබට bash
සහ history
මිනිසා පිටුවල තවත් දැක ගත හැකිය .
නිර්මාණකරු භාවිතා කරන විට ඔබට සාපේක්ෂ negative ණාත්මක ඕෆ්සෙට් ද නියම කළ හැකිය !
, එබැවින් ඉහත අපගේ ඉතිහාස ලැයිස්තුව භාවිතා කරමින් vim
, අපට නැවත ක්රියාත්මක කිරීමට අවශ්ය නම් , අපට කළ හැක්කේ:
$! -2
එය මූලික වශයෙන් ඔබ "විධාන දෙකකට පෙර" ධාවනය කළ විධානය ක්රියාත්මක කරන ලෙස බාෂ්ට කියයි. ඉතිහාස ලැයිස්තුවේ පෙර විධානය ක්රියාත්මක කිරීම සඳහා, අපට භාවිතා කළ හැකිය !!
(එය කෙටිමං පමණි !-1
).
මෙම !
designator ඔබ සංඛ්යාත්මකව දිවෙන වන විධාන නියම කිරීමට සීමා නොවන බවයි. විධානයක්bash
ආරම්භ කිරීමට (භාවිතා කිරීමට !
) හෝ විධානය තුළම (භාවිතා කරමින් !?
) පෙළ මත පදනම්ව විධානයක් ක්රියාත්මක කිරීමට ඔබට උපදෙස් දිය හැකි බව hayalci පෙන්වා දුන්නේය . නැවතත්, ඉහත අපගේ උදාහරණ ඉතිහාස ලැයිස්තුව භාවිතා කරමින්, අපට clear
නැවත ක්රියාත්මක කිරීමට අවශ්ය නම් , අප කළ යුත්තේ ටයිප් කිරීම පමණි:
$! cl
සහ ඔබන්න Enter. මොකද vim
? එය එතරම්ම සරල ය:
$!? සමහරක්
හයල්සිගේ ප්රතිචාරයේ වැදගත්ම කරුණ නම් බිල්ඩින් වෙත කැඳවීම shopt
:
$ shopt -s histverify
මෙය විසින් ගැලපෙන විධාන වන පිණිස එම ඉතිහාසය සත්යාපනය සක්රිය වනු ඇත !
, !!
සහ !?
designators අන්ධ ලෙස ක්රියාත්මක නොවන, එහෙත් ඔබ ඔවුන් ක්රියාත්මක පෙර කිසි නපුරක් කරන්නේ සහතික කළ හැකි නිසා, ඒ වෙනුවට විධාන රේඛාව මත පුරවා. ඔබ root පරිශීලකයා ලෙස විධාන ක්රියාත්මක කරන විට මෙය ඊටත් වඩා වැදගත් වේ. මෙම විකල්පය ඔබේ .bashrc
ආරම්භක ගොනුවේ සැකසිය හැකි අතර එමඟින් ඔබ පිවිසෙන සෑම විටම එය සකසා ඇත.
දැනටමත් පෙන්වා දී ඇති පරිදි, මෙම සියලු තොරතුරු bash
මෑන් පිටුවෙන් ලබා ගත හැකිය . සඳහා!, !!, සහ!? නිර්මාණකරුවන්, 9.3 කොටස පුළුල් කිරීම බලන්න .
shopt
bash_profile නොව bashrc තුළට යයි (හෝ පිවිසුම් කවච නොවන ෂෙල් සඳහා එය සක්රීය නොවේ).
විකල්පයක් ලෙස crtl+R, ඔබට ටයිප් කිරීමෙන් ඉතිහාසය සෙවිය හැකිය
!text
මෙය 'පෙළ' වලින් ආරම්භ වන නවතම විධානය සඳහා ඉතිහාසය සොයනු ඇත .
නමුත් වැරදි විධානයක් ක්රියාත්මක වීම වැළැක්වීම සඳහා මෙය ඔබේ .bashrc තුළ තැබීමට මම යෝජනා කරමි.
shopt -s histverify
කිසියම් ඉතිහාස ක්රියාවකින් පසු (වැනි !!:s/prev_text/after_text
), එය ප්රති line ල රේඛාව විධාන විමසුමට තබන පරිදි මෙය බාෂ්ට උපදෙස් දෙයි . එවිට ඔබට විධානය සමාලෝචනය කිරීමට හෝ සංස්කරණය කිරීමට හැකිය, පසුව Enter ඔබන්න.
ඔබට ද කළ හැකිය:
history | grep "stuff"
එය වැනි දෙයක් නැවත ලබා දෙනු ඇත
num stuff
එවිට ඔබට ටයිප් කළ හැකිය
!num
ප්රතිලෝම-සෙවුම්-ඉතිහාසය පුරා ඉතිහාසය-සෙවීම-පසුපසට භාවිතා කිරීමට මම කැමැත්තෙමි. හිටපු ඔබ අණ ක චරිත කිහිපයක් ටයිප් කිරීමට ඉඩ දෙයි නම් සෙවුම් string ටයිප් පළමුව, සොයන්න ප්රධාන පහර විරුද්ධ ලෙස, සෙවුම් යතුර ඔබන්න.
මගේ පද්ධතියේ පෙරනිමියෙන්, එම්පී සහ එම්එන් සමාන කාර්යයන් සමඟ බැඳී ඇති නමුත් ඊතල යතුරු බැඳීමට මම කැමැත්තෙමි:
bind '"\e[A":history-search-backward'
bind '"\e[B":history-search-forward'
මට නියම අන්වර්ථයක් ඇත, h. එය සැබවින්ම "ඉතිහාසය | grep" ය, නමුත් මම පෙර "h විධානය" ඇතුළත් කිරීම් "grep -E -v" සමඟ පෙරහන් කරමි.
alias h="history | grep -E -v '^ *[0-9]+ *h ' | grep "
වැනි භාවිතා
h aliases
2003 less .bash_aliases
HISTIGNORE
.
විශිෂ්ට ලිවීම, ෂෝන්! මම මෙය අදහස් දැක්වීමක තබමි, නමුත් මම කීර්තිමත් කරුණු කිහිපයක් ලැජ්ජා වෙමි. :-)
තවත් ආශ්රිත හා ප්රයෝජනවත් තාක්ෂණයක් වන්නේ වචනයක් වෙනස් කිරීමේදී පෙර විධානයක් ක්රියාත්මක කිරීමේ හැකියාවයි. ඔබ නාමාවලි නාමය ටයිප් කළ බව පවසන්න, නැතහොත් ගොනුවේ නම වෙනස් කිරීමට අවශ්ය යැයි කියන්න:
$ ප්රතිරාවය මගේ නම බොබ් මගේ නම බොබ් $ ^ බොබ් ^ ජෝර්දාන් echo මගේ නම ජෝර්දාන් මගේ නම ජෝර්දාන්
විධානය ක්රියාත්මක වීමට පෙර විධානය පුළුල් කිරීම, ප්රතිස්ථාපනය කිරීම සහ ප්රතිදානය කිරීම සැලකිල්ලට ගන්න, එබැවින් වැරදි විධානය ක්රියාත්මක වන්නේ නම් එය කරන්නේ කුමක්දැයි බැලූ බැල්මට පෙනේ.
Ctrl-r භාවිතා කරමින් ඉතිහාසය හරහා ගමන් කිරීම IMO කරදරකාරී බැවින් ඔබට hh :
https://github.com/dvorka/hstr
එමඟින් විධානය ක්රියාත්මක කිරීම ඇතුළුව සංචලනය වඩාත් සරල, සරල හා කාර්යක්ෂම කරයි:
ctrl + r
දැන් පෙරනිමියෙන් බැඳී ඇත
vi
යතුරු බැඳීම් ( set -o vi
හෝ set editing-mode vi
ඇතුළත $HOME/.inputrc
) භාවිතා කිරීම සඳහා ඔබේ කවචය වින්යාස කර තිබේ නම්, ඔබ විධාන රේඛා ඉතිහාසය හරහා චක්රයට (ඊළඟ) හෝ (පෙර) <Esc>/some-command<Return>
පහර දී පහර දෙන්න .n
Shift-n
CTRL+ RJohn1024 යෝජනා කළ පරිදි + හොඳින් ක්රියා කරයි, නමුත් ඔබගේ මෑත කාලීන විධානයන් බොහෝමයක් සමාන නම් සහ ඒවා සියල්ලම පරිලෝකනය කිරීමට ඉක්මන් ක්රමයක් ඔබට අවශ්ය නම් එය තරමක් වෙහෙසකරය. විකල්පයක් වනුයේ history
:
$ history | grep keyword
මම HSTR වලට කැමතියි නමුත් සමහර විට එය ස්ථාපනය කිරීමට මට නොහැකි බව පෙනේ. ඒ නිසා මම අන්වර්ථයක් ලිව්වේ fzf භාවිතා කරමින් එහි හැසිරීම අනුකරණය කරන ( hx
“ඉතිහාසය ක්රියාත්මක කිරීම” සඳහා)
alias hx='eval $(history | sed "s/^ *[0-9]* *//g" | fzf --tac --tiebreak=index --height=10)'
history
: හොඳයි, ඉතිහාසය ලබා ගන්නsed
: ලැයිස්තුවෙන් අංක තීරුව ඉවත් කරන්න (POSIX)fzf
: මෙහි මැජික්, ඔබ අනොන්ය ලැයිස්තුව, හෝ සමග ඉදිරියට ගමන්-සොයන්න සිනිඳු කිරීමට ඉඩ C-J
හා C-K
සමග විධානය ක්රියාත්මක පසුව, Enter
.--height
: පෙන්වා ඇති පේළි ගණන සකසන්න.--tac
: ආපසු ලැයිස්තුව (ඉතිහාසය සඳහා වඩාත් තාර්කික)--tiebreak=index
: fzf ප්රති .ල යාවත්කාලීන කරන විට ඉතිහාස අනුපිළිවෙල තබා ගන්න