Modificar el alias de "alerta" en ~ / .bashrc -- mmand-line campo con bash campo con notification camp askubuntu Relacionados El problema

Modify the “alert” alias in ~/.bashrc


6
vote

problema

Español

Sistema: Lubuntu 14.04 LTS

Quiero saber si es posible modificar el alert alias proporcionado en ~/.bashrc de una manera particular. Este es el original ABCDEFGHIJKLMNABCDEFGHIJKLMN2 :

  # Add an "alert" alias for long running commands.  Use like so: #   sleep 10; alert alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '''s/^s*[0-9]+s*//;s/[;&|]s*alert$//''')"'   

Uso de alias predeterminados "alerta" explica lo que hace.

y aquí hay un ejemplo de la notificación predeterminada en mi sistema (usando xfce4-notify ) cuando ejecuto ls; alert que, por supuesto, se completa con éxito:

01default-alerta

Si ejecuto un comando sin sentido, ABCDEFGHIJKLMNABCDEFGHIJKLMN6 , veo esto:

02Nonsense-Command

El icono terminal ha sido reemplazado por el ícono error debido a

  ABCDEFGHIJKLMNABCDEFGHIJKLMN9   

A partir de ahora, la notificación tiene solo dos elementos:
- el icono que es ~/.bashrc0 o ~/.bashrc1 Dependiendo del éxito del comando "anterior"
- el comando en sí ( ~/.bashrc2 en el primer caso y ~/.bashrc3 en el segundo)

Puedo modificar el alias existente para incluir una línea de texto arriba el comando como este:

  ~/.bashrc4  

Luego, si ejecuto ABCDEFGHIJKLMNABCDEFGHIJKLMN15 y ABCDEFGHIJKLMNABCDEFGHIJKLMN16 Me muestran las notificaciones que se muestran a continuación.

tarea terminada con éxito

algo salió mal

Mi pregunta es esto: ambas notificaciones muestran "tareas terminadas", sino que pueden la misma lógica que se usa para decidir si se muestra el ícono ~/.bashrc7 a abcdefhijklmnabcdefghijklmn18 EM> Sé aplicado nuevamente Para determinar qué cadena de texto se muestra sobre el comando? Entonces, si se muestra el ícono abcdefghijklmn~/.bashrc9fhijklmn19, el texto "Tarea terminada", pero si se muestra el ícono alert0 , el texto podría "algo salió mal!"

Original en ingles

System: Lubuntu 14.04 LTS

I want to know if it's possible to modify the alert alias provided in ~/.bashrc in a particular way. This is the original alert:

# Add an "alert" alias for long running commands.  Use like so: #   sleep 10; alert alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' 

Use of default alias xe2x80x9calertxe2x80x9d explains what it does.

And here is an example of the default notification on my system (using xfce4-notify) when I run ls; alert which, of course, completes successfully:

01Default-alert

If I run a nonsensical command, asdfgh; alert, I see this:

02Nonsense-command

The terminal icon has been replaced with the error icon because of

-i "$([ $? = 0 ] && echo terminal || echo error)" 

As of now, the notification has just two items:
- the icon which is terminal or error depending on the success of the "previous" command
- the command itself (ls in the first case and asdfgh in the second)

I can modify the existing alias to include a line of text above the command like this:

alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "Task finished" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' 

Then, if I run ls; alert and asdfgh; alert I get the notifications shown below.

Task finished successfully

Something went wrong

My question is this: Both notifications show "Task finished" but can the same logic that is used to decide whether the terminal icon or the error icon is shown be applied again to determine which text string is shown above the command? So, if the terminal icon displays, the text would be "Task finished" but if the error icon displays, the text could something like "Something went wrong!"

        

Lista de respuestas

4
 
vote
vote
La mejor respuesta
 

TL; DR

Usa esto:

  ABCDEFGHIJKLMNABCDEFGHIJKLMN11  

Simplemente evaluando ABCDEFGHIJKLMNABCDEFGHIJKLMN12 no funcionará, porque en el momento ABCDEFGHIJKLMNABCDEFGHIJKLMN13 se evaluaría la segunda vez que contendría la primera subsitución del comando ( echo 1000 | sudo tee /sys/class/backlight/intel_backlight/brightness4 < / Código> 's) Estado de salida (siempre ABCDEFGHIJKLMNABCDEFGHIJKLMN15 Desde los dos echo 1000 | sudo tee /sys/class/backlight/intel_backlight/brightness6 s siempre sucedió). Un truco para recorrer esto estaría haciendo la primera salida de sustitución de comandos con un estado de salida equivalente nuevamente:

  ABCDEFGHIJKLMNABCDEFGHIJKLMN17   

De esta manera echo 1000 | sudo tee /sys/class/backlight/intel_backlight/brightness8 podría evaluarse una segunda vez para decidir qué cadena imprimir:

  ABCDEFGHIJKLMNABCDEFGHIJKLMN19   

En otra nota Su ABCDEFGHIJKLMNABCDEFGHIJKLMN20 está un poco complicado. Esto sería mucho más legible:

  ABCDEFGHIJKLMNABCDEFGHIJKLMN21  

Entonces, comando final:

  ABCDEFGHIJKLMNABCDEFGHIJKLMN22   

Puede probar ejecutando sudo gedit /etc/rc.local3 y abcdefhijklmnabcdefghijklmn24 .

 

Tl;dr

Use this:

alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && (echo terminal; exit 0) || (echo error; exit 1))" "$([ $? = 0 ] && echo Task finished || echo Something went wrong!)" "$(history | sed -n "\$s/^\s*[0-9]\+\s*\(.*\)[;&|]\s*alert\$/\1/p")"' 

Simply evaluating $? again won't work, because by the time $? would be evaluated the second time it would contain the first command subsitution's ($([ $? = 0 ] && echo terminal || echo error)'s) exit status (always 0 since the two echos would always succed). A trick to go around this would be making the first command substitution exit with an equivalent exit status again:

$([ $? = 0 ] && (echo terminal; exit 0) || (echo error; exit 1)) 

This way $? could be evaluated a second time in order to decide which string to print:

alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && (echo terminal; exit 0) || (echo error; exit 1))" "$([ $? = 0 ] && echo Task finished || echo Something went wrong!)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]+\s*//;s/[;&|]\s*alert$//'\'')"' 

On another note your history|tail -n1|sed -e '\''s/^\s*[0-9]+\s*//;s/[;&|]\s*alert$//'\'' is a bit over-convoluted. This would be way more readable:

history | sed -n "\$s/^\s*[0-9]\+\s*\(.*\)[;&|]\s*alert\$/\1/p" 

So, final command:

alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && (echo terminal; exit 0) || (echo error; exit 1))" "$([ $? = 0 ] && echo Task finished || echo Something went wrong!)" "$(history | sed -n "\$s/^\s*[0-9]\+\s*\(.*\)[;&|]\s*alert\$/\1/p")"' 

You can test by running (exit 0); alert and (exit 1); alert.

 
 
     
     

Relacionados problema

2  Sin notificaciones para Facebook o Twitter en Gwibber  ( No notifications for facebook or twitter in gwibber ) 
Estoy usando Gwibber y tengo mi cuenta de Facebook y Twitter configurada en ella. Mi sistema se estrelló hace 2 días después de que una actualización lo arrui...

0  Imprima un mensaje de error útil al alcanzar la cuota de impresión  ( Print a helpful error message when printing quota is reached ) 
Estoy intentando configurar cuotas de impresión para impresoras aquí en la oficina. Sin embargo, aparece cuando se alcanza la cuota, la impresión simplemente ...

0  Unity Mail Manipulación de cuentas múltiples  ( Unity mail handling multiple accounts ) 
He configurado el correo de Unity para que monitorea las cuentas de correo electrónico 2 (digamos, Gmail y Mail.RU). Me lo notifica correctamente sobre nuevos...

2  Notificación de correo de Cron  ( Cron mail notification ) 
Me gustaría deshabilitar la notificación de correo de Crontab para una de mis tareas ... ejecuto esta tarea cada minuto, eso significa 1440 correo por día: ...

9  ¿Por qué mi reloj, los applets indicadores y el área de notificación a veces se mueven cuando me reinicié? ¿Cómo puedo prevenir eso?  ( Why do my clock indicator applets and notification area sometimes move around ) 
Los tengo todos bloqueados en el panel, pero siguen moviéndose al cerrar sesión y volver a entrar. Entonces, por ejemplo, a veces la sesión del applet indicad...

6  Cómo reemplazar los iconos de notificaciones de aire de Adobe  ( How to replace adobe air notifications icons ) 
He estado usando varias herramientas que dependen de la plataforma ADOBE AIR en Ubuntu, como TweetDeck y Grooveshark. Siempre he odiado, cómo se ven los ico...

1  Notificador de correo electrónico que admite cuentas en línea, notificaciones, menú de mensajes  ( Email notifier that supports online accounts notifications messaging menu ) 
¿Hay una aplicación de notificador de correo electrónico que: se puede encontrar en los repositorios de Ubuntu (no en un PPA), está integrado con las cue...

61  ¿Cómo obtener el mensaje "Su batería está rota" para desaparecer?  ( How to get the your battery is broken message to go away ) 
Cada vez que enciendo mi computadora, veo un mensaje que dice algo como: Your battery may be old or broken. Ya estoy consciente de que mi batería es ma...

126  ¿Cómo hacer un sonido una vez que se completa un proceso?  ( How to make a sound once a process is complete ) 
He comenzado un largo proceso a través de un terminal. ¿Es posible hacer que el terminal Ubuntu haga un sonido una vez que se complete el proceso? De esta man...

3  Días de temporizador de cuenta regresiva en la barra de menú de Ubuntu  ( Days countdown timer in ubuntu menu bar ) 
Necesito un applet que pueda contar hasta un número específico de días. Actualmente estoy usando el 'Applet-applet' del centro de software, pero solo puede co...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos