Posso inserir sudo através do comando ^?

4

Desculpe se esta é uma pergunta sim / não. Estou lendo o tutorial deste unix e encontrei o seguinte:

Repeating and Modifying the Previous Command

[..]
If you mistype leavenworth as leaveworth you can correct it with the following command: % ^leave^leaven

Infelizmente, não tenho um computador para experimentar, mas fiquei pensando:

Como alguns comandos exigem que sudo seja executado, eu poderia gravar ^^sudo para "inserir" sudo no comando anterior?

    
por Default 28.04.2011 / 13:11

3 respostas

6

Acho que usar a conclusão da história é uma maneira muito mais universal de fazer isso

$ sudo !!

A maioria das shells tem algum atalho para o comando anterior. Aquele trabalha em bash e zsh. Existem várias maneiras de fazer substituições, mas geralmente é melhor deixar para remover ou alterar bits, se você quiser expandi-lo, apenas pegar a coisa toda é a maneira mais simples. Você pode adicionar o que quiser antes e depois do !! para expandir o comando anterior.

Editar: A pergunta original era sobre colocar no comando anterior, que o texto acima cobre bem. Se você quiser alterar algo dentro dele como o comentador abaixo da sintaxe seria assim:

$ sudo !!:s/search/replace/

... onde 'search' é a string a ser encontrada e substituída ... bem, você entendeu.

    
por 28.04.2011 / 13:49
3

Não funciona para mim no bash:

$ whoami
mikel
$ ^^sudo
-bash: :s^^sudo: no previous substitution

ou zsh:

$ ^^sudo
$

ou até mesmo tcsh, que eu acho que inventou essa sintaxe:

% ^^sudo
No previous left hand side.

!! faz o trabalho:

$ whoami
mikel
$ sudo !!
sudo whoami
root
    
por 28.04.2011 / 13:21
0

SIM. Você pode fazer isso. por exemplo. para executar o comando ls no diretório / root, você pode fazer isso como:

$ ls
$ ^ ^sudo 

O segundo comando será executado como "sudo ls"

Lembre-se que você adiciona um "espaço" após o sudo, na segunda linha.

    
por 28.04.2011 / 13:22