Инструменты пользователя

Инструменты сайта


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

Скрипт

Скрипт для удаленя '\r' символа возврата каретки, на коотрый любит ругаться bash

#!/bin/bash
# ==AUTOEXEC==
# === \R remover ===
# * удалить из файлов скриптов '\r' на которые bash любит ругаться
#
 
# Каталоги для поиска
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.1743104674.txt.gz · Последнее изменение: 2025/03/27 22:44 —

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution 4.0 International
CC Attribution 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki