Me gustaría definir un alias que ejecuta los siguientes dos comandos de forma consecutiva.

gnome-screensaver
gnome-screensaver-command --lock

Ahora he añadido

alias lock='gnome-screensaver-command --lock'

a mi .bashrc pero ya me bloqueo mi estación de trabajo tan a menudo que sería más fácil sólo tienes que escribir un comando.

InformationsquelleAutor yuriel | 2009-04-16

7 Comentarios

  1. 354

    Tratar:

    alias lock='gnome-screensaver; gnome-screensaver-command --lock'

    o

    lock() {
        gnome-screensaver
        gnome-screensaver-command --lock
    }

    en su .bashrc

    La segunda solución permite el uso de argumentos.

    • no debería ser «la función de bloqueo() { bla }» ?
    • Yo uso sh sintaxis, que trabaja con bash así.
    • ¿Cómo pasa el argumento? Anidación de la variable ‘msg’ dentro de lock() paréntesis da error syntax error near unexpected token msg»..
    • Una vez que la función ha sido definida, se comporta como un comando: argumentos en la línea de comandos, separados por espacios en blanco. En la declaración de parte, los argumentos se $1, $2… en el cuerpo de la función.
    • gracias por la mención de la multi-función de línea
    • cómo pasamos un parámetro de este método
    • Downvote a la no inclusión de la línea de alias para con parámetros.
    • Yo estaría encantado de aprender de ustedes y upvote su respuesta.
    • askubuntu.com/a/1152629/623503

  2. 72

    Las otras respuestas responder a la pregunta adecuadamente, pero su ejemplo se ve como el segundo comando depende de la primera de salir con éxito. Usted puede desear intentar un la evaluación de cortocircuito en su alias:

    alias lock='gnome-screensaver && gnome-screensaver-command --lock'

    Ahora el segundo comando no van a ser tratado a menos que la primera de ellas es correcta. Una mejor descripción de la evaluación de cortocircuito se describe en este ASÍ, pregunta.

    • Sorprendentemente, esta probado con git fetch && git pull origin master y no trabajo para mí, hasta que me reemplazado && con ;.
    • Probablemente porque git fetch la devolución que hizo algo más que 0?
    • Ayudado! Me funciona a mi en Xubuntu 16.04.3
    • Downvote a la no inclusión de la línea de alias para con parámetros.
  3. 15

    Alias son para aliasing los nombres de los comandos. Nada más allá de que se debe hacer con las funciones.

    alias ll='ls -l' # The ll command is an alias for ls -l

    Alias son nombres con los que todavía están asociadas con el nombre original. ll es sólo ligeramente un tipo específico de ls.

    d() {
        if exists colordiff; then
            colordiff -ur "[email protected]"
        elif exists diff; then
            diff -ur "[email protected]"
        elif exists comm; then
            comm -3 "$1" "$2"
        fi | less
    }

    Una función es un nuevo comando que tiene su lógica interna. No es simplemente un cambio de nombre de otro comando. Hace operaciones internas.

    Técnicamente, los alias en el shell Bash lenguaje son tan limitado en capacidades que son muy poco adecuadas para cualquier cosa que involucre a más de un solo comando. El uso de ellos para hacer una pequeña mutación de un solo comando, nada más.

    Puesto que la intención es crear un nuevo comando que realiza una operación que internamente va a resolver en otros comandos, la única respuesta correcta es utilizar una función aquí:

    lock() {
        gnome-screensaver
        gnome-screensaver-command --lock
    }

    Uso de alias en un escenario como este se ejecuta en un montón de problemas. Contrariamente a las funciones, las cuales son ejecutadas de comandos, los alias se expanden en el comando actual, que va a llevar a problemas inesperados a la hora de combinar este alias «comando» con otros comandos. Además, no trabajo en secuencias de comandos.

    • Sería mejor si usted puede proporcionar cualquier ejemplo con su respuesta. a la espera de la actualización.
    • Downvote a la no inclusión de la línea de alias para con parámetros.
    • los alias no toma parámetros. No hacia abajo-voto de la manzana para no ser naranja. Comer una naranja en su lugar. Como la respuesta explica muy bien, el derecho de la herramienta aquí no es el alias, pero las funciones.
    • Me refiero a parámetros como este. Yo estaba usando citas anidadas mal. alias=»git commit-m ‘init ‘; git push; git status»
    • Usted realmente necesita para utilizar una función, no un alias. gps() { git commit -m 'init '; git push; git status; } Como se ha explicado, los alias son extremadamente limitada, frágil, y su única intención es cambiar el nombre de los comandos. Abusar de ellos para no relacionados fines de la tierra que en agua caliente, como usted acaba de experimentar.
  4. 3

    Esto significaría correr el 2 comandos uno tras otro:

    alias lock='gnome-screensaver ; gnome-screensaver-command --lock'
  5. 1

    Así que utilice un semi-colon:

    alias lock='gnome-screensaver; gnome-screen-saver-command --lock'

    Esto no funciona bien si desea proporcionar argumentos para el primer comando.
    Como alternativa, crear un trivial de secuencia de comandos en su $HOME/bin.

  6. -3

    Entré en un problema cuando se declara alias en ~/.bashrc. Mi terminal no reconoce el alias he declarado en ~/.bashrc. He aprendido de los artículo (que se adjunta en la parte inferior) que Mac OS X ejecutar login-shell por defecto, por lo tanto se llama ~/.bash_profile en lugar de ~/.bashrc.

    Debería venir en el mismo problema en declarar su alias, puede consultar el siguiente enlace para resolver el problema:

    http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html

    • Este QA es acerca de varios comandos en un alias, no cuando para poner el alias.
    • Siempre hago source .bashrc después de guardar los cambios en el archivo, para permitir el alias de ser reconocido sin salir de la sesión.

Dejar respuesta

Please enter your comment!
Please enter your name here