GNU/Linux >> Tutoriales Linux >  >> Linux

Mecanismo del carácter de campana '\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 emiten ningún sonido en Ubuntu:

$ echo $'\a'

$ echo -e "\a"

$

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

  1. ¿Qué es $'\a'? ¿aquí? ¿Expansión de parámetros, sustitución de comandos o algo más?
  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 que solicita una línea vacía? ¡Gracias!

Respuesta aceptada:

no haga ningún sonido en Ubuntu:

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

¿Qué es $'\a'? aquí?

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

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

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

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

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


Linux
  1. ¿Bashscript funciona desde la terminal pero no desde Crontab?

  2. ¿Cómo determinar la codificación de caracteres que usa una terminal en un programa C/c++?

  3. ¿Es posible obtener un carácter en el cursor de la terminal usando códigos de escape Ansi?

  4. ¿Cómo crear una animación de rotación usando Shell Script?

  5. No se puede escribir ningún carácter especial o diéresis en la terminal

Por qué uso rxvt como mi terminal

16 ejemplos de comandos de eco en Linux

Cómo usar Instagram en la terminal

Localizadores de terminales

Terminal de compensación

¿Es posible exponer el túnel TCP en Linux como dispositivo de caracteres especiales?