bash FAQ – часто задаваемые вопросы по bash



Вопрос: Как продублировать заданный диапазон строк в файле?
Ответ:
$ cat input.txt 
this is line 1
this is line 2
some lines here


there are 2 blank lines above
$ sed '2,4 p' input.txt 
this is line 1
this is line 2
this is line 2
some lines here
some lines here



there are 2 blank lines above

Вопрос: Как узнать кодировку файла?
Решение:
file example.txt

Вопрос: Как удалить повторяющиеся строки из файла?
Решение: Есть разные варианты сделать это:
  • sort -u list.txt > list.new
  • sort list.txt | uniq > list.new
  • awk '!x[$0]++' list.lst > list.new

Вопрос: Using the find command
Решение:
find /home/abbas/ -iname 'file.txt'


Вопрос: Recursive search for files with specific content using grep
Решение:
grep -r --include="*.cpp" '#include <iostream>' /home/abbas/example-dir/
grep -r "redeem reward" /home/tom/

Вопрос: Как удалить файл без запроса подтверждения?
Ответ:
rm -f file

Q: Как сравнить два файла?
A: diff -q a.json ./b/c/d.json


Вопрос: Какие символы нужно экранировать при замене текста с помощью sed?
Ответ: \[]*

$ echo "{replace}*[this]-\"escaped\"-\stuff"
{replace}*[this]-"escaped"-\stuff
$ echo "{replace}*[this]-\"escaped\"-\stuff" | sed 's/{replace}\*\[this\]-"escaped"-\\stuff/with-that-escaped-stuff/g'
with-that-escaped-stuff


Вопрос: Как удалить все пустые файлы?
Ответ: find /tmp -size  0 -print0 |xargs -0 rm


Вопрос: Как удалить все пустые папки?
Ответ: find . -type d -empty -delete


Вопрос: Как в Ununtu очистить историю Терминала?
Ответ:
Нужно напечатать пробел, а потом команду
cat /dev/null > ~/.bash_history && history -c && exit
Команды начинающиеся с пробела не попадают в историю.