ඉතිහාසයෙන් එක් පේළියක් ඉවත් කරන්නේ කෙසේද?


231

මම මැක් ඕඑස්එක්ස් හි වැඩ කරමින් සිටිමි, එබැවින් මම අනුමාන කරන්නේ මම බාෂ් භාවිතා කරනවාද ...?

සමහර විට මම ඉතිහාසයේ මතක තබා ගැනීමට අකමැති දෙයක් ඇතුළත් කරමි. මම එය ඉවත් කරන්නේ කෙසේද?


Answers:


394

වැළැක්වීමේ පියවර

ඉතිහාසයේ සුරැකීමකින් තොරව විධානයක් ක්‍රියාත්මක කිරීමට ඔබට අවශ්‍ය නම්, එය අමතර ඉඩක් සමඟ සූදානම් කරන්න

prompt$ echo saved
prompt$  echo not saved \
> #     ^ extra space

මෙය ක්රියාත්මක කිරීම සදහා ඔබ එක්කෝ අවශ්ය ignorespaceහෝ ignorebothදී HISTCONTROL. උදාහරණයක් ලෙස, ධාවනය කරන්න

HISTCONTROL=ignorespace

මෙම සැකසුම නොනවත්වා කිරීමට, එය ඔබගේ තුළට දමන්න .bashrc.

පශ්චාත් මරණ පරීක්ෂණ පිරිසිදු කිරීම

ඔබ දැනටමත් විධානය ක්‍රියාත්මක කර එය ඉතිහාසයෙන් ඉවත් කිරීමට අවශ්‍ය නම් පළමුව භාවිතා කරන්න

history

ඔබගේ ඉතිහාසයේ විධාන ලැයිස්තුව පෙන්වීමට. ඔබට මැකීමට අවශ්‍ය අංකයට යාබද අංකය සොයාගෙන (උදා: 1234) ධාවනය කරන්න

history -d 1234

මීට අමතරව, ඔබට මැකීමට අවශ්‍ය රේඛාව දැනටමත් ඔබේ $ HISTFILE වෙත ලියා තිබේ නම් (සාමාන්‍යයෙන් ඔබ සැසියක් පෙරනිමියෙන් අවසන් කරන විට සිදු වේ), ඔබට නැවත $ HISTFILE වෙත ලිවීමට අවශ්‍ය වනු ඇත, නැතහොත් ඔබ නවයක් විවෘත කරන විට රේඛාව නැවත දිස්වනු ඇත. වාරය:

history -w

එය ක්‍රියාත්මක විය. මම හිතන්නේ අපි එය වෙනස් කිරීමෙන් පසු source / .bashrc ලබා ගත යුතුයි ...
B Seven

@Beven ඔව්, bashකවචය ක්‍රියාත්මක වන විට සියලුම සැකසුම් RAM තුළ ගබඩා කර ඇත. මෙම rcගොනු ඉදිරි කාලය ෂෙල් ආරම්භ කිරීම සඳහා දිගටම පවතින සැකසුම් ගබඩා කිරීම සඳහා පමණි.
jw013

මෙය ක්‍රියාත්මක නොවන විට දාර අවස්ථා තිබේ, නමුත් පෙරනිමි වින්‍යාසයන් යටතේ එය කළ යුතුය.
ජෝර්දාන්

ordjordanm ඔබ කතා කරන්නේ කුමන අද්දරද? ඒවා මෙහි ලැයිස්තුගත කිරීම වටී ද?
jw013

3
W jw013 මම history -aසාමාන්‍ය වින්‍යාසය යටතේ පිටවීම වෙනුවට PROMPT_COMMAND ලෙස සකසා ඇත්තෙමි . නිශ්චිතවම: mywiki.wooledge.org/BashFAQ/088
jordanm

55
  1. ඔබගේ සියලු ඉතිහාසය ඉවත් කිරීමට, භාවිතා කරන්න

    history -c
  2. තනි පේළියක් මකා දැමීමට, භාවිතා කරන්න

    history -d linenumber

9

මා සතුව මෙය ඇත ~/.bashrc, එමඟින් විධානය මඟින් $ forgetපෙර විධානය ඉතිහාසයෙන් මකා දැමිය හැකිය

function forget() {                                                              
   history -d $(expr $(history | tail -n 1 | grep -oP '^ \d+') - 1);              
}

එය ටිකක් සංකීර්ණ බව පෙනේ. නැහැ history -d $( history | tail -n 1 | cut -f 1 -d " " )සරල විය?
seumasmac

1
history | tail -n1යනු historyවිධානයම වන බැවින් එම අංකය මකා දැමීමෙන් වැරදි ඇතුළත් වේ. කෙසේ වෙතත්, history -d $( history | awk 'END{print $1-1}' )රේඛා තේරීම, ක්ෂේත්‍ර තේරීම සහ අඩු කිරීම ඒකාබද්ධ කරයි.
dave_thompson_085

පෝටින් සමඟ zshell කිරීමට යමෙකුට උදව් කළ හැකි අවස්ථාවක් තිබේද?
ඇලෙක්ස් එස්

5

ඔබට සෑම විටම ~/.bash_historyඑක් ප්‍රවේශයක් හෝ එක් ප්‍රවේශයකට වඩා ඉවත් කිරීමට අවශ්‍ය විට ප්‍රයෝජනවත් වන ප්‍රවේශයන් සංස්කරණය කර ඉවත් කළ හැකිය


2
ඔබ කවචයෙන් පිටවන විට බොහෝ විට මෙම ඇතුළත් කිරීම් නැවත හඳුන්වා දෙනු ඇත.
l0b0

මෙය අනවශ්‍ය ලෙස අවශ්‍ය ප්‍රමාණයට වඩා ඉවත් කිරීමට හෝ ෂෙල් වින්‍යාසගත කර ඇති ආකාරය මත පදනම්ව කිසිවක් ඉවත් නොකිරීමට ඉඩ ඇත.
කුසලනන්ද

5

ඔබට සම්පූර්ණ බැෂ් සැසිය අමතක කිරීමට අවශ්‍ය නම්, ඔබට killවත්මන් බැෂ් ක්‍රියාවලිය කළ හැකිය. විචල්‍යය වත්මන් කවචයේ $$රඳවා ඇති බැවින් pidඔබට මෙය කළ හැකිය:

kill -9 $$

මෙය ලියා ඇති ඉතිහාසය සැලකිල්ලට නොගනී $HISTFILE.
කුසලනන්ද

Us කුසලානන්ද ඔබ වහාම ලිවීමට විශේෂ පියවර ගෙන නොමැති නම් $HISTFILEමෙය ක්‍රියාත්මක විය යුතුය. මා සැලකිල්ලට ගත් එකම අදහස එයයි $HISTFILE. ඔබ සැලකිලිමත් වීමට හේතු වන (මගේ යෝජනාව සමඟ) ඔබට ඇති අත්දැකීම් මොනවාද?
බ un නෝ බ්‍රොනොස්කි

පරිශීලකයා ඇතුළු කළ දෙය පෙර සැසියක නම්, වත්මන් කවචය killing ාතනය කිරීමෙන් ඉතිහාස ගොනුවෙන් එක දෙයක් ඉවත් නොවේ. එසේම, මම පරිපාලකවරුන් විසින් පෙරනිමි සැකසුම වෙනස් කර ඇති පද්ධතිවල සිටිමි, එවිට සෑම විධානයකටම පසුව ඉතිහාස ගොනුවට විධාන ලියා ඇත. වත්මන් පරිශීලකයාගේ සැකසුම ගැන අපි කිසිවක් නොදනිමු.
කුසලනන්ද

Us කුසලනන්ද ඔබේ ප්‍රකාශය සත්‍යයකි. කෙසේ වෙතත්, අතීතයේ සම්පූර්ණ කරන ලද ක්‍රියාවලියක ප්‍රති result ලයට බලපෑම් කිරීමට උත්සාහ කරන වර්තමාන ක්‍රියාවලිය kill ාතනය කිරීමට කිසිවෙකු උත්සාහ නොකරනු ඇතැයි මම බලාපොරොත්තු වෙමි. එය අපේක්ෂා කිරීම තර්කානුකූල නොවේ. නමුත් එය ඔබගේ මුල් අදහස් දැක්වීමට තරමක් වෙනස් වාක්‍ය ඛණ්ඩයක් යෝජනා කරයි. "මෙම නැත බලපාන බව ඉතිහාසය විය $ HISTFILE ලියා පෙර සැසිවාරයට ." වෙනත් වචන වලින් කිවහොත්, "මෙම සංකල්පය යහපත් වන්නේ තත්වය වළක්වා ගැනීමට මිස එය නිවැරදි කිරීමට නොවේ." පැහැදිලි කිරීම ගැන ස්තූතියි මිතුරා.
බ un නෝ බ්‍රොනොස්කි

හොඳයි, එය $HISTFILEවත්මන් සැසියේදී ලියා ඇති ඉතිහාසයට බලපාන්නේ නැත, එබැවින් එම ප්‍රකාශය වැරදි ලෙස අර්ථකථනය කරන්නේ කෙසේදැයි මම නොදනිමි. ඔබේ පිළිතුරට ඔබ එකතු කළ යුතු එකම දෙය නම් දී ඇති විසඳුම ගැටළුව විසඳන උපකල්පන ය. ඇත්ත වශයෙන්ම ඇත්තේ එක් උපකල්පනයක් පමණි, එනම් ඉතිහාසයෙන් ඉවත් කළ යුතු විධානය තවමත් ලියා නැත $HISTFILE. එවිට ඔබ කුමක් කොන්දේසි ආඥාව යටතේ විස්තර සඳහන් කිරීමට ඔබට අවශ්ය විය හැක බව සටහන් කර ඇත $HISTFILE.
කුසලනන්ද

0

ඔබ ඉතිහාසය හිස් කළ පසු වෙනස්කම් ලිවිය යුතුය. ඔබේ ඉතිහාසය තුළ ඉතිහාසය පිසදැමීමේ විධානය ලබා ගැනීමට ඔබ අකමැති නම්, ඔබ එවැනි විධානයක් ක්‍රියාත්මක කළ යුතුය:

history -c && history -w && logout

වාසනාව.


0

ඉතිහාස ගොනුවෙන් තනි පේළියක් ඉවත් කිරීමට, -d විකල්පය භාවිතා කරන්න. උදාහරණයක් ලෙස, ඉහත අවස්ථාවෙහිදී මෙන් ඔබට පැහැදිලි-මුරපදය ඇතුළත් කළ විධානයක් ඉවත් කිරීමට අවශ්‍ය නම්, ඉතිහාස ගොනුවේ පේළි අංකය සොයාගෙන මෙම විධානය ක්‍රියාත්මක කරන්න.

$ history -d 2038

Bash ඉතිහාසයෙන් සියලුම ඇතුළත් කිරීම් මකා දැමීමට හෝ ඉවත් කිරීමට, -c විකල්පය සමඟ පහත ඉතිහාස විධානය භාවිතා කරන්න.

$ history -c

විකල්පයක් ලෙස, ගොනුවේ ස්ථිරවම අවසන් වරට ක්‍රියාත්මක කරන ලද සියලුම විධානයන්හි ඉතිහාසය මකා දැමීමට ඔබට පහත විධානය භාවිතා කළ හැකිය.

$ cat /dev/null > ~/.bash_history

Bash 5 සමඟින්, ඔබට පරාසයක් මකා දැමිය හැකිය

history -d 511-520


1
history -d line අංකය මට වැඩ කළේ නැත. මම මැක් පාවිච්චි කරනවා.
විමසිලිමත්

ඔබට කර ask ු ස්ථාපනය ජම්ප් කට් සෑදිය යුතුය, නැතිනම් මෙය
ශූරයා වන

0

1- බැෂ් ටර්මිනල් වර්ගයේ

history # මෙය ඉතිහාසයේ සියලුම විධාන ලැයිස්තුගත කරනු ඇත .bash_history ගොනුව රේඛා අංක සමඟ

උදා:

  ...
  987  cd
  988  ssh x@127.0.0.1
  990  exit
  991  cd

2- ඔබට මැකීමට අවශ්‍ය CMD රේඛා අංකය තෝරන්න

history -d 988

සටහන: ඔබට අවසාන CMD 3 මකා දැමීමට අවශ්‍ය නම්, පහළ ex: 988 වෙතින් තුන්වන පේළියේ අංකය තෝරා CMD history -d 988අනුපිළිවෙලින් 3 වතාවක් නැවත කරන්න .


යූ ඇන්ඩ් එල් වෙත සාදරයෙන් පිළිගනිමු! මෙය සැබවින්ම පිළිගත් පිළිතුරට සමානයි (අඛණ්ඩ විධාන මකා දැමීම පිළිබඳ යෝජනාව හැර). එය පුනරාවර්තනය අඩු කිරීමට ඔබට එකතු කළ හැකි යමක් තිබේද?
fra-san

කණගාටුයි, නැත, බැලූ බැල්මට මට පිළිගත් පිළිතුර තේරුණේ නැත [සහ වැඩි විස්තර සහිතව මම වෙනත් පිළිතුරු පරික්ෂා කළ බව ඔබ විශ්වාස නොකරනු ඇත] එබැවින් එම historyවිධානය භාවිතා කළ විධාන ලැයිස්තුගත කළ විට මට එය පැහැදිලි කිරීමට අවශ්‍ය විය !
KhogaEslam

1
කිසිම ප්රශ්නයක් නැ. වෙනත් පිළිතුරු වල අනුපිටපත් වන පිළිතුරු අවසානයේදී මකා දැමිය හැකි අතර එය සිදුවීමට පෙර එම හැකියාව සමඟ කටයුතු කිරීමට මිනිසුන්ට ඉඩක් ඇති බව සහතික කිරීමට මම උත්සාහ කරමි ;-)
fra-san

0

ඉක්මන් පියවර:

  1. ඔබගේ පර්යන්තයේ ඉතිහාස ගොනුව කොහේදැයි සොයා බලන්න echo $HISTFILE
  2. ඔබේ පෙළ සංස්කාරකය සමඟ ගොනුව විවෘත කරන්න
  3. එහි ඔබ සොයා ගන්නා සංවේදී රේඛා මකන්න
  4. ගොනුව සුරකින්න
  5. ඔබේ පර්යන්තය වසා නැවත විවෘත කරන්න
  6. කළා : ඔබේ ඉතිහාසය පිරිසිදුයි! historyඔබේ පර්යන්තය තුළ විධානය ක්‍රියාත්මක කිරීමෙන් ඔබට එය වලංගු කළ හැකිය

0

උබුන්ටු වල (නමුත් මට විශ්වාසයි, එය වෙනත් ලිනක්ස් බෙදාහැරීම් සඳහා මෙන්ම මැකෝස් එකම ආකාරයකින් ක්‍රියා කරනු ඇත) බාෂ් ඉතිහාස ගොනුව අත්තනෝමතික පෙළ සංස්කාරකයකින් සරලව සංස්කරණය කළ හැකිය:

$ nano ~/.bash_history

ඔබ නොදන්නේ නම්, එය ගබඩා කර ඇති ස්ථානය, ඔබට එය පහත පරිදි සොයාගත හැකිය:

$ echo $HISTFILE

නැතහොත් ඔබට එය තව ටිකක් සාමාන්‍ය ආකාරයකින් කළ හැකිය:

$ nano $HISTFILE

කවචයෙන් පිටවන විට කවචයේ වත්මන් මතක ඉතිහාසය ගොනුවට ලියා ඇති බව මෙය සැලකිල්ලට නොගනී. මෙය කවචයේ මතක ඉතිහාසයේ වාසය කරන ඉතිහාසයෙන් විධානයක් මකා නොදමනු ඇත.
කුසලනන්ද

-1

ඔබට ඉතිහාස රේඛා පරාසයක් මකා දැමීමට අවශ්‍ය නම්, ඔබට පහත පිටපත භාවිතා කළ හැකිය.

මෙම උදාහරණය මඟින් 1 වන පේළියේ සිට 150 වන පේළිය දක්වා ඉතිහාස ප්‍රතිදානය මකා දැමෙනු ඇත.

for i in `history | awk 'NR > 1 && NR <=150{print   $1}'`; do history -d $i; done
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.