yakoffka.ru
    грабли, костыли и велосипеды php, css, html, js и прочего

    Шпаргалка по командам linux shell

    Файловые команды

    $ ls – список файлов и каталогов в текущей директории
    $ ls -l – просмотреть права доступа на файлы и каталоги в текущей директории
    $ ls -al – форматированный список со скрытыми каталогами и файлами
    $ cd dir – сменить текущую директорию на dir (вложенную в текущую)
    $ cd – сменить на домашний каталог
    $ pwd – показать текущий каталог
    $ mkdir dir – создать каталог dir в текущей директории
    $ rm file – удалить file
    $ rm -r dir – удалить каталог dir
    $ rm -f file – удалить принудительно файл file
    $ rm -rf dir – удалить принудительно каталог dir со всеми содержащимися в нем файлами
    $ cp file1 file2 – скопировать файл file1 в файл file2
    $ cp -r dir1 dir2 – скопировать dir1 в dir2; создаст каталог dir2, если он не существует
    $ mv file1 file2 – переименовать (аргумент file2, не является именем существующего каталога) или переместить file1 в file2, если file2 существующий каталог.
    $ ln -s file link – создать символическую ссылку link к файлу file
    $ touch file – создать file
    $ cat > file – направить стандартный ввод в file
    $ more file – вывести содержимое file
    $ head file – вывести первые 10 строк файла file
    $ tail file – вывести последние 10 строк файла file
    $ tail -f file – при использовании специального ключа -f утилита tail следит за файлом: новые строки, добавляемые в конец файла другим процессом, автоматически выводятся на экран в реальном времени. Это особенно удобно для слежения за логами.

    Управление процессами

    $ ps – вывести краткий список текущих активных процессов
    $ ps -AlF – вывести краткий список текущих активных процессов, включив выдачу всех данных
    $ top – выводит список работающих в системе процессов и информацию о них. По умолчанию она в реальном времени сортирует их по нагрузке на процессор.
    $ htop – улучшенный монитор работающих в системе процессов.
    $ kill pid – убить процесс с id pid
    $ ps axu | grep name_proc – найти информацию о процессе с именем name_proc
    $ killall proc – убить все процессы с именем proc *
    $ bg – список остановленных и фоновых задач; продолжить выполнение остановленной задачи в фоне
    $ fg – выносит на передний план последние задачи
    $ fg n – вынести задачу n на передний план

    Права доступа на файлы

    $ chmod 0755 file – сменить права file на 0755
    Примеры:
    $ chmod 777 – чтение, запись, исполнение для всех
    $ chmod 755 – rwx для владельца, rx для группы и остальных.

    SSH

    $ ssh user@host – подключиться к host как user
    $ ssh -p port user@host – подключится к host на порт port как user
    $ ssh-copy-id user@host – добавить публичный ключ на host для пользователя user
    $ sshfs -p port user@host:/folder /media/server -o reconnect – монтирование директории '/folder' сервера как удалённой директории (требуется установка sshfs) в директорию /media/server
    $ fusermount -u /media/server - размонтирование удаленной директории

    оборудование

    $ sudo iw dev – узнать имя беспроводного интерфейса

    Поиск

    $ grep pattern files – искать pattern в files
    $ grep -r pattern dir – искать рекурсивно pattern в dir
    $ command | grep pattern – искать pattern в выводе command
    $ locate name_file – найти все файлы с именем name_file. моментально выводит список путей до этого файла в файловой системе, используя собственную базу данных для хранения имен файлов.
    $ locate name_file -n 10 – найти первые 10 файлов с именем name_file. Параметр -q позволяет скрыть сообщения об ошибках.
    $ locate name_file -i – писк файлов без учета регистра.
    $ locate name_file -c – знать количество файлов, соответствующих заданному прототипу поиска.
    $ updatedb – обновить базу данных '/var/lib/mlocate/mlocate.db' для хранения имен файлов.
    $ find . name_file – поиск файлов с именем name_file в рабочем каталоге. требуется значительный период времени для получения результата.
    $ find / -name 'my*' – поиск файлов в корневом каталоге, название которых начинается на 'my'.
    $ find . -name 'php.ini' -exec sed -i 's/log_errors = Off/log_errors = On/g' "{}" \; – поиск всех файлов php.ini от текущего каталога и замена текста в каждом найденном файле.
    $ find / -mmin -1 -print – вывести список файлов во всей файловой системе, изменённых в течение последней минуты.
    $ find / -size +100M -print – вывести список файлов во всей файловой системе, чей размер больше 100 Мб.

    Системная информация

    $ date – вывести текущую дату и время
    $ cal – вывести календарь на текущий месяц
    $ uptime – показать текущий аптайм
    $ w – показать пользователей онлайн
    $ whoami – имя, под которым вы залогинены
    $ finger user – показать информацию о user
    $ uname -a – показать информацию о ядре
    $ cat /proc/cpuinfo – информация ЦПУ
    $ cat /proc/meminfo – информация о памяти
    $ man command – показать мануал для command
    $ df – показать инф. о использовании дисков
    $ du – вывести размер файлового пространства, занимаемого текущим каталогом.
    $ free – использование памяти и swap
    $ whereis app – возможное расположение программы app
    $ which app – какая app будет запущена по умолчанию

    Архивация

    $ tar cf file.tar files – создать tar-архив с именем file.tar содержащий files
    $ tar xf file.tar – распаковать file.tar
    $ tar czf file.tar.gz files – создать архив tar с сжатием Gzip
    $ tar xzf file.tar.gz – распаковать tar с Gzip
    $ tar cjf file.tar.bz2 – создать архив tar с сжатием Bzip2
    $ tar xjf file.tar.bz2 – распаковать tar с Bzip2
    $ gzip file – сжать file и переименовать в file.gz
    $ gzip -d file.gz – разжать file.gz в file

    MYSQL

    $ mysqldump -u user -p database > dump.sql - сделать дамп базы
    $ mysql -u user -p database < dump.sql - залить дамп базы

    Сеть

    $ ping host – пропинговать host и вывести результат
    $ whois domain – получить информацию whois для domain
    $ dig domain – получить DNS информацию domain
    $ dig -x host – реверсивно искать host
    $ wget file – скачать file
    $ wget -c file – продолжить остановленную закачку
    $ sudo arp-scan --interface=wlp2s0 --localnet – сканирование локальной сети, используя сетевой интерфейс wlp2s0
    $ ls /sys/class/net – вывести список сетевых интерфейсов

    Установка пакетов

    Установка из исходников:
    $ ./configure
    $ make
    $ make install
    $ dpkg -i pkg.deb – установить пакет (Debian) 'pkg.deb', находящийся в текущей директории
    $ rpm -Uvh pkg.rpm – установить пакет (RPM)
    Команда apt:
    $ sudo apt-get install пакет - установка пакета
    $ sudo apt-get install пакет1 пакет2 - установка нескольких пакетов
    $ sudo apt-get remove пакет - удаление пакета. удаляет пакет полностью только в том случае, если ни один из его файлов не был изменен после установки, иначе измененные файлы остаются нетронутыми. Естественно, конфигурационные файлы меняются почти всегда, поэтому apt-get оставляет после себя кучу мусора.
    $ sudo apt-get purge - удаление пакета полностью вместе с измененными файлами.
    $ sudo apt-get update - обновление индекса всех пакетов в системе
    $ sudo apt-get upgrade - обновление всех пакетов в системе
    $ sudo apt-get check - проверка наличия нарушенных зависимостей
    $ sudo apt-cache show пакет - просмотр информации о пакете
    $ apt-cache search маска - поиск пакета (sudo apt-cache search php | grep zip)
    $ sudo apt-get install --reinstall пакет - вернуть пакет к начальному состоянию
    $ apt-get --help – получение справки

    Пользователи

    $ cat /etc/passwd – посмотреть список пользователей
    $ sed 's/:.*//' /etc/passwd – отфильтровать вывод файле /etc/passwd, если необходим вывод только имен пользователей.
    $ chown -R admin:adminweb /var/www/sitenamecom/data/www/ – рекурсивно изменить владельца для файлов и директорий в директории '/var/www/sitenamecom/data/www/'. Пользователя (admin) и группы (adminweb) можно указать цифирями (1058:1060).

    Горячие клавиши PuTTY

    Копирование и вставка текста

    Для копирования текста из консоли PuTTY нужно просто выделить текст - он автоматически скопируется в буфер обмена. Для вставки текста в консоль используется сочетание клавиш Shift+Insert, либо можно просто нажать в консоли правой кнопкой мыши.

    Редактирование вводимой команды

    Tab – автодополнение имени файла или директории
    Ctrl+E – переместить курсор в конец вводимой строки
    Alt+F – переместить курсор к следующему слову во вводимой строке
    Alt+B – переместить курсор к предыдущему слову во вводимой строке
    Ctrl+U – удалить все символы слева от курсора
    Ctrl+K – удалить все символы справа от курсора
    Ctrl+T – поменять последние два символа перед курсором
    Alt+BackSpace, Ctrl+W – удалить слово, предшествующее курсору

    Прокрутка текста

    Shift+PageUp – прокрутка текста вверх
    Shift+PageDown – прокрутка текста вниз
    Ctrl+PageUp – построчная прокрутка текста вверх
    Ctrl+PageDown – построчная прокрутка текста вниз

    Дополнительно

    Ctrl+C – прервать исполнение текущей команды
    Ctrl+L – очистить экран

    примеры

    $ systemctl status fail2ban.service – просмотр детализированной информации о сервисе
    $ egrep -c '(vmx|svm)' /proc/cpuinfo – узнать, поддерживает ваш процессор аппаратную виртуализацию (0 - не поддерживает)
    $ sudo chmod 777 -f /path/to/dir/ -cvR – рекурсивное изменение прав доступа к директории и вложенными в нее файлами (-c - выводить информацию обо всех изменениях; -v - выводить максимум информации; -R - включить поддержку рекурсии;)
    $ tail -f /var/log/name.log – просмотр логов в реальном времени
    $ grep -r "needle string" /path/to/dir/ – рекурсивный поиск строки во всех файлах директории
    $ sudo rm -r -f /path/to/dir/ – рекурсивное удаление директории