终端技巧 🤩 fcopy, fcut, fpaste
发布: (2026年3月15日 GMT+8 10:47)
3 分钟阅读
原文: Dev.to
Source: Dev.to
介绍
如果你和我一样热爱终端,开始使用 fcopy、fcut、fpaste 吧。无需通过文件管理器复制,只需:
fcopy some/file/
fcopy other/file/image.png然后打开另一个终端并运行:
fpaste函数
fcopy
fcopy() {
if [ "$#" -eq 0 ]; then
echo "fcopy: nothing to copy"
return 1
fi
tmp="$(mktemp)"
printf 'copy\n' > "$tmp"
for item in "$@"; do
if [ -e "$item" ]; then
abs="$(realpath "$item")"
printf '%s\n' "$abs" >> "$tmp"
echo "copied to clipboard: $abs"
else
echo "fcopy: not found: $item" >&2
fi
done
mv "$tmp" ~/.fileclip
}fcut
fcut() {
if [ "$#" -eq 0 ]; then
echo "fcut: nothing to cut"
return 1
fi
tmp="$(mktemp)"
printf 'move\n' > "$tmp"
for item in "$@"; do
if [ -e "$item" ]; then
abs="$(realpath "$item")"
printf '%s\n' "$abs" >> "$tmp"
echo "cut to clipboard: $abs"
else
echo "fcut: not found: $item" >&2
fi
done
mv "$tmp" ~/.fileclip
}fpaste
fpaste() {
[ -f ~/.fileclip ] || { echo "fpaste: file clipboard is empty"; return 1; }
mode="$(head -n1 ~/.fileclip)"
count=0
while IFS= read -r src; do
[ -n "$src" ] || continue
if [ ! -e "$src" ]; then
echo "fpaste: source no longer exists: $src" >&2
continue
fi
if [ "$mode" = "move" ]; then
if mv -- "$src" .; then
echo "moved: $src -> $PWD/"
count=$((count + 1))
else
echo "fpaste: failed to move: $src" >&2
fi
else
if cp -a -- "$src" .; then
echo "pasted: $src -> $PWD/"
count=$((count + 1))
else
echo "fpaste: failed to paste: $src" >&2
fi
fi
done
}使用概述
fcopy– 将指定的文件或目录复制到临时剪贴板。fcut– 将指定的文件或目录移动到剪贴板(剪切操作)。fpaste– 将剪贴板中的项目粘贴到当前目录。如果剪贴板是通过fcut创建的,则执行移动;否则执行复制。
将这些函数添加到你的 shell 配置文件(例如 ~/.bashrc 或 ~/.zshrc),然后重新加载 shell 即可。