¿Cómo ejecuto un comando de Linux mientras uso el comando less o dentro de las páginas man?

9

Por lo general, canalizo el comando lscon lessy me gustaría ejecutar un comando mientras está paginado, por ejemplo, me encuentro con un archivo que me gustaría eliminar, así que me gustaría ejecutar el comando rm {filename}mientras todavía paginado. También me gustaría tener la esperanza de poder usar el mismo método al leer páginas de manual. Si no, ¿cómo es diferente?

CacahuetesMonkey
fuente

Respuestas:

8

Puede acceder a la línea de comando usando bang ( !) en menos.

Entonces, por ejemplo, si escribe:

touch temp.txt
ls | less
!rm temp.txt

Y temp.txt debería desaparecer.

Editar: Por defecto, parece que el hombre ahora usa menos en la página (por alguna razón pensé que lo usaba more, tal vez en el pasado lo hizo). Puede usar el mismo truco, pero requiere la ruta completa (por ejemplo, / home / user / ...) para que funcione.

Esto se debe a que invocar a man cambia el directorio de trabajo actual. En mi máquina (xubuntu, usando xfce-terminal) va a /usr/share/man. Si su consola muestra el CWD, puede verlo cambiar, o puede verlo desde adentro maningresando:

!pwd
Ceniza
fuente
man realmente cambia CWD, por lo que necesitaría usar la ruta completa.
Rob
@Rob - ¿Qué quieres decir con eso man actually changes CWD?
PeanutsMonkey
Tengo tmux configurado para mostrar mi CWD en mi barra de estado. Hacer man man(o cualquier cosa) cambiará mi CWD mientras el hombre está abierto. Mi máquina Linux no está disponible en este momento, y no estoy seguro de otra forma de verificar CWD, pero para mí parece que eso es lo que está haciendo.
Rob
@Rob: ¿Entonces quiere decir que solo porque está usando tmux, cambia el directorio de trabajo actual cuando ejecuta el comando man {command}desde say /home/{user}a una ubicación del comando man?
PeanutsMonkey
Eso explicaría el comportamiento que vi. Ahora, por qué está cambiando el CWD, esa es otra pregunta ...
Ash
4

La forma genérica de hacer esto es suspender el trabajo actual, ejecutar el comando y reanudar el trabajo anterior.

ls | less (lea el texto, observe el nombre del archivo)
Control-zpara suspender el comando activo actual

Debería obtener una línea similar a esta: [1]+ Stopped ls | less
([1] es el número de trabajo).

rm testfile

fgo fg %1 (el 1 es el número de trabajo)

Puede suspender varios procesos al mismo tiempo. Eg
ls | less
Control-z (output: [1]+ Stopped ls | less)
man rm
Control-z (output: [2]+ Stopped man rm)
rm -i testfile*

fg %1para reanudar el trabajo 1 (dejando la página de manual abierta en segundo plano), o
fg %2para reanudar el trabajo 2 (man rm)

Si tiene varios procesos suspendidos, puede enumerarlos con jobs.

Hennes
fuente