stat
для получения номера инода. mv
. "$filemove"
, никогда $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"