¿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
printf
está 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
find
ysed
: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
-A
banderals
si 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
$PATH
está 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.yash
yzsh
en emulación sh).find
uno.-prune
evitará la inclusión de directorios. Probablemente desee en-L
lugar de-H
incluir enlaces simbólicos (comunes para los ejecutables).-perm -100
no 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'
$PATH
está configurado y no contiene caracteres comodín y no contiene componentes vacíos. Eso también supone la implementación de GNU defind
.-type f
lugar de (GNU específico)-xtype f
, eso también omitirá enlaces simbólicos. Eso tampoco enumerará el contenido de$PATH
componentes que son enlaces simbólicos.Qué tal esto
La sustitución de cadena se usa con Bash.
fuente
$PATH
está 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 laksh
sintaxis (también compatible con zsh y bash). Estrictamente hablando, eso también supone que los componentes $ PATH tampoco sonfind
predicados.$PATH
componentes 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