gpt4 book ai didi

linux - Bash 脚本 : Recognizing paths drag-and-dropped to konsole

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:40 25 4
gpt4 key购买 nike

我一直在寻找可以将 Windows 用户目录中的用户文件复制到备份驱动器的脚本。我非常希望传输除 Appdata 之外的所有内容。我制作了一个非常简单的脚本,但由于我要传输的文件夹名称中有空格(例如“/media/gage/Backup\Drive/”),它表示 Drive' 没有存在。

我正在尝试将目录从文件管理器拖放/粘贴到终端上,一旦我将其拖过,它最终会在整个路径周围出现 '。有没有办法让输入识别周围带有 的文件名?

这是我目前所拥有的(我对 bash 脚本真的很陌生)

#!/bin/bash
echo "Enter the full path to the user's directory"
read srcName
echo "Enter the full path to the backup directory"
read dstName
echo "Copying from Users to Backup"
cd $srcName
cp -rp Documents $dstName
cp -rp Pictures $dstName
cp -rp Desktop $dstName
cp -rp Music $dstName
cp -rp Videos $dstName
cp -rp Downloads $dstName
cp -rp Favorites $dstName

感谢任何帮助

谢谢。

最佳答案

终端早于拖放和复制粘贴,因此两者都没有以可靠的方式集成。由每个终端仿真器决定要做什么。

以下是当您从图形文件管理器中拖放一个或多个文件时一些常见的 react :

  • xterm 什么都不做。
  • gnome-terminal 假装您将路径键入为空格分隔的 shell 转义词,每个词都完全用单引号引起来并带有适当的转义符:

    '/path/foo' '/path/Rock Lobster - B-52'\''s.mp3'

  • konsole 弹出一个菜单,让您选择复制/移动到 shell 的当前目录,或者将路径粘贴为 shell 转义词,如果它们包含元字符:

    /path/foo '/path/Rock Lobster - B-52'\''s.mp3'

根据您的描述,您正在使用 gnome-terminal,只是没有尝试拖放包含单引号的文件以查看它对文件名还有什么作用。


那你能做什么呢?

我建议您只要求逐字复制粘贴路径,而不是拖放文件。这就是所有其他程序的工作方式,以及您可以使用 Charles Duffy 的解决方案做什么。

要将路径复制粘贴为字符串而不是拖动文件,您通常可以在文件管理器中打开“属性”或“详细信息”选项卡,然后从那里复制完整路径。

但是,为了好玩,如果您确实愿意,可以通过使用 eval 填充数组来将输入解释为从文件管理器拖放文件:

#!/bin/bash    
echo "Drag&Drop files/dirs and press enter when done."
echo "Do not drag&drop/paste/type text, because it will be evaluated as code."
IFS="" read -r input
eval "files=( $input )"

echo "Here are the things you pasted:"
for file in "${files[@]}"
do
ls -ld "$file"
done

它是这样运行的:

$ ./test
Drag&Drop files/dirs and press enter when done.
Do not drag&drop/paste/type text, because it will be evaluated as code.
'/usr/local/home/me/Documents' '/usr/local/home/me/Downloads'

Here are the things you pasted:
drwxr-x--- 3 me eng 4096 Aug 7 13:46 /usr/local/home/me/Documents
drwxr-x--- 2 me eng 4096 Aug 17 14:32 /usr/local/home/me/Downloads

关于linux - Bash 脚本 : Recognizing paths drag-and-dropped to konsole,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32059583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com