Redirecionamento de saída, pipe e ''

0

Estou tentando passar o resultado de which env para nano com este comando nano < which env , mas parece que não entendi todo o conceito.

Quando executo isso, assumo que: which env STDOUT irá para nano STDIN. Então, isso será igual a nano /some/path . Mas, aparentemente, estou errado.

Também tentei which env | nano com o mesmo propósito, mas a saída foi:

Received SIGHUP or SIGTERM

Alguém pode esclarecer isso?

    
por IgorNikolaev 29.11.2016 / 18:32

1 resposta

1

nano , como a maioria dos editores de texto, espera que um nome de arquivo seja editado como seu argumento de linha de comando, e não como entrada padrão.

$ which env | nano    # pass as standard input, does not work
$ nano "$(which env)" # pass as command-line argument, works

Portanto, não está funcionando porque não é assim que o nano espera ser usado.

Com alguns editores (aparentemente não sua versão do nano), você pode usar:

$ which env | some-other-editor -  # note hyphen as file name

para editar entrada padrão como texto (você estaria editando um documento com a string "/ usr / bin / env", não o programa / usr / bin / env).

Além disso, se você quiser alterar nomes delimitados na entrada padrão em argumentos, xargs fará isso para você.

PS: which nem sempre faz o que você quer, considere command -v . Para detalhes, veja Por que não usar "which"? O que usar então?

    
por 29.11.2016 / 19:43