Estoy seguro de que me entregarán mi trasero por esta pregunta, pero parece que no puedo entenderlo. Soy nuevo en bash scripting, así que ve con calma ...
Quiero poder arrastrar y soltar un archivo en una aplicación de escritorio, que luego llama a un script bash que moverá ese archivo a una ubicación designada dentro del script bash. Aquí está lo que tengo hasta ahora.
Guión Bash
#! /bin/bash
mv $file /path/to/new/directory
Sin embargo, no puedo entender cómo ingresar el $file
como una variable cuando lo arrastro y lo dejo caer en una aplicación de escritorio. ¿Cómo puedo hacer esto?
Motivo: Tengo documentos que necesito leer en una carpeta, y una vez que los he leído, los pongo en otra carpeta. Básicamente solo quiero que sea más fácil hacer esto.
Gracias paul
command-line
bash
scripts
PaulFrater
fuente
fuente
Respuestas:
Cree un archivo de script bash con los siguientes contenidos:
Cree un archivo .desktop con el siguiente contenido:
Cambie PATH_TO_NEW_DIRECTORY y PATH_TO_SCRIPT_FILE a su gusto.
Hacer
chmod +x script_name
Arrastre los archivos al archivo .desktop.
¡Hecho!.
fuente
$file
lugar de"$file"
(o"${file}"
) puede meterte en un montón de problemas.bash
aquí;#!/bin/sh
es suficiente para hacer lo mismo (aunque puede estar vinculado debash
todos modos en muchos sistemas).No hay necesidad de un guión. Cree un enlace a PATH_TO_NEW_DIRECTORY donde lo necesite. Luego arrastre el archivo al enlace
fuente
Lo que dijo @ Slug45 es completamente correcto. Sin embargo, carece de una explicación.
Cuando arrastra y suelta un archivo en un archivo ejecutable (o un enlace a uno), ese ejecutable se ejecuta con la ruta al archivo arrastrado como argumento. Esto es exactamente lo mismo en Windows (no es que realmente importe aquí).
Bash tiene una forma simple de tratar con argumentos. Use
"$@"
(con las comillas) para obtener una matriz de todos los argumentos (útil, por ejemplo, en un bucle for..in).$@
,"$*"
y$*
hacer cosas similares, pero casi siempre quieres"$@"
. Consulte aquí para obtener más información sobre los detalles.Además, puede acceder directamente a argumentos específicos como
$X
donde X es el número arg. Por ejemplo:En scripts grandes, es mejor asignarlos a variables con nombre:
fuente