GNU/Linux >> Belajar Linux >  >> Linux

Di Bash, Kapan Alias ​​​​Kapan Skrip, Dan Kapan Menulis Fungsi?

Saya membutuhkan hampir 10 tahun penggunaan Linux untuk mengajukan pertanyaan ini. Itu semua percobaan dan kesalahan dan penjelajahan internet larut malam secara acak.

Tetapi orang tidak perlu 10 tahun untuk ini. Jika saya baru memulai dengan Linux, saya ingin tahu:Kapan alias, kapan skrip, dan kapan harus menulis fungsi?

Dalam hal alias, saya menggunakan alias untuk operasi yang sangat sederhana yang tidak membutuhkan argumen.

alias houston='cd /home/username/.scripts/'

Itu terlihat jelas. Tetapi beberapa orang melakukan ini:

alias command="bash bashscriptname"

(dan tambahkan ke .bashrc berkas)

Apakah ada alasan bagus untuk melakukan itu? Saya berusaha sangat keras, tetapi saya benar-benar tidak dapat memikirkan keadaan apa pun di mana saya ingin melakukan itu. Jadi, jika ada kasus tepi yang akan membuat perbedaan, harap jawab di bawah.

Karena di situlah saya hanya akan meletakkan sesuatu di PATH dan chmod +x saya itu, yang merupakan hal lain yang muncul setelah bertahun-tahun mencoba-coba Linux.

Yang membawa saya ke topik berikutnya. Misalnya, saya menambahkan folder tersembunyi (.scripts/ ) di direktori home ke PATH saya hanya dengan menambahkan baris ke .bashrc saya (PATH=$PATH:/home/username/.scripts/ ), jadi apa pun yang dapat dieksekusi di sana secara otomatis dilengkapi secara otomatis.

Jika saya perlu.

Aku tidak benar-benar membutuhkan itu, kan? Saya hanya akan menggunakannya untuk bahasa yang bukan shell, seperti Python.

Jika itu shell, saya bisa menulis fungsi di dalam .bashrc yang sama :

funcname () {
  somecommand -someARGS "[email protected]"
}

Seperti yang saya nyatakan, saya menemukan banyak hal ini melalui coba-coba. Dan saya baru benar-benar melihat keindahan fungsi ketika komputer saya mati dan saya terpaksa menggunakan komputer orang-orang di sekitar saya saat mereka tidak menggunakannya.

Alih-alih memindahkan seluruh direktori skrip dari komputer ke komputer, saya akhirnya hanya mengganti .bashrc orang lain dengan milik saya sendiri, karena mereka bahkan tidak pernah membuat satu pun modifikasi.

Tapi apakah saya melewatkan sesuatu?

Jadi, apa yang akan Anda katakan kepada pengguna Linux pemula tentang kapan harus alias, kapan harus skrip, dan kapan harus menulis fungsi?

Jika tidak jelas, saya berasumsi orang yang menjawab ini akan menggunakan ketiga opsi tersebut. Jika Anda hanya menggunakan alias, atau hanya menggunakan skrip, atau hanya menggunakan fungsi—atau jika Anda hanya menggunakan alias dan skrip atau alias dan fungsi atau skrip dan fungsi —pertanyaan ini tidak benar-benar ditujukan untuk Anda.

Jawaban yang Diterima:

Alias ​​​​seharusnya secara efektif tidak (secara umum) melakukan lebih dari sekadar mengubah opsi default suatu perintah. Ini tidak lebih dari penggantian teks sederhana pada nama perintah. Itu tidak dapat melakukan apa pun dengan argumen tetapi meneruskannya ke perintah yang sebenarnya dijalankannya. Jadi, jika Anda hanya perlu menambahkan argumen di depan satu perintah, alias akan berfungsi. Contoh umum adalah

# Make ls output in color by default.
alias ls="ls --color=auto"
# make mv ask before overwriting a file by default
alias mv="mv -i"

Fungsi harus digunakan ketika Anda perlu melakukan sesuatu yang lebih kompleks daripada alias tetapi itu tidak akan berguna dengan sendirinya. Misalnya, ambil jawaban ini untuk pertanyaan yang saya ajukan tentang mengubah grep perilaku default tergantung pada apakah itu dalam pipa:

grep() { 
    if [[ -t 1 ]]; then 
        command grep -n "[email protected]"
    else 
        command grep "[email protected]"
    fi
}

Ini adalah contoh sempurna dari sebuah fungsi karena terlalu rumit untuk sebuah alias (memerlukan default yang berbeda berdasarkan suatu kondisi), tetapi itu bukan sesuatu yang Anda perlukan dalam skrip non-interaktif.

Terkait:Bagaimana cara membuat skrip berjalan sebagai root secara surut?

Jika Anda mendapatkan terlalu banyak fungsi atau fungsi terlalu besar, letakkan di file terpisah di direktori tersembunyi, dan sumber di ~/.bashrc Anda :

if [ -d ~/.bash_functions ]; then
    for file in ~/.bash_functions/*; do
        . "$file"
    done
fi

Sebuah skrip harus berdiri sendiri. Itu harus memiliki nilai sebagai sesuatu yang dapat digunakan kembali, atau digunakan untuk lebih dari satu tujuan.


Linux
  1. Script Shell Dengan Fungsi Dan Parameter Sebagai Variabel?

  2. Bagaimana Memanggil Fungsi Bash Dalam Skrip Bash Di Dalam Awk?

  3. Cara Membuat dan Memanggil Fungsi di Bash

  1. Menambahkan argumen dan opsi ke skrip Bash Anda

  2. Cara membuat perintah alias berfungsi di skrip bash atau file bashrc

  3. Bagaimana cara menulis skrip bash atau mengotomatiskan vi terbuka dan mengedit dokumen?

  1. Apa Env X=() { :;}; Command' Bash Do Dan Mengapa Tidak Aman?

  2. Bagaimana Cara Mendapatkan Penyelesaian Bash Untuk Alias ​​​​Perintah?

  3. Bagaimana Cara Menambahkan Baris Baru Ke Variabel Dalam Skrip Bash?