2015-06-08 2 views
1

Я написал эту функцию, которую я использую для добавления псевдонимов в файл .bashrc. Функция работает хорошо, но она не завершена. Я хотел бы попросить подтверждение у пользователя, если добавленный псевдоним уже существует и записать условие if, чтобы получить «измененную» часть кода, если дано подтверждение, просто например, при установке нового пакета.Улучшить функцию, добавляющую псевдонимы в .bashrc из командной строки

add_alias(){ 
    d_alias=$1 
    d_command="$2" 
    replacing=alias|grep "alias $d_alias" 

    if [[ "$replacing" -ne 0 ]]; 
    then 
     sed -i "/alias $d_alias/d" $HOME/.bashrc 
     echo "alias $d_alias modified in ~/.bashrc" 
    else 

     sed -i ':a;$!{N;ba};s,\(auto-generated code\),\1\nalias '"$d_alias"'='"'$d_command'"',2' $HOME/.bashrc  
     source ~/.bashrc 
     echo "alias $d_alias added to ~/.bashrc" 
    fi 
} 


#auto-generated code 
alias brc='source ~/.bashrc' 
alias client='/home/user/workspace/client' 
alias workspace='/home/user/workspace' 
+1

Это достаточно тривиально, чтобы проверить наличие псевдонима с 'alias' встроенной команды (например,' псевдоним Привет &>/DEV/null' возвращает 0, если псевдоним 'hello' существует и 1 в противном случае). Затем используйте 'read -p' для запроса подтверждения. – 4ae1e1

+0

Конечно! Пожалуйста, добавьте ответ для надлежащего кредита. – Alan

+1

Слишком ленив, чтобы сделать это;) Не стесняйтесь сами писать ответ. – 4ae1e1

ответ

1

Я добавляю ответ для дальнейшего использования, зачитывает @ 4ae1e1 и @ArunSangal. Их предложения содержатся в комментариях.

# TODO Room to improve - add_alias() 
# Add new aliases to this .bashrc file 
#------------------------------------- 
add_alias(){ 
    n_alias=$1 
    shift 
    n_command="[email protected]" 
    replacing=$(alias $n_alias 2>/dev/null|wc -l) 

    if [[ "$replacing" = "1" ]]; 
    then 
     b $n_alias # cat|grep .bashrc in color 
     read -p "Do you wish to overwrite this(these) alias(es)? [y/n]" yn 
     case $yn in 
      [Yy]*) sed -i '/alias '"$n_alias"'/d' $HOME/.bashrc; 
       sed -i ':a;$!{N;ba};s,\(auto-generated code\),\1\nalias '"$n_alias"'='"'$n_command'"',3' $HOME/.bashrc;  
       source ~/.bashrc; 
       echo "alias $n_alias modified in ~/.bashrc" ;; 
      [Nn]*) echo "Operation canceled";; 
      *) echo "Please answer yes or no.";; 
    esac 
    else 
     sed -i ':a;$!{N;ba};s,\(auto-generated code\),\1\nalias '"$n_alias"'='"'$n_command'"',3' $HOME/.bashrc  
     source ~/.bashrc 
     echo "alias $n_alias added to ~/.bashrc" 
    fi 
} 
alias aa='add_alias' 
# end of add_alias() 

# auto-generated code 
alias cdn='ssh cdn' 
alias cdn2='ssh cdn2' 
alias sxdev64="ssh sxdev64" 
alias csi="ssh csi" 
alias malt="ssh malt" 
Смежные вопросы