파일을 휴지통으로 이동[닫기]

파일을 휴지통으로 이동[닫기]

내 코드에 다음과 같은 문제가 있습니다.

#!/bin/bash
#Removing Files into the Recycle Bin(Deleted Directory)
filemove=$1 #Saving the first argument as "filemove"
mkdir -p ~/deleted #Create the deleted directory if it doesn't exist
mv $filemove ~/deleted #Moves the file

다음 형식을 따르려면 휴지통에 파일이 필요합니다 filename_inode.

답변1

  • 도구를 사용하여 statinode 번호를 가져옵니다.
  • 직접 사용하십시오 mv.
  • 파일 이름(!!)을 인용하십시오(예 "$filemove": never $filemove).
  • 이동하기 전에 몇 가지 안전 점검을 추가하세요.[ ! -e "$target" ] && mv ...
  • set -euo pipefail스크립트 시작 부분에 사용되므로 오류가 발생하면 실패합니다.
  • for f in "$@"; do ... done루프를 사용하면 여러 파일을 인수로 사용할 수 있습니다.
  • 다시 말하지만, 파일 이름(!!)을 인용하세요.
  • 기성 솔루션을 사용하는 것이 더 좋습니다. 예를 들면 다음과 같습니다.

#!/bin/bash
# Removing Files into the Recycle Bin (Deleted Directory)

set -euo pipefail #make script exit on any error

mkdir -p "$HOME/deleted"
dest="$HOME/deleted/${1}_$(stat --format %i "$1")"

# check if file exists, and if not, do the move!
[ -e "$dest" ] && echo "Target exists, not moving: $1" ||  mv "$1" "$dest"

다음과 같은 것을 사용 trash file1하거나 trash "file with spaces"

( trash스크립트 이름이라고 가정하면...)


또는 한 번에 여러 파일을 삭제할 수도 있습니다.

#!/bin/bash
# Removing Files into the Recycle Bin (Deleted Directory)

set -euo pipefail #make script exit on any error

mkdir -p "$HOME/deleted"

for f in "$@"; do
    dest="$HOME/deleted/${f}_$(stat --format %i "$f")"
    # check if file exists, and if not, do the move!
    [ -e "$dest" ] && echo "Target exists, skipped moving: $f" ||  mv "$f" "$dest"
done

다음과 같은 것을 사용하십시오trash file1 file2 "file with spaces"

관련 정보