Invest-currency.ru

Как обезопасить себя в кризис?
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Bash c linux

Операционные системы. Linux. Bash && «продвинутый» Bash

bash, regexp, printf и другие интересности

До начала пары вспомнили chmod , немного поговорили про sudo и chown :

sudo (англ. substitute user and do, дословно «подменить пользователя и выполнить») — программа для системного администрирования UNIX-систем, позволяющая делегировать те или иные привилегированные ресурсы пользователям с ведением протокола работы.

tldr: получить привелегии root (администратора системы).

Глянули /etc/passwd — список учёток.

Глянули /etc/sudoers — настройки использования sudo.

ДЗ: без использования утилит id, group написать утилиту вывода групп юзера. +5 баллов в карму.

chown

Команда смены владельца файла.

Чтобы сменить владельца файлов в директории и во всех поддиректориях (рекурсивно), выполните:

Менять пользователя может только root, -R — рекурсивно.

Linux, bash. Однострочники

Собственно, начало пары.

Уже разбирали. Повторяем.

| — перенаправление вывода одной команды на вход другой. Пример:

|| — ленивое логическое «или». Используется для выполнения операции, если предыдущая завершилась с ошибкой:

&& — ленивое логическое «и». Используется для выполнения операции, если предыдущая завершилась успешно:

cat, head, tail, grep

cat — конкатенация содержимого файлов и вывод:

head — вывести начало файла (по умолчанию 10 строк):

tail — вывести конец файла (по умолчанию 10 строк):

— полезно для чтения логов — там как раз последнее — самое интересное. Также часто используется:

— выводить по мере поступления новых строк в файл.

grep — великая утилита для фильтрации входного потока:

ДЗ: пишем anti-head-tail — 2 аргумента: с какой по какую строку отправлять на вывод. +5 баллов в карму.

xargs

regexp

Короче, есть главная проблема программирования — «придумать название переменной».

За ней ровным строем идут регулярные выражения/грамматики, инвалидация кеша и реляционная алгебра.

Я вам не скажу за главную проблему, но за регулярные выражения немного поясню.

Мы уже встречались с прекрасными подстановками типа * и, например, *.txt . Видели забавные mkdir -p ./test/> , но что, если я скажу, что подобным образом можно искать?!

Как-то мы уже использовали grep для поиска подстроки в строке:

— ищем «roo» в файле passwd. Но это не так круто, как искать по шаблону!

— находим запись пользователя root.

Отмечу, что в каком-то виде regexp (regular expressions) есть практически во всех языках программирования, поэтому мозголомка ниже будет полезна. Понимание regexp сродни пониманию сложения — рассказывать об этом также сложно, ибо уже не помнишь, в чём проблемы восприятия (поэтому жду вопросов).

Регулярные выражения содержат 3 базовых возможности:

Конкатенация (вспоминаем cat ) — два выражения могут идти одно за другим. Полученное большое выражение будет соответствовать входной строке тогда и только тогда, когда часть входа, соответствующая первому маленькому выражению, сразу же следует за частью, которая соответствует второму маленькому выражению.

Объединение (операция or / || ) — большое выражение соответствует строке, соответствуйщей одному из маленьких выражений, содержащихся в нём.

Замыкание — маленькое выражение может быть «повторено» ноль или более раз, чтобы соответствовать входу.

Примеры регулярных выражений

Конкатенация трёх выражений «f», «oo|ee», «t». Само же выражение «oo|ee» — объединение выражений «oo» и «ee»:

Закрытие/замыкание/кложура и тд:

Помните [[:digit:]]? Такого много:

И это только базовое. Советую читать PCRE для понимания всего ужаса используемых в реальной жизни регулярок.

Advanced bash

[ (команда «test») и [[ (новый тест) используются для вычисления выражений. [[ работает только в Bash, Zsh и Korn shell. Также он более мощный. [ доступен в POSIX shells.

Короче говоря, в bash мы используем [[ ]] — он новее, быстрее и т.д. Если имеем какую-нибудь старую POSIX-совместимую Unix оболочку, то используем [ ]. По большей части синтаксис [[ ]] и [ ] схож.

printf

Его можно найти в bash, C, C++, python, perl, php, .

По сути — форматированный вывод. Рассмотрим варианты шаблонов вывода:

Хех, не всё так просто!

  • Например, спецификатор %05d заполнит нулями пустующие позиции поля вывода, если количество цифр в целом числе, подлежащем выводу, будет меньше пяти.
  • Например, форматный код %10.4f выведет на экран число, у которого количество цифр не превышает 10, четыре из которых размещаются после десятичной точки.
  • На­пример, спецификатор %-10.2f выравнивает число с двумя знаками после точки по левому краю поля, состоящего из 10 позиций.

Не успели. Всё же 2 пары за одну. Успели бы без ответов на вопросы. Но это не наш путь!

Проверю через пару — буду предвзят, требовать странное. Пройдусь по всем, у всех посмотрю.

Кто хочет — может в конце этой показать.

По результатам буду проставлять успеваемость за полусеместр.

Оболочка Bash — шпаргалка для начинающих

    Переводы, 12 января 2017 в 18:28

В данной шпаргалке затрагиваются следующие темы: введение в оболочку, навигация, основные команды, переменные окружения, коннекторы, конвейеры, перенаправление ввода/вывода, права доступа и комбинации клавиш.

Оболочка Bash: введение

Оболочка, или шелл (shell) — это программа, в нашем случае названная «bash», что является сокращением от Bourne Again Shell. Оболочка принимает ваши команды и передаёт их операционной системе. Для взаимодействия с системой используются терминалы, такие как gnome-terminal, eterm, nxterm и т. п.

Навигация

В Linux файлы и каталоги имеют иерархическую организацию, то есть существует некий начальный каталог, называемый корневым. В нём содержатся файлы и подкаталоги, которые в свою очереди содержат файлы и свои подкаталоги.

Команда pwd , сокращение от print working directory, отображает текущее местоположение в структуре каталогов.

Команда cd позволяет перейти в новый каталог.

mkdir

Команда mkdir создаёт новый каталог в текущем каталоге.

Основные команды

Команда man отображает руководства по командам. Например, следующая команда выдаст всю информацию о команде cat :

Команда cat считывает файл, переданный как аргумент, и выводит его содержимое по стандартному каналу вывода. Передача нескольких файлов в виде аргумента приведёт к выводу конкатенированного содержимого всех файлов.

Команда echo выводит свои аргументы по стандартному каналу вывода.

Если вызвать echo без аргументов, будет выведена пустая строка.

Команда head читает первые 10 строк любого переданного текста и выводит их по стандартному каналу. Число выводимых строк можно изменить:

Команда tail работает аналогично команде head , но читает строки с конца:

Также можно просматривать добавляемые к файлу строки в режиме реального времени при помощи флага -f :

Команда less позволяет перемещаться по переданному файлу или куску текста, причём в обоих направлениях.

Подробнее о назначении символа | будет рассказано ниже в разделе команды history .

Команда true всегда возвращает ноль в качестве выходного статуса для индикации успеха.

false

Команда false всегда возвращает не-ноль в качестве выходного статуса для индикации неудачи.

$? — это переменная, которая содержит выходной статус последней запущенной команды. Под статусом обычно понимается код возврата программы. 0 означает успешное выполнение программы, любое значение большее 0 отражает тот факт, что в процессе выполнения возникли некоторые ошибки. Кстати, именно поэтому в bash истинной (true) считается 0, а все, что не 0 — ложью (false):

Команда grep занимается поиском переданной строки в указанном файле:

grep также может принимать несколько файлов и регулярных выражений для уточнения формата текста.

Также можно ознакомиться с руководством по regex. У нас на сайте тоже есть руководство по «регуляркам» в Python для новичков.

Команда sed — это потоковый редактор, преобразующий входные текстовые данные. Обычно её используют для замены выражений так: s/regexp/replacement/g . Например, следующий код заменит все слова «Hello» на «Hi»:

Также вы можете ознакомиться с руководством по sed.

history

Команда history выводит историю командной строки. Обычно её используют вместе с командой grep для поиска конкретной команды. Например, следующий код найдёт все команды, содержащие строку g++ :

Здесь также используется символ | — это так называемый конвейер (pipe). Благодаря ему можно перенаправлять вывод одной команды на вход другой — таким образом в примере выше вся история, которая в обычном режиме выводится командой history прямо в вывод терминала, будет перенаправлена в grep в качестве входных данных. Мы не увидим вывода команды history , но увидим вывод команды grep .

Читать еще:  Виды файлов в linux

Это может быть довольно сложно для понимания без практики, поэтому поэкспериментируйте самостоятельно, например с командами ls , history , ps (описана ниже), перенаправляя их вывод в grep , sed или less , например.

export

Команда export устанавливает переменные окружения для передачи дочерним процессам. Например, так можно передать переменную name со значением student :

Команда ps выводит информацию о запущенных процессах.

Выводится четыре элемента:

  • ID процесса (PID),
  • тип терминала (TTY),
  • время работы процесса (TIME),
  • имя команды, запустившей процесс (CMD).

Команда awk находит и заменяет текст в файлах по заданному шаблону: awk ‘pattern ‘ test.txt

Команда wget скачивает файлы из Сети и помещает их в текущий каталог.

Команда nc — это утилита для отладки сети. Также можно ознакомиться с руководством по nc.

Команда ping тестирует сетевое подключение.

Статистика в конце показывает количество подключений, совершённых до завершения команды, и время их выполнения.

Git — это популярная система контроля версий. Также можно ознакомиться с руководством по git и нашими материалами.

Переменные окружения

Переменные окружения — это именованные переменные, содержащие значения, используемые одним или несколькими приложениями.

Переменная PATH содержит список каталогов, в которых система ищет исполняемые файлы.

Ивент перенесён, есть новые даты ( 26 – 27 сентября ) , Новосибирск, беcплатно

Переменная HOME содержит путь к домашнему каталогу текущего пользователя.

Коннекторы

Коннекторы позволяют запускать несколько команд одновременно.

Bash скрипты Linux

Среди системных администраторов и обычных пользователей Linux достаточно популярна практика писать Bash скрипты для автоматизации и облегчения выполнения определенных задач в операционной системе. Фактически, вы написали один раз порядок действий, которые нужно выполнить, расписали файлы и так далее, а затем просто пишите одну короткую команду и все действия выполняются как нужно. Можно пойти еще дальше и запланировать автоматическое выполнение скрипта.

В этой небольшой статье мы собрали самые полезные Bash скрипты Linux, которые вы можете использовать в своих системах. Некоторые из них состоят из нескольких строк, некоторые помещаются в одну строку. Здесь есть как небольшие сниппеты, которые вы можете использовать в своих скриптах, так и полноценные интерактивные скрипты, для работы с ними через консоль.

Полезные Bash скрипты Linux

Начнем с небольших полезных команд, которые могут пригодиться в различных ситуациях.

Команды

Первый скрипт сортирует содержимое текущей папки по размеру:

du -a -d 1 -h | sort -h

Но в большинстве случаев это не эффективно, вам намного удобнее будет использовать утилиту ncdu. Вам нужно быстро создать пароль и вы не хотите устанавливать pwgen, можете использовать такую команду:

Эта команда запускает простейший HTTP сервер в текущей папке. Очень удобно для отладки чего либо:

python -m SimpleHTTPServer

С помощью команды at можно запланировать выполнение произвольной команды один раз в указанное время, например, в полночь:

echo «ls -l» | at midnight

Скрипт передает звук от вашего микрофона на другой компьютер по ssh. Качество будет очень плохим, но тем не менее это работает:

dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp

Хотите скачать весь сайт на компьютер для того, чтобы потом иметь возможность просматривать его оффлайн? Для этого достаточно утилиты wget:

wget —random-wait -r -p -e robots=off -U mozilla https://losst.ru

Будут загружены все файлы сайта, включая изображения, игнорированы правила из файла robots.txt и в качестве агента пользователя будет сообщаться Mozilla Firefox. А такой командой можно реализовать самый простой таймер:

time read (ctrl-d для остановки)

Выводит команды bash, которые используются чаще всего:

Такой командой вы можете выводить символы с небольшой задержкой, как в фильмах:

echo «Взлом пентагона. ОШИБКА ОШИБКА» | pv -qL 10

Записать видео с экрана в терминале linux:

ffmpeg -f x11grab -r 25 -s 800×600 -i :0.0 /tmp/outputFile.mpg

Запустит команду через указанный промежуток времени, в данном случае, через 5 секунд:

timeout 5s команда

Удаляет все пустые папки:

find . -type d -empty -delete

Это были самые популярные и полезные команды с точки зрения ресурса commandlinefu.com. А теперь нам нужно рассмотреть сниппеты bash, которые вы можете использовать в своих проектах.

Сниппеты Bash

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

А там, где нужно прекратить:

END=$(date +%s)
DIFF=$(( $END — $START ))
DIFF=$(( $DIFF / 60 ))

Переменная DIFF будет содержать время выполнения в минутах. Теперь вы можете вывести ее с помощью echo.

Скрипты довольно часто требуют ввода параметров для правильной работы. Этот сниппет позволяет достаточно просто разбирать переданные параметры:

while [ «$1» != «» ];
do
case $1 in
-s ) shift SERVER=$1 ;;
-d ) shift DATE=$1 ;;
—paramter|p ) shift PARAMETER=$1;;
-h|help ) # выведите сообщение с подсказкой
* ) # другие параметры

Тут мы присваиваем значение параметра переменной в зависимости от того какой буквой он обозначен. Например, для такого вызова:

parameter_test.sh -s losst -d 20170916 —parameter Subscribe!

Переменной SERVER будет присвоено значение losst, DATA — 20170916 и PARAMETER — Subscribe. Как это работает? Если кратко, то мы всегда используем первый параметр, и используем команду shift, чтобы сдвинуть стек с параметрами влево, когда текущий первый параметр больше не нужен.

Дальше, если вам нужно убедиться, что важные параметры заданы, можно просто проверить на существование эти переменные:

if [ -z $SERVER ] || [ -z $DATE ]; then
echo «Необходимо указать сервер и дату»;
exit 1;
fi;

Рабочая директория скрипта имеет важное значение, если вам нужно сохранить какие-либо данные в файловую систему. Лучше выполнять команды в правильной директории. Также нужно проверить есть ли у текущего пользователя права на запись в текущую папку. Создайте такую функцию:

# Проверяем существует ли папка
[ -d «$DIR_NAME» ] || <
echo Dir: $DIR_NAME does not exist
exit 1
>

# Проверяем доступ на чтение
[ -r «$DIR_NAME» ] || <
echo Dir: $DIR_NAME not readable
exit 2
>
# Проверяем доступ на выполнение
[ -x «$DIR_NAME» ] || <
echo Dir: cannot cd to $DIR_NAME
exit 3
>
# Проверяем доступ на запись
[ -w «$DIR_NAME» ] || <
echo Dir: $DIR_NAME not writeable
exit 4
>
cd $DIR_NAME
echo «Present directory $DIR_NAME»
>

Затем, чтобы в скрипте безопасно изменить текущую папку на нужную добавьте:

Иногда может понадобится узнать результат работы предыдущей команды. Для этого используйте переменную $?:

if [ $? -ne 0 ]; then
echo «Команда завершена неудачно»;
fi;

Для записи логов с текущим временем и датой создайте такую функцию:

Следующий сниппет используется часто в скриптах, которые зависят от состояния других системных процессов. Например, может понадобиться убедиться, что MySQL отключен прежде чем выполнять определенные действия.

Теперь вернемся к нашему примеру с MySQL и используем только что написанную функцию:

check_process mysql;
CHECK_RET=$?;
if [ $CHECK_RET -ne 0 ];
# если процесс запущен
else
# если процесс не запущен
fi;

Иногда может понадобиться загрузка значений переменных из файла. Сначала создаем файл с переменными:

Затем просто добавьте такую строку вначале скрипта, при условии, что конфигурационный файл находится в этой папке и называется configfile:

Значения будут загружены в переменные $key1 и $key2. Если нужно перебрать все файлы в текущей папке или файлы, по определенному шаблону, используйте такой цикл:

#!/bin/bash
PATH=/path/to/dir/FILES=*.sql
for f in $PATH$FILES
do
# Что-то делаем с каждым файлом $f
done

Следующую функцию вы можете использовать для отправки email сообщений из ваших скриптов. Все что нужно, это указать текст сообщения, тему и список адресов получателей. Вот сама функция:

Читать еще:  Структура unix систем

sendEmail() <
echo $content | mail -s «$subject» $email_list exit;
>

Выводы

В этой статье мы рассмотрели полезные bash скрипты linux, которые вы можете использовать при работе с системой. Сначала мы разобрали несколько полезных комбинированных команд, а затем несколько полезных снипетов. Если вы хотите более детально разобраться в создании скриптов, смотрите статью написание скриптов на Bash.

Гайд по необходимому минимуму в Linux и Bash

Разные операционные системы длительное время обслуживают различные аудитории: Windows — бизнес-профессионалов, Mac — творческих, а Linux — разработчиков. Разработчикам ОС такой тип рыночного спектра сильно упростил концепцию продукта, технические требования, пользовательский опыт и направление рынка. Однако, он также ужесточил нормы рабочего пространства, что деформировало отдельных пользователей под узкие, непересекающиеся области: у бизнесменов нет возможности заглянуть в творческий процесс, а у разработчиков нет представления о проблемах бизнеса.

В реальности знания и опыт — динамичны, они охватывают несколько дисциплин и сфер деятельности. Представление о том, что “можно иметь способности только к чему-то одному” — это не руководство к овладению мастерством, а попытка справиться с преждевременной оптимизацией. Узнать о том, в чём вы хорошо разбираетесь можно только когда вы попробовали себя в нескольких разных вопросах. И может оказаться, что у вас есть способности ко многим видам деятельности .

Для современных бизнес-аналитиков особенно актуален вопрос ликвидации пробела между бизнесом и разработкой. Бизнес-аналитики должны быть двухплатформенными, способными использовать командную строку, доступную только на Linux (или в macOS), но при этом уметь извлекать широкие возможности из Microsoft Office в Windows. Очевидно, что мир Linux пугает тех, у кого образование в сфере бизнеса. К счастью, как и в большем количестве вопросов, вам необходимо изучить 20% информации, чтобы выполнить 80% работы. Вот мои 20%.

Почему современные бизнес-аналитики должны знать Linux

Благодаря своим open source корням, Linux выиграл от вкладов тысяч разработчиков за всё время его существования. Они построили программы и утилиты, чтобы упростить работу не только себе, но и тем программистам, которые последовали за ними. В результате open source разработка создала эффект сетевой выгоды: чем больше разработчики строили утилиты на оригинальной платформе, тем больше других разработчиков могло влиять на эти утилиты, чтобы писать собственные программы.

В результате получился огромный пакет программ и утилит (то есть софт), который был написан на Linux и под Linux. Большая часть его никогда не портировалась в Windows. Один из примеров — популярная система контроля версий (VCS), которая называется git . Разработчики могли написать софт под Windows, но они этого не сделали. Они написали его для работы в командной строке, для Linux, потому что Linux — экосистема, в которой уже были все необходимые инструменты.

Если вдаваться в подробности, разработка на Windows ведёт к двум основным проблемам:

  • Базовые задачи, вроде парсинга файлов, рабочего планирования и поиска текста используются чаще, чем запуск утилиты командной строки.
  • Языки программирования (Python, C++) и связанные с ними библиотеки выкидывают ошибки, потому что они ожидают конкретных параметров Linux или специфических локаций файловой системы.

Если собрать всё вместе, это выльется в трату времени на переписывание базовых инструментов, которые уже доступны в Linux, они позволят избежать ошибок совместимости с ОС. Тут нет никаких сюрпризов — экосистема Windows просто не была задумана и спроектирована под нужды разработки софта.

Теперь давайте рассмотрим базовые идеи Linux.

Фундаментальная единица Linux: “оболочка”

Shell (оболочка, также известная как терминал, консоль или командная строка) — это текстовый интерфейс пользователя, через который команды отправляются машине. На Linux, по-умолчанию, язык оболочки называется bash . В отличие от Windows-пользователей, которые в своём большинстве используют навигацию “навести-кликнуть” по окну, Linux-разработчики привязаны к клавиатуре и пишут команды в оболочке. Хоть этот переход далёк от естественного для тех, у кого нет бэкграунда в программировании, плюсы разработки в Linux сильно перевешивают изначальное вложение в обучение.

Изучаем несколько важных концептов

В сравнении с достаточно зрелым языком программирования, bash имеет всего несколько основных концептов, которые необходимо выучить. Как только вы охватите это, остаток bash — простое запоминание. Я переформулирую понятней: хорошо разбираться в bash значит запомнить 20–30 команд и их часто используемые аргументы.

Linux кажется непроницаемым для тех, кто не касается разработки, из-за способа, которым разработчики (не напрягаясь) извергают эзотерические команды терминала, когда им захочется. Правда в том, что они хорошо знают только несколько десятков команд — за всем более сложным они так же (как и все смертные) обращаются в Google.

Опуская мелкие загвоздки, стоящие на пути, вот главные концепты в bash.

Командный синтаксис

Команды соответствуют синтаксису:

Например, в ‘grep -inr’, grep — это команда (для поиска текстовой строки) и -inr это флаги/аргументы, которые меняют то, что grep выполняет по умолчанию. Единственный способ понять, что это значит, поискать что-то о них через Google или просто ввести ‘man grep’. Я рекомендую выучить команды и их самые используемые аргументы: слишком обременительно помнить, что делает каждый флаг.

Псевдонимы директорий

  • Текущая директория (где я?): .
  • Родительская директория текущей директории: ..
  • Домашняя директория пользователя:
  • Корень файловой системы (или родитель всех родителей): /
  • Например, чтобы поменять текущую директорию на родительскую директорию нужно ввести: cd ..

    Таким же способом, чтобы скопировать файл, расположенный в “/path/to/file.txt” в текущую директорию, нужно ввести cp /path/to/file.txt . (заметьте, что в конце команды точка). Поскольку это всего лишь псевдонимы, вместо них может использоваться реальное имя пути.

    STDIN / STDOUT

    Всё, что вы пишите в окне и подтверждаете (с помощью ENTER), называется стандартным вводом (STDIN).

    Всё, что программа выводит в ответе в терминал (например текст из файла), называется стандартным выводом (STDOUT)

    Конвейер (piping)

    Pipe принимает STDOUT от команды слева от pipe и превращает его в STDIN для команды справа от pipe.

    пример : echo ‘test text’ | wc -l

    Символ “больше” принимает STDOUT от команды слева и записывает/перезаписывает в новый файлу справа

    пример : ls > tmp.txt

    Два символа “больше” принимают STDOUT от команды слева и добавляют к новому или существующему файлу справа.

    пример : date >> tmp.txt

    Шаблоны поиска (wildcards)

    Можете представить это как символ % в SQL. Например, можно написать WHERE first_name LIKE ‘John%’, чтобы найти любые позиции, где данные начинаются с имени John.

    В bash можно написать John*. Если вы хотите вывести список всех файлов в какой-то папке, заканчивающихся на «.json», пишете : ls *.json

    Завершение с помощью tab

    Bash часто завершает команды сам, по определённой логике, если вы начинаете вводить команду и нажимаете TAB.

    Однако, стоит попробовать что-то вроде zsh или fish для автозаполнения, потому что запоминать команды и все их параметры очень сложно. Более того, эти инструменты применят автозаполнение, основываясь на вашей истории используемых команд.

    Выход

    Иногда вы застреваете в какой-нибудь программе и не можете оттуда выйти. Это очень часто повторяющееся событие для новичков в Linux, которое невероятно демотивирует. Часто выход происходит с помощью чего-то, содержащего q . Хорошо бы запомнить то, что будет написано ниже и использовать, когда вы в ловушке.

    Что я помню из команд bash

    Это те команды, которые я использую чаще всего в Linux (начиная от самых часто используемых к самым редко используемым). Как я уже писал раньше, знание всего горстки команд поможет выполнять большой набор необходимых программируемых задач.

    • cd изменить директорию
    • ls -lha вывести директорию в виде списка (подробного)
    • vim или nano редактор командной строки
    • touch создать новый пустой файл
    • cp -R скопировать файл или директорию (и всё их содержимое)
    • mv переместить или переименовать файл
    • rm удалить файл
    • rm -rf удалить файл или папку без возможности восстановления [использовать аккуратно!]
    • pwd вывести текущую рабочую директорию
    • catилиlessилиtailилиhead -n10 вывести в STDOUT содержимое файла
    • mkdir создать пустую директорию
    • grep -inr найти строку в любом файле этой директории или дочерних директориях
    • column -s, -t отобразить разделенный запятыми файл в виде столбцов
    • ssh @ соединиться с удалённой машиной
    • tree -LhaC 3 показать структуру директории на 3 уровнями вглубь (с размерами файлов и включая скрытые директории)
    • htop (или top ) диспетчер задач
    • pip install —user пакетный менеджер Python для установки пакетов в

    /.local/bin

  • pushd . ; popd ; dirs; cd — push/pop/view директорию в стек + изменить обратно на последнюю директорию
  • sed -i «s///g» заменить строку в файле
  • find . -type f -name ‘*.txt’ -exec sed -i «s///g» <> ; заменить строку для каждого файла в этой и дочерней папках с именем типа *.txt
  • tmux new -s session, tmux attach -t session создать новую сессию терминала без создания нового окна [продвинутый уровень]
  • wget загрузить веб-страницу или веб-ресурс
  • curl -X POST -d «» http://www.google.com отправить HTTP-запрос на веб-сервер
  • find вывести список всего содержимого директории и её дочерних директорий рекурсивно
  • Продвинутые и не часто используемые команды

    Я считаю хорошей практикой хранить список команд, которые полезны в определённых ситуациях, даже если подобные ситуации случаются редко (например, какой процесс блокирует конкретный сетевой порт). Вот несколько нестандартных команд, которые у меня всегда под рукой:

    Что такое Bash в Linux?

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

    И вот я решил заполнить этот пробел и немного просветить и вас, и себя за одно.

    Что такое Bash?

    Bash означает Bourne Again Shell. Это англоязычная игра слов: bash построена на основе оболочки Борна (bourne), которая, наряду с оболочкой Korn и С, считается одной из классических оболочек UNIX (again — с англ. «снова»).

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

    Если же вы работаете только с программой 1С, то всегда интересуйтесь обновлением 1С, это важно для стабильной работы программы.

    Так что же такое оболочка?

    Оболочка в первую очередь предназначена для вызова команд и программ Linux. Таким образом, она является своего рода интерпретатором команд (сравнимым с команда.com из мира MS-DOS). Оболочка выполняется в любом командном окне, например konsole, gnome-terminal, xterm, и в любой текстовой консоли после входа в систему (логина).

    В то же время оболочка является мощным языком программирования, с помощью которого можно автоматизировать рабочие процессы. Особые оболочковые команды позволяют использовать в рамках этой программы переменные, создавать запросы и циклы и т. д.

    Получаемые в результате программы, в зависимости от предпочтений автора, называются командными файлами, пакетными файлами, сценариями, процедурами оболочки и т. п. Независимо от названия, речь в данном случае идет о простых текстовых файлах, которые выполняются (интерпретируются) оболочкой.

    Если вы не знаете, с какой версией оболочки работаете, выполните следующую команду:

    Документация по Bash.

    В справке man оболочке bash посвящен большой раздел. Кроме того, есть объемный справочный материал, который выводится командой info bash. Разумеется, этот файл есть и в Интернете: www.gnu.org/software/bash/manual/bash.html.

    Почти во всех дистрибутивах Linux bash считается стандартной оболочкой для работы с оболочками и окнами терминалов. Однако, воспользовавшись системой управления пакетами вашего дистрибутива, вы можете установить и многие другие оболочки. Профессионалы Linux особенно любят Z-оболочку zsh.

    Другие варианты — оболочки Korn (ksh или pdksh) и C (csh или tcsh). Чтобы опробовать любую из этих оболочек после установки, запустите командное окно и введите в него имя любой оболочки. Команда exit выведет вас обратно в предыдущую активную оболочку.

    Выбор другой оболочки, загружаемой по умолчанию. Для любого пользователя, вошедшего в Linux, система предусматривает стандартную оболочку. Она автоматически запускается в командном окне при работе с терминалом, то есть стандартная оболочка сохраняется в файле /etc/passwd. Название оболочки указывается в самом конце строки с учетной записью каждого пользователя.

    Чтобы задать по умолчанию другую оболочку, выполните команду chsh (change shell). Программы оболочки сохраняются в каталоге /bin. Это значит, что требуется указать, например, /bin/csh в том случае, если вы собираетесь в дальнейшем работать с оболочкой C.

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

    2 комментариев к статье “Что такое Bash в Linux?”

    Здравствуйте,Андрей. В сентябре 2014 г. после пятидневного перебирания дистрибутивов я наконец решился на полный снос О.С. Windows 7 и установку Linux Mint 17 Qiana на свой ноутбук ACER Extensa 7620G (процессор Intel Core 2Duo 2 ГГц, память 3ГБ DDR3)

    Установилось всё отлично,после недельного освоения я уже довольно свободно ориентируюсь в разделах этого русскоязычного Минта,благо,что запросы у меня самые обыкновенные : в Интернете полазить, по Скайпу пообщаться, музыку/видео вкусить, ну и электропочтой воспользоваться.

    При установке дополнительных программ, из числа заложенных в дистрибутиве, я по старому рефлексу-боязни вирусов заодно установил ещё и линуксовый антивирус ClamAV. Запускал его через день, и поначалу он писал,что «обнаруженных угроз — 0» (мне приятно было это видеть!).

    Но чёрт меня дёрнул зачем-то установить Wine, и стал этот антивирус регулярно определять по одной-две «угрозы»(а насколько это было вирусами мне трудно судить) после каждой проверки. Половина из них удалялась антивирусником,а вот для других появллялось сообщение,мол, файл удалить невозможно.

    Все программы для Виндовс (даже лежащие в моих нынешних папках балластом) я удалил насовсем, удалил также и Wine, но с этой поры хотя бы одну угрозу антивирус постоянно обнаруживает.

    При удалении вручную этих «угроз» я,скорее всего,делал это весьма рьяно,поскольку иногда удалял даже папку где находилась «угроза»,которую сам антивирусник,её определивший, отказывался удалять. В результате где-то через полтора месяца беспроблемного пользования при всяком открытии командного терминала уже сразу в его верхней строке стоит следующая фраза : bash: /usr/bin/mint-fortune Нет такого файла или каталога.

    После введения мною команды sudo aptitude reinstall mint-fortune система мне ответила : «не удалось найти пакеты,содержащих «mint-fortune» в своём имени или описании», и ниже ещё такие строки: E: installing Assembly /usr/lib/cli/appindicator-sharp-0.1/appindicator-sharp.dll failed и E: Installation of libappindicator0.1-cil with /usr/share/cli-common/runtimes.d/mono failed

    Пожалуйста,напишите поподробней: какие команды надо написать,чтобы: то ли удалить дефектные пакеты, то ли переустановить их правильно, то ли заново установить некие папки ? И попутно просветите,пожалуйста,про линуксные антивирусники и «обнаруженные угрозы». Как новичок-пользователь Линукса буду премного вам благодарен.

    В Linux до сих пор не обнаружено ни одного серьезного вируса, как и пишет об этом та же википедия. Все эти антивирусы в линукс созданы больше для обнаружения вирусов в виндовс, которые стоят на том же компьютере или анализ флешек, которые приносят друзья. Так что нет смысла ставить антивирус вообще.

    В отношении пакетов битых, так это сама система обычно подсказывает. Если в терминале дать команду sudo apt-get update и все пройдет гладко, значит проблем скорее всего нет. А если есть проблемы, то будет указана команда, которую нужно выполнить.

    Так же можно зайти в Synaptic и посмотреть там вкладку ПАКЕТЫ С ОШИБКАМИ. Если и там все в порядке, значит не стоит волноваться. А это пакет fortune и сто лет не нужен для работы.

    Ссылка на основную публикацию
    ВсеИнструменты 220 Вольт
    Adblock
    detector