명령 행에서 파일 / 디렉토리 복사 및 붙여 넣기


17

다음 명령을 사용하는 대신

cp {소스 파일} {대상 파일}

파일을 클립 보드에 복사하여 다른 디렉토리의 다른 곳에 붙여 넣을 수 있기를 원합니다. 이 같은:

/ usr / local / dir1 # cp {source file}
/ usr / local / dir1 # cd / usr / local / dir2
/ usr / local / dir2 # paste

가능합니까?

답변:


17

GUI 응용 프로그램과 같은 작업을 수행해야한다고 생각합니다. 이 작업을 수행하기위한 아이디어는 복사 및 붙여 넣기에 대한 두 가지 기능을 작성하는 것입니다. 여기서 복사는 임시 파일에 복사 할 파일의 경로를 쓰고 붙여 넣기는 해당 경로를 읽고 단순히 cp명령을 호출합니다 . .bashrc파일에 넣을 구현 은 다음과 같습니다.

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
}

이 아이디어를 구현하기 위해 더 나은 스크립트를 작성할 수 있었고, 나는 내 자신을 테스트했으며 파일과 폴더에서 매우 잘 작동합니다 ( xclip폴더 복사에 어떻게 작동 할 수 있는지 모르겠습니다 !!)


예를 들면 다음과 같습니다.

/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

1
이것은 매력처럼 작동합니다!
Meysam

2
나는이 아이디어를 좋아한다. 그리고 약간만 수정하면 "잘라 내기"기능도 구현할 수 있습니다.
Pablo Venturino

@Gilles 대체 echo한 이유를 설명해 주 printf시겠습니까?
Meysam

@Meysam 아래에서도 작업 할 수 shopt -s xpg_echo있습니다.
Gilles 'SO- 악마 그만해'

1
@Meysam printf은 휴대가 가능하지만 안전 echo하지는 않습니다. Wooledge 위키 이것을 간단히 언급 합니다.
jw013

10

나는 xclip을 제안한다. 나는 이것을 위해 항상 그것을 사용합니다. 그러나 당신은 스크립트가 필요하지 않습니다. 그냥 기능을 사용하십시오.

나는이 스크립트를 사용할 필요가 없다고 생각합니다. 특히 내가하고 있다고 생각하는 것을하고 있다면, 이미 도움이되는 Linux tidbits 블로그에서 언급 한 스크립트가 가능한 곳 어디에서나 입력하라는 메시지를 표시하기 때문에 성가신 것을 찾을 있습니다. 유닉스 철학과 달리 그것들을 사용하는 것.

나는 당신의 함수에 몇 가지 기능을 쓰는 것이 좋습니다 .bashrc.

clip2file () {
  xclip -out -selection clipboard >> $@
  echo -e "\n" >> $@
}

file2clip () {
  cat $@ | xclip -selection clipboard
}

이를 사용하려면 apt-get install xclip(Debian, Ubuntu, Linux Mint 등) 또는 zypper in xclip(openSUSE, 기타 .rpm 기반 시스템) 또는 이와 동등한 것이 필요합니다. 프로그램은 사용중인 모든 시스템에서 사용할 수 있어야합니다.


3

xclip이 명령을 사용할 수 있습니다 . 이 링크 에서 bash 스크립트를 다운로드 bash cp2clip하고 파일의 별칭을 파일에 bash clippaste넣을 수 .bashrc있습니다.


@ 별명은 무엇을 의미합니까?
ixtmixilix

파일을 홈 디렉토리에 유지하고 .bashrc 별칭에 두 개의 별칭을 넣었습니다. cp2clip = 'bash /home/<username>/cp2clip.sh'및 clippaste = 'bash /home/<username>/clippaste.sh'그래서 어디서나 사용할 수 있습니다. 당신이 볼 수 별칭에 대한 자세한 읽으려면 man alias또는 linfo.org/alias.html
harish.venkat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.