Komutu takma adı denemeye çalışıyorum sudo shutdown
ama bence .profile
sadece yapamam alias "sudo shutdown"="my command"
. Unix'te çok kelimeli komutları takma ad etmenin başka bir yolu var mı?
Komutu takma adı denemeye çalışıyorum sudo shutdown
ama bence .profile
sadece yapamam alias "sudo shutdown"="my command"
. Unix'te çok kelimeli komutları takma ad etmenin başka bir yolu var mı?
Yanıtlar:
Takma ad adı soldadır, böylece sağda herhangi bir çok kelimeli komutunuz olabilir:
alias my_alias="multi worded command"
DÜZENLEME: Ancak, gerçekten birden çok sözcüğün diğer adlarının olmasını istiyorsanız - örneğin, gerçekten "sudo shutdown" (takma ad) olmasını istiyorsanız, aşağıdaki takma ad özelliğini (bash kılavuzunda) kullanarak bu sorunu çözebilirsiniz. ):
A trailing space in value causes the next word to be checked for
alias substitution when the alias is expanded.
Yani, hala sudo
diğer komutlarla kullanmak istiyor ancak kullanmıyorsanız ve başka bir şeyin shutdown
takma adını göze alabiliyorsanız shutdown
, sahip olabilirsiniz:
alias sudo='sudo '
alias shutdown="echo nope"
Şimdi, sudo anything_else
beklendiği gibi çalışacaktır (sizin için bir takma adınız olmadığı varsayılarak anything_else
, ancak varsa, daha önce de işe yaramazdı); ancak sudo shutdown
eşdeğer olur sudo echo nope
ve bu dizeyi yazdırır.
alias cd="cd "
tek harfli takma adlarla kullanıyorum alias X="<directory-with-long-name>"
.
alias gti="git "
vealias lgo="log"
Bir işlev kullanın:
foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }
else
durum istersiniz, böylece ikinci parametre aşağıdaki değilse orijinal komut çalışır bar
:foo() { if [ "$1" = "bar" ]; then echo "doing something..."; else command foo "$@"; fi; }
Alıntı yapmak için: Bash: Takma ad alanındaki boşluklar
Bash dokümantasyon devletler "Hemen hemen her amaç için, kabuk işlevleri takma adlara tercih edilmektedir." Argüman (yalnızca) içeriyorsa ls
, çıktıyı değiştiren ve çıktıya pipetlenmesine neden olan bir kabuk işlevi .more
-la
ls() {
if [[ $@ == "-la" ]]; then
command ls -la | more
else
command ls "$@"
fi
}
Tek astar olarak:
ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }
Otomatik boru çıkışı:
ls -la
Ben sadece çalıştırmak istediğiniz komutları içeren / usr / local / bin (yolunuzda olduğundan emin olun) yürütülebilir bir dosya koymayı tercih ederim. Komut dosyasının adı, gelen komut olacaktır. chmod + x / usr / local / bin / komut dosyanızın olduğundan emin olun.
Yani betiğe 'kapatma' denebilir
Dosya kapanmasının içeriği:
#!/bin/sh
sudo shutdown
Bu tamamen yeni bir dünya açar. Daha sonra birkaç komutunuz veya bir komut dosyanız olabilir:
#!/usr/bin/env python
print "hi"
# more stuff. ....