alias pour une command utilisant !! callbacker la dernière command

C'est une question de suivi à

Exécuter une command lines avec un sudo

Si vous voulez refaire la même command avec sudo !! après avoir exécuté une command comme celle-ci:

 echo "something">/path/file 

Vous pouvez utiliser la syntaxe de rlocation globale pour callbacker la command:

 !!:gs/>/|sudo tee -a / 

Utilisez un espace après le paramètre -a .

C'est l'équivalent de sudo !! mais vous aide à contourner les ressortingctions sudo pour les <et>. Parce que sudo ne vous permet pas d'utiliser [<,>].

Comment puis-je mettre cela dans un alias sur mon .bashrc afin que je puisse l'utiliser simple?

j'ai essayé

 alias redo='!!:gs/>/|sudo tee -a /' 

Mais cela ne fonctionne pas, j'obtiens l'erreur:

 $ echo "sdfdsf">/path/file bash: /path/file: no permissions $ redo bash: /: Is a directory tee: /: Is a directory 

    Je pense que ce que vous cherchez est:

     sudo sh -c "!!" 

    Cela se traduira !! à votre dernière command et gardez les redirections shell / pipes / variables fonctionnelles:

     ➜ ~ ping 10.0.0.1 --- 10.0.0.1 ping statistics --- 6 packets transmitted, 3 received, 50% packet loss, time 5001ms rtt min/avg/max/mdev = 1.736/1.951/2.182/0.185 ms ➜ ~ sudo sh -c "!!" ## And becomes like this: ➜ ~ sudo sh -c "ping 10.0.0.1" 

    Pas exactement une réponse à votre question, mais: ne faites pas cela.

    L'idée derrière cet alias (en supposant que cela a fonctionné) est que transformer > en |tee -a foo est une bonne idée. Tout d'abord, même dans le meilleur des cas, ils ne sont pas équivalents. > écrasera un file, tee -a l'appenda.

    Deuxièmement, cela ne gère pas les constructions communes comme echo >>foo (qui serait transformé en echo |sudo tee -a |sudo tee -a foo et fail) ou echo 2>&1 (qui serait transformé en echo 2|sudo tee -a &1 et échouent).

    Vous pourriez peut-être écrire une substitution beaucoup plus compliquée qui pourrait raisonnablement traiter tous ces cas, mais cela m'amène à mon troisième point:

    Cela lancerait une command en tant que root sans que vous ayez eu l'occasion de revoir la command qui est sur le point d'être exécutée, ce qui me frappe comme une très mauvaise idée – surtout étant donné que, lorsque vous avez quelque chose qui fonctionne pour tout le monde les cas les plus communs, il va probablement être assez complexe.

    Donc, dans l'set, je vous recommand de ne rien tenter de ce genre.