Bash

Скрипт это обычный текстовый файл, поэтому просто создаем его в любом текстовом редакторе:

vim script.sh

Сделаем скрипт исполняемым :

chmod +x script.sh

Запускать скрипт будем командой :

./script.sh

Первая строчка в скрипте должна начинаться с :

#!/bin/bash

Объявление переменной :

a=175

Объявление ссылки на переменную :

var2=$a

Вывод на экран :

echo $var2
    Объявление строковой переменной :

    b="Hello World"

    Объявление строковой переменной :

    c=$(df --total)

Условие (обратите внимание на пробелы между знаками! ) :

#!/bin/bash
a=9
b=8
if [ "$a" = "$b" ]; then
echo "A = B"; else
echo "A! = B" 
fi

Цикл while / do
Бесполезный но понятный пример. Если a не равно b то пингуем ya.ru :

#!/bin/bash
a=3
b=6
while [ $a -ne $b ] ; do
ping ya.ru -c3
sleep 10
done

В зависимости от типа данных в условии можно использовать :
= — равно.
!= — неравно.
-eq — эквивалентно.
-ne — не эквивалентно.
-qt — больше чем.
-lt — меньше чем.

Цикл for
ping сначала пошлет 5 запросов , на втором круге 10 :

#!/bin/bash
for a in 5 10
do
ping ya.ru -c "$a"
done

Еще вариант (начальное значение, шаг , конечное значение)

for a in $(seq 10 5 90)
for (( a=10; a<=90; a+=5 ))

Если нужно передать в скрип параметры то :

#!/bin/bash
a=$1

Будет использоваться первый аргумент

Terminal

!! повтор последней команды.
sudo!! повтор последней команды с правами супер-пользователя.
history выводит список когда либо вводимых команд.
!23 Повторить 23 команду из списка history.
!$ использует аргументы от предыдущей выполненной команды.
Можно ускорить навигацию по различным папкам с помощью добавления их в стек папок
Находясь в нужной директории наберите :

pushd

папка добавиться в стек.

pushd /путь/к/папке/

добавит еще одну папку в стек.
Просмотр стека :

dirs -v

Переход между папками

cd ~цифра обозначенная напротив папки

Перенаправленние вывода программы в файл (при повторном вызове файл полностью перезапишится)

ps -ax > processes.txt

Перенаправленние вывода программы в файл (при повторном вызове в файл допишится информация)

ps -ax >> processes.txt

Создание папки сразу с подпапками :

mkdir -p ~/Documents/{work,admin,texts}

Сравнение двух папок :

diff /folder1 /folder2

Поиск команды по описанию :

apropos “download”

Генерация ключей GPG

Генерация новой пары ключей :

gpg --gen-key

1 — Вопрос тип ключа (RSA по умолчанию)
2 — Длинна ключа (2040 по умолчанию)
3 — Срок действия ключа (по умолчанию без срока)
4 — Введите имя (любое)
5 — Введите почту (неважно какую и не важно будите ли вы отправлять письма с этой почты с этим ключом)
6 — комментарий можно оставить пустым
7 — «O» — принять изменения
8 — Ввести парольную фразу
9 — Ввести повтор парольной фразы

Просмотреть список ключей в системе :

gpg --list-keys

Экспортировать ключ в файл :

gpg --output publik.key --armor --export ПОЧТА УКАЗАННАЯ ПРИ ГЕНЕРАЦИИ

Импортировать чужой ключ в систему :

gpg --import publik.key

Зашифровать файл для пользователя XxXxX файл main.c полученный файл main.c.gpg можно передавать по почте :

gpg -r XxXxX -e main.c

XRDP на Centos 7

Подключиться к Linux машине можно и в графическом режиме, рассматривается пример если linux система достаточно мощная чтобы иметь графический рабочий стол и он уже установлен.
Например это удобно в локальной сети или при тестировании в виртуальных машинах.
Лично мое мнение пытаться поставить графический рабочий стол на облачный удаленный сервер это бессмысленная трата его ресурсов.
Устанавливаем на удаленной машине:

yum -y install xrdp tigervnc tigervnc-server tigervnc-server-module

Включаем в автозагрузку и запускаем:

systemctl enable xrdp.service
systemctl start  xrdp.service
service xrdp restart

Открываем порт в фаерволе :

firewall-cmd --permanent --add-port=3389/tcp
systemctl restart firewalld.service 

Далее под Windows открываем «Подключение к удаленному рабочему столу» и вбиваем IP адрес linux машины.

Firewall CentOS 7

Добавить сервис в правило :

firewall-cmd --zone=public --add-service=ftp --permanent

Добавить порт :

firewall-cmd --permanent --add-port=40000/tcp

Добавить диапазон портов :

firewall-cmd --permanent --add-port=40000-40100/tcp

Просмотреть последние сохраненные записи в правилах фаервола :

iptables-save | tail -n 5

После каждого применения правил необходимо перезапустить службу :

systemctl restart firewalld.service

FTP-server (VsFTPd) CentOS 7

Установка сервера:

yum install vsftpd

Запуск службы:

systemctl start vsftpd

Статус службы:

systemctl status vsftpd

Файл конфигурации:

vim /etc/vsftpd/vsftpd.conf

В нем снять комментарии:

ftpd_banner=welcome to...

Включить автозагрузку :

systemctl enable vsftpd

Проверить автозагрузку :

systemctl is-enabled vsftpd

Открыть порт для службы:

firewall-cmd --permanent --add-port=21/tcp

Перзапуск фаервола :

systemctl restart firewalld.service

Просмотреть открытые порты фаервола :

firewall-cmd --list-all

Для работы в пассивном режиме в конфигурационном файле нужно раскомментировать

pasv_enable=Yes
pasv_max_port=40100
pasv_min_port=40000

И открыть необходимый диапазон портов :

firewall-cmd --permanent --add-port=40000-40100/tcp

Перзапуск фаервола :

systemctl restart firewalld.service

Редактор Vim

i — режим вставки (редактирования)
: — командный режим (нажать Esc)
:q! — выйти без сохранения
:wq — записать изменения и выйти
dd — вырезает строку в буфер обмена
p — вставляет строку в нужное место
yy — копирует строку
/e — поиск символа «e»
:45 — курсор на 45 строку
:se nu — включает нумерацию строк
:1,$s/p/x — заменит все буквы p на x (первая подстановка в строке)
:1,$s/p/g — заменит все буквы p на x по всему файлу

Метки:

Web сервер CentOS7

Установка Apache:

yum install httpd.x86_64

Запуск службы:

systemctl start httpd.service

Проверить статус службы:

systemctl status httpd.service

Сайт будет доступен только localhos, из сети пока недоступен
Файл конфигурации

/etc/httpd/conf/httpd.conf

Включаем автозагрузку Apache :

systemctl enable httpd.service

Проверить автозагрузку можно :

systemctl is-enabled httpd.service

Перезагружаем машину
Пробуем открыть порт на фаерволе:

firewall-cmd --permanent --add-port=80/tcp

Перезапустить фаервол:

systemctl restart firewalld.service

Просмотреть открытые порты фаервола :

firewall-cmd --list-all

IDE Atom Swift на Ubuntu

Для программирование на Swift крайне желательна подсветка синтаксиса, IDE Atom бесплатна и содержит необходимый пакет. Установим Atom на Ubuntu :

sudo add-apt-repository ppa:webupd8team/atom
sudo sudo apt-get update
sudo apt-get update
sudo apt-get install atom

Установим необходимые дополнения для Atom :
Запускаем Atom на вкладке Packages->Settings View->Install Packages в поле поиска пакета вводим Swift.
Устанавливаем language-swift и autocomplete-swift. Закрываем Atom.
Как правило программа на Swift состоит из нескольких файлов, и если пакет создан правильно то можно в папку Sources добавить еще один файл.
Пример с сайта https://swift.org/getting-started/#using-the-package-manager

  • В папке Sources создаем новый файл  Greeter.swift c содержимым :
    func sayHello(name: String) {
        print("Hello, \(name)!")
    }
  • Изменим содержимое main.swift на :
    if CommandLine.arguments.count != 2 {
        print("Usage: hello NAME")
    } else {
      let name = CommandLine.arguments[1]
      sayHello(name: name)
    }
  • Сохраняем ОБА файла Ctrl + S  в Atom
  • Открываем Terminal в Ubuntu  и переходим в папку пакета :
    cd /Hello 
  • Собираем пакет
    swift build
  • Программа приветствует пользователя его именем если при ее запуске из консоли передать его как параметр.
    Пример показывает взаимодействие много-файлового проекта на swift, когда функции main  и вспомогательные блоки разделены.
  • Запускаем программу и передаем ей параметр :
    ./.build/debug/Hello 'your name'
  • atom swift ubuntu

Установка Swift на Ubuntu

Установка Swift 3.1.1 на Ubuntu 16.04
Установка компилятора и библиотек:

sudo apt-get install clang libicu-dev

Скачивание Swift под вашу версию Ubuntu:

wget https://swift.org/builds/swift-3.1.1-release/ubuntu1604/swift-3.1.1-RELEASE/swift-3.1.1-RELEASE-ubuntu16.04.tar.gz

Распаковка:

 tar xzf swift-3.1.1-RELEASE-ubuntu16.04.tar.gz

Далее необходимо добавить /usr, лежащую в папке swift-3.1.1-RELEASE-ubuntu16.04 добавить в переменную окружения PAHT:

 export PATH=/home/u5/swift-3.1.1-RELEASE-ubuntu16.04/usr/bin:"${PATH}"

Проверяем:

swift --version

Если после перезагрузки системы Swift слетит то нужно прописать переменную окружения в файл .profile :

vim ./.profile

В конце файла добавить :

PATH=/home/u5/swift-3.1.1-RELEASE-ubuntu16.04/usr/bin:"${PATH}"

Режим интерпретатора :

swift

Выход Ctrl + Z

Для компиляции полноценной программы понадобиться разобраться с понятием пакета, создадим пустую папку:

mkdir Hello
cd Hello

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

swift package init --type executable

Собираем пакет:

swift build

Запускаем пакет:

.build/debug/Hello

В итоге листинг программы лежит в папке:

Hello/Sources/main.swift