GNU/Linux >> Belajar Linux >  >> Linux

Menyesuaikan shell Bash

Bash shell adalah lingkungan pemrosesan perintah yang digunakan banyak sysadmin dan pengembang setiap hari. Ini pertama kali dikembangkan pada tahun 1989 dan telah menjadi shell default untuk banyak distribusi sejak Linux dibuat. Dalam kebanyakan kasus, Bash atau 'Bourne-again shell' adalah kerangka kerja tempat Anda bekerja setiap kali Anda membuka baris perintah. Ini juga memiliki bahasa scripting sendiri dan menawarkan sejumlah besar utilitas bagi mereka yang memiliki disiplin mental untuk mempelajarinya.

Mengapa Anda menyesuaikan cangkang Anda?

Bash shell menawarkan banyak utilitas, tetapi ini bukan sistem yang sempurna. Selama bertahun-tahun, penggemar baris perintah telah menemukan kekurangan dan membuat perbaikan di berbagai shell, dan Bash tidak terkecuali. Ada banyak tambahan yang bisa Anda buat untuk Bash. Semuanya, mulai dari perubahan fungsionalitas yang berarti hingga pintasan dan perubahan estetika yang dibuat sesuai dengan selera pribadi Anda. Karena itu, setiap orang memiliki selera estetika yang disukainya sendiri, jadi saya akan fokus pada perubahan fungsi.

Mulai dari yang kecil

Cara termudah untuk memulai dengan menyesuaikan shell Anda adalah untuk mencari tahu di mana sebagian besar waktu baris perintah Anda dihabiskan. Apakah Anda menemukan diri Anda menggunakan grep dan netstat sering? Apakah Anda bergerak di sekitar sistem file berkali-kali per jam? Jika demikian, bagaimana Anda dapat membuat tugas-tugas ini lebih efisien? Dalam artikel pertama yang pernah saya tulis untuk situs ini, saya berbicara tentang skrip otomatisasi yang disebut AutoHotkey. Sayangnya, ini hanya berjalan di Windows. Saya ditantang oleh seorang pembaca untuk menemukan sesuatu yang dapat dia gunakan untuk Linux untuk menyelesaikan tugas yang sama. Meskipun tidak ada solusi yang dikemas dengan rapi untuk tantangan itu, Anda dapat membuat alias untuk perintah yang dimodifikasi di dalam shell Anda untuk efek yang sama. Meskipun ini bisa memakan sedikit waktu, jika Anda meluangkan waktu untuk mempelajari tentang aliasing dan membuat sendiri, Anda akan menjadi sysadmin yang lebih cerdas dan efisien untuk itu.

Rick Greene, anggota komunitas Enable Sysadmin, membagikan salah satu alias favoritnya, di mana ia naik ke shell root dengan menggunakan sudo .

alias root="sudo su - root"

Secara efektif, dia bekerja sebagai root pengguna sambil melacak tindakannya dalam sistem menggunakan kata sandi akun penggunanya sendiri. Sementara metode yang disukai di sini adalah menggunakan sudo perintah sebelum tindakan apa pun, keindahan dari contoh ini adalah Bash memungkinkan setiap pengguna untuk membuat solusi yang sesuai untuk mereka! Anda dapat alias hampir setiap perintah di shell Anda. Saya sarankan Anda mencoba membuat beberapa alias Anda sendiri sekarang.

[ Untuk informasi tentang membuat alias di Linux, lihat artikel saya sebelumnya. ]

X> f(x)

Jika Anda cenderung secara matematis, Anda sudah tahu apa yang sedang kita bicarakan di sini. Fungsi telah keluar dari mimpi buruk kelas Anda dan masuk ke kehidupan kerja Anda! Kabar baiknya di sini adalah bahwa ini cukup mudah dan bisa sangat berguna. Mereka memungkinkan kita menjembatani antara aliasing dan skrip lengkap. Takeaway besar di sini adalah Anda dapat menghubungkan beberapa perintah bersama-sama. Mari kita lihat sintaks untuk membuat fungsi-fungsi ini dan contoh praktis untuk digunakan. Untuk membuat fungsi, gunakan sintaks berikut:

function_name () {command1; command2;}
#You MUST use a semicolon after each command, including the last. 

Bagaimana kita akan menggunakan ini? Salah satu contoh terbaik yang pernah saya lihat mengambang di web adalah fungsi yang memungkinkan Anda membuat direktori baru dan kemudian segera pindah ke direktori itu. Fungsi itu akan terlihat seperti ini:

mkd () {mkdir -p $1; cd $1;}

Sekarang, jika kita membuat direktori bernama func_test menggunakan mkd fungsi, kita dapat melihat bahwa itu secara otomatis menempatkan kita ke direktori baru.

# mkd func_test
# pwd
# Home/user/func_test

Sejarah berulang? Hanya jika Anda mau...

Sebelum menulis artikel ini, saya telah menghubungi komunitas kontributor kami untuk mendapatkan umpan balik tentang peningkatan Bash favorit mereka. Ada tema umum dalam semua umpan balik yang saya terima. Orang ingin mengubah cara Bash history beroperasi. Salah satu perubahan paling membantu yang saya lihat adalah kemampuan untuk menghapus entri duplikat dari history .

Seth Kenlon dari Opensource.com mengirimkan yang berikut ini dari .bashrc-nya mengajukan. Ini memungkinkan history untuk mengabaikan entri duplikat dan perintah yang dimulai dengan spasi.

"export HISTCONTROL=$HISTCONTROL:ignorespace:ignoredups"

Red Hatter Steve Newsted mengarahkan saya ke utas hebat di StackExchange, tempat pengguna ingin mengubah history Bash untuk mengingat semuanya dari setiap terminal di mesinnya sambil memiliki history dapat diakses dari setiap terminal pada mesin tersebut. Lihat kreativitas jawabannya oleh suntzuisafterU. Cukup tambahkan berikut ini ke ~/.bashrc . Anda berkas.

#Avoid duplicates
HISTCONTROL=ignoredups:erasedups  
# When the shell exits, append to the history file instead of overwriting it
shopt -s histappend

# After each command, append to the history file and reread it
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"

Langkah selanjutnya

Sekarang Anda dapat melihat banyak perubahan, pengoptimalan, dan personalisasi yang tersedia di Bash. Artikel ini hanya menggores permukaan dari apa yang dapat Anda lakukan di dalam cangkang. Keluarlah dan jelajahi sendiri! Jika Anda memiliki tambahan Bash favorit, jangan ragu untuk mengirimkannya ke tim di [email protected]. Saya ingin melihat beberapa solusi kreatif yang digunakan pembaca kami!

[ Butuh bantuan lebih lanjut untuk memulai administrasi sistem Linux? Ikuti kursus administrasi sistem Red Hat. ]


Linux
  1. Menavigasi shell Bash dengan pushd dan popd

  2. Kekuatan (Shell) untuk orang-orang

  3. Apa perbedaan antara &> dan >&di bash?

  1. Navigasi Direktori Cepat Di Bash Shell?

  2. Menyesuaikan Bash Shell:Tebal/warnai Perintah?

  3. Fungsi Dalam Variabel Shell?

  1. Perintah "eval" Di Bash?

  2. Bagaimana Cara Membaca Seluruh Script Shell Sebelum Mengeksekusinya?

  3. Arti dari $? Dalam Skrip Shell?