Меню сайта
   Главная   
   Обо мне   
   Статьи   
   Дневник   
   Картинки   
   Файлы   
   Форум   
   Гостевая книга   

Категории раздела
Настольные игры [20]
Мои статьи [18]
Мои интересы [36]
Перепечатки [49]
GNU/Linux [14]
ZX-Spectrum [10]
Субмарины [9]


Каталог статей

Главная » Статьи » GNU/Linux

Bash

ЛУЧШЕЕ СПРАВОЧНОЕ РУКОВОДСТВО:
Mendel Cooper. Advanced Bash-Scripting Guide
Искусство программирования на языке сценариев командной оболочки
тут https://www.opennet.ru/docs/RUS/bash_scripting_guide/

Наглядные примеры: http://krdprog.ru/linux-bash/


bash рулетка
[ $[ $RANDOM % 6 ] == 0 ] && echo dead || echo live!

/ слеш в конце пути -признак каталога.  Два тире -- после команды указывают, что после них ключей нет, и тире не обрабатываются. Например создать файл с тире в имени:
touch -- -a

Построчно считать файл в переменную B
while read A; do B+=$A; done </etc/group
echo $B

Вывести файлы, начинающиеся на s, с расширением БЕЗ букв g или f
ls s*.*[^gf]
Без ^ значит с. Домик это отрицание.

Вывод файлов начинающихся с цифры. в квадратных скобках шаблон диапазона символов.
ls [0-9]*.*

Шаблон выбора расширения по шаблону на каждый символ:
ls *.[jJ][pP][gG]

Вывести последний ErrorLevel
echo $?

Обратный слэш экранирует управляющие символы, выводя их как обычные. В двойных кавычках можно экранировать пробелы, и использовать переменные:
A=Star\ Wars; echo "variable A = $A"

Одинарные кавычки более строгие, экранируют всё, в.т.ч. и переменные:
A=Star\ Wars; echo 'variable A = $A'

Знак доллара принуждает строгое экранирование обрабатывать управляющие символы, например перевод каретки:
echo $'\nword\n'

Оператор сравнения на равенство с выводом кода Errorlevel
test A == B ; echo $?

Когда нужно экранировать лишние символы, фигурные скобки явно указывают границы переменной:
A=Star ; B=Wars ; echo ${A}_$B

Два слеша позволяют редуцировать вывод. Например вывод без пробелов:
a='one two three' ; echo ${a// }



СЕРВИСНЫЕ КОМАНДЫ:



Слетели пути к zathura. Ищет свои файлы не там.
Помогла перехэшизация путей:
hash -r

Ещё похожие команды:
sudo ldconfig



КРАТКИЕ КОНСТРУКЦИИ:


lalala & — запускает команду в фоне, т.е. управление отдаётся командному интерпретатору (bash, например), а [command] будет выполняться «параллельно».
lalala && — подразумевает, что следующая команда будет выполнена только в том случае, если [command] была выполнена успешна (вернула 0).
КРАТКО:  & = Run in background, && = Logical AND.

В bash ctrl+t меняет соседние символы местами, удобно.

Вернуться в предыдущую директорию:
cd -

Ожидание любой клавиши:
echo -n "Press any key to continue..." && read

Вывести построчный список из цифр от 01 до 10.
for x in {01..10};do echo $x;done

Повторить команду N раз:
for n in {1..5}; do echo "Я НЕ БУДУ КАТАТЬСЯ НА СКЕЙТЕ В КОРИДОРАХ"; done

Калькулятор в bash:
https://habrahabr.ru/post/310566/
echo $((15+25))

Калькулятор в консоли на python:
echo 'print(666*2-200)'|python3

https://habrahabr.ru/post/310566/
Мы подгружаем в bc математическую библиотеку опцией -l и просим выдать число π с точностью 5000 знаков после запятой.
time echo "scale=5000; 4*a(1)" | bc -l -q

Вывести только часть переменной. "с-по", и "начиная с".
a=01234; echo ${a:1:2}
a=01234; echo ${a:3}
9.2. Работа со строками
9.3. Подстановка параметров
https://www.opennet.ru/docs/RUS/bash_scripting_guide/x4462.html, https://www.opennet.ru/docs/RUS/bash_scripting_guide/x4171.html


https://www.opennet.ru/docs/RUS/bash_scripting_guide/x4171.html
Извлечение фрагмента "беда" из строки $a
a=пообедал; echo ${a:3:4}

Взять отрывок строки с конца:
a=Победа; echo ${a:(-4)}

вывести цифры от 10 до 20
seq 10 20

вывести буквы A..Z
for i in {a..z}; do echo -n $i; done

Вывод назначенных справа переменных:
https://linuxize.com/post/bash-printf-command/
printf "Open issues: %s\nClosed issues: %s\n" "34" "65"

Вывод в hex, dec, oct форматах.
printf "Decimal: %d\nHex: %x\nOctal: %o\n" 100 100 100

Отступить слева 20 символов и напечатать слово, и число:
printf "%20s %d\n" Mark 305

Напечатать число, дополнив его нулями до 8 символов.
printf "%0*d" 8 1111


Вывести число 254 в бинарном виде:
https://stackoverflow.com/questio....version
a=254; echo "obase=2;$a" | bc
echo "obase=2; 254" | bc
bc <<< "obase=2;254"

На первый взгляд лишённая смысла, но полезная конструкция: вывести в бинарном виде записанное в бинарном виде число 254:
echo "obase=2; $(( 2#11111110 ))" | bc

Выбрать случайный файл в каталоге:
ls | shuf -n1

Воспроизведение в консоли:
ffplay example.mp3

Имитировать ввод с клавиатуры:
echo "You can simulate on-screen typing just like in the movies" | pv -qL 10

Имитировать набор в реальном времени:
LINE="Wake up, User, The Windows has you..." ; while [[ -n "$LINE" ]] ; do echo -n "${LINE::1}" ; LINE="${LINE:1}" ; sleep 0.1; done ; echo

Конвертировать text из ascii в HEX.
echo -n "text" | od -A n -t x1 |sed 's/ /\\x/g'
Запись БИНАРНЫХ чисел в bash:
echo $(( 2#01010101 ))
Запись шестнадцатиричных:
printf %x 255
бинарное выводится в десятичное и конвертируется в шестнадцатиричное
printf %x $(( 2#11111111 ))

Вывести hex в dec
echo $((16#ff))

Вывести hex число в бинарном виде:
echo "obase=2; $((16#ff))" | bc

Вывести построчно разделённые пробелами слова:
c="aa bb cc dd ee ff gg"; for x in $c; do echo $x; done;

Тот же результат путём замены " " на \n:
echo $c | tr ' ' '\n'; echo



ОДНОСТРОЧНЫЕ СКРИПТЫ:


Бесконечное выполнение скрипта test.py:
http://debianadmin.ru/beskonechnyj-cikl-na-bash.html
while true; do ./test.py; sleep 3; done;

Дата YYYY-MM-DD в консоли:
datev=$(date +%Y-%m-%d);echo $datev

Узнать код клавиши: и как это можно использовать:
https://www.linux.org.ru/forum/general/11776554
xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
Секундомер отсчёт с нуля:echo '';zero=`date +%s`; echo -n 0; while sleep 1; do echo -ne \\r; expr `date +%s` - $zero | tr -d \\n; done

Три способа создать сразу несколько каталогов. Перечислением, циклом, диапазоном:
Таким образом видно, что если числовые каталоги являются диапазоном, то и создавать их следует им же. В противном случае списком, а цикл вообще от лукавого.
mkdir ./{2010,2011,2012,2013}
mkdir ./$(for x in {2010..2013};do echo $x;done)
mkdir ./{2010..2013}

mkdir - создать цепочку субкаталогов
-p, --parents no error if existing, make parent directories as neededhttp://man7.org/linux/man-страницы/man1/mkdir.1.html

Матрица стайл
tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep --color "[^ ]"


Как в Bash быстро поместить содержимое файла в переменную?
content=$(</tmp/file.txt)
# Проверка что оказалось в переменной
echo "$content"


ССЫЛКИ:


  1. Колисниченко Д. Н. Командная строка Linux и автоматизация рутинных задач.pdf
    https://vk.com/doc9273....41ef2ca
  2. Mendel Cooper. Advanced Bash-Scripting Guide. Искусство программирования на языке сценариев командной оболочки. Перевод: Андрей Киселев. !!! ОЧЕНЬ хороший учебник с оглавлением!!!
    https://poplinux.ru/adv-bash/
  3. Bash-скрипты, часть 3: параметры и ключи командной строки
    https://habr.com/company/ruvds/blog/326328/
  4. Встроенная команда read
    https://sites.google.com/site/bashhackers/commands/read
  5. Учим bash-скрипты, пишем Sokoban
    https://habr.com/ru/post/120198/
  6. Интерактивная игра на bash: «Арканоид»
    https://bolknote.ru/all/3410/

Связанные статьи: нет.   Категория: GNU/Linux | Добавил: harushima (01.01.2003)
Просмотров: 1114 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Авторизация
Анонимный вход:
anonymous / anonymous
Логин:
Пароль:

Поиск

Облако тэгов
JGSDF игрушки Брюнетки Кладбище сайты Ярость Дракулы Древний Египет девушки кошки Cthulhu Вампиры Kitsune Ужас Аркхема инструмент комиксы Lovecraft готика Submarine submarine rc toy Hosting игротека Ужас Аркхэма book uboat мобильная связь го Edgar Poe swf Mansions of Madness Nightmares персоны Synergy linux-hardware bash youtube Storages Python Мастер-рукожоп Магнитофоны Entropy Grub2 loglevel WiFi Beeline ОПСОСЫ sharp939 Аудиокассеты Windows linuxwork Хочуны ImageMagick топБарыг C64c Commodore

Статистика
Яндекс.Метрика
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Page QR code


Перепечатка материалов сайта без активной ссылки запрещена. Следить за RSS
(c) hermitlair.ucoz.com 2009-2024
Лучший браузер!
Блокировка рекламы