¿Es posible abrir un archivo desde el terminal no por su nombre sino por su posición (número) en la carpeta? ¿O alguna otra opción?
Porque el nombre es demasiado largo.
command-line
files
directory
si si
fuente
fuente
Tab
tecla?Respuestas:
Probablemente aún no haya descubierto la Tabfinalización (ver aquí ).
Mientras escribe un nombre de archivo en la Terminal, simplemente escriba las primeras letras y presione Taby vea magia.
fuente
*
, si no desea utilizar la finalización de tabulación por algún motivo. O incluso*abc*
si el nombre de archivo contieneabc
algún lugar (intente usar un subpatrón que sea único para el nombre de archivo que desee). O simplemente copie / pegue el nombre del archivo con el mouse.Solo por diversión, literalmente respondiendo la pregunta:
Cómo funciona en la práctica
El contenido del directorio actual está listado, numerado. Elija el número y se abrirá el artículo:
Preparar
...es fácil:
Cierre sesión y vuelva a iniciarla y comience a usar el comando simplemente escribiendo
en terminal
nótese bien
Si también desea mostrar archivos ocultos, cambie
dentro:
fuente
~/bin
no está ya en su PATH, tendrá que añadirlo (por ejemplo, poner una línea comoexport PATH="$PATH:~/bin"
en.bashrc
o.profile
.)source ~/.profile
.~/bin
no está integrado en nada en absoluto. Ubuntu y Debian se envían con una costumbre~/.profile
que tiene líneasif [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" ; fi
. En Mac OS X y CentOS, debe configurarlo usted mismo. Una buena posibilidad es que si Ubuntu es proporcionado a una persona por el departamento de TI, es probable~/.profile
que no sea lo mismo que Ubuntu predeterminado, por lo que es una buena práctica tener siempre en cuenta que~/bin
no es estándar. Bash también puede ignorar~/.profile
si inicia el shell con la--no-profile
opciónHay una característica poco conocida en Bash que le permite hacer esto sin recurrir a Python o cualquier otra herramienta de terceros, y con una sola línea:
fuente
open
sin embargo, normalmente no funcionará (a menos que esté en Mac OS);xdg-open
probablemente hará el truco en la mayoría de los sistemas GNU / Linux.En puro bash, usando la
select
declaración:Configurar PS3 es simplemente llamativo. Si lo deja fuera, solo obtendrá el mensaje predeterminado. Si omite la instrucción break, la instrucción select se repetirá hasta que presione CTRL-D o CTRL-C.
Por supuesto, también puede ejecutarlo como una línea:
fuente
Puede instalar y usar
mc
Midnight Commander. Es una interfaz de usuario de texto con menús, etc., inspirada en el antiguo Norton Commander, que era popular cuando la gente usaba MSDOS (antes de Windows).e iniciarlo en una ventana de terminal o en una pantalla de texto,
fuente
$ ls
Que tal si
ls | sed -n 3p
Imprime el tercer nombre de archivo
Templates
Abrelo-
xdg-open "$(ls | sed -n 3p)"
Por lo general funciona.
Ponlo en un script
Nombre del script: abierto
Guárdelo en la carpeta de inicio. Correr:
fuente
ls
ls
(y qué hacer en su lugar)?En los sistemas de archivos de Linux, los nombres de archivo tienen una propiedad muy interesante llamada inodo : un directorio (o carpeta) es una lista de inodes y qué nombres de archivo apuntan a esos inodes. Entonces, si conoce el número de inodo, puede intentar localizar el archivo usando la
find
utilidad y realizar ciertas operaciones en él. Esto es especialmente útil cuando se trata de nombres de archivos en diferentes configuraciones regionales, caracteres especiales o cuando crea accidentalmente un directorio llamado~
.Por ejemplo,
Lo que esto hace es atravesar el directorio de trabajo actual (representado por
.
) y buscar la entrada del directorio que es un archivo con el número de inodo 1103743. Si se encuentra el archivo,xdg-open
se abrirá el archivo con la aplicación predeterminada y sefind
cerrará después. La razón para el extra-and
y-quit
es para evitarxdg-open
volver a abrir el archivo si existen enlaces duros del archivo (que es equivalente a abrir el mismo archivo dos veces).fuente
Crea algunos archivos:
Coloque los archivos en una variable y abra el archivo por un índice.
Reemplace
12
con el índice que está intentando abrir.fuente
Esta es probablemente la respuesta más simple que responde directamente a la pregunta. prueba lo siguiente:
Digamos que queremos abrir (o editar) el segundo archivo, podemos hacer lo siguiente:
esto generará el nombre del segundo archivo, que podemos usar como entrada para el comando que queremos realizar, por ejemplo:
generará el contenido del segundo archivo.
[ACTUALIZACIÓN] esto supone que no tiene espacios en blanco en los nombres de archivo,
gracias @wjandrea por su observación.
fuente
ls
. También los backticks están en desuso. Usar en su$()
lugar.