Pertanyaan Mode penyamaran terminal '?


Saya banyak menggunakan Terminal, dan terkadang saya menjalankan perintah, yang bukan hal yang saya tidak ingin orang lain lihat, tetapi lebih banyak perintah yang jika saya tidak sengaja diarahkan dan secara tidak sengaja dieksekusi akan menimbulkan banyak masalah.

Jadi saya bertanya-tanya apakah ada, atau saya dapat membuat semacam "mode penyamaran" Terminal yang akan memungkinkan saya untuk, setelah eksekusi perintah tertentu, berhenti merekam riwayat saya, dan kemudian hanya mulai merekam setelah saya mengeksekusi mulai merekam lagi perintah sejarah dan keluar dari 'mode penyamaran', atau saya cukup me-restart Terminal?

Karena saya menemukan diri saya kemudian pergi dan mengeluarkan barang-barang dari saya .bash_history, ketika itu akan jauh lebih mudah jika saya bisa menghentikannya merekam di sana di tempat pertama, atau setidaknya mendapatkannya untuk mencoba merekamnya di suatu tempat di mana itu tidak akan diizinkan, dan hanya akan berakhir tidak merekamnya.


225
2018-05-18 14:53


asal


@Sparhawk: Apa?
Yah, sepertinya kamu paranoid bahwa sejarah Anda akan dibaca oleh orang lain? - Sparhawk
@Sparhawk: Yah, itu sebagian, dan pesta saya tidak ingin secara tidak sengaja menjalankan perintah pemeliharaan yang mungkin mematikan ketika saya baru saja naik di masa depan! : D
Hanya untuk menambahkan, Anda tidak perlu membenarkan diri Anda: "yang bukan hal yang saya tidak ingin orang lain lihat". Itu akan menjadi alasan yang sangat valid bagi saya juga. (Terutama saat ini dan di mana semua orang mencoba untuk membuat Anda terlihat bersalah karena "hal-hal yang disembunyikan") - ereOn
Jika Anda membuka dua tab, melakukan hal-hal di yang pertama, melakukan hal-hal di yang kedua, lalu tutup yang kedua SEBELUM yang pertama, hanya sejarah yang pertama tampaknya ditulis untuk .bash_history. (Ubuntu 15.04 merusak Terminal, beruntung ini adalah live USB.) - Hitechcomputergeek


Jawaban:


Jalankan perintah tanpa memasukkannya ke dalam sejarah:

Cukup letakkan spasi di depan perintah. Bash akan mengabaikan perintah dengan spasi tambahan:

Contoh: Ruangecho "Some secret text"

Catatan: Ini hanya berfungsi jika HISTCONTROL variabel diatur ke ignorespace atau ignoreboth.


Nonaktifkan riwayat sementara:

  • Menjalankan Ruangset +o history atau Ruangshopt -uo history untuk menonaktifkan riwayat.
  • Menjalankan set -o history atau shopt -so history untuk mengaktifkannya lagi.

Nonaktifkan riwayat untuk sesi saat ini (tidak akan mengingat perintah apa pun dari sesi):

unset HISTFILE

Catatan: Anda akan dapat melihat perintah yang ditekan Naik sampai Anda menutup terminal.


Hapus perintah dari riwayat:

Menjalankan Ruanghistory | grep "part of your secret command"

Ini akan menampilkan daftar perintah yang sebelumnya dijalankan, dalam format ini:

casa@portátil:~$  history | grep pkill
  302  pkill $$
  467  pkill gone-cal
  468  pkill actionaz
  500  pkill chrome
  550  pkill super

Pilih nomor entri di sebelah kiri perintah. Anda dapat menyalinnya Ctrl+Bergeser+C

Menjalankan Ruanghistory -d <number> dimana <number> adalah nomor masuk untuk menghapus entri.
Anda dapat menempel nomor itu dengan Ctrl+Bergeser+V


Jawaban menarik lainnya:


260
2018-05-19 15:01



Jika Anda menggunakan history -d untuk menghapus garis, ini akan menghapus konten baris, tetapi Anda tidak pernah dapat menghapus fakta bahwa Anda berlari history -d(kecuali Anda pertama kali menggunakannya set +o history sebelum berlari history -d) - AJFaraday
Itu hanya mengingatkan saya pada logika super-perintah, itu saja;) - AJFaraday
(OT) Perintah adalah dokumen hukum yang membuat orang tidak mempublikasikan sesuatu. Perintah super juga membuat mereka tidak mempublikasikan fakta bahwa mereka ditolak untuk mempublikasikan. Beberapa argumen logis bertanya apakah mereka dapat mempublikasikan bahwa mereka ditolak kemampuan untuk mempublikasikan beberapa informasi. Maka itu menjadi argumen siklis. - AJFaraday
@Helio Saya pikir lebih baik bagi pengguna untuk mengetahui cara "tepat" untuk menyalin - terutama jika mereka tidak sengaja pergi dan memilih beberapa teks. Saya tidak yakin bagaimana cara melakukan ruang, mungkin lebih memperjelas bahwa ruang ada di sana? [Ruang] terlihat sedikit canggung untukku ... - Tim
Itu unset HISTFILE Pendekatan juga berlaku surut untuk semua perintah yang belum ditulis .bash_history namun. - kasperd


Anda cukup menghapus sejarah satu sesi terminal tertentu dengan menambahkan perintah history -cw setelah bekerja. Jangan tutup terminal sebelum memberikan perintah.


39
2018-05-18 15:04



Ini tidak akan menghapus semua sejarah? - Helio
Ini hanya akan menghapus riwayat sesi terminal tertentu. - Moithil Biswas


shopt -uo history harus melakukan yang terbaik.

Nuking the HISTFILE (et al) variabel tidak akan menghentikan Anda Naik riwayat login, itu tidak akan mendorongnya ke disk. Ini mungkin atau mungkin bukan hal yang positif bagi Anda, tetapi mengingat Anda menyebutkannya, saya kira Anda menginginkan sesuatu yang lebih baik. Mengubah shopt pengaturan riwayat menghentikan mekanisme riwayat keseluruhan dari pemicuan.

Anda dapat mengaktifkan kembali log dengan shopt -so history (itu -s dan -u diatur dan unset masing-masing).

Perhatikan bahwa perintah itu sendiri mungkin akan dicatat sehingga menambahkannya dengan spasi untuk menghentikannya ditambahkan ke dalam sejarah sebelum Anda menghapus variabel.


28
2018-05-19 22:00





Cara lain untuk membunuh shell saat ini tanpa masuk ke file riwayat adalah melakukan:

kill -9 $$

Ini menyebabkan bash (dan mungkin shell lain juga) untuk mengirim sinyal SIGKILL ke dirinya sendiri, membunuhnya di tempat dan mencegahnya dari menulis apa pun ke disk.


17
2018-05-18 15:02



a.k.a. 'Tembak dirimu di kepala' :). Ini memiliki keuntungan bahwa Anda tidak perlu mengingat untuk melakukan apa pun sebelum menulis perintah. - Guido
Saya menggunakan zsh dengan menulis sejarah inkremental, jadi saya ragu ini akan bekerja dalam kasus saya - Wayne Werner


Untuk menonaktifkan sementara sejarah perintah untuk sesi saat ini, Anda dapat menghapus variabel lingkungan HISTFILE untuk sementara.

unset HISTFILE

sementara sesi aktif Anda dapat mengakses riwayat seperti biasa, tetapi tidak akan disimpan ke disk.

Untuk mundur dalam sesi yang sama (semua perubahan akan direkam)

HISTFILE=$HOME/.bash_history

13
2018-05-21 00:12



Dan apakah ada cara mudah dalam sesi saat ini untuk membalikkan ini, dan membuatnya terus?
@ParanoidPanda Saya menambahkan perintah untuk kembali dalam sesi saat ini. - Bruni
@ParanoidPanda: Mengapa Anda perlu perintah untuk mengatur HISTFILE lagi di sesi saat ini? Jika Anda membatalkan perubahan (bahkan setelah menjalankan perintah rahasia) mereka akan disimpan ke dalam sejarah ketika Anda keluar. - Helio
@Helio: Oh, tidak, maksud saya adalah perintah yang kemudian akan mulai merekam lagi, tetapi tidak menyimpan perintah yang tidak ingin saya simpan.
@ParanoidPanda, Helio tampaknya benar pada yang satu ini karena sejarah disimpan saat keluar. Saya belum mempertimbangkan yang satu itu. - Bruni


Anda dapat mengubah baris riwayat dalam sesi shell saat ini. Jika Anda kembali melalui riwayat (misalnya dengan Naik atau Ctrl+P) dan mengubah suatu garis tanpa mengeksekusinya, hanya versi yang dimodifikasi dari baris yang akan disimpan. Anda dapat memodifikasinya dengan cara apa pun yang Anda suka; pilihan yang baik termasuk menggunakan Ctrl+U untuk benar-benar kosong garis atau menggunakan ESC# untuk menempatkan # karakter komentar di awal.

Untuk meninggalkan garis tanpa mengeksekusinya, ingat untuk tidak memukul Kembali (Memasukkan). Apa yang saya lakukan adalah kembali ke baris terbaru dalam sejarah melalui ESC>.

(Dari pada ESC diikuti oleh >, di sebagian besar terminal yang dapat Anda pegang Alt dan tekan >; hal yang sama berlaku untuk ESC# saran di atas.)

catatan: Anda tidak dapat secara permanen mengubah entri dari sesi sebelumnya dengan cara ini. Perubahan tersebut tidak akan diterapkan pada HISTFILE di akhir sesi.


10
2018-05-20 03:24





Anda juga bisa membuat .bash_history hanya-baca. Saya akan mengosongkan file terlebih dahulu dan kemudian melakukan:

 chattr +i .bash_history

6
2018-05-21 20:46





Anda bisa menjalankan perintah sensitif dalam sesi layar, kemudian hancurkan sesi ketika Anda selesai.

Secara bergantian, Anda dapat mempertahankan sesi layar tersebut tetap hidup tetapi terpisah, dan hanya mengaksesnya ketika Anda benar-benar ingin dapat menaikkan panah ke perintah yang berbahaya.


5
2017-11-12 19:31





Secara pribadi saya gunakan mksh, dan shell ini secara default tidak memiliki file riwayat. Itu berarti Anda bisa meluncurkan shell alternatif seperti mksh atau dash (yang datang secara default dengan cara) untuk menjalankan perintah yang Anda tidak ingin pengguna untuk melihat, dan keluar setelah selesai. bash sejarah hanya akan mencatat bahwa Anda meluncurkan shell alternatif dan hanya itu.


1
2018-04-06 10:50