Fast Site Engine
Высокопроизводительный движок для сайтов
Заказать сайт на основе движка
О движкеПроизводительностьБезопасностьТехнические требованияSEO 
Лицензионное соглашение
Демо
Установка
Панель управления
Модули
Документация
Шаблоны
Тесты производительности php
Планы на будущее
Список изменений
Отзывы и пожелания
Переходим на Линукс
Всякое разное
Переходим на Линукс  »  Консоль Linux

Консоль Linux

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

Запустить консоль Linux можно запустив терминал (Ctrl+Alt+T зависит от сборки), находится он в
Пуск (Меню) → Администрирование → Терминал (Или слева при раскрытии меню, зависит от оболочки..)
Для KDE: Пуск (Kickoff) → Система → Терминал. Или в файловом менеджере Dolphin он всегда под рукой горячая клавиша F4.

Полезной опцией является тот момент, что в консоли можно запустить любое приложение и оно будет туда складывать свой вывод, таким образом можно ловить ошибки приложений..

Например перейдём в папку и напишем ./start-tor-browser

В Линуксе расширение файла может не быть, исполняемым может быть любой файл у которого стоят разрешения на выполнение (можно выставить правой клавишей в свойствах или chmod +x ./start-tor-browser) в Виндовс обычно исполняемые только .exe и ещё некоторые файлы.

Консоль Линукс

Управление консолью Linux

Часто понадобится запрашивать привилегии суперпользователя root для многих действий связанных с установкой, изменением файлов итп. Для этого предусмотрен механизм предоставления необходимого количества привилегий, но не более - sudo. Эта команда следует перед другими и вводится пароль пользователя для разрешения на запуск, вообще в Линуксе везде где производятся существенные изменения запрашивается пароль.

Имейте ввиду, в целях безопасности консоль Линукс не отображает вводимые пароли, но по факту они вводятся.

В редких случаях и это не советуется, можно запросить права суперпользователя и что-то сделать под ним не вводя каждый раз sudo, если поставить Debian или разные серверные дистрибутивы, в консоли нужно прописать su, но поскольку в сборках пароль суперпользователя не задан, то можно получить доступ к суперпользователю написав
sudo su

Если ввести любую команду, напрмиер, apt, то можно увидеть описание или apt и 2 раза TAB и увидеть только список функций. Если написать man apt попадаем в описание (мануал) к текущей функции. Ещё помощь можно получить в утилитах, к примеру если ввести ls --help..

При работе в консоли(терминале) в текстовым редактором nano, чтоб сохранить изменения нажмите закрыть Ctrl+X и подтвердите сохранение, отмена Ctrl+C (во многих случаях прервать любое действие эта команды Ctrl+C или q).

Ctrl+D отключиться (отлогиниться) от текущего пользователя, сервера. Повторное нажатие закрывает консоль..

В любой ситуации не теряйтесь обычно есть подсказки на экране, что жать..

Для копирования используется сочетание Ctrl+Shift+C, для вставки Ctrl+Shift+V (альтернатива мышка или Ctrl+Insert с Shift+Insert).

Можно ещё не мучить себя и использовать любой текстовой редактор с графическим режимом:

# решётка/диезик означает, что всё что дальше не выполнять - это комментарий
kate ~/.config/pulse
# открыть под суперпользователем:
kate sudoedit ~/.config/pulse

Kate умеет сохранять системные файлы по факту сохранения, т.е. просто открывайте в нём любые интересующие файлы и при сохранении вводите пароль и в дамках, консоль не нужна...

Историю команд можно посмотреть введя history, если нажимать стрелки вверх вниз, будут подставляться прошлые введённые команды. Повторить команду можно введя !! (два восклицательных знака, но стрелку вверх и энтер(ввод) быстрее..)

Команды консоли Linux

Никогда не выполняйте команд, назначения которых не понимаете. Команды консоли Linux, дают огромную власть, в том числе и удалить все файлы 1 командой..

sudo rm -rf /
# равноценно
echo "text" | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

Линукс загружен в память и скорее всего будет работать не смотря на удаление системы до момента перезагрузки. Кстати это ещё одно отличие позволяющее обновлять систему на горячую - нет блокировки файлов системой, не требуется постоянных перезагрузок как в Windows.

Типичное использование консоли:

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

# Выключить компьютер:
sudo halt или sudo init 0 или telinit 0 или shutdown -h now

# Перезагрузить:
sudo reboot или shutdown -r now

Изменение прав и/или владельца можно осуществить через Действия root (Root Actions Servicemenu). Подробнее права Линукс chmod описаны в соседней статье.. (-R рекурсивно пройти по всем файлам/каталогам внутри)

sudo chmod -R 755 /path/to/dir
sudo chown -R $USER:$USER /path/to/dir
# корректней, но группа может отдаваться пустой и она совпадает с пользователем: 
sudo chown -R $USER:$GROUP /path/to/dir

Иногда нужно выяснить какой дистрибутив, название и прочие данные:

cat /etc/*release
# посмотреть архитектуру:
arch или uname -m

Посмотреть диски в системе:

fdisk -l # покажет названия с отказом в доступе
sudo fdisk -l # выведет полную информацию

Установка, удаление программ:

# уствновить пакет/программу:
sudo apt install -y name

# удалить пакет/программу:
sudo apt remove -y name

# удалить пакет/программу вместе с его конфигурационными файлами:
sudo apt purge -y name

# ещё можно явно указанные неиспользуемые зависимости удалить:
sudo apt -y autoremove

-y - соглашаться со всеми вопросами установщика, он там обычно сообщает всякие глупости, мол нужно дополнительно будет поставить связанные библиотеки или приложение займёт столько то места на диске.. В основном используются install и remove. Можно перечислить сразу несколько пакетов для установки sudo apt install -y name1 name2...

Дописать в конец файла:

echo -e 'my \n text \n info \n' >> ~/.config/my.conf

Если вместо >> поставить >, то файл перезапишется.

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

# перезаписать файл:
echo "значение" | sudo tee /путь/к/файлу/файл.sh
# дописать в конец:
echo "значение" | sudo tee -a /путь/к/файлу/файл.sh
# параметр -i игнорировать ошибки.
#eщё вариантик:
sudo sh -c 'echo 127.0.0.1 localhost >> /etc/hosts'

echo может иметь иметь опции/параметры:

-e - включить поддержку вывода Escape последовательностей
-E - отключить интерпретацию Escape последовательностей
-n - не выводить перевод строки

Если включена -e, Escape последовательности для вставки специальных символов:

\b - удалить предыдущий символ
\c - удалить перевод строки
\n - перевод строки
\r - символ возврата каретки в начало строки
\t - горизонтальная табуляция
\v - вертикальная табуляция

Внутри sh скрипта флаг echo -e не нужен если указан интерпретатор для исполнения сценария(скрипта) #!/bin/sh, консоль использует более новый #!/bin/bash..

Скопировать фалы rsync:

Как-то словил проблему при копировании на диск с 5900 оборотов и меньшей максимальной скоростью диска, на 7200 оборотов (он на порядок быстрее), видимо переполнение буферов идёт или ещё что-то, винт разгоняет копирование свыше 120-160мб/с и принимающий начинает щёлкать головкой, в то время как на 5900 скоростей свыше 90мб/с не замечал. В итоге помогло ограничение скорости копирования. Выставил чуть меньше 90мб/с и вуаля никаких щелчков. Утилита очень полезна если необходимо передать файл на другой сервер или для передачи файлов с ломающегося диска с условием наличия бэкапа.

# rsync [опции] [источник] [приемник]
sudo rsync -a --progress /from/ /to/
sudo rsync -aPv --bwlimit=90000 /media/$USER/disk1/Music/ /media/$USER/disk2/Music/

В случае присутствия пробелов будут ошибки - возьмите в кавычки, я обычно такой формой пользуюсь:

sudo rsync -aPv --delete --bwlimit=140000 "/media/$USER/disk1/Подборка книг/" "/media/$USER/disk2/Подборка книг/"
# или
sudo rsync -aPv --delete --bwlimit=140000 "/media/$USER/disk1/Подборка книг/" "/media/$USER/disk2/Подборка книг/"

-a, --archive - работа в режиме архивирования, сохраняются права доступа и информация о владельцах.
--partial - сохранять частично переданные файлы.
--progress - показать % выполнения во время передачи.
-P - эквивалент для --partial --progress (сохранять недокаченные файлы, показывать прогресс).
--ignore-existing - пропускать уже существующие на приёмнике disc2 (так можно немного ускорить, например для видео, они точно не меняются).
--delete - удалять те, которых нет на источнике disc1.
--bwlimit=KBPS - ограничение скорости копирования.
-v - показывать подробности.
-c - сравнивать файлы при помощи подсчёта контрольных сумм (по умолчанию по дате и размеру). Выполняется очень долго..
-n - ничего не делать, только показать что будет скопировано.

Линукс постоянно радует такими мелочами, в системе по умолчанию есть большинство нужного, а Виндовс беги ищи, устанавливай - трать время..

Навигация и операции с файлами

Возможно пригодится и знание базовых команд для перемещения и управления файлами..

  • pwd - показывает директорию в которой находитесь, иногда бывает нужна в случае сокращения в консоли, напрмиер домашняя папка отобразится как ~..

  • cd - переходит в указанную папку, например cd ~ ; cd /home/$USER

  • ls - линейно выводит список папок и файлов в текущей директории или указанной
    ls /home. Чтоб вывести построчно с указанием прав и владельца необходимо добавить аргумент -l. Чтоб увидеть скрытые файлы и папки -a. Отсортировать по размеру -S. Отсортировать по расширению -X.
    В итоге имеем команду ls -la или ls -la /путь/к/каталогу.

  • du * - считает размер директории, например du -hs * или du -hc /путь.
    Аргументы:
    -h - human-readable показывает вес файлов в Кб, Мб итд..
    - подсчитывает сумму..
    -s - показать только общий вес файлов..
    А вот как можно вывести в отсортированном виде du -hc * | sort -rn

  • find - Поиск файлов и директорий
    # найти в папке /home файлы по имени абрикос: 
    find /home -name "абрикос"
    
    # найти файлы принадлежащие пользователю user1: 
    find /home -user user1
    
    # найти файлы оканчивающиеся на txt: 
    find /home -name "*.txt"
    
    # найти файлы с правами 000 исключая имя public_ftp и удалить их: 
    find /home/ -perm 000 -not -name "public_ftp" -exec rm -rf {} \;
    
    # найти все папки и назначить права по умолчанию: 
    find /home - type d -exec chmod 755 {} \;
    
    # найти все файлы и назначить права по умолчанию: 
    find /home - type f -exec chmod 644 {} \;
    
    # найти только файлы по имени и выставить права: 
    find /home/ -name "xmlrpc.php" -type f -exec chmod 000 '{}' \;
    
    # скопировать все файлы в текущей директории содержащие в имени только цифры
    # [0-9] - регулярное выражение указывающие на массив из диапазона от 0 до 9: 
    find . -name [0-9] -exec cp {} ~/ todir \;
    
    # удалить пустые файлы: 
    find /home -type f -empty -exec rm {} \;
    
    # удалить пустые папки: 
    find /home -type d -empty -exec rmdir {} \;
    
    # удалить файлы *.gz в папках logs, по неопределённому пути в /home/: 
    find /home/*/logs -type f -name '*.gz' -delete
    
    # удалить файлы старше 365 дней 
    find /home -type f -mtime +365 -exec rm -f {} \;
    
    # вывести список файлов в которых встречается текст:
    grep -rl 'строка' ./
    # или
    find ./ -type f -exec grep -l 'строка' {} +
    
    # заменить текст в файлах: 
    find ./ -type f -readable -writable -exec sed -i "s/старый/новый/g" {} \;
    #g - заменяем не только первое вхождение 
    
    # функция понимает регулярные выражения, заменим все где число вначале: 
    find ./ -type f -readable -writable -exec sed -i "s/\dстарый/новый/g" {} \;
    
    # заменить текст в файле: 
    sed -i 's/старый/новый/g' file.txt
    
    # заменить текст в файле только в строках с 1 по 10: 
    sed -i '1,10 s/старый/новый/g' file.txt
    
    # заменить текст в файле везде кроме строк с 1 по 10: 
    sed -i '1,20 !s/старый/новый/g' file.txt
    

    Думаю примеров достаточно, за остальным в man find..

    Бывает необходимо найти где находится в системных папках та или иная утилита

    whereis find
    # или
    which find
    
  • cat - выводит содержимое файла, например cat /proc/bus/input/devices.

    Ещё можно заниматься извращениями, например, копирование содержимого файла Linux в другой файл cat файл1 > файл2
    Если файл был не пустым, он будет перезаписан, если воспользоваться >> будет дописан в конец файла2. Можно склеить два отдельных файла в один: cat файл1 файл2 > файл3

  • mkdir - создаёт директорию, например mkdir -p /путь/к/папке -p создаст рекурсивно все каталоги, если их нет иначе будет выдавать сообщение об ошибке, мол старшего каталога нет..

  • cp - копирует файл/папку, cp опции файл-источник файл-приемник, cp -r /что /куда
    -r - рекурсивно, все подкаталоги
    -a = -dR --preserve=ALL не будет следовать по ссылкам (копировать от туда все файлы), а только рекурсивно скопирует: ссылки, файлы, папки с сохранением атрибутов.
    # скопирует все файлы, начинающиеся на test:
    cp ~/test* ~/todir/
    
    # копировать директорию fromdir со всем содержимым в текущую директорию:
    cp -a /fromdir .
    
    # скопировать файл:
    cp ~/pic.png ~/to/
    
    # скопировать с переименованием или просто сделать копию:
    cp ~/pic.png ~/to/wallpaper.png
    cp pic.png pic2.png
    
    # скопировать группы файлов:
    cp *.txt /to/folder
    cp *.txt *.jpg "read me.doc" /to/folder
    

    При копировании группы файлов, последнее имя трактуется как место назначения, а все предшествующие файлы, как исходные объекты. В других командах, например mv и rm, также разрешены множественные аргументы.

  • mv - позволяет перемещать или переименовывать каталоги mv /что /куда
    mv /from /to
    # переместить файлы:
    mv /home/my/* /home/mynew/
    
    # переместить папку /my/ в /mynew/:
    mv /home/my/ /home/mynew/
    
    # переименование папки:
    mv /oldname /newname
    
    # переименование файла:
    mv oldname.txt newname.txt
    
    # перемещать группы файлов:
    mv *.txt /to/folder/
    mv *.txt *.jpg "read me.doc" /to/folder/
    
    # удалить:
    mv /folder /dev/null
  • rm - удаляет файл/папку, например rm -r /путь
    -r - рекурсивно пройти все вложенные папки
    -f - не запрашивать подтверждения операций
    # удалить папку со всем вложенным:
    rm -rf /backup/
    
    # удалить все объекты в папке:
    rm -rf /backup/*
    
    # удалить все файлы:
    rm -f /var/log/spooler-* \
    rm -f /var/log/messages-* \
    rm -f /var/log/secure-*

Специальные обозначения в консоли

  • ~/ - означает домашнюю директорию текущего пользователя.
  • $USER - подставить имя текущего пользователя.
  • ./ - указание на текущий каталог
  • ../ - указание на каталог выше, перейти в каталог выше cd .. или cd ../
  • * - Знак подстановки, означает любые символы, например у нас есть ряд файлов для распаковки или не хочется писать всё целиком (актуально если нет графической оболочки, например, при удалённом управлении..)
    # разархивирование:
    tar -Jxvf arch-17.40-492261.tar.xz
    tar -Jxvf arch-17*.tar.xz
    
    # показать только размер:
    du *.tar.xz
  • > - перезаписать файл, точнее отправить вывод команды в файл echo 'Привет' > /путь/файл.txt
  • >> - дописать в конец
  • {} - подставляет имя каждого файла
  • \ - в конце строки сообщает, что нужно рассматривать следующую строку как одну цепочку команд..

Клавиша TAB во время набора текста - автозаполнение..

Поздравляю, с этого момента ты продвинутый пользователь Linux : )

Страница сгенерирована за 0.004123 секунды
На один процесс веб-сервера: 243 стр/сек.
Всего Apache может отдать: 62 208 стр/сек.
Выделено php памяти: 903.8 KB, real_usage: 2 MB

© Все права защищены 2004 - 2018
Карта сайта
Отслеживать изменения в Твиттере
Политика конфиденциальности

Браузер построил за сек.
Полное время сек.

С момента выгрузки предыдущей страницы из памяти браузера: сек.