Bagaimana cara mengedit riwayat terminal Mac OS X?

12

Bagaimana cara mengedit riwayat bash saya di Mac OS X? Saya memasukkan kata sandi di jendela itu secara tidak sengaja dan tidak ingin menghapus seluruh riwayat saya.

Karthick S
sumber

Jawaban:

14

Mengedit .bash_historyhanya masalah membuka file dengan editor. Ada beberapa cara Anda bisa mencapai ini.

  1. Di Terminal cukup ketik vi ~/.bash_history, lalu edit file seperti yang Anda inginkan, dan simpan. Opsi ini bisa rumit, jika Anda tidak terbiasa dengan vi , tentu saja.
  2. Jadikan file terlihat dengan mengikuti petunjuk ini , misalnya, buka sebagai file lain, modifikasi, dan simpan.
  3. Di Terminal cukup ketik open ~/.bash_history -a /Applications/TextEdit.app. Perintah ini akan membuka file dengan TextEdit , Anda dapat memilih editor teks lainnya, tentu saja. Ubah file dan simpan.

Agar perubahannya terlihat, cukup restart bash.

Afremo
sumber
Saya mendapat "izin ditolak". Ketika saya melakukan sudo, saya tidak dapat melihat semua perintah yang dimasukkan.
Karthick S
1
@ArthickS Anda mendapatkan hal itu melakukan apa sebenarnya?
Thecafremo
Jika saya melihat isi .bash_history isinya berbeda dari output dari perintah history. Saya mengenali keduanya, isi file lebih tua. Apa yang terjadi jika banyak jendela perintah terbuka? Mereka sepertinya tidak berbagi sejarah perintah yang sama. PS Saya memverifikasi saya menggunakan bash.
Victor Engel
1
Saya pikir saya menemukan jawaban saya. ECHO $ ​​HISTFILE menunjukkan yang diedit.
Victor Engel
10

Dalam jenis terminal historydan catat nomor baris. Panggilan berikutnya history -d noted-line-number. Anda dapat memeriksa apakah garis dihapus menggunakan historylagi.

Tidak bernama_1
sumber
2
Ini tidak berfungsi pada Yosemite dengan ZSH.
Paulo Oliveira
Pertanyaannya adalah tentang bash, bukan zsh. Bacalah dengan seksama!
Unnamed_1
1
@DmitryDupelov Anda benar, maaf merepotkan. Bagaimanapun, ini adalah pengingat bagi pembaca masa depan (yang mungkin juga akan melewatkan detail itu). Terima kasih telah mengoreksi komentar saya.
Paulo Oliveira
2
nano ~/.bash_history

ketika Anda selesai, ctrl+x dan kembali untuk menerima jawaban yang benar Bung

Matian2040
sumber
0

Saya pikir jawaban Dmitry sangat ideal jika dilakukan sebelum menyimpan histori - secara default, penghematan terjadi pada shell / terminal yang keluar.

Jika Anda mungkin sudah menyimpan histori ke ~ / .bash_history, maka saya lebih suka jawaban Thecafremo, tetapi saya akan menyarankan menambahkan langkah keluar dari Terminal untuk memastikan bahwa tidak ada instance bash yang memuat sejarah dan akan menyimpannya kembali. Ini terutama rumit jika Anda memiliki beberapa terminal dan telah mengaktifkan segala jenis pembaruan sejarah perintah-demi-perintah.

Latar Belakang:

  • bash menyimpan histori dalam instance shell
  • bash dapat menulis histori ini ke file, yang biasanya terjadi ketika Anda keluar dari shell / Terminal
  • bash dapat membaca dari file ke dalam sejarah, yang biasanya terjadi ketika Anda membuka shell / Terminal
  • Anda dapat mengubah perilaku default agar riwayat menyebar lebih cepat, yang dapat memindahkan BAD_TEXT Anda ke file dan ke jendela lain

Apa pun metode yang Anda gunakan, saya akan menambahkan satu langkah: verifikasi kesuksesan!

  1. Keluar dari Terminal.app
  2. Buka kembali Terminal.app
  3. Konfirmasikan teks yang menyinggung itu tidak ada dalam riwayat - sebaiknya dengan cara yang tidak akan membuat riwayat tambahan. Ya, jangan grep BAD_TEXT .bash_history! Perintah baru ini akan masuk ke dalam sejarah. Saya baru saja membuka .bash_history di editor favorit Anda dan mencari di dalamnya untuk BAD_TEXT.

Ini seharusnya memberi Anda ketenangan pikiran bahwa Anda telah menghilangkan BAD_TEXT, apa pun jenis penyetelan gila yang Anda temui.

Sage
sumber