Creo que deberías hacer algo como lo hacen las aplicaciones GUI. Mi idea para hacer esto es escribir dos funciones para Copiar y Pegar, donde Copiar escribe la ruta de los archivos que se copiarán en un archivo temporal y Pegar lee esas rutas y simplemente llama al cpcomando. Mi implementación (para poner en el .bashrcarchivo) es la siguiente:
function Copy {
touch ~/.clipfiles
for i in "$@"; do
if [[ $i != /* ]]; then i=$PWD/$i; fi
i=${i//\\/\\\\}; i=${i//$'\n'/$'\\\n'}
printf '%s\n' "$i"
done >> ~/.clipfiles
}
function Paste {
while IFS= read src; do
cp -Rdp "$src" .
done < ~/.clipfiles
rm ~/.clipfiles
}
Se podrían escribir mejores scripts para implementar esta idea, probé el mío y funciona muy bien para archivos y carpetas (¡¡No sé cómo xclippodría funcionar para copiar carpetas !!)
Por ejemplo:
/usr/local/dir1# Copy a.txt *.cpp
/usr/local/dir1# cd /usr/local/dir2
/usr/local/dir2# Paste
/usr/local/dir1# Copy *.h *.cpp b.txt subdir1
/usr/local/dir1# cd /usr/local/dir2
/usr/local/dir2# Paste
/usr/local/dir1# Copy a.txt b.txt
/usr/local/dir1# cd /usr/local/dir2
/usr/local/dir2# Copy c.txt d.txt
/usr/local/dir2# cd /usr/local/dir3
/usr/local/dir3# Paste
Me gusta esta idea. Y con pequeñas modificaciones, incluso podría implementar una función de "corte" también.
Pablo Venturino
@Gilles podría explicar por qué se ha sustituido echocon printf?
Meysam
@Meysam Para trabajar incluso debajo shopt -s xpg_echo.
Gilles 'SO- deja de ser malo'
1
@Meysam printfes portátil y seguro mientras echoque no lo es. El wiki de Wooledge menciona esto brevemente.
jw013
10
Sugiero xclip. Lo uso todo el tiempo para esto. pero no necesitas un script solo usa funciones.
No veo la necesidad de usar estos scripts, en particular, porque si está haciendo lo que creo que está haciendo, encontrará los scripts ya mencionados (en el útil blog de linux tidbits) molestos porque le solicitan que ingrese siempre que sea posible , solo usarlos, contrario a la filosofía de Unix.
para usarlos, necesita apt-get install xclip(Debian, Ubuntu, Linux Mint, etc.) o zypper in xclip(openSUSE, otros sistemas basados en .rpm) o algún equivalente. el programa debería estar disponible en cualquier sistema que esté utilizando.
Puedes usar el xclipcomando para esto. Puede descargar scripts de bash desde este enlace y colocar alias para bash cp2clipy bash clippasteen su .bashrcarchivo.
Me refería a mantener los archivos en su directorio de inicio y poner dos alias en su alias .bashrc cp2clip = 'bash / home / <username> /cp2clip.sh' y clippaste = 'bash / home / <username> /clippaste.sh' así que Puedes usarlos en cualquier lugar. Para leer más sobre los alias, puede ver man aliaso linfo.org/alias.html
echo
conprintf
?shopt -s xpg_echo
.printf
es portátil y seguro mientrasecho
que no lo es. El wiki de Wooledge menciona esto brevemente.Sugiero xclip. Lo uso todo el tiempo para esto. pero no necesitas un script solo usa funciones.
No veo la necesidad de usar estos scripts, en particular, porque si está haciendo lo que creo que está haciendo, encontrará los scripts ya mencionados (en el útil blog de linux tidbits) molestos porque le solicitan que ingrese siempre que sea posible , solo usarlos, contrario a la filosofía de Unix.
Sugiero escribir algunas funciones en su
.bashrc
:para usarlos, necesita
apt-get install xclip
(Debian, Ubuntu, Linux Mint, etc.) ozypper in xclip
(openSUSE, otros sistemas basados en .rpm) o algún equivalente. el programa debería estar disponible en cualquier sistema que esté utilizando.fuente
Puedes usar el
xclip
comando para esto. Puede descargar scripts de bash desde este enlace y colocar alias parabash cp2clip
ybash clippaste
en su.bashrc
archivo.fuente
man alias
o linfo.org/alias.html