Развертывание приложений в старых дистрибутивах, скомпилированных в новом дистрибутиве

  • Используйте инструмент 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"

0
11.07.2021, 06:15
0 ответов

Теги

Похожие вопросы