LinuxForum.Fans
Тема

Скрипт не хочет удалять файл с 05 ascii символом

Автор: Moritto 6 сообщений 1081 просмотров
10.07.2017 22:54 · отредактировано #424212

Я сейчас делаю возможно самую сложную программу на bash.
У меня возникла проблема с удалением файла с ascii символом 05 (ENQ).
Вот так я попытался это сделать:
[console]
xx="05"
rm $'\x$xx'
[/console]
Bash не смог подставить переменную xx и выдал ошибку, заранее символ неизвестен поэтому мне надо удалять его через значение в переменной.
Я решил теперь поступить умнее и сдела вот такой скрипт:
[console]
PS3="Выберите файл для удаления: "
select Name in *; do
clear
rm -rf "$Name"
sleep 5
break
done
[/console]
У меня в каталоге три файла в которых содержится этот аски символ.
Вот что я вижу на экране после выполнения данного кода:
https://s8.hostingkartinok.com/uploads/images/2017/07/b347a7d9a68fc779523799c2bee7b20e.png
Я удаляю всю эту галиматью и пишу цифру 1, файл удаляется и всё замечательно.
Но как сделать так чтобы многочисленное слово screen не появлялось? Если в папке куча файлов с аски символом 05 этих слов становится нереально много!

10.07.2017 23:01 #424213

Хотя нет! У меня неизвестно имя файла и я хочу его удалить. rm $(echo -en "\x05") удаляет но это не то что мне нужно

11.07.2017 14:02 #424216
"Moritto" написал:
но это не то что мне нужно

А нужно-то что?

11.07.2017 15:33 #424219
text
XX="$(echo -e "\x05")"
echo "${Name//$XX/}"

Судя по всему ваш терминал работает с этим символом, по этому не стоит его выводить на экран.

11.07.2017 16:19 #424221
text
#!/bin/bash

XX="$(echo -e "\x05")"

for file in * do if echo $file|grep $'\05' >/dev/null then echo ${file//$XX/} fi done

15.07.2017 21:38 #424318
ormorph написал:
text
#!/bin/bash

XX="$(echo -e "\x05")"

for file in * do if echo $file|grep $'\05' >/dev/null then echo ${file//$XX/} fi done

У меня это уже реализовано, так что зря я задал тут вопрос.

Войдите или зарегистрируйтесь, чтобы ответить.