La salida de LHS de la tubería se convierte en un ARG para RHS de tubería -- mmand-line campo con bash campo con pipe camp askubuntu Relacionados El problema

does output from LHS of pipe become an arg for RHS of pipe


0
vote

problema

Español

Estoy teniendo dificultades para agarrar cómo funcionan las tuberías. Inicialmente, pensé en ellos según el título, pero no pude obtener un ejemplo simple para trabajar por ejemplo.

  mkdir temp cd temp echo "rubbish" > txtfile  ls | cat txtfile # why does it not return "rubbish"?  ls | cut -c 2-4 xtf # result I expected.   

He leído muchos tutoriales de la tubería, pero ninguno de ellos parece ir más allá "STOUT de LHS se convierte en stdin para RHS" y me quedo preguntándome qué es StDin de RHS. ¿Se convierte en el primer argumento? ¿Dónde se desliza cuando RHS de la tubería tiene opciones o más de un argumento? ¿Hay algún tipo de sustitución macro que tiene lugar o es mi pensamiento de la marca?

Dados los ejemplos anteriores, ¿se reduce la entrada de STDIN, pero el gato no? ¿Cómo sabes qué comandos toman su opinión de STDIN y que no?

Original en ingles

I'm having difficulty grasping how pipes work. Initially I thought of them as per the title but I couldn't get a simple example to work e.g.

mkdir temp cd temp echo "rubbish" > txtfile  ls | cat txtfile # why does it not return "rubbish"?  ls | cut -c 2-4 xtf # result I expected. 

I've read many pipe tutorials but none of them seem to go beyond "STDOUT of LHS becomes STDIN for RHS" and I'm left wondering what is STDIN of RHS. Does it become the first argument? Where does it slot in when RHS of pipe has options or more than one argument. Is there any kind of macro substitution taking place or is my thinking wide of the mark.

Given the above examples, does cut take its input from stdin but cat doesn't? How do you know which commands take their input from stdin and which don't?

        

Lista de respuestas

0
 
vote
vote
La mejor respuesta
 

¿Qué es el stdin de RHS? ¿Se convierte en el primer argumento?

No, son cosas completamente separadas: vea, por ejemplo, ¿Cuál es la diferencia entre STDIN y argumentos pasados ​​al comando?

¿Corta su entrada de StDin pero el gato no?

En este caso, ambos están tomando entrada de STDIN, y esa entrada es la cadena txtfile . Si quiso pasar el nombre de archivo textfile como argumento, podría usar xargs :

  ls | xargs cat ls | xargs cut -c 2-4   

Pero no, consulte ¿Por qué NO PARE ABCDEFGHIJKLMNABCDEFGHIJKLMN4 (¿Y qué hacer en su lugar)?

¿Cómo sabe qué comandos toman su entrada de STDIN y que no?

Lees la página manual (FINE) para el comando ex. ABCDEFGHIJKLMNABCDEFGHIJKLMN5 :

  NAME        cut - remove sections from each line of files  SYNOPSIS        cut OPTION... [FILE]...  DESCRIPTION        Print selected parts of lines from each FILE to standard output.         With no FILE, or when FILE is -, read standard input.   
 

what is STDIN of RHS. Does it become the first argument?

No, they are completely separate things - see for example What's the difference between STDIN and arguments passed to command?

does cut take its input from stdin but cat doesn't?

In this case, they are both taking input from STDIN, and that input is the string txtfile. If you wanted to pass the filename textfile as an argument, you could use xargs:

ls | xargs cat ls | xargs cut -c 2-4 

but don't - see Why not parse ls (and what to do instead)?

How do you know which commands take their input from stdin and which don't?

You read the (fine) manual page for the command ex. man cut:

NAME        cut - remove sections from each line of files  SYNOPSIS        cut OPTION... [FILE]...  DESCRIPTION        Print selected parts of lines from each FILE to standard output.         With no FILE, or when FILE is -, read standard input. 
 
 
   
   

Relacionados problema

0  ¿Cómo actualizo GT5 cada x cantidad de segundos?  ( How do i refresh gt5 every x amount of seconds ) 
Estoy usando el Programa GUI de terminal GT5 , que es un "du -browser". Quiero que este programa se actualice automáticamente cada 30 segundos, o se ejecute ...

24  ¿Cómo puedo dirigir una entrada de tubería al comando ls?  ( How can i direct a pipe input to ls command ) 
cuando escribo algo como: find . -name *foo* | ls -lah Devuelve el mismo resultado que un comando Sin embargo: ls -lah $( find . -name *foo* ) ...

6  Gzip no está trabajando después de la tubería  ( Gzip is not working after the pipeline ) 
Por alguna razón, Gzip no funciona. Me da un archivo vacío /usr/bin/mysqldump --opt -u root -ppassword database > database.sql | gzip > database.sql.gz ...

14  Cómo eliminar todos los archivos que se devuelven al localizar  ( How to delete all files that are returned by locate ) 
Por el momento, su es lo que hago: Paso 1: locate fooBar /home/abc/fooBar /home/abc/Music/fooBar Paso 2: Realice manualmente una remoción, copia de...

3  ¿Cómo cerrar una tubería con nombre (lo habilitando así para CAT)?  ( How to close a named pipe thereby enabling it for cat ) 
Necesito ayuda para cerrar un tubo con nombre. Creé un FIFO llamado a través de ABCDEFGHIJKLMNABCDEFGHIJKLMN7 , luego algunos archivos ejecutables de C ++ es...

18  ¿Cómo ejecuto los comandos FTP en una línea?  ( How do i execute ftp commands on one line ) 
Esto es lo que estoy haciendo cuando inicie sesión en un FTP: ftp user:password@server ftp: user:password@server: Unknown host ftp> echo HELLO WORLD! ftp> ...

123  ¿Cómo puedo tubo de salida estándar de terminal (STDOUT) al portapapeles?  ( How do i pipe terminal standard output stdout to the clipboard ) 
por ejemplo, Digamos que quiero listar los contenidos de una carpeta y pegarlos directamente en una ventana de chat para que un amigo vea. Me doy cuenta...

1  ¿Por qué las obras de sustitución de comandos y la tubería no [duplicar]?  ( Why command substitiution works and pipeline not ) 
Esta pregunta ya tiene respuestas aquí : ¿Por qué no el comando "ls | Archivo "Trabajo? ...

31  Matar los procesos de Java  ( Kill java processes ) 
Estoy trabajando en un código computacionalmente pesado que, por ahora, se bloquea mucho, pero sigo trabajando en él :) cuando se estrella, no puedo cerrar la...

1  Error cuando se inicia: no se pudo escribir bytes: tubo roto  ( Error when boot could not write bytes broken pipe ) 
buen día, Veo que hay varias preguntas sobre el mismo tema, pero parece que la causa es algo diferente. Probé TOR resolver mi problema mirando y probando al...




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