Como posso configurar um alias no bash para “sudo vim (filename)” como sim (filename)

4

O que eu normalmente digito para editar um arquivo é:

sudo vim Example.php

Eu gostaria de digitar

sim Example.php

como um atalho. Eu sei que posso configurar um alias no arquivo de configuração do bash, mas como eu vou sobre a especificação do argumento no alias? Nesse caso, o argumento é o nome do arquivo.

    
por user33423 09.02.2010 / 18:46

6 respostas

8

Deixe-me responder sua pergunta em várias partes.

Configurando um alias no Bash

No seu .bashrc , coloque uma linha da seguinte forma:

alias sim="sudo vim"

Em alguns sistemas (Ubuntu, por exemplo), esta linha deve ir no seu arquivo .bash_aliases , que será automaticamente carregado pelo padrão .bashrc .

Note que não é necessário lidar com os argumentos do comando; estes serão colocados no final do comando sudo vim automaticamente.

Editando como superusuário

Pegue tudo o que eu acabei de dizer e jogue fora.

Geralmente, é uma idéia melhor usar sudoedit . sudoedit fará automaticamente uma cópia temporária do arquivo que você pode editar sem privilégios de superusuário. Isso significa que o vim será executado como você (em vez de como root), e apenas um breve momento de superusuário será necessário depois que você terminar de editar o arquivo.

Certificando-se de que sudoedit é executado vim

Em sistemas Debianish, use sudo update-alternatives --config editor para escolher seu editor preferido. Caso contrário, certifique-se de que $EDITOR esteja definido como vim no seu .bashrc .

    
por 09.02.2010 / 18:57
7

Você usa sudoedit Example.php ou sudo -e Example.php . Se estiver chamando um editor diferente do Vim, basta adicionar um export EDITOR=vim aos arquivos de inicialização do bash.

No que diz respeito ao alias, jschmier está correto. Os aliases são simplesmente expandidos e, em seguida, todos os argumentos são manipulados normalmente. Se você realmente precisar processar argumentos (em vez de deixá-los no lugar depois que o alias for expandido), você desejará usar uma função. Veja a documentação básica para aliases e functions .

    
por 09.02.2010 / 18:49
1

alias sim='sudo vim $1'

    
por 09.02.2010 / 18:48
1

alias sim='sudo vim' e chamada como sim Example.php

Bash sempre lê pelo menos uma linha completa de entrada antes de executar qualquer um dos comandos nessa linha. Os aliases são expandidos quando um comando é lido, não quando é executado.

Veja a entrada Aliases no Bash Reference Manual para mais detalhes.

    
por 09.02.2010 / 18:50
1

Use uma função bash. Eu tenho uma função que eu uso para mostrar a data da última modificação de um arquivo / pasta:

function lm()
{
    ls -l "$*" | awk '{print $6, $7, $8}'
}

Tente isto:

function sim()
{
    sudo vim "$*"
}

O $* no bash representa todos os argumentos da linha de comando, ou seja, tudo após o nome da função.

Em seguida, use da seguinte forma: $ sim -p Example.php Example2.php

    
por 09.02.2010 / 21:49
0

não exatamente respondendo a pergunta, mas há um bom truque para usar quando você começou a editar o arquivo e só então lembrou que você esqueceu o sudo. você pode usar :w !sudo tee % para salvar o arquivo com todas as suas edições.

    
por 16.02.2010 / 21:26

Tags