Ada banyak tips dan tip baris perintah di internet. Kebanyakan dari mereka menggambarkan hal-hal sepele seperti "pelajari hotkey" atau " sudo !!
akan menjalankan perintah sebelumnya dengan sudo". Alih-alih itu, saya akan memberi tahu Anda apa yang harus dilakukan ketika Anda sudah mempelajari hotkey dan tahu tentang sudo !!
.
Terminal harus mulai secara instan
Berapa banyak waktu yang Anda habiskan untuk meluncurkan terminal? Dan satu lagi? Untuk waktu yang lama saya telah menggunakan Ctrl + Alt + T pintas untuk meluncurkan terminal dan saya pikir itu cepat. Ketika saya telah bermigrasi dari Openbox ke i3, saya mulai meluncurkan terminal melalui Win + Enter, yang mengikat bekerja di luar kotak. Anda tahu? Sekarang saya tidak berpikir bahwa Ctrl + Alt + T cukup cepat.
Tentu saja, masalahnya bukan speedup milidetik, tetapi Anda membuka terminal pada tingkat refleks, sama sekali tidak menyadari hal itu.
Jadi, jika Anda sering menggunakan terminal, tetapi ambil mouse untuk meluncurkannya, cobalah untuk mengkonfigurasi hotkey berguna. Saya yakin, Anda akan menyukainya.
Zsh bukannya bash
Ini adalah topik perang suci, saya tahu. Anda harus menginstal Zsh untuk setidaknya tiga fitur: pelengkapan otomatis lanjutan, koreksi salah ketik dan penyelesaian beberapa pathname: ketika satu Tab mengubah /u/s/d
menjadi /usr/share/doc
. Arch Linux sudah bermigrasi ke Zsh di CD instalasinya. Saya harap Zsh akan menjadi shell default di Ubuntu. Itu akan menjadi momen bersejarah.
Mulai menggunakan Zsh tidak sulit sama sekali. Instal saja melalui manajer paket dan temukan konfigurasi yang cantik. Saya sarankan untuk menggunakan config yang digunakan di Arch Linux:
$ wget -O ~/.zshrc https://git.grml.org/f/grml-etc-core/etc/zsh/zshrc
Satu-satunya yang tersisa adalah mengubah shell default dan login kembali.
$ chsh -s $(which zsh)
Itu semua, tetap bekerja seperti tidak ada yang terjadi.
Seperti apa tampilan shell prompt
Shell prompt adalah sepotong kecil teks yang ditampilkan di terminal di awal baris perintah Anda. Ini harus dikonfigurasi untuk jenis pekerjaan Anda. Anda dapat melihatnya sebagai dashbord kendaraan. Tolong, letakkan beberapa informasi berguna di sana, biarkan itu membantu Anda menavigasi! Jadikan berguna terutama jika Anda melihatnya setiap hari!
Shell prompt harus diwarnai. Tidak setuju? Coba hitung berapa banyak perintah yang dieksekusi di terminal ini:

Dan sekarang dengan warna:

Shell prompt harus menampilkan direktori kerja shell saat ini. Jika direktori kerja saat ini tidak ditampilkan, Anda harus mengingatnya dan secara berkala memeriksanya dengan perintah pwd
. Tolong jangan lakukan itu. Ingatlah beberapa hal yang sangat penting dan jangan buang waktu Anda untuk perintah pwd
.
Jika Anda terkadang beralih ke root akun, Anda memerlukan indikasi "pengguna saat ini". Nama pengguna tertentu seringkali tidak penting, tetapi statusnya (reguler atau root) adalah. Solusinya adalah menggunakan warna: prompt shell merah untuk root dan hijau untuk pengguna biasa. Dan Anda tidak akan pernah mengambil alih shell root seperti biasa.
Jika Anda terhubung ke server menggunakan ssh, Anda perlu membedakan shell lokal dan remote Anda. Untuk tujuan itu, prompt shell Anda harus berisi nama host, atau bahkan lebih baik - menunjukkan koneksi ssh.
Shell prompt dapat menampilkan kode keluar dari perintah terakhir. Ingatlah bahwa kode keluar nol berarti perintah berhasil keluar, bukan nol - perintah tidak berhasil. Anda dapat memperoleh kode keluar perintah terakhir melalui echo $?
, tapi mengetik semua itu adalah hal yang sangat panjang. Biarkan shell menunjukkan Anda gagal keluar sebagai gantinya.
Jika Anda bekerja dengan repositori Git, akan berguna untuk melihat status repositori dalam prompt shell: cabang saat ini dan status direktori kerja. Anda akan menghemat waktu pada git status
git branch
dan perintah git branch
dan tidak akan melakukan ke cabang yang salah. Ya, perhitungan status mungkin membutuhkan waktu yang signifikan dalam repositori gemuk, tetapi bagi saya kelebihannya adalah kelebihannya.
Beberapa orang menambahkan jam ke prompt shell atau bahkan nama terminal virtual (tty), atau beberapa coretan arbitrer. Itu semua berlebihan. Lebih baik menyimpan banyak ruang untuk perintah.
Seperti itulah tampilan shell saya dalam kondisi yang berbeda:

Anda dapat melihat pada tangkapan layar bahwa batang judul terminal melakukan pekerjaan serupa. Ini juga sepotong dasbor dan juga harus dikonfigurasi.
Jadi, bagaimana semua hal ini harus diimplementasikan dalam .zshrc
? Variabel PROMPT
menetapkan prompt kiri dan RPROMPT
mengatur prompt kanan. Variabel EUID
mendefinisikan status pengguna (reguler atau root) dan kehadiran SSH2_CLIENT
atau SSH2_CLIENT
menunjukkan koneksi ssh. Jadi kita dapat memiliki templat:
if [[ -n "$SSH_CLIENT" || -n "$SSH2_CLIENT" ]]; then if [[ $EUID == 0 ]]; then PROMPT=... else PROMPT=... fi else
Saya tidak menunjukkan kode copy-paste-ready karena implementasi yang tepat adalah masalah selera. Jika Anda tidak ingin repot dan tangkapan layar di atas tidak masalah untuk Anda, daripada mengambil cofig saya dari Github .
Ringkasan:
- Prompt shell berwarna harus dimiliki.
- Minimum yang diperlukan adalah direktori kerja saat ini.
- Shell root harus terlihat jelas.
- Nama pengguna tidak peduli dengan muatan jika Anda hanya menggunakan satu akun.
- Nama host berguna jika Anda terhubung ke server melalui ssh, itu tidak wajib jika tidak.
- Sangat berguna untuk melihat kode keluar yang gagal dari perintah terakhir.
- Git repo status menghemat waktu pada
git status
dan perintah git branch
dan membawa sangat mudah.
Sangat menggunakan sejarah perintah
Sebagian besar perintah dalam hidup Anda Anda masukkan lebih dari satu kali, jadi akan lebih baik untuk mengeluarkannya dari riwayat alih-alih mengetik lagi. Semua shell modern menyimpan sejarah perintah dan menyediakan beberapa cara untuk mencari melalui sejarah itu.
Mungkin Anda sudah bisa menggali sejarah menggunakan Ctrl + R keybinding. Sayangnya ia memiliki dua kelemahan:
- Baris perintah harus kosong untuk memulai pencarian, yaitu dalam hal "seseorang mulai mengetik perintah - ingat tentang pencarian" Anda harus membersihkan mengetik Anda terlebih dahulu, kemudian tekan Ctrl + R dan ulangi input Anda. Itu terlalu lama.
- Pencarian maju tidak bekerja dengan defaul karena Ctrl + S menghentikan terminal.
Jenis pencarian yang paling cepat dan nyaman bekerja dengan cara ini:
- Anda mulai mengetik perintah,
- Anda ingat tentang pencarian,
- Anda menekan tombol pintas dan shell menawarkan perintah dari sejarah yang dimulai dengan cara yang sama.
Misalnya Anda ingin menyinkronkan direktori lokal dengan yang jauh menggunakan Rsync dan Anda sudah melakukannya dua jam sebelumnya. Anda mengetik rsync
, tekan hotkey satu atau dua kali dan perintah yang diinginkan siap diluncurkan. Anda tidak perlu mengaktifkan mode pencarian terlebih dahulu, prompt shell tidak berubah menjadi (reverse-i-search)':
, dan tidak ada yang melompat di mana pun. Anda hanya menelusuri sejarah dengan cara yang sama Anda menekan panah β β untuk menggulir melalui perintah yang dimasukkan sebelumnya tetapi dengan pemfilteran tambahan. Itu sangat keren dan menghemat banyak waktu.
Pencarian semacam ini tidak berfungsi secara default di Bash dan Zsh, jadi Anda harus mengaktifkannya secara manual. Saya telah memilih PgUp untuk mencari maju dan PgDown untuk mencari mundur. Ini jauh untuk menjangkau mereka, tetapi saya sudah membuat kebiasaan. Mungkin nanti saya akan beralih ke sesuatu yang lebih dekat seperti Ctrl + P dan Ctrl + N.
Untuk Bash Anda perlu menambahkan beberapa string ke /etc/inputrc
dari ~/.inputrc
:
"\e[5~": history-search-backward "\e[6~": history-search-forward
Jika Anda telah mengambil .zshrc
lengkap asing, sangat mungkin bahwa PgUp dan PgDown sudah melakukan pekerjaan itu. Jika tidak, tambahkan ke ~/.zshrc
:
bindkey "^[[5~" history-beginning-search-backward
Kerang Ikan dan Ipython sudah memiliki pencarian yang diikat ke panah β β. Saya pikir banyak pengguna bermigrasi ke Fish hanya karena perilaku panah. Tentu saja, mungkin untuk mengikat panah dengan cara ini di Bash dan Zsh jika Anda mau. Gunakan ini di /etc/inputrc
dari ~/.inputrc
:
"\e[A":history-search-backward "\e[B":history-search-forward
Dan ini untuk di ~/.zshrc
:
autoload -U up-line-or-beginning-search autoload -U down-line-or-beginning-search zle -N up-line-or-beginning-search zle -N down-line-or-beginning-search bindkey "^[[A" up-line-or-beginning-search bindkey "^[[B" down-line-or-beginning-search
Sangat mengherankan bahwa lama-kelamaan saya mulai menulis perintah dengan mengingat bahwa nanti saya akan menariknya keluar dari sejarah. Mari saya tunjukkan beberapa teknik.
Bergabunglah dengan perintah yang selalu mengikuti satu sama lain:
# ip link set eth1 up && dhclient eth1 # mkdir /tmp/t && mount /dev/sdb1 /tmp/t
Path absolut alih-alih relatif membiarkan Anda menjalankan perintah dari direktori apa pun:
vim ~/.ssh/config
alih-alih vim .ssh/config
, systemd-nspawn /home/chroot/stretch
bukannya systemd-nspawn /home/chroot/stretch
systemd-nspawn stretch
dan seterusnya.
Penggunaan wildcard menjadikan perintah Anda lebih universal. Saya biasanya menggunakannya bersamaan dengan chmod
dan chown
.
# chown root:root /var/www/*.sq && chmod 644 /var/www/*.sq
Pintasan keyboard
Inilah minimum yang diwajibkan.
Alt +. - Mengganti argumen terakhir dari perintah sebelumnya. Ini juga dapat diakses dengan !$
.
Ctrl + A, Ctrl + E - masing-masing melompat ke awal dan akhir baris.
Ctrl + U, Ctrl + Y - potong dan tempel. Ini berguna ketika Anda mengetik perintah yang rumit dan memperhatikan bahwa Anda perlu menjalankan yang lain terlebih dahulu. Hmm, di mana menyimpan input saat ini? Di sini
Ctrl + W - membunuh satu kata sebelum kursor. Ini membersihkan garis ketika ditekan dan tahan. Secara default input disimpan ke clipboard (digunakan untuk Ctrl + Y).
Ctrl + K - memotong bagian garis setelah kursor, menambahkannya ke clipboard. Ctrl + A Ctrl + K dengan cepat menghapus garis.
PgUp, PgDown, Ctrl + R - pencarian riwayat.
Ctrl + L membersihkan terminal.
Keyboard responsif
Saya ingin menunjukkan kepada Anda pengaturan kecil yang memungkinkan Anda untuk menggulir, menavigasi, dan menghapus lebih cepat. Apa yang kita lakukan ketika kita ingin menghapus sesuatu yang besar? Kami menekan dan menahan Backspace dan melihatnya berlari kembali menyeka karakter. Apa yang sebenarnya terjadi? Setelah Backspace ditekan, satu karakter menghilang, lalu tunda kecil, lalu ulang otomatis dipicu: Backspace menghapus karakter satu per satu, seperti Anda menekannya berulang kali.
Saya sarankan Anda untuk mengatur penundaan dan frekuensi ulang otomatis untuk kecepatan jari-jari Anda. Penundaan diperlukan saat Anda ingin menghapus hanya satu karakter - ini memberi Anda waktu untuk melepaskan kunci. Penundaan terlalu besar membuat Anda menunggu untuk mengulangi secara otomatis. Tidak cukup bagi Anda untuk terganggu, tetapi cukup untuk memperlambat pemindahan pikiran Anda dari kepala ke komputer. Semakin besar frekuensi berulang otomatis, semakin cepat teks dihapus dan semakin sulit untuk menghentikan proses ini. Tujuannya adalah untuk menemukan nilai optimal.
Jadi, perintah ajaibnya adalah:
$ xset r rate 190 20
190 - durasi penundaan dalam milidetik,
20 - frekuensi dalam pengulangan per detik.
Saya merekomendasikan untuk memulai dari nilai-nilai ini dan meningkatkan sedikit demi sedikit keterlambatan sampai positif palsu, kemudian kembali sedikit. Jika penundaannya terlalu kecil, Anda tidak akan dapat menggunakan keyboard. Untuk memperbaikinya X-server atau komputer lengkap harus di-restart. Jadi, harap berhati-hati.
Untuk menyimpan parameter, Anda perlu menambahkan perintah ini di suatu tempat di X autostart.
Proses indikasi keluar
Saya sering harus memulai beberapa proses jangka panjang: cadangan lemak, transfer data besar, pengepakan arsip / penggalian, pembuatan paket dan sebagainya. Biasanya saya memulai proses seperti itu, beralih ke tugas lain dan sesekali menatap jika proses jangka panjang saya telah keluar. Terkadang saya menyelam terlalu dalam ke pekerjaan dan melupakannya. Solusinya adalah dengan menambahkan notifikasi proses keluar yang akan membawa saya keluar dari trance.
Ada banyak alat untuk tujuan itu: notify-send, dzen2, beep, aplay, wall. Semuanya entah bagaimana bagus, tetapi tidak bekerja dengan koneksi ssh. Itu sebabnya saya menggunakan terminal bip:
$ long-running-command; echo $'\a'
Pengkodean ASCII memiliki karakter 0x7, bernama bell . Ini digunakan untuk membunyikan bip speaker PC. PC-speaker bukanlah hal yang modern, tidak semua komputer memilikinya dan tidak terdengar di headphone. Itu sebabnya beberapa terminal menggunakan apa yang disebut bel visual. Saya menggunakan urxvt, dan melakukan lonceng visual dengan menaikkan bendera urgensi. Apa itu Ini adalah hal yang digunakan ketika sebuah jendela ingin memberi tahu Anda bahwa ini mendesak.
Anda dapat memeriksa bagaimana terminal Anda bereaksi pada karakter bel sekarang:
$ sleep 3; echo $'\a'
Tiga detik diberikan bagi Anda untuk beralih ke jendela lain, mungkin diperlukan.
Sayangnya, tidak setiap terminal dapat menampilkan bel visual dengan mengibarkan bendera urgensi. Saya sudah memeriksa yang paling populer.
Terlalu panjang untuk mengetikkan echo $'\a'
, jadi saya membuat alias wake
.
Alias
Secara default perintah cp
, scp
dan rm
bekerja secara non-rekursif dan itu payah! Ini warisan buruk! Yah, mungkin diperbaiki menggunakan alias. Tapi pertama-tama mari kita lihat ketika perilaku non-rekursif dapat bermanfaat.
$ mkdir foodir $ cp * foodir
Hanya file yang akan disalin ke dalam foodir
, tetapi bukan direktori. Situasi yang sama berlaku dengan rm
:
$ rm *
hanya akan menghapus file dan symlink, tetapi menyimpan direktori. Tetapi seberapa sering Anda membutuhkan fitur ini? Saya suka berpikir bahwa cp
dan rm
selalu bekerja secara rekursif.
Ok, tapi bagaimana dengan keamanan? Mungkin perilaku non-rekursif melindungi file Anda? Ada satu kasus ketika Anda memiliki symlink ke direktori dan Anda ingin menghapus symlink itu, tetapi simpan direktori tersebut. Jika garis miring ditambahkan (sengaja atau sesekali) ke nama direktori dan mode rekursif diaktifkan melalui -r
, direktori akan menjadi kosong! KOSONG!
$ ln -s foodir dir_link $ rm -r dir_link/
Tanpa -r
arg itu akan menyalahgunakan dan tidak menghapus apa pun. Jadi, rm
rekursif meningkatkan risiko kehilangan data sedikit.
Saya mengaktifkan mode rekursif untuk cp
, scp
dan rm
, dan juga menambahkan -p
untuk mkdir
untuk membuat direktori bersarang dengan mudah.
alias cp='cp -r' alias scp='scp -r' alias rm='rm -r' alias mkdir='mkdir -p'
Selama dua tahun saya tidak pernah menyesal tentang alias ini dan tidak pernah kehilangan data. Ada juga kelemahan: itu mungkin untuk menyalin / menghapus lebih sedikit data, daripada yang dibutuhkan dan tidak bisa melihatnya ketika bekerja pada sistem tanpa alias. Jadi, harap berhati-hati. Saya tahu apa yang saya lakukan dan selalu menjalankan rm
dengan hati-hati.
Yang paling populer adalah alias ls
dan Anda mungkin sudah menggunakannya:
alias ls='ls -F --color=auto' alias la='ls -A' alias ll='ls -lh' alias lla='ll -A'
Juga grep berwarna jauh lebih cantik daripada tidak berwarna:
alias grep='grep --colour=auto'
Alias ββtidak bekerja dalam skrip, jangan lupa fakta itu! Anda harus secara eksplisit menentukan semua argumen.
Sentuhan mengetik
Jelas, tetapi saya ingatkan Anda: pengetikan sentuh membantu pengetikan lebih cepat. Ini akan sulit pada awalnya, tetapi Anda akan mengatasi batas waktu.
Waktu terbaik untuk belajar mengetik adalah liburan, ketika tidak ada yang mengganggu Anda. Tolong jangan terburu-buru saat belajar! Tujuan Anda adalah untuk mengingat di mana setiap karakter berada, tidak dengan pikiran Anda, tetapi dengan jari-jari Anda. Lebih baik mengetik lambat, tetapi tanpa kesalahan daripada cepat dengan kesalahan. Ingatlah bahwa tuan memiliki hasil yang baik bukan dengan jari cepat tetapi tidak melakukan kesalahan.
Jangan lupa istirahat. Otak dan jari Anda perlu istirahat. Ketika kesalahan mulai muncul, itu artinya Anda perlu istirahat.
Itu saja untuk hari ini
Saya harap tips ini akan sangat membantu Anda. Semoga beruntung