Creo que puedo estar pasando por alto un punto relativamente fundamental con respecto a Shell. Salida de ls El comando por defecto separa la salida con líneas nuevas, pero el shell muestra la salida en una sola línea.
¿Puede alguien explicarme esto? Siempre supuse que la salida simplemente estaba separada por espacios, pero ahora que veo la salida separada por saltos de línea, espero que la salida se muestre en líneas separadas.
Ejemplo:
[email protected]:~/lpi103-4$ ls text*
text1 text2 text3
od muestra que la salida está separada por saltos de línea:
[email protected]:~/lpi103-4$ ls text* | od -c
0000000 t e x t 1 n t e x t 2 n t e x t
0000020 3 n
0000022
Si hay saltos de línea, ¿por qué la salida no se muestra como:
text1
text2
text3
Respuesta aceptada:
Cuando canaliza la salida, ls
actúa de manera diferente.
Este hecho está oculto en la documentación de información:
Si la salida estándar es un terminal, la salida está en columnas (ordenadas verticalmente) y los caracteres de control se emiten como signos de interrogación; de lo contrario, la salida se muestra una por línea y los caracteres de control se emiten tal cual.
Para probarlo, intente ejecutar
ls
y luego
ls | less
Esto significa que si desea que se garantice que la salida sea un archivo por línea, independientemente de si se canaliza o redirige, debe ejecutar
ls -1
(-1
es el número uno)
O bien, puede forzar ls | less
para generar en columnas ejecutando
ls -C
(-C
es una C mayúscula)