Linux 控制台相当于 GUI 复制/粘贴文件/目录场景

Linux 控制台相当于 GUI 复制/粘贴文件/目录场景

如何简单地重新创建像在 GUI 环境中那样的复制/粘贴功能?

我在 Linux 控制台中复制文件/目录的典型场景是:

cp source_path target_path

有时路径是相对的,有时是绝对的,但我需要同时提供它们。它可以工作,但在某些情况下,我想从 GUI 重新创建场景,即:

1. go to source directory
2. copy file/directory
3. go to target directory
4. paste file/directory

我想象

cd source_directory_path
copy_to_stash source_name
cd target_directory_path
paste_from_stash [optional_new_target_name]

我知道有一个 xclip 应用程序,但文档说它复制的是文件内容,而不是文件句柄。此外,我可以$OLDPWD在复制文件时使用变量并对其进行扩展,但这不是一个没有麻烦的解决方案。

有没有一些简单、通用、仅使用键盘且使用起来不尴尬的等效程序?我不想使用其他管理器,如 ranger、midnight commander,只想使用 cli。

答案1

您应该能够使用一些基本函数和 shell 的 $PWD 变量来获取绝对路径,以保存您指定的名称,然后将其复制到您所在的任何地方。以下是两个适用于 bash 的函数(dash/sh 可能只需要使用test或 而[不是[[):

#!/bin/bash
# source me with one of:
# source [file]
# . [file]

# Initialize
sa_file=

sa(){
# Fuction to save a file in the current PWD
if [[ -e "$PWD/$1" ]]; then
    sa_file=$PWD/$1
    echo "Saved for later: $sa_file"
else
    echo "Error: file $PWD/$1 does not exist"
fi
}


pa(){
# Paste if file exists, to $1 if exists
if [[ -e "$sa_file" ]]; then
    if [[ $1 ]]; then
        cp -v "$sa_file" "$1"
    else
        cp -v "$sa_file" .
    fi
else
    echo "Error: file $sa_file does not exist, could not copy"
fi
}

我使用了保存的名称sa,并pa粘贴了 [因为打字越少=越好,对吧?] 但将其命名为任何名称都可以,例如 copy_to_stash。

答案2

您可以使用xclip复制并粘贴路径到文件。

cd source_directory_path
realpath some_file | xclip  # Copy the path to a file
cd target_directory_path
cp "$(xclip -o)" .          # Copy ("paste") the file to the current directory

相关内容