Kami bekerja di konsol dengan cepat dan efisien

Di jaringan, Anda dapat menemukan banyak kiat untuk bekerja secara efektif di konsol. Dalam sebagian besar artikel ini, penulis berbicara tentang kata-kata hampa seperti "belajar kunci panas" atau " sudo !! akan menjalankan perintah terakhir di bawah sudo". Saya akan memberi tahu Anda apa yang harus dilakukan ketika Anda sudah mempelajari tombol pintas dan tahu tentang sudo !! .


Terminal harus mulai secara instan


Berapa lama Anda perlu memulai terminal? Dan satu lagi? Untuk waktu yang lama, terminal saya diluncurkan oleh Ctrl + Alt + T dan saya pikir itu cepat. Tetapi ketika saya pindah dari Openbox ke i3, saya mulai menjalankan terminal melalui Win + Enter, kombinasi ini berada di konfigurasi default. Dan tahukah Anda? Saya tidak lagi berpikir bahwa Ctrl + Alt + T cepat.


Tentu saja, leluconnya bukan untuk mendapatkan milidetik, tetapi pada kenyataan bahwa Anda membuka terminal pada tingkat refleks, sama sekali tidak memperhatikannya.


Jika Anda sering bekerja di terminal, tetapi meraih mouse untuk meluncurkannya, maka cobalah mengatur hotkey yang nyaman. Saya yakin Anda akan menyukainya.


Zsh bukannya bash


Ini adalah tema hollywood, saya tahu. Zsh harus diinstal setidaknya untuk tiga fitur: lanjutkan otomatis, koreksi salah ketik dan penyelesaian beberapa pathname: ketika satu Tab mengubah /u/s/d menjadi /usr/share/doc . Arch Linux telah lama beralih ke zsh dalam disk instalasinya. Saya harap suatu hari nanti zsh akan menjadi shell default di Ubuntu. Ini akan menjadi momen bersejarah.


Memulai dengan zsh sama sekali tidak sulit. Instal melalui manajer paket dan ambil beberapa konfigurasi yang sudah jadi. Saya merekomendasikan konfigurasi yang digunakan oleh Arch Linux:


 wget -O ~/.zshrc https://git.grml.org/f/grml-etc-core/etc/zsh/zshrc 

Tetap hanya untuk mengubah "shell default" menjadi zsh dan masuk.


 chsh -s $(which zsh) 

Segalanya, terus bekerja seolah-olah tidak ada yang terjadi.


Apa yang seharusnya menjadi shell prompt


Prompt shell adalah teks kecil yang muncul di terminal sebelum perintah Anda. Itu perlu disesuaikan dengan karakter pekerjaan Anda. Anggap saja seperti dashboard mobil. Letakkan informasi yang berguna di sana, biarkan itu membantu Anda menavigasi. Jadikan nyaman, terutama jika Anda melihatnya setiap hari!


Shell prompt akan menampilkan direktori shell saat ini. Jika direktori saat ini tidak ditampilkan di prompt shell, Anda harus menyimpannya di kepala Anda dan secara berkala memeriksanya dengan pwd . Jangan lakukan itu. Ingatlah hal-hal yang lebih penting dan jangan buang waktu dengan pwd .


Jika Anda secara berkala beralih dari pengguna ke root, Anda perlu indikasi pengguna saat ini. Seringkali penting bukan nama pengguna spesifik, tetapi statusnya (reguler atau root). Cara termudah untuk melakukan ini adalah warna: prompt shell merah di root, hijau di penggunanya. Jadi Anda tidak akan pernah mengacaukan shell root dengan yang biasa.


Jika Anda terhubung ke server melalui ssh, maka Anda perlu membedakan shell lokal Anda dari server. Untuk melakukan ini, shell prompt harus berisi nama host, atau lebih baik lagi, indikator koneksi ssh.


Shell prompt dapat menampilkan kode kembali dari perintah terakhir. Biarkan saya mengingatkan Anda bahwa kode pengembalian nol berarti bahwa perintah selesai dengan sukses, bukan nol - perintah gagal. Kode pengembalian untuk perintah terakhir dapat ditemukan dengan echo $? , tetapi mengetik semuanya di keyboard terlalu panjang. Lebih baik, prompt shell akan memberi tahu Anda jika perintah gagal.


Jika Anda bekerja dengan repositori git, maka akan berguna untuk menampilkan status repositori di prompt shell: cabang saat ini dan status direktori kerja. Dengan cara ini Anda akan menghemat waktu pada git status git branch dan perintah-perintah git branch dan tidak akan salah dalam cabang saat melakukan.


Seseorang menambahkan jam atau nama terminal virtual (tty), atau beberapa coretan arbitrary ke prompt shell mereka. Ini semua berlebihan. Lebih baik meninggalkan lebih banyak ruang untuk tim.


Shell prompt saya dalam kondisi yang berbeda terlihat seperti ini:



Tangkapan layar menunjukkan bahwa judul jendela terminal melakukan tugas yang serupa. Ini juga merupakan bagian dari dasbor dan juga dapat disesuaikan.


Bagaimana menerapkan semua ini di .zshrc Anda? Variabel PROMPT bertanggung jawab untuk prompt kiri, dan RPROMPT untuk RPROMPT kanan. Variabel EUID akan membantu menentukan status pengguna (reguler atau EUID , dan keberadaan koneksi ssh - SSH_CLIENT atau SSH2_CLIENT . Kami mendapatkan benda kerja berikut:


 if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then if [[ $EUID == 0 ]]; then PROMPT=... else PROMPT=... fi else # not SSH if [[ $EUID == 0 ]]; then PROMPT=... else PROMPT=... fi fi 

Saya tidak secara spesifik menunjukkan kode yang siap untuk disalin-tempel, karena implementasi khusus adalah masalah selera. Jika Anda tidak ingin repot dan tangkapan layar saya tidak membuat Anda jijik, Anda dapat mengambil konfigurasi dari github .


Ringkasan:


  • Minimum yang diperlukan adalah direktori saat ini.
  • Cangkang mulut harus terlihat jelas.
  • Nama pengguna tidak membawa muatan jika Anda selalu duduk di bawah pengguna yang sama.
  • Hostname berguna jika Anda terhubung ke server melalui SSH. Tidak diperlukan jika Anda selalu bekerja pada mesin yang sama.
  • Penyelesaian perintah terakhir yang gagal berguna untuk segera dilihat.
  • Status repositori git menghemat waktu pada git status git branch dan perintah git branch dan merupakan perlindungan tambahan terhadap si bodoh.

Penggunaan aktif riwayat perintah


Sebagian besar perintah dalam hidup Anda, Anda masukkan lebih dari sekali, yang berarti akan lebih mudah untuk menariknya keluar dari sejarah daripada mengetik lagi. Semua shell modern dapat mengingat sejarah tim dan menyediakan beberapa cara untuk mencari sejarah ini.


Mungkin Anda sudah tahu cara menggali cerita dengan Ctrl + R. Ini memiliki dua kelemahan signifikan:


  1. Untuk memulai pencarian, bidang input harus kosong. Yaitu dalam kasus "Saya mulai mengetik perintah - Saya ingat tentang pencarian" Anda harus menghapus apa yang telah dimulai, tekan Ctrl + R dan ulangi entri. Ini waktu yang sangat lama.
  2. Pencarian maju tidak bekerja secara default, karena Ctrl + S menghentikan terminal.

Cara kerja pencarian tercepat dan paling nyaman:


  1. Anda mulai mengetik tim
  2. Apakah Anda ingat pencarian?
  3. Anda menekan tombol pintas dan shell menawarkan tim dari sejarah yang memulai persis sama.

Misalnya, Anda ingin menyinkronkan direktori lokal dengan direktori jarak jauh menggunakan rsync . Anda sudah melakukan ini beberapa jam yang lalu dan ingin mengeluarkan tim dari sejarah. Ketik rsync , tekan kombinasi tertentu sekali atau dua kali, dan perintah yang dihargai siap dijalankan. Anda tidak perlu mengaktifkan mode pencarian riwayat terlebih dahulu, prompt shell tidak berubah menjadi (reverse-i-search)': , tidak ada yang melompat di mana pun. Anda hanya mengulangi perintah dari cerita. Sama seperti panah ↑ ↓, Anda mengulangi perintah yang dimasukkan sebelumnya, hanya dengan filter di awal perintah. Sangat nyaman dan menghemat banyak waktu.


Dalam cangkang ikan dan ipython, pencarian semacam itu sudah ditugaskan untuk panah. Saya pikir banyak beralih ke ikan hanya demi perilaku panah seperti itu.


Di bash dan zsh, secara default, pencarian ini tidak berfungsi, Anda harus mengaktifkannya dengan tangan. Saya mengkonfigurasi PgUp untuk mencari mundur dan PgDown untuk mencari maju. Jauh untuk menjangkau mereka, tetapi saya sudah terbiasa. Mungkin di masa depan saya akan menetapkan kembali untuk sesuatu yang lebih dekat, misalnya, Ctrl + P dan Ctrl + N.


Untuk bash, Anda perlu menambahkan beberapa baris ke /etc/inputrc atau ~/.inputrc :


 "\e[5~": history-search-backward "\e[6~": history-search-forward 

Jika Anda sudah siap zshrc , maka pencarian kemungkinan besar sudah ditugaskan ke PgUp dan PgDown. Jika tidak, tambahkan ke ~/.zshrc


 bindkey "^[[5~" history-beginning-search-backward # pg up bindkey "^[[6~" history-beginning-search-forward # pg down 

Sangat mengherankan bahwa seiring waktu saya mulai menulis tim berdasarkan asumsi bahwa nantinya saya akan mengambilnya dari sejarah. Berikut ini beberapa trik:


Menggabungkan tim yang selalu mengeksekusi satu demi satu


 ip link set eth1 up && dhclient eth1 mkdir /tmp/t && mount /dev/sdb1 /tmp/t 

Path absolut alih-alih yang relatif memungkinkan Anda menjalankan perintah dari direktori apa pun:
vim ~/.ssh/config alih-alih vim .ssh/config , systemd-nspawn /home/chroot/stretch bukan systemd-nspawn /home/chroot/stretch systemd-nspawn stretch , dll.


Topeng wildcard membuat tim lebih fleksibel. Biasanya digunakan dengan chmod dan chown .


 chown root:root /var/www/*.sq && chmod 644 /var/www/*.sq 

Tombol cepat


Saya akan mencantumkan minimum yang diperlukan.


Alt +. - Mengganti argumen terakhir dari perintah sebelumnya. Anda juga dapat mengetik urutannya !$ .
Ctrl + A, Ctrl + E - pergi ke awal dan akhir dari perintah yang diedit, masing-masing.
Ctrl + U, Ctrl + Y - potong semuanya ke clipboard, rekatkan dari clipboard. Ini membantu ketika Anda mencetak perintah yang rumit, dan kemudian Anda mengerti bahwa Anda perlu menjalankan yang lain di depannya. Hmm, di mana menyembunyikan input saat ini? Di sini dan bersembunyi.
Ctrl + W - menghapus satu kata di sebelah kiri kursor. Jika dijepit dan ditahan, cepat-cepat menghapus baris perintah. Secara default, teks tidak dihapus, tetapi ditempatkan di buffer (yang untuk Ctrl + Y).
Ctrl + K - menghapus dari kursor ke akhir baris. Ctrl + A, Ctrl + K dengan cepat menghapus baris perintah.
PgUp, PgDown, Ctrl + R - cari berdasarkan sejarah.
Ctrl + L - hapus terminal.


Keyboard responsif


Saya akan memberi tahu Anda tentang pengaturan kecil, yang memungkinkan Anda untuk menggulir lebih cepat, bergerak di sekitar teks atau menghapus. Apa yang kita lakukan ketika kita ingin menghapus sesuatu yang lama? Tahan Backspace dan perhatikan bagaimana kursor berjalan kembali, mengambil surat tambahan. Apa yang terjadi dengan ini? Ketika Backspace ditekan, satu karakter terhapus, lalu ada sedikit keterlambatan, kemudian ulang otomatis dipicu: Backspace menghapus karakter satu per satu, seolah-olah mereka terus-menerus mengetuknya.


Saya sarankan menyesuaikan penundaan dan tingkat pengulangan otomatis ke kecepatan jari Anda. Penundaan sebelum coba ulang otomatis diperlukan ketika Anda ingin menghapus hanya satu karakter - ini memberi Anda waktu untuk melepaskan kunci. Penundaan yang terlalu lama membuat menunggu pengulangan otomatis. Tidak cukup lama untuk mengganggu, tetapi cukup untuk memperlambat pemindahan pikiran dari kepala ke komputer. Semakin tinggi frekuensi pengulangan, semakin cepat teks dihapus, dan semakin sulit untuk menghentikan proses ini pada waktunya. Inti dari pengaturan adalah menemukan jalan tengah.


Jadi perintah ajaib:


 xset r rate 190 20 

190 - durasi penundaan dalam milidetik,
20 - frekuensi dalam jumlah pengulangan per detik.


Saya sarankan mulai dengan nilai-nilai ini dan secara bertahap mengurangi penundaan sampai positif palsu muncul, lalu sedikit kembali. Jika Anda mengatur penundaan yang sangat singkat, maka keyboard akan menjadi tidak mungkin digunakan. Anda harus memulai ulang server X atau seluruh komputer. Jadi berhati-hatilah.


Untuk menyimpan parameter, tambahkan perintah ini di suatu tempat ke X-start otomatis.


Bilah kemajuan


Saya cukup sering harus memulai proses panjang: beberapa jenis cetak tebal, menyalin melalui jaringan, membongkar / mengemas arsip, membangun paket, dll. Biasanya saya memulai proses seperti itu, beralih ke tugas lain dan secara berkala melihat apakah proses panjang saya telah berakhir. Kebetulan saya membenamkan diri dalam pekerjaan dan melupakannya. Solusinya adalah dengan menambahkan pemberitahuan penyelesaian proses, yang akan membuat saya keluar dari trance.


Anda dapat menggunakan alat yang berbeda untuk ini: notify-send, dzen2, beep, aplay. Semuanya bagus dengan caranya sendiri, tetapi jangan bekerja pada ssh. Karena itu, saya menggunakan bip terminal:


 long-running-command; echo $'\a' 

Dalam pengkodean ASCII, ada karakter 0x7 yang disebut bel . Ini dirancang untuk berbunyi bip dengan speaker PC. Speaker PC tidak mutakhir, tidak ada di mana-mana, dan masih belum terdengar di headphone. Oleh karena itu, beberapa terminal menggunakan apa yang disebut bel visual. Saya menggunakan urxvt dan itu membuat bel visual mengaktifkan bendera urgensi. Ini adalah saat sebuah jendela memberi tahu Anda bahwa itu perlu perhatian.


Anda dapat memeriksa sekarang bagaimana terminal Anda bereaksi terhadap simbol bel:


 sleep 3; echo $'\a' 

Tiga detik diberikan bagi Anda untuk beralih ke jendela lain, jika tidak mungkin tidak bekerja.


Sayangnya, bel visual melalui urgensi tidak tersedia di semua terminal. Saya memeriksa yang paling populer.


terminalbel visual melalui urgensi
konsoletermasuk dalam pengaturan
urxvtada disana
terminal xfce4termasuk dalam pengaturan
xtermtidak
istilah retro kerentidak
Lxterminaltidak
terminal gnometidak

Butuh waktu terlalu lama untuk menulis echo $'\a' , jadi saya membuat alias wake .


Alias


Perintah cp , scp dan rm harus selalu bekerja secara rekursif. Argumen -r hanya warisan yang buruk! Masih ada alasan untuk cp :


 cp * foodir 

itu hanya menyalin file ke foodir, dan dengan -r switch, ia akan berpikir bahwa Anda memutuskan untuk menyalin foodir ke dirinya sendiri. Tetapi seberapa sering Anda membutuhkan fitur ini?


rm dan scp tidak punya alasan apa pun, mereka hanya membosankan! Perintah mkdir memiliki situasi yang mirip dengan -p switch. Jadi jangan ragu untuk menambahkan ke ~/.zshrc


 alias cp='cp -r' alias scp='scp -r' alias rm='rm -r' alias mkdir='mkdir -p' 

Wow, bagaimana saya hidup tanpa ini sebelumnya! Anda dapat melangkah lebih jauh dan menambahkan -f ke rm , tetapi dengan risiko dan risiko Anda sendiri. Saya menahan diri untuk saat ini.


Anda kemungkinan besar sudah menggunakan variasi ls berbeda, karena ini adalah alias yang paling populer.


 alias ls='ls -F --color=auto' alias la='ls -A --color=auto' alias ll='ls -l --color=auto -h' alias lla='ll -A --color=auto -h' 

Nah, grep warna jauh lebih bagus daripada tidak berwarna:


 alias grep='grep --colour=auto' 

Jangan lupa bahwa alias tidak berfungsi dalam skrip! Semua kunci harus ditentukan di sana.


Metode Pencetakan Buta


Tidak peduli seberapa basi itu, tetapi metode pencetakan sepuluh jari yang buta memungkinkan Anda untuk mencetak lebih cepat. Pada awalnya akan sulit, tetapi seiring waktu Anda akan mempercepat ke kecepatan yang belum pernah terjadi sebelumnya.


Menguasai metode pencetakan buta adalah yang terbaik untuk liburan atau liburan ketika tidak ada yang terburu-buru. Dalam proses belajar, tidak mungkin tidak terburu-buru. Tugas Anda adalah mengingat di mana surat itu berada. Dan tidak dengan otak seperti halnya dengan otot. Lebih baik mengetik perlahan tapi tanpa kesalahan daripada cepat dengan kesalahan. Ingat: master mencapai kecepatan tinggi bukan dengan mengorbankan jari cepat, tetapi karena mereka tidak melakukan kesalahan.


Jangan terbawa pada awalnya dengan pemain keyboard. Secara psikologis sulit untuk tetap tenang selama kompetisi. Belajar di simulator. Ini bagus ketika simulator menawarkan kata-kata yang dapat diucapkan secara mental. Saya belajar di vse10 dan mengetik simulator online. Simulator β€œSolo on the Keyboard” yang terkenal itu tampak bodoh bagi saya.


Layak dimulai dengan deretan pusat Fyvaprolge. Hanya setelah Anda ingat di mana kunci itu berada, apakah itu layak untuk dipindahkan. Baru setelah itu.


Beristirahatlah. Istirahatkan otak dan jari Anda. Rasakan bahwa kesalahan telah terjadi - saatnya untuk istirahat.


Pada awalnya, saya menguasai metode pencetakan buta dalam bahasa Rusia dan mulai dengan akselerasi. Sekarang saya meningkatkan keterampilan saya dalam tata letak bahasa Inggris.

Source: https://habr.com/ru/post/id425137/


All Articles