Windows Subsystem for Linux

neofetch

Если вы не в курсе, что такое Windows Subsystem for Linux или WSL (или WSL 2), то воспользуйтесь Гуглом. Вкратце, это Linux, работающий внутри OS Windows. Устанавливать эмулятор, вроде Virtual Box или VMWare не нужно, несколько готовых сборок можно установить из магазина Microsoft как обычные  программы. После запуска у вас будет консоль, внешне, естественно, похожая на консоль командной строки, но почти такая же удобная и гибкая, как PuTTY или другой терминал.

Мне эта штука понравилась тем, что у пользователя есть доступ ко всем дискам и разделам операционной системы и можно писать практически любые скрипты для задач по работе с файлами. Поиск файлов, поиск текста внутри файлов, поиск и обработка файлов, чтение файлов в реальном времени (tail –F) и т.д. производится так же, как на обычном Линуксе. Огромное количество удобных утилит доступны практически просто из коробки.

Сегодня мне понадобилось конвертировать несколько flac-файлов в mp3. Я набросал простой скрипт, несколько минут – и все готово. Не нужно устанавливать программы, да еще и зачастую платные, достаточно установить одну или несколько консольных утилит и запустить скрипт.

У меня установлена сборка Debian, для работы с аудиофайлами я использовал ffmpeg, для этого нужно сначала его установить:

sudo apt install ffmpeg -y

Затем нужно перейти в каталог с файлами, которые нужно конвертировать (cd /mnt/c/folder, где “c” – буква  раздела, а folder – каталог с музыкой), создать файл (выполнить nano re.sh) и вставить туда скрипт (правой клавишей, как в обычной командной строке):

#!/bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

for f in *.flac
do
 ffmpeg -i "$f" -ab 320k -map_metadata 0 -id3v2_version 3 "$f".mp3
done

CTRL+X Y ENTER. Всё, файл сохранен. Запускаем командой sh re.sh и смотрим за процессом выполнения.

Упомянутый выше поиск текста в файлах выглядит примерно так:

find . -name "*.*htm*" -exec grep -i "iframe" {} \; -print

Точка – это текущий каталог, можно указать путь к каталогу. Данный однострочник найдет в текущем каталоге все файлы с расширением, содержащим htm, т.е. .html, .htm, .shtml и т.д. и если внутри файла содержится текст iframe – выведется имя файла и строка в файле с этим словом.

Возможностей море, можно искать готовые скрипты для своих нужд на страничках линуксоидов или писать свои. Если вы не линуксоид, то есть хороший повод начать изучать консоль Линукс.


Теги: , , , , , , ,

Rsync и двоеточие

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

~> rsync -av 2015-07-31_01:32:46/ newdir/
ssh: Could not resolve hostname 2015-07-31_01: hostname nor servname provided, or not known
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.1]

Все, что находится до двоеточия считается именем или адресом хоста и не резолвится.

Решить проблему можно тремя способами:

— указать полный путь к файлу или каталогу;
— добавить перед файлом или каталогом точку-слеш (./);
— добавить перед файлом или каталогом в одинарных кавычках pwd и слеш (`pwd`/).

~> rsync -av /home/username/2015-07-31_01:32:46/ newdir/
~> rsync -av ./2015-07-31_01:32:46/ newdir/
~> rsync -av `pwd`/2015-07-31_01:32:46/ newdir/

То же самое относится и к scp.


Теги: , , , , , ,

Интерактивное наблюдение

Все *nix’оиды знают команду top и аналоги – htop, mytop и т.д.  Аналогичны эти программы в своем принципе работы – постоянном (интерактивном) обновлении информации на экране.

А если нужно постоянно выводить на экран результат работы какой-то команлы или команд? Да еще и в удобном виде – с обновлением (очисткой) экрана. Как быть?

Способ #1

watch (для FreeBSD его родственник – gnu-watch)

Команда (gnu-)watch позволяет многократно запускать заданную команду или команды, выводя результат на экран. Примеры:

gnu-watch --differences=cumulative ls –la

Данная команда позволяет следить за файлами, при этом у измененных файлов будет подсвечен размер. Если не указывать cumulative, то изменение на экране будет подсвечено только один раз, при первом обнаруженном изменении во время обновления.
Я люблю наблюдать, как идет процесс сборки рейда:

gnu-watch -t gmirror status
Способ #2

работает везде при наличии bash

bash -c 'while true; do echo '^L'; gmirror status; echo; date; sleep 2; done'
# или так
bash -c 'while :; do clear; gmirror status; echo; date; sleep 2; done'

^L – в данном случае это !один! символ “Control-L”. Если вы просто нажмете эту комбинацию, то ничего не произойдет, точнее – вы очистите экран. Чтобы напечатался символ нужно прибегнуть к хитрости:

CTRL+V+L – о таком способе ввода непечатаемых символов я уже упоминал в этой статье.

Может пригодится 😉


Теги: , , , , , , , ,

Make and Enter

Если вам часто приходится создавать каталоги в консоли, вам может пригодиться следующий трюк:

bash:

echo 'mkcd() { mkdir -p "$@" && cd "$_"; }' >> ~/.bashrc

csh (tcsh):

alias mkcd 'mkdir -p \!*; cd \!*'
(добавьте эту же строку в .cshrc)

ksh

alias mkcd='_(){ mkdir -p $1; cd $1; }; _'

Теперь пользуйтесь:

mkcd foo/bar

Enjoy!


Теги: , , , , , , , ,

Настраиваемое приветствие в консоли

Каждый раз, когда вы логинитесь по ssh на сервер или компьютер, вы видите унылое говно одну и ту же картину:

Last login: Mon Aug 17 15:02:25 2009 from ip.com
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California.  All rights reserved.

FreeBSD x.y-RELEASE-pZ (KERNEL) #A: Thu Apr 17 11:21:34 EDT 2008

Welcome to FreeBSD!
For information on the web, visit us at www.pcbsd.org
«man tuning» gives some tips how to tune performance of your FreeBSD system.
— David Scheidt <dscheidt@tumbolia.com>

Т.е., информацию Last login, копирайт, содержимое /etc/motd (версию системы) и какой-нибудь fortune. Скучно? Скучно!

Кастрация Кастомизация

“Проснись, Нео!”

Wake up, Neo!

Читать остальную часть заметки »


Теги: , , , , , , , , , , , , , , , , , , , , , ,