Bagaimana cara membuat alias Bash permanen?

Saya ingin membuat alias untuk rm perintah untuk memiliki pesan konfirmasi setelah menjalankan perintah ini. Jadi saya membuat alias seperti ini alias rm='rm -i'. Tapi sejauh yang saya tahu ini adalah alias sementara dan itu hidup sampai Anda menutup terminal.

Seperti yang dijelaskan di sini untuk menyimpan alias secara permanen saya perlu mengeksekusi ~/.bash_aliases atau ~/.bashrc perintah di terminal dan tambahkan alias saya di sana. Tapi ketika saya mengeksekusi ~/.bashrc Saya mendapatkan pesan kesalahan berikut :

bash: /home/bakhtiyor/.bashrc: Permission denied

Ketika saya menjalankan ~/.bash_aliases Saya mendapatkan pesan kesalahan lain seperti ini:

bash: /home/bakhtiyor/.bash_aliases: File or directory doesn't exist.

Apa masalah sebenarnya dan bagaimana saya bisa mengatasinya?

Untuk membuat alias secara permanen menambahkan alias ke .bashrc berkas

gedit ~/.bashrc

Dan kemudian tambahkan alias anda di bagian bawah.

alt text

Sekarang jalankan . ~/.bashrc di terminal Anda (harus ada ruang antara . dan ~/.bashrc.

Sekarang Anda dapat memeriksa alias anda.

alt text

Ada banyak cara untuk membuat alias. Cara yang paling banyak digunakan adalah:

  1. Tambahkan alias langsung di ~/.bashrc berkas

    Sebagai contoh: tambahkan baris ini ke ~/.bashrc berkas

    alias ll='ls -l'alias rm='rm -i'

    Lain kali (setelah Anda keluar/masuk, atau selesai . ~/.bashrc) saat Anda mengetik rm the rm -i perintah akan dieksekusi.

  2. Metode kedua memungkinkan Anda membuat file alias terpisah, jadi Anda tidak perlu memasukkannya .bashrc, tetapi untuk file pilihan Anda. Pertama, edit ~/.bashrc file dan tambahkan baris berikut jika mereka belum ada, atau tanda komentar mereka jika mereka lakukan:

    if [ -f ~/.bash_aliases ]; then. ~/.bash_aliasesfi

    Simpan dan tutup file. Setelah itu, yang harus Anda lakukan adalah membuat ~/.bash_aliases file dan tambahkan alias anda di sana, dengan format yang sama yang ditentukan dalam metode pertama.

    Isi dari saya ~/.bash_aliases berkas:

    alias cs='cd;ls'

Kedengarannya bagi saya seperti satu-satunya masalah Anda hanya mencoba untuk mengeksekusi .bashrc ketika tidak dieksekusi. Tapi ini bukan cara yang benar untuk melakukannya; setiap kali Anda membuat perubahan pada file ini, Anda harus "menjalankannya" dengan perintah:

source ~/.bashrc

Jika tidak, itu hanya akan membuat shell baru, mengeksekusi file di lingkungan shell baru, lalu membuang lingkungan itu ketika keluar, sehingga kehilangan perubahan Anda. Dengan sumber script, mengeksekusi dalam shell saat ini, sehingga akan tetap berlaku.

Saya berasumsi kesalahan kedua adalah karena bash_aliases tidak ada. Hal ini tidak diperlukan, hanya disarankan untuk menjaga perubahan Anda terpisah dan terorganisir. Hal ini hanya digunakan jika ada, dan Anda dapat melihat tes untuk itu di .bashrc:

if [ -f ~/.bash_aliases ]; then. ~/.bash_aliasesfi

Ini mengatakan bahwa jika file ~/.bash_aliases ada, lalu jalankan.

Masalahnya adalah Anda mencoba mengeksekusi file yang tidak dapat dieksekusi:Anda dapat memeriksanya dengan:

ls -la ~/.bashrc-rw-r--r-- 1 username username 3596 2010-08-05 17:17 /home/pt001424/.bashrc

Catatan tidak ada huruf "X-executable" pada kolom pertama (izin file).

File profil bukan file yang dapat dieksekusi, alih-alih mengeksekusinya, Anda memuatnya dengan:

source /home/bakhtiyor/.bashrc

atau

. /home/bakhtiyor/.bashrc
echo "alias vps='ssh -X user@example.com'" >> ~/.bashrc

Ini adalah contoh yang saya cari, cara untuk mengetik beberapa huruf di terminal ("vps") untuk masuk dari jarak jauh ke server dan mengaktifkan penerusan X11 sehingga saya dapat menjalankan aplikasi gui seperti" gedit " melalui jaringan.

>>Apa pun perintah / perintah alias, cara ini dengan pernyataan echo, tanda kutip, dan simbol untuk menambahkan output dari perintah ke file () bekerja untuk saya. Cukup ganti perintah saya untuk perintah alias yang Anda butuhkan dan masukkan ke terminal Anda.

Saya menulis fungsi bermanfaat ini untuk membuat alias baru dengan cepat, dan kemudian menulis definisi alias ke ~/.bash_aliases (jika ada) atau ~/.bashrc.

TIP: Memastikan ~/.bash_aliases ada & amp; dieksekusi di ~/.bashrc.

# -----------------------------------#  Create a new permanent bash alias##  @param $1 - name#  @param $2 - definition# -----------------------------------new-alias () {   if [ -z "$1" ]; then    echo "alias name:" && read NAME  else    NAME=$1  fi  if alias $NAME 2 > /dev/null > /dev/null; then    echo "alias $NAME already exists - continue [y/n]?" && read YN    case $YN in      [Yy]* ) echo "okay, let's proceed.";;      [Nn]* ) return;;      * ) echo "invalid response." && return;;    esac  fi  if [ -z "$2" ]; then    echo "alias definition:" && read DEFINTION  else    DEFINTION="$2"  fi  if [ -f ~/.bash_aliases ]; then    echo "alias $NAME=\"$DEFINTION\"" >> ~/.bash_aliases  else    echo "alias $NAME=\"$DEFINTION\"" >> ~/.bashrc  fi  alias $NAME="$DEFINTION"}

jika Anda menggunakan ruby, Anda dapat menginstal alias menggunakan rubygem.

gem install aka2

penggunaan

aka generate hello="echo helloworld" #add an aliasaka g hello="echo helloworld"  #add alias for lazy peopleaka destroy hello #remove aliasaka d hello #remove alias for lazy people

rubygem akan otomatis Sumber File dot anda sehingga anda tidak perlu. Coba lihat.

Saya ingin memperluas ide ini!

Anda ingin alias perintah sesuai dengan pertanyaan Anda:

echo "alias wolfr='cd /home/wolf'">>./~bashrc

Sekarang Anda dapat mengetik wolfr untuk pindah ke direktori home wolf.

Ini sangat mirip dan sangat keren export perintah:

echo "export ngse=/etc/nginx/sites-enabled"./~bashrc

Sekarang Anda dapat mengetik cp $ngse/my_file /destination_directory/destination_filename untuk menyalin file dari direktori situs-enabled ke tujuan.

Semua ini tidak akan berhasil sampai anda melakukan sesuatu seperti ini:

exec bash

Atau, Anda dapat kembali log atau Anda dapat reboot.

Saya sarankan menggunakan /etc/bash.bashrc

Anda dapat menambahkan baris di akhir file itu.

alias ok="ping google.com"

Setelah menempatkan alias per baris Anda harus reboot atau relogin.

Seingat saya, bashrc memiliki, atau memiliki, garis yang menyarankan untuk tidak menggunakannya untuk alias secara langsung. The solusi adalah dengan menggunakan file eksternal(s). The foo dan bar Alias telah ditambahkan, tetapi untuk menambahkan baz the bashrc file harus "bersumber" (atau, cukup buka terminal baru). Contoh sebagai:

thufir@dur:~$ thufir@dur:~$ aliasalias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'alias bar='echo foo'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias foo='echo foo'alias grep='grep --color=auto'alias l='ls -CF'alias la='ls -A'alias ll='ls -alF'alias ls='ls --color=auto'thufir@dur:~$ thufir@dur:~$ cat .bash_aliases alias foo='echo foo'alias bar='echo foo'alias baz='echo baz'thufir@dur:~$ thufir@dur:~$ source .bashrc thufir@dur:~$ thufir@dur:~$ aliasalias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'alias bar='echo foo'alias baz='echo baz'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias foo='echo foo'alias grep='grep --color=auto'alias l='ls -CF'alias la='ls -A'alias ll='ls -alF'alias ls='ls --color=auto'thufir@dur:~$ thufir@dur:~$ bazbazthufir@dur:~$ 

sekarang baz alias bekerja. Saya baru saja menyadari bahwa jawaban sebelumnya telah disebutkan teknik ini, tetapi mereka telah mengubur lede.

** Jawaban * * – How to find out where alias (in the bash sense) is defined when running Terminal in Mac OS X - Stack Overflow

‘alias rm=’ rm-i " tidak menyelesaikan masalah menggunakan rm secara sembarangan

bagaimana dengan Ubuntu di Wsl guys ?