En los sistemas Linux, cuando escribe un comando y presiona TAB dos veces, se enumeran todos los comandos disponibles que comienzan con los caracteres que usted escribe. Esto no es nuevo, ya lo sabrás. Esta característica se llama finalización de bash de línea de comando. De forma predeterminada, la línea de comandos de bash puede completar automáticamente los nombres de archivos o directorios. Sin embargo, podemos mejorar la función de finalización del comando bash y llevarlo a un nuevo nivel con el comando completo.
Este tutorial muestra cómo podemos aplicar la finalización automática a las opciones o los argumentos de la línea de comandos utilizando la finalización de comandos programables.
Ejemplo: Después de ingresar el comando de escritura, si presiona el botón TAB dos veces, la función de finalización automática proporciona una lista de usuarios que pueden realizar operaciones de escritura. $ write [TAB] [TAB] bala rajjason randyjohn ritumayla thomasnisha www-data
En el siguiente ejemplo, se puede mostrar el nombre de host disponible para el comando telnet: $ telnet [TAB] [TAB] localhost dev-db Fileserver
Para que la función de finalización de comando programable funcione en su terminal, solo necesita ejecutar /etc /bash_completion de la siguiente manera: #. /Etc /bash_completion
También puede cancelar El siguiente comentario en /etc/bash.bashrc (del sistema Ubuntu Linux 13.04), por lo que no necesita ejecutar el comando anterior: ### habilitar la finalización de bash en shellsif! Shopt -oq posix interactivo; thenif [-f /usr /share /bash-completed /bash_completion]; luego. /usr /share /bash-completed /bash_completionelif [-f /etc /bash_completion]; luego. /etc /bash_completionfifi
Si no los encuentra El código, no encontró el archivo /etc /bash_completion, entonces solo necesita instalar el paquete bash_completion usando el comando apt-get.
1. Ver terminaciones de línea de comando existentes
Después de habilitar la función de finalización de línea de comando programable, ya hay algunas funciones de finalización de comando definidas. El comando completo se utiliza para definir la finalización de la línea de comandos.
Para ver las terminaciones de línea de comando existentes, use el comando completo de la siguiente manera: complete -p |
Menos
La opción -p en el ejemplo anterior es opcional.
2. Enumere las funciones de finalización estándar en bash
Herramienta de desarrollo eficiente para programadores: taza de programación herramienta de desarrollo eficiente para programadores: taza de programación
Bash por defecto, Bash es Los usuarios de Linux proporcionan las siguientes funciones de finalización estándar. 1. Finalización variable 2. Finalización del nombre de usuario 3. Finalización del nombre del host 4. Finalización de la ruta 5. Finalización del nombre del archivo
Comentamos esto en la finalización estándar de bash anterior.
3. Defina la finalización de un nombre de comando
Con la opción -c, puede usar todos los comandos disponibles como un parámetro de finalización para un comando. En el siguiente ejemplo, se define una terminación para el comando which (LCTT): Cuando presiona TAB dos veces, puede enumerar todos los nombres de comando como parámetros compensables. $ complete -c que
$ que [TAB] [TAB] Muestra todas las 2116 posibilidades? (s o n)
Igual que arriba, si presiona ‘ y ’, todo aparecerá en la lista El nombre del comando.
4. Definición de finalización de directorio
Con la opción -d, puede definir un parámetro de finalización que contenga solo el nombre del directorio. En el siguiente ejemplo, se define una terminación para el comando ls. $ lscountfiles.sh dir1 /dir2 /dir3 /
$ complete -d ls
$ ls [TAB] [TAB] dir1 /dir2 /dir3 /
Como arriba, incluso Al presionar TAB solo se mostrará el nombre del directorio.
5. Defina una terminación de nombre de tarea en segundo plano
La función Completa también puede usar el nombre de tarea como un parámetro de finalización. La opción -j puede definir el nombre de la tarea como un parámetro que se pasa al comando de la siguiente manera: $ jobs [1] - Stopped cat [2] + Stopped sed 'p'
$ complete -j ./list_job_attrib.sh
$ ./list_job_attrib.sh [TAB] [TAB] cat sed
Para tareas en segundo plano, puede consultar los ejemplos en la tarea en segundo plano de Linux para aprender cómo administrar las tareas en segundo plano.
6. Terminaciones con prefijos y sufijos
Las funciones completas definen prefijos y sufijos para las terminaciones reales. En el siguiente ejemplo, el prefijo y el sufijo del contenido de finalización se definen para list_job_attrib.sh. $ jobs [1] + Gato detenido
$ complete -P '" >' -S '< "' ./list_job_attrib.sh
$ ./list_job_attrib.sh [ ,null,null,3],PESTAÑA] [PESTAÑA]
$ ./list_job_attrib.sh " > cat < "
7. Con el nombre del archivo excluido y la terminación del nombre del directorio
Si Una vez que el script termina de ejecutarse, el directorio de salida es el siguiente: $ cd output /
$ lsall_calls.txt incoming_calls.txt outgoing_calls.txt missed_calls.txtparser_mod.tmp extract.o
Igual que arriba, si desea ls La finalización del comando ignora los archivos .tmp y .o: $ export FIGNORE = '. Tmp: .o'
$ complete -f -d ls
$ cd output
$ ls [TAB] [TAB] all_calls.txt incoming_calls.txt outgoing_calls.txt missed_calls.txt
FIGNORE es una variable de entorno que contiene los sufijos de nombre de archivo que deben excluirse para autocompletar.
8. División de una cadena con una variable IFS para obtener el valor de finalización
La lista de valores de finalización puede definirse con la opción -W y luego dividirse por la variable de entorno IFS. El resultado de la segmentación expande la variable y la muestra como una terminación. $ export IFS = " " "
$ complete -W " bubble quick " ./sort_numbers.sh
$ ./sort_numbers.sh [TAB] [TAB] bubble quick
Como se mencionó anteriormente, después de que la cadena se divide por el separador IFS, la variable incorporada se expande al valor de la variable, por lo que la variable se puede usar de la siguiente manera: $ echo $ SORT_TYPE1bubble
$ echo $ SORT_TYPE2quick
$ complete -W " $ SORT_TYPE1 $ SORT_TYPE2 " ./sort_numbers.sh$ ./sort_numbers.sh [TAB] [TAB] bubble quick
9. Escribe una función para generar el complemento Completo
Puede introducir una función para definir terminaciones. Use la opción -F para pasar el nombre de la función al comando completo, que ejecuta la función para generar la finalización. Por ejemplo, la función es la siguiente: _parser_options () {local curr_arg;
curr_arg = $ {COMP_WORDS [COMP_CWORD]}
COMPREPLY = ($ (compgen -W '-i --incluyendo -o - -outgoing -m --missed '- $ curr_arg));}
En la función anterior: 1.COMPREPLY: esta matriz controla el resultado que se muestra después de presionar TAB 2.COMP_WORDS: la matriz contiene comandos Alinee la palabra de entrada 3.COMP_CWORD: el índice de la matriz COMP_WORDS, úselo para distinguir la posición de la palabra a la que puede acceder la línea de comando. 4.compen: -W Proporciona posibles terminaciones y sus argumentos basados en $ current_arg
En el archivo parser_option, e introducido con el comando fuente: $ source parser_option
Asocie esta función con su secuencia de comandos parser.pl: $ complete -F _parser_options ./parser.pl
$ ./parser.pl [TAB] [TAB] -i --incoming -o --outgoing -m --missed
Como antes, las opciones para parser.pl son generadas por la función _parser_options ().
Consejo: Verifique /etc /bash_completion para ver más funciones de finalización programables.
10. Cuando la primera regla no produce un resultado, use la segunda
Si la regla de finalización definida no genera una coincidencia, puede usar la opción -o para generar una finalización. $ complete -F _count_files -o dirnames ./countfiles.sh
Como arriba, la función de finalización de _count_files se define para ./countfiles.sh. La finalización del directorio se activa si la función _count_files () no genera ninguna coincidencia. $ ls countfiles.sh dir1 /dir2 /dir3 /
$. /countfiles.sh [TAB] [TAB] dir1 dir2 dir3
En la era de Internet, la alta disponibilidad de la red siempre ha sido una parte muy importante.
obtener el tráfico a través de tarjeta de herramientas de terceros que hay que ser muy claro. De hec
Utilizamos este programa y la salida para analizar el uso y las características de waitpid. Es
Linux admite compartir archivos abiertos entre diferentes procesos. Para ilustrar el uso compartid
CentOS instala la guía de Apache + PHP + MySQL
Comando de operación de red de Linux netstat
Resolución de instancias: configuración relacionada con el firewall transparente del sistema Linux
Tareas programadas de Linux en cron
Linux ajuste manual fecha hora
Modo común Ruido Modo diferencial Diferenciación y generación de ruido
Tutorial del comando de visualización de memoria de Linux (free -m)
Habilidades comunes de Linux: enseñarle la misma tarjeta de red para configurar múltiples IP
Funciones en awk usando tutoriales
conmutación de la instalación de Linux entre el modo de modo de texto y gráficos
Código de error de la página web abierta del sistema Win7 ERR_EMPTY_RESPONSE solution
Cómo eliminar la marca de agua en la esquina inferior derecha al activar Win10
El sistema Win7 abre Microsoft Outlook muestra la solución específica que dejó de funcionar
Eliminar comando de eliminación que no puede eliminar archivos
Cámara Win10 no se puede utilizar para resolver
Mensaje del cliente Vsftpd: Ingresando el modo pasivo tres soluciones
Navegador Firefox para mejorar la estabilidad
espacio de disco fácil Windows8.1 actualización de acceso rápido a