Цветные emoji в Google Chrome на Ubuntu

По большому счёту, это сокращённый перевод вот этой статьи: How To Enable Color Emoji on Chrome for Linux. Однако у меня есть пара дополнений, без которых не удалось „завести” эту шарманку. Читать далее Цветные emoji в Google Chrome на Ubuntu

Быстрое переименование файла в bash

Хотя почему переименование? Можно использовать в любых ситуациях. Надо сделать резервную копию файла? Или переименовать, добавив всего пару символов? Не нужно жать табы и править имя файла, лучше поступить так:

# вместо
cp very_long_filename.txt very_long_filename.txt.bak
# пишем
cp very_long_filename.txt{,.bak}

Пример в цикле:

for i in {001..100}
do
  … какие-то действия …
  mv output{,_${i}}.jpg
done

Получаем файлы output_001.jpg, output_002.jpg, …, output_099.jpg, output_100.jpg. Если не нужны лидирующие нули, то for i in {1..100}.

Сохранение истории bash после перезагрузки

Чтобы файл ~/.bash_history не был пустым после перезагрузки, нужно всего лишь изменить его права:

$ sudo chmod 777 ~/.bash_history

Или ещё лучше так:

$ sudo chown username:root ~/.bash_history

где username — имя вашего пользователя.

Более точный sleep через read

В источнике всё описано достаточно подробно, поэтому я просто выложу результаты тестов, они говорят сами за себя:

$ time for ((i=0; i<10000; i++)); do /bin/sleep 0.0001; done

real 0m43.498s
user 0m2.904s
sys 0m10.809s

$ time for ((i=0; i<10000; i++)); do read -t 0.0001; done

real 0m9.148s
user 0m0.392s
sys 0m2.808s

PS. Конечно, есть и builtin sleep, но редко бывает разрешён по умолчанию. Да и работает, согласно источнику, всё равно медленнее (хоть и не намного).

Считывание переменных из файла в Bash

Вместо

for var in $(cat file.txt) # или for var in `cat file.txt`
do

done

можно (и часто удобнее) использовать

cat file.txt | while read var
do

done

Особенности:

1. Во втором варианте применение пайпа изменяет область видимости переменных. В приведённом примере за пределами цикла while переменная var не будет видна, т.к. она выполняется в новом процессе.

2. При использовании варианта с пайпом (вариант 2) в переменную будет писаться вся строка, даже если в ней есть пробельные символы. Такое же поведение в варианте 1 можно спровоцировать, установив переменную окружения IFS=" " (равной пробелу; хотя на своём опыте я убедился, что использование в качестве разделителя пробельных символов может повлечь за собой массу неудобств).