终端技巧 🤩 fcopy, fcut, fpaste

发布: (2026年3月15日 GMT+8 10:47)
3 分钟阅读
原文: Dev.to

Source: Dev.to

介绍

如果你和我一样热爱终端,开始使用 fcopyfcutfpaste 吧。无需通过文件管理器复制,只需:

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 即可。

0 浏览
Back to Blog

相关文章

阅读更多 »

tmux 入门指南

介绍 tmux 介绍,一种终端复用器。 会话管理 - 启动 tmux:bash tmux 或 tmux new-session - 在会话中创建新会话 …