¿Hay una línea que enumere todos los ejecutables de $ PATH en bash.
bash
shell
path
executable
jcubic
fuente
fuente

in,{...) y alias.Con zsh:
O:
(tenga en cuenta que para los comandos que aparecen en más de un componente de
$PATH, solo enumerarán el primero).Si desea los comandos sin las rutas completas, y ordenados por si acaso:
(es decir, obtenga las claves de esa matriz asociativa en lugar de los valores).
fuente
En cualquier shell POSIX, sin utilizar ningún comando externo (suponiendo que
printfestá integrado, si no se recurre a élecho), excepto para la clasificación final, y suponiendo que ningún nombre ejecutable contenga una nueva línea:Si no tiene ningún componente vacío en
$PATH(use.en su lugar) ni componentes que comiencen-, ni caracteres comodín\[?*en componentes de RUTA o nombres ejecutables, y no hay ejecutables que comiencen con., puede simplificar esto para:Usando POSIX
findysed:Si está dispuesto a enumerar el raro archivo no ejecutable o el archivo no regular en la ruta, hay una manera mucho más simple:
Esto omite los archivos de puntos; si los necesita, agregue la
-Abanderalssi la tiene, o si desea adherirse a POSIX:ls -aH $PATH | grep -Fxv -e . -e ..Hay soluciones más simples en bash y en zsh .
fuente
$PATHestá configurado y no contiene componentes vacíos, y que los componentes no parecen encontrar predicados (u opciones ls). Algunos de ellos también ignorarán los archivos de puntos.yashyzshen emulación sh).finduno.-pruneevitará la inclusión de directorios. Probablemente desee en-Llugar de-Hincluir enlaces simbólicos (comunes para los ejecutables).-perm -100no garantiza que el archivo sea ejecutable por usted (y podría (improbable) excluir archivos ejecutables).Se me ocurrió esto:
EDITAR : Parece que este es el único comando que no activa la alerta SELinux mientras lee algunos de los archivos en el directorio bin por el usuario de apache.
fuente
for?IFS=:; find $PATH -maxdepth 1 -executable -type f -printf '%f\n'$PATHestá configurado y no contiene caracteres comodín y no contiene componentes vacíos. Eso también supone la implementación de GNU defind.-type flugar de (GNU específico)-xtype f, eso también omitirá enlaces simbólicos. Eso tampoco enumerará el contenido de$PATHcomponentes que son enlaces simbólicos.Qué tal esto
La sustitución de cadena se usa con Bash.
fuente
$PATHestá configurado, no contiene caracteres comodín o en blanco, no contiene componentes vacíos. Eso supone que GNU encuentra también. Tenga en cuenta que${var//x/y}es lakshsintaxis (también compatible con zsh y bash). Estrictamente hablando, eso también supone que los componentes $ PATH tampoco sonfindpredicados.$PATHcomponentes no son enlaces simbólicos.IFS=:es más robusta que hacer esta sustitución. Las rutas con espacios no son tan infrecuentes en Windows. Los enlaces simbólicos son bastante comunes, pero eso se resuelve fácilmente con-H.Si puede ejecutar Python en su shell, también se puede usar el siguiente (ridículamente largo) de una sola línea:
Este fue principalmente un ejercicio divertido para mí mismo para ver si se podía hacer usando una línea de código de Python sin recurrir al uso de la función 'exec'. En una forma más legible, y con algunos comentarios, el código se ve así:
fuente
fuente