Mecanismo del carácter BELL ' \ a '?

Estoy leyendo un libro sobre programación de shell y aprendiendo que los siguientes comandos son equivalentes, que emiten un pitido en mi Mac pero no hacen ningún sonido en Ubuntu:

$ echo $"\a" $ echo -e "\a" $ 

sin embargo, en ambos casos, el terminal muestra una línea en blanco. Mis preguntas son:

  1. ¿Qué «s $"\a" aquí? Expansión de parámetros, sustitución de comandos u otra cosa?
  2. Por qué echo imprime una línea vacía como si el parámetro no estuviera definido, como por ejemplo, en el caso de

$ echo $NONSENSE ¿Qué indica una línea vacía? ¡Gracias!

Responder

don «t hacer cualquier sonido en Ubuntu:

quizás porque su emulador de terminal particular está configurado para evitar sonidos, o porque el pcspkr módulo del kernel está descargado, etc. Podría usar otro emulador de terminal (por ejemplo, el antiguo xterm) que debería emitir un pitido.

¿Qué «s $"\a" aquí?

Lea el capítulo sobre expansión de shell del manual de Bash. Se llama Citas ANSI-C (según lo comentado por South Parker ).

Por qué echo imprime una línea vacía

el comando echo (leer más echo (1) …) es a menudo un bash shell incorporado , por lo que (sin -n) imprime sus argumentos expandidos (aquí el carácter de campana) seguidos de una nueva línea. Pero su emulador de terminal no hace sonar el timbre audible (y el carácter de campana no se muestra, ya que es un carácter de control )

Por cierto, se rumorea que a Apple no le gusta la licencia GPLv3 +, por lo que puede actualizar su bash a una versión reciente (por ejemplo, 4.4 en agosto de 2017) en su computadora Apple.

Puede leer el tty desmitificado para un enfoque histórico a emuladores de terminal en Unix. Consulte también pty (7) .

Comentarios

  • Eso ' es muy informativo, ¡muchas gracias! 🙂
  • $'...' no es ' t llamó " eliminación de comillas ", pero el bash manual no ' t le da un nombre. Esta forma de citación también es compatible con al menos la ksh93 shell pero no por pdksh. Creo que ' es una extensión de la sintaxis POSIX.
  • Kusalananda Creo que tienes razón, la sintaxis se llama ASCI-C entre comillas: gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html
  • @SouthParker Ah, eso ' s el nombre de la misma. ¡Gracias por ayudarme a recordar!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *