¿Cómo ejecutar la salida de un comando dentro del shell actual?

Soy muy consciente de lasource (alias.) utilidad, que tomará los contenidos de un archivo y los ejecutará dentro del shell actual.

Ahora, estoy transformando un poco de texto en comandos de shell y luego los ejecuto de la siguiente manera:

$ ls | sed ... | sh

ls Es solo un ejemplo aleatorio, el texto original puede ser cualquier cosa.sed También, solo un ejemplo para transformar texto. Lo interesante essh. Yo canalizo lo que tengosh y lo ejecuta.

Mi problema es que eso significa iniciar un nuevo sub shell. Prefiero que los comandos se ejecuten dentro de mi shell actual. Como si pudiera hacer consource some-file, si tuviera los comandos en un archivo de texto.

No quiero crear un archivo temporal porque se siente sucio.

Alternativamente, me gustaría iniciar mi sub shell con las mismas características que mi shell actual.

actualizar

Ok, las soluciones que usan Backtick ciertamente funcionan, pero a menudo necesito hacer esto mientras estoy verificando y cambiando la salida, así que preferiría mucho si hubiera una forma de canalizar el resultado en algo al final.

triste actualización

Ah, la/dev/stdin La cosa se veía tan bonita, pero, en un caso más complejo, no funcionó.

Entonces, tengo esto:

find . -type f -iname '*.doc' | ack -v '\.doc

Lo que asegura todo.doc Los archivos tienen su extensión en minúscula.

Y que por cierto, puede ser manejado conxargs, pero eso no viene al caso.

find . -type f -iname '*.doc' | ack -v '\.doc

Entonces, cuando ejecuto el primero, saldrá de inmediato, no pasa nada.

| perl -pe 's/^((.*)\.doc)$/git mv -f $1 $2.doc/i' | source /dev/stdin

Lo que asegura todo.doc Los archivos tienen su extensión en minúscula.

Y que por cierto, puede ser manejado conxargs, pero eso no viene al caso.

find . -type f -iname '*.doc' | ack -v '\.doc$' | perl -pe 's/^((.*)\.doc)$/$1 $2.doc/i' | xargs -L1 git mv

Entonces, cuando ejecuto el primero, saldrá de inmediato, no pasa nada.

| perl -pe 's/^((.*)\.doc)$/$1 $2.doc/i' | xargs -L1 git mv

Entonces, cuando ejecuto el primero, saldrá de inmediato, no pasa nada.

| perl -pe 's/^((.*)\.doc)$/git mv -f $1 $2.doc/i' | source /dev/stdin

Lo que asegura todo.doc Los archivos tienen su extensión en minúscula.

Y que por cierto, puede ser manejado conxargs, pero eso no viene al caso.

find . -type f -iname '*.doc' | ack -v '\.doc$' | perl -pe 's/^((.*)\.doc)$/$1 $2.doc/i' | xargs -L1 git mv

Entonces, cuando ejecuto el primero, saldrá de inmediato, no pasa nada.

Respuestas a la pregunta(9)

Su respuesta a la pregunta