projects:r_remover
Это старая версия документа!
Удалить '\r'
Если создавать файлы скриптов в Windows не настроив предварительно редактор, или копировать весь текст, то скорее всего в тексте окажется симвор \r
, обычно он скрыт от глаз, но сильно мешает запуску скриптов в Linux.
Вот несколько вариантов как от них избавиться…
Var 1
sudo apt install dos2unix
dos2unix имя_файла
Var 2
sed -i 's/\r$//' имя_файла
Var 3
perl -pi -e 's/\r$//' имя_файла
Var 4
tr -d '\r' < input.sh > output.sh
Скрипт
#!/bin/bash # ==AUTOEXEC== # Каталоги для поиска TOP_LEVEL_DIR="$HOME" RECURSIVE_DIR="$HOME/scripts" # Установка fzf при необходимости if ! command -v fzf >/dev/null; then echo "🔧 Установка fzf..." if [ "$EUID" -ne 0 ]; then sudo apt install -y fzf else apt install -y fzf fi fi # Поиск файлов: # - в $HOME без подкаталогов # - в ~/scripts с подкаталогами mapfile -t FILES < <( find "$TOP_LEVEL_DIR" -maxdepth 1 -type f -name "*.sh" 2>/dev/null find "$RECURSIVE_DIR" -type f -name "*.sh" 2>/dev/null ) # Проверка наличия файлов if [ ${#FILES[@]} -eq 0 ]; then echo "🟡 Скрипты .sh не найдены." exit 0 fi # Выбор через fzf SELECTED=$(printf "%s\n" "${FILES[@]}" | fzf --multi --prompt="Выберите скрипты для исправления \\r: ") if [ -z "$SELECTED" ]; then echo "🔕 Отменено." exit 0 fi # Подтверждение echo echo "Будут обработаны следующие скрипты:" echo "$SELECTED" echo read -p "Удалить символы возврата каретки (\\r)? [y/N] " CONFIRM [[ "$CONFIRM" =~ ^[Yy]$ ]] || { echo "❌ Отменено."; exit 0; } # Удаление \r while IFS= read -r FILE; do echo "✏️ Обработка: $FILE" sed -i 's/\r$//' "$FILE" done <<< "$SELECTED" echo "✅ Завершено." exit 0
projects/r_remover.1743104406.txt.gz · Последнее изменение: 2025/03/27 22:40 —