Почему обратный синтаксис выходного перенаправления не действует как входное перенаправление?

tr не интерпретирует классы символов в стиле regex.

[a-zA-Z] интерпретируется как множество [, диапазон символов от a до z и ].

Поэтому его дополнением является множество символов, включающее все символы, кроме [, диапазон символов от a до z и ].

Поэтому [ и ] не заменяются.

Чтобы заменить любой неалфавитный символ, достаточно указать a-zA-Z в качестве дополнения заменяемого набора:

echo '[[:lower:]]' | tr -c 'a-zA-Z' '\n'
% echo '[[:lower:]]' | tr -c 'a-zA-Z' '\n'



lower



%
1
23.02.2018, 10:33
1 ответ

La redirección en

cat file1 >file2

es una redirección de salida, mientras que <especifica una redirección de entrada.

La ​​línea

file2 < cat file1

es lo mismo que

file2 file1 <cat

(no importa mucho dónde ocurre realmente la redirección, ya que el shell la maneja en su propio paso de análisis y luego se elimina del comando real ), lo que significa "ejecutar file2con file1como argumento, y redirigir la entrada estándar del archivo cat".

El error proviene del shell que intenta abrir catcomo un archivo en el directorio actual. El error ocurre antes de que el shell intente ejecutar el comando file2.

Relacionado:¿Cómo es legal este comando? "> archivo1 < archivo2 gato"

2
27.01.2020, 23:32

Теги

Похожие вопросы