Сценарий Bash для чтения строки и увеличения

А как насчет псевдонимов? Набрав псевдоним в командной строке, вы увидите все определенные псевдонимы. Я бы посоветовал добавить что-то вроде:

alias rm='rm -i'

Определите его в ~ / .bashrc (чтобы вы могли удалить его в будущем или изменить в соответствии с вашими потребностями).

[mal@localhost ~]$ touch 123
[mal@localhost ~]$ rm 123
[mal@localhost ~]$ touch 123
[mal@localhost ~]$ rm -i 123
rm: remove regular empty file ‘123’? y
[mal@localhost ~]$ 

ИЛИ

Вот еще одна уловка.

Создайте файл с именем -i в этом каталоге, используя touch - -i или touch./ -i

Теперь попробуйте rm -rf * :

[mal@localhost stack]$ touch {1..10}
[mal@localhost stack]$ touch -- -i
[mal@localhost stack]$ ls
1  10  2  3  4  5  6  7  8  9  -i
[mal@localhost stack]$ rm -rf *
rm: remove regular empty file ‘1’? n
rm: remove regular empty file ‘10’? n
rm: remove regular empty file ‘2’? n

Здесь * расширит -i в командную строку, так что ваша команда в конечном итоге становится rm -rf -i . Эта команда отобразится перед удалением.

ИЛИ

Используйте safe-rm

Safe-rm - это инструмент безопасности, предназначенный для предотвращения случайного удаления важных файлов путем замены / bin / rm оберткой, которая проверяет указанные аргументы против настраиваемого черного списка файлов и каталогов, которые никогда не должны быть удалены.

 Пользователи, которые попытаются удалить один из этих защищенных файлов или каталогов, не смогут это сделать, и вместо этого им будет показано предупреждение 
 

:

 $ rm -rf / usr {{ 1}} Пропуск / usr 
 

0
22.11.2018, 12:28
2 ответа

Предполагая, что значения являются строго действительными числами с основанием 10 (, если нет, очистить их):

$ cat./script.sh
#!/bin/bash
while   IFS='|' read a b
do      until   ((a>b))
        do      printf '%d\n' "$((a++))"
        done
done

$./script <infile >outfile
0
28.01.2020, 02:23

Сawk:

awk -F'|' '{for (i = $1; i <= $2; i++) print i}' < input > output
1
28.01.2020, 02:23

Теги

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