- Alias isminde boşluk olmamalıdır
Örnek
Şu alias hata verir. Çünkü alias isminde boşluk var
$ alias 'apt update'='sudo apt update -y'
bash: alias: 'apt update': invalid alias name
Şöyle yaparız
alias apt-update='sudo apt update -y'
- Alias Tanımlandığı Aynı Satırda Kullanılamaz
Örnek
Şu alias tanımlaması çalışmaz
$ alias x=ls; x
x: command not found
Şöyle yaparız
You can work around it by forcing a re-parsing using eval:
$ alias x=date; eval x
Fri Nov 12 18:20:54 JST 2021
Bash buna izin vermiyor. Açıklaması şöyle.
Bash does allow aliases to contain aliases but it has built-in protections against infinite loops.Eğer bash alias'larda döngü bulursa "command not found" şeklinde hata verir.
Örnek
Elimizde şöyle bir alias dizisi olsun
alias ls="lsc"
alias lsc='ls -Flatr --color=always'
alias lscR='ls -FlatrR --color=always'
Komut satırına lsc yazarsak elimizde şu geçer.ls -Flatr --color=always
ls bir alias olduğu için elimizde şu geçer.lsc -Flatr --color=always
lsc de bir alias olduğu için ve daha önce açıldığı için bash hata verir. Çıktı olarak şunu alırız$ lsc
lsc: command not found
- Alias İçinde Tek Tırnak Varsaalias'ı çift tırnak içine alırız. Bu sadece basit çözümlerden birisi
Örnek
Şöyle yaparız
$ alias ios="iostat -xk 2 $(findmnt -T ~ | awk 'END {print $2}')"
- Alias Hangi Dosyalarda Tanımlanır~/.bashrc veya ~/.bash_aliases dosyasına tanımlanır.
1. ~/.profile Dosyası - Kullanmayın
Bu dosya alias tanımlamak için uygun değil. Açıklaması şöyle. Bu dosya login shell içindir.
The commands in ~/.profile are run by login shells. That file is a good place to do things that should be done once at the beginning of each session but not repeated every time a new shell is started. ~/.profile is good for setting environment variables, which will be inherited by all descendant processes.Ancak bash kabukları login shell değildir. Açıklaması şöyle.
Aliases are not inherited, and the shell you get in a terminal window in Ubuntu is not (by default) a login shell. To define aliases for all your interactive Bash shells, the definitions need to be somewhere where they'll be run each time you start such a shell.2. ~/.bashrc Dosyası
~/.bashrc Dosyası yazısına taşıdım
3. ~/.bash_aliases Dosyası
Bu dosya ~/.bashrc dosyası tarafından okunur. Açıklaması şöyle.
Örnek
bash'te alias tanımlarken aliasismi='...' şeklide tanımlarız. Diğer bazı kabuklarda alias isminden sonra = karakteri gerekmeyebilir.
Örnek
Bu dosya ~/.bashrc dosyası tarafından okunur. Açıklaması şöyle.
The default ~/.bashrc in Ubuntu checks if ~/.bash_aliases exists and sources it.
- Alias ve expansion
alias expansion'a tabi tutulduğu için eğer alias yapılan komut parametreyi en sona almıyorsa sorun çıkıyor. Bu durumda alias yerine function tanımlamak daha iyi.
Örnek
Alias yerine function için şöyle yaparız. Önce ~/.bashrc dosyasında şöyle bir metod tanımlayalım. $@ tüm parametreler anlamına gelir. bash kodlama - gömülü değişkenler yazısına bakabilirsiniz.
alias ile tanımladığımız kısa komutu sudo komutuna geçmek istersek sudo için de alias yapmak gerekir. Açıklaması şöyle
En sonda bir boşluk bırakarak şöyle yaparız
alias expansion'a tabi tutulduğu için eğer alias yapılan komut parametreyi en sona almıyorsa sorun çıkıyor. Bu durumda alias yerine function tanımlamak daha iyi.
Örnek
Alias yerine function için şöyle yaparız. Önce ~/.bashrc dosyasında şöyle bir metod tanımlayalım. $@ tüm parametreler anlamına gelir. bash kodlama - gömülü değişkenler yazısına bakabilirsiniz.
myrm() {
/bin/mv "$@" /home/user/Trash/
}
Çağırmak için şöyle yaparız.myrm foo
Bu şöyle yorumlanır.mv foo /home/user/Trash
- sudo ve Aliasalias ile tanımladığımız kısa komutu sudo komutuna geçmek istersek sudo için de alias yapmak gerekir. Açıklaması şöyle
If the last character of the alias value is a blank, then the next command word following the alias is also checked for alias expansion.
alias sudo="sudo "
Daha sonra bir alias tanımlarız.alias myalias="..."
sudo ile çalıştırmak için şöyle yaparız.sudo myalias param1:param2
- Alias ve dosyalar
Örnek
Elimizde şöyle bir kod olsun.
Örnek
Elimizde şöyle bir kod olsun.
alias thead='head | cut -d, -f1- | column -s, -t'
Bunu çağıralımthead file.csv
Aslında şu çıktıyı elde ederiz ve hata alırız.head | cut -d, -f1- | column -s, -t file.csv
Dosyayı < işaret ile geçmek gerekir. Şöyle yaparız.thead <file.csv
Kullanım Örnekleri
bash'te alias tanımlarken aliasismi='...' şeklide tanımlarız. Diğer bazı kabuklarda alias isminden sonra = karakteri gerekmeyebilir.
Örnek
Şöyle yaparız. Komut tek tırnak içine alınır.
Şöyle yaparız. Komut tek tırnak içine alınır.
Çok satırlı alias tanımla için şöyle yaparız
alias myalias='...'
ÖrnekŞöyle yaparız. Komut tek tırnak içine alınır.
alias open='/usr/lib/node_modules/occam-open-cli/open.js'
ÖrnekÇok satırlı alias tanımla için şöyle yaparız
#!/bin/bash
alias jo='
echo "please enter values "
read a
read -e b
echo "My values are $a and $b"'
Çıktı olarak şunu alırız.$ jo
please enter values
foo bar
baz
My values are foo bar and baz
Hiç yorum yok:
Yorum Gönder