Tôi đang cố gắng để bí danh lệnh sudo shutdown
nhưng trong tôi .profile
không thể làm được alias "sudo shutdown"="my command"
. Có cách nào khác để bí danh các lệnh nhiều từ trong Unix không?
Tôi đang cố gắng để bí danh lệnh sudo shutdown
nhưng trong tôi .profile
không thể làm được alias "sudo shutdown"="my command"
. Có cách nào khác để bí danh các lệnh nhiều từ trong Unix không?
Câu trả lời:
Tên bí danh nằm ở phía bên trái, vì vậy bạn có thể có bất kỳ lệnh đa từ nào ở bên phải:
alias my_alias="multi worded command"
EDIT: Tuy nhiên, nếu bạn thực sự muốn có tên bí danh của nhiều từ - trong ví dụ của bạn, nếu bạn thực sự muốn "sudo shutdown" là bí danh, bạn có thể xử lý vấn đề này bằng cách sử dụng tính năng bí danh sau (trong hướng dẫn bash ):
A trailing space in value causes the next word to be checked for
alias substitution when the alias is expanded.
Vì vậy, nếu bạn vẫn muốn sử dụng sudo
với các lệnh khác nhưng không phải với shutdown
và nếu bạn có đủ khả năng bí danh shutdown
cho một thứ khác, bạn có thể có:
alias sudo='sudo '
alias shutdown="echo nope"
Bây giờ, sudo anything_else
sẽ hoạt động như mong đợi (giả sử bạn không có bí danh anything_else
, nhưng nếu bạn có thì nó cũng không hoạt động trước đó); nhưng sudo shutdown
sẽ tương đương sudo echo nope
và nó sẽ in chuỗi đó.
alias cd="cd "
các bí danh một chữ cái alias X="<directory-with-long-name>"
để nhảy từ nơi này sang nơi khác dễ dàng hơn.
alias gti="git "
vàalias lgo="log"
Sử dụng một chức năng:
foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }
else
trường hợp để lệnh ban đầu chạy nếu tham số thứ hai không bar
:foo() { if [ "$1" = "bar" ]; then echo "doing something..."; else command foo "$@"; fi; }
Để trích dẫn từ: Bash: Spaces in alias name
Các tài liệu Bash bang "Đối với hầu hết các mục đích, chức năng vỏ được ưa thích hơn bí danh." Đây là một hàm shell thay thế ls
và làm cho đầu ra được dẫn đến more
nếu đối số chỉ bao gồm (chỉ) -la
.
ls() {
if [[ $@ == "-la" ]]; then
command ls -la | more
else
command ls "$@"
fi
}
Như một lớp lót:
ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }
Tự động đầu ra đường ống:
ls -la
Tôi thích chỉ đặt một tệp thực thi trong / usr / local / bin (hãy chắc chắn rằng đó là trong đường dẫn của bạn) sau đó chứa các lệnh tôi muốn chạy. Tên của kịch bản sẽ là lệnh xuất hiện. hãy chắc chắn để chmod + x / usr / local / bin / your_script.
Vì vậy, kịch bản có thể được gọi là 'tắt máy'
Nội dung tắt máy sẽ là:
#!/bin/sh
sudo shutdown
Điều đó mở ra một thế giới hoàn toàn mới. Sau đó, bạn có thể có một vài lệnh hoặc thậm chí một tập lệnh:
#!/usr/bin/env python
print "hi"
# more stuff. ....