Близкое знакомство с возможностями терминала — один из признаков человека, который хорошо разбирается в Linux. Хотя некоторые вещи запомнить сложно, есть довольно-таки простые, но эффективные приёмы, которые способны повысить качество и скорость работы в терминале. Пожалуй, каждый пользователь Linux рано или поздно обзаводится собственным списком ценных мелочей. Надеемся, некоторых из тех десяти приёмов работы в командной строке Linux, которыми мы хотим с вами поделиться, попадут в ваш личный список полезных команд.


№1. Переход в предыдущую директорию


Все мы используем команду cd .. для перехода в родительскую директорию. А для перехода к предыдущей директории можно использовать команду cd -. Этот приём похож на кнопку «Назад».

test@linoxide:~/Downloads$ cd -
 /home/eyramm
test@linoxide:~$ cd -
 /home/eyramm/Downloads
test@linoxide:~/Downloads$

Тут мы сначала находились в директории Downloads, затем переместились в директорию Home, и, наконец, снова вернулись в директорию Downloads.

№2. Повтор последней команды


Для того, чтобы повторить предыдущую команду, просто введите !!. В этом примере мы повторим предыдущую команду с правами суперпользователя.

$ apt install vlc
 E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
 E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

$ sudo !!
 sudo apt install vlc
 vlc is already the newest version (2.2.2-5ubuntu0.16.04.3).

Этот приём весьма полезен именно в ситуациях, подобных рассмотренной, когда команду, введённую ранее, надо выполнить с правами суперпользователя.

№3. Многократное выполнение команды до её успешного завершения


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

while ! [command]; do sleep 1; done

Например:

$ while ! ./run.sh; do sleep 1; done
 cat: run.sh: No such file or directory
 cat: run.sh: No such file or directory
 linoxide.com

Команда в этом примере будет повторяться до тех пор, пока не будет найден файл run.sh и его содержимое не будет выведено на экран.

№4. Просмотр сведений о ходе передачи файла


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

$ pv access.log | gzip > access.log.gz
 611MB 0:00:11 [58.3MB/s] [=> ] 15% ETA 0:00:59

№5. Планирование заданий


Планировать задания в Linux можно с помощью команды at:

echo wget https://sample.site/test.mp4 | at 2:00 PM

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

№6. Вывод данных в виде таблицы


Вызвав команду ls, или что-нибудь ещё, выводящее данные на экран, можно столкнуться с длинными списками, для просмотра которых требуется продолжительный скроллинг. То, что выводится на экран, легко можно организовать в виде таблицы с помощью команды column -t. Например:

$ cat /etc/passwd | column -t


Вот как выглядит то, что у нас получилось.


Вывод команды, организованный в виде таблицы

№7. Полезные комбинации клавиш


Команда clear очищает экран терминала. Комбинация клавиш Ctrl + L позволяет добиться того же самого быстрее.

Комбинация клавиш Alt + . позволяет перемещаться по ранее введённым командам. Комбинация клавиш Ctrl + U убирает из строки всё то, что уже в неё введено. Например, можете это попробовать для очистки введённого в командной строке пароля.

Для инкрементального обратного поиска по истории команд используйте комбинацию клавиш Ctrl + R.

№8. Сжатие, разбиение и шифрование файлов


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

$ zip -re test.zip AdbeRdr11010_en_US.exe run.sh Smart_Switch_pc_setup.exe
 Enter password:
 Verify password:
 adding: AdbeRdr11010_en_US.exe (deflated 0%)
 adding: run.sh (stored 0%)
 adding: Smart_Switch_pc_setup.exe (deflated 2%)

№9. Стресс-тест батареи ноутбука


Хотите узнать, как долго батарея вашего ноутбука продержится при полной нагрузке на процессор? Попробуйте следующую команду:

$ cat /dev/urandom > /dev/null

№10. Переименование или перемещение файлов


Если вам нужно быстро переименовать или переместить множество файлов с суффиксами — попробуйте команду следующего вида:

$ cp /home/sample.txt{,-old}

Вот как её можно расшифровать:

$ cp /home/sample.txt /home/sample.txt-old

Ниже приведён пример переименования файлов с определённым расширением в пакетном режиме:

$ ls
text_comes_here_1.txt
text_comes_here_2.txt
text_comes_here_3.txt
text_comes_here_4.txt

$ rename 's/comes_here/goes_there/' *.txt
$ ls
text_goes_there_1.txt
text_goes_there_2.txt
text_goes_there_3.txt

Итоги


Мы рассказали о нескольких приёмах взаимодействия с командной строкой Linux. Надеемся, вы нашли здесь то, что поможет вам упростить и ускорить повседневную работу.

Уважаемые читатели! Что вы добавили бы к нашему списку неочевидных полезностей командной строки Linux?

Комментарии (97)


  1. mikkisse
    21.08.2017 14:34
    +7

    Спасибо за статью! Когда-то давно открыл для себя Ctrl + R. Это чертовски удобная вещь.


    1. ice2heart
      21.08.2017 14:44
      +6

      Можно в .inputrc добавить

      "\e[A": history-search-backward     
      "\e[B": history-search-forward  

      И можно будет искать по истории, просто введя часть команды и нажав стрелку вверх. (вниз тоже работает для поиска по истории)


      1. alcyone
        23.08.2017 17:07

        И в /etc/inputrc для system-wide. Очень удобно дистрибьютить менеджерами конфигураций.


      1. apurey
        23.08.2017 17:51
        +1

        Я перенял это для себя из zsh на FreeBSD


    1. VolCh
      21.08.2017 15:24
      -1

      Не все, кстати, знают, что начав что-то набирать ("префикс" типа sudo ) повторным нажатием можно "путешествовать" по истории вверх


    1. MInner
      23.08.2017 17:51
      +1

      С тех пор как узнал, все время пользуюсь сочетанием Alt+. для вставки «последнего аргумента» предыдущих вызовов. А Alt-Shift-3 (или Alt-#) «комментирует и запускает» текущую команду — удобно, когда на середине строки понял, что до этого было нужно ввести что-то еще, и этим можно текущую строки за-stash-ить. А чтобы быстро туда-сюда бегать вперед назад на ноутбуке или «стереть все перед текущим положением курсора» (например, чтобы использовать те же аргументы), удобно использовать Ctrl-U и Ctrl-E. А еще добавил себе set completion-ignore-case on в ~/.inputrc для case-insensitive автодополнения путей (неудобно бывает вводить странные названия папок, все мои папки в lower case'e). А еще так " bind '"\e," menu-complete' " можно включить zsh-like автодоплнение, чтобы по дополнялся по другой клавише «первый совпавший файл» вместо «если несколько опций, то показывать все» — удобно, когда файлов много, у всех похожие префиксы, а тебе нужен хоть какой-то для того, чтобы написать комманду. Ну и просто удобно: for f in ~/.bashrc.d/*; source $f done.


  1. Rosh1ck
    21.08.2017 14:41
    +1

    $ cat /etc/passwd | column -t

    Можно еще так для списка файлов:
    $ ls -1


    1. Self_Perfection
      21.08.2017 18:36
      +6

      Только не

      cat /etc/passwd | column -t

      а
      column -t /etc/passwd

      Любая приличная консольная утилита, которая может принимать данные из stdin, может также читать их из файла, указанного аргументом командной строки. А с неприличными можно воспользоваться перенаправлением потоков ввода/вывода:
      column -t < /etc/passwd

      Stop piping cats! Не труби кота! Запуск процесса — относительно дорогая операция. Так что не надо дёргать утилиту cat когда это не надо.


      1. vgray
        22.08.2017 09:58
        -1

        Мне чаще удобне сделать поставив cat первой коммандой.

        Например:
        1) смотрю файл — cat /etc/passwd
        2) Ох, длинный какой — cat /etc/passwd | head
        3) все равно нужных записей нет — cat /etc/passwd | grep 'XYZ'
        4) ага, а теперь выделим только нужное — cat /etc/passwd | awk…

        те чтобы заменить комманду достаточно нажать стрелку вверх и ctrl+w


        1. Self_Perfection
          22.08.2017 10:55
          +4

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

          Но с другой стороны в описанном вами сценарии от использования cat удобнее не становится! Натравливать cat на файл неизвестного размера чревато, лучше сразу начинать с head $FILE. А чтобы потом отфильтровать по шаблону:
          grep pattern Alt-.
          Альт-точка подставит последний аргумент предыдущей команды (head)
          Потом так же можно будет подставить в awk путь к файлу одним хоткеем.

          Или ещё по-другому: начинать с less $FILE. Много лишнего и нужно отфильтровать? при запушенном less набрать
          &PATTERN<enter>
          И less спрячет строки не соответствующие шаблону. Сделать выборку? Опять же из запущенного less
          !awk '{print $1+$2}' %<enter>

          less подставляет путь к отображаемому файлу вместо %


      1. ainoneko
        23.08.2017 07:15

        column -t < /etc/passwd
        А если здесь перепутать направление угловой скобки?


        1. Self_Perfection
          23.08.2017 08:57

          … то ничего не случится, потому что нечего работать от пользователя root.


          Или придётся восстанавливать из бэкапа, который ведь у вас есть, правда? Ну в крайнем случае из /etc/passwd-


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


  1. nikolayvaganov
    21.08.2017 14:43
    +4

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


    1. x67
      22.08.2017 14:00
      +1

      ого, теперь я знаю как можно легко сортировать пузырьком прямо в терминале)


  1. DocJester
    21.08.2017 14:44
    +7

    Была же аналогичная статья на хабре году в 11. За «буква в букву» не ручаюсь, но точно эти команды там всплывали.


    1. iNoxx
      21.08.2017 16:14
      +20

      Что может появиться нового в Linux за какие-то 6 лет?)


  1. netch80
    21.08.2017 14:57
    +12

    > cat /dev/urandom > /dev/null

    Это загрузит только одно ядро.


    1. youROCK
      21.08.2017 15:24

      Можно добавить " | pigz" между ними, тогда будет много ядер :).


      1. hard_sign
        22.08.2017 11:59

        Не поможет. /dev/urandom выдаёт данные медленнее, чем gzip (однопоточный!) их архивирует. Зато можно запустить cat /dev/urandom несколько раз по количеству ядер.


        1. youROCK
          22.08.2017 12:00

          Да, на моей тачке всего 11 мб/сек выдает чтение из /dev/urandom, в принципе gzip может быть и будет успевать. Ну можно добавить флаг "-9", тогда ему потяжелее будет :).


          1. BOPOHA
            22.08.2017 13:01

            for i in $(seq 1 `nproc`); do cat /dev/urandom > /dev/null & done


    1. trapwalker
      21.08.2017 20:27
      +2

      Вот так интереснее, видно с какой скоростью рандомный поток летит вникуда:

      pv</dev/urandom>/dev/null


      1. DjPhoeniX
        22.08.2017 21:00

        А можно ещё и погрепать: ithappens.me/story/4032


      1. Arqwer
        23.08.2017 13:49

        Ожидал увидеть терабитную скорость из /dev/zero, а увидел только 16,1GiB/s. Что её ограничивает?
        pv</dev/zero>/dev/null


        1. KerLaeda
          23.08.2017 15:08

          Похоже на скорость оперативной памяти. DDR3 2133Mhz?


  1. KYuri
    21.08.2017 14:58
    +1

    в п.3 вывод примера и его описание не соответствуют самому примеру.
    Для соответствия пример должен быть таким:
    while ! cat ./run.sh; do sleep 1; done


    1. Tortortor
      21.08.2017 21:25

      +1
      и во втором тоже.


    1. vovike
      22.08.2017 08:04

      Пункт 3 "Напиши скрипт одной строкой"


  1. Evgenss
    21.08.2017 15:02
    +5

    Иногда использую для перехода в домашний каталог cd без параметров.


  1. jatx
    21.08.2017 15:20

    Одна из самых полезных функций для меня — можно ввести первые буквы и нажать TAB. Автоматически добавляет окончание либо предлагает варианты.


    1. VolCh
      21.08.2017 15:26

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


    1. nikolayvaganov
      21.08.2017 15:37
      +2

      а еще есть bash smart completion которая не только автокомплит команд делает, а еще и аргументов.


      1. unclechu
        22.08.2017 10:47

        Ещё такое есть:

        bind 'set show-all-if-ambiguous on'
        bind '"\C-n":menu-complete'
        bind '"\C-p":menu-complete-backward'


    1. alff31
      22.08.2017 11:55

      Ну без tab терминалом вообще невозможно пользоваться, а статья называется "… о которых никто не знает"


  1. Sirikid
    21.08.2017 15:32
    +16

    10 приёмов работы в терминале Linux, о которых мало кто знает

    В какой оболочке? В каком терминале? В каком дистрибутиве?


    Очередное "ненужно" от блога компании.


    1. ziv
      21.08.2017 16:14

      Ну, от эмулятора терминала, наверное, мало что зависит (разве что он будет глотать сочетания клавиш). От дистрибутива тоже вряд ли, если только он не поставит себе целью поломать те же сочетания.
      А вот то, что кроме bash есть другие оболочки, возможно, таки является для них сюрпризом.


      1. Sirikid
        21.08.2017 16:37
        +2

        А ещё bash может в любой момент наплевать на обратную совместимость и вообще bloatware. Про дистрибутив я написал потому что часть советов просто упоминание рандомных утилит (pv, zip), возможно в каком-то дистрибутиве они и предустановлены, но в моем нет.


        1. ziv
          21.08.2017 16:40

          Да, про утилиты согласен.


  1. DerRotBaron
    21.08.2017 15:34
    +1

    №9
    Плохо подходит для многоядерных систем, если не запускать по количеству ядер.
    Что-то близкое к требуемому одной командой можно получить, скажем, так:

    cat /dev/urandom | pbzip2 -c > /dev/null 

    Таким образом получается утилизировать весь либо почти весь процессор


    1. unclechu
      22.08.2017 11:02

      gnu/parallel?

      parallel 'cat /dev/urandom > /dev/null #{}' ::: x x x x


      1. unclechu
        22.08.2017 11:09

        ну или так:

        parallel 'cat /dev/urandom > /dev/null #{}' ::: {1..4}

        parallel 'cat /dev/urandom > /dev/null #{}' ::: `seq $(nproc --all)`


  1. Cheater
    21.08.2017 15:54
    +2

    Много мелких приёмов, всех не вспомнить. Например:
    — Автодополнение можно настроить для чего угодно (man bash-completion), например сделать автодополнение имён веток в Git: «git checkout mas» дополнится до «git checkout master»;
    — Добавление строк в реальном времени в конец файла можно наблюдать через tail -f;
    — Можно обернуть вызов любой команды, где идёт передача данных через pipe, в утилиту pv, и будет отображаться прогресс переноса данных;
    — Можно обернуть вызов любой команды, ожидающей текстовый ввод от юзера, в утилиту rlwrap и ей подобные, и будет строка ввода, поддерживающая все фичи GNU readline (поиск по истории, дополнение ит.д.);
    — Если поставить пробел перед командой, она не осядет в .bash_history;
    — ssh remote_host_name run_command запускает неинтерактивный шелл через SSH, который выполнит run_command и закроется;
    — ssh remote_host_name bash открывает интерактивный шелл, команды в который вы вводите локально (нет лагов при нажатии клавиш);
    — ssh -R открывает на удалённом хосте порт, который будет пробрасываться через SSH до локальной машины;
    — ssh -L открывает на локальной машине порт, который будет пробрасываться через SSH до удалённой машины;
    — ssh -D даёт вам SOCKS прокси;

    … и т.д., имя им легион


    1. Tiberiumk
      21.08.2017 16:18

      Про pv есть в статье, правда там не объяснили, что работает только в тех командах, где есть вызов pipe


  1. drmtmych
    21.08.2017 16:13
    +3

    А как же навигация по командной строке:
    Ctrl+b/Ctrl+f для перемещения на одну букву
    Ctrl+a/Ctrl+e для перемещения в начало/конец строки
    Ctrl+w — удаление одного слова
    Ctrl+u — удаление всех символов слева от курсора
    Ctrl+k — удаление символов справа от курсора


    1. kez
      21.08.2017 16:36

      В строгом смысле поддерживается большинство emacs'совских комбинаций клавиш (без префикса)


  1. VBKesha
    21.08.2017 16:14

    CTRL+Z
    bg / fg


    1. eov
      21.08.2017 17:01

      добавляем сюда jobs <%n> и kill %n (где n — номер задачи).


  1. vagonovozhaty
    21.08.2017 16:16
    +19

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


  1. Sirikid
    21.08.2017 16:45
    +1

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

    Кажется здесь забыли написать про пейджеры.


    То, что выводится на экран, легко можно организовать в виде таблицы с помощью команды column -t. Например:

    /etc/passwd гораздо лучше будет выглядеть с опцией -s :


  1. Kylin
    21.08.2017 16:47
    +1

    Комбинация клавиш Ctrl + U убирает из строки всё то, что уже в неё введено.

    Ага, а Ctrl + Y снова вставляет строку, аналог Ctrl + X / Ctrl +V в винде. Удобно если вспомнил что перед одной командой надо ввести другую, а заново набирать лень и к мышке тянутся тоже :)


  1. eov
    21.08.2017 16:55

    Можно мои 5 копеек?


    1. В команде "more file.txt" можно перемещаться вперед и НАЗАД кнопками f (forward) и b (backward). Ровно так же это делается и в man. Кнопка "v" приводит к тому, что файл передается редактору vi на редактирование. Если в режиме vi дать "<ESC> set nu", то уже vi пронумерует строки. Выход из vi — "<ESC> q".
    2. Кнопка / позволяет иcкать в more и в vi
    3. Команда "gunzip -c file.tar.gz | tar xvf -"  позволяет распаковать одной строкой tar.gz  архив (есть и другой метод, но мне этот более понятен). По сути gunzip -c вываливает результат в stdout, а символ "-" после пайпа вбирает в себя вывод из stdout в свой stdin.
    4. Что такое "su user" (если без user, то в root-а) знают все, но уверен, что не все знают, что "su — user" переводит в user-а со всеми переменными окружения этого пользователя.
    5. Все знают, что "cd" без параметров приводит к тому, что директория меняется на "home" (cd $home). А если сделать "cd ~/dir1", то получается "cd $home/dir1".
    6. Команда "ls -1 | wc -l" выдаст количество файлов и папок в директории. Если дать "ls -1d | wc -l", то количество папок. Если дать "ls -1f | wc -l", то количество только файлов.
    7. Команда "ll" — это аналог "ls -l" (во многих unix-ах). Если это не так, то всегда можно сделать alias.
    8. Комбинация "<CTRL> u" — убирает все символы левее курсора
    9. Комбинация "<CTRL> a" переводят курсор в начало строки
    10. Комбинация "<CTRL> e" переводят курсор в конец строки

    Пункты 8-10 работают и в vi.


    1. varnav
      21.08.2017 17:15

      3. Достаточно же tar xf filename.tar.gz


      1. shurutov
        22.08.2017 11:00

        1. это только с GNU-сным таром;
        2. tar xzf filename.tar.gz
          без "z" tar выдаст ошибку.
        3. tar xjf filename.tar.bz2


        1. varnav
          22.08.2017 11:22

          Я попробовал tar xf без дополнительных букв в Ubuntu 16.04 и CentOS 7.3 — работает без ошибок. Возможно какие-то старые и экзотические оси требуют отдельного указания формата архива и не могут его определить самостоятельно, но я с такими видимо не работаю.


          1. shurutov
            22.08.2017 11:53

            Да, вы правы насчёт центоси — работает без указания формата.


    1. eov
      21.08.2017 17:34

      Забыл сказать, что для п.3 исходный tar.gz не меняется (не распаковывается просто в tar).


    1. shurutov
      22.08.2017 11:06

      1. Это не аналог, это именно предопределённый алиас в некоторых дистрибутивах/системах. Проверяется элементарно — вызовом команды alias


      1. eov
        22.08.2017 11:21

        Да, может быть. Если первый вызов ll не давал результата, а нужно что-то делать с расчетным временем более 5-10 минут, то вкручивал alias.


  1. sabio
    21.08.2017 17:25

    Если забыли при вводе команды добавить pv, то для большинства базовых команд (cp, mv, dd, tar, gzip и пр.) поможет progress
    https://github.com/Xfennec/progress


  1. eov
    21.08.2017 17:26

    Может какой-нибудь ztar?
    Я для себя выбрал вариант, который всегда везде (емли есть gunzip, конечно).


  1. jknight
    21.08.2017 17:55
    +6

    Мне вот упорно кажется, что хостингу VPS/VDS есть о чем рассказать, помимо «лайфхак-гайдов», 100% которых гуглится в интернете, и достойных школьника, случайно прорвавшегося на хабр.


  1. gban
    21.08.2017 18:26

    а куда делся text_comes_here_4.txt в 10 примере?


  1. Fragster
    21.08.2017 18:46
    +2

    cat /dev/urandom > /dev/null у меня загружает процессор примерно на 30%, для полной нагрузки есть stress -с numcores


  1. Fen1kz
    21.08.2017 18:51

    Надеемся, некоторых из тех десяти приёмов работы в командной строке Linux, которыми мы хотим с вами поделиться, попадут в ваш личный список полезных команд.
    №9. Стресс-тест батареи ноутбука
    $ cat /dev/urandom > /dev/null
    Ну как так-то…


  1. JavaJesus
    21.08.2017 19:21
    -4

    Уже шутили про очень полезную команду rm -rf /? Пробовать обязательно всем. Лучше на проде


    1. hdfan2
      22.08.2017 09:30
      -2

      Кстати, есть такая реальная проблема — многие программы создают временные файлы с именем "~", которые со временем начинают забивать диск. Поэтому иногда рекомендуется выполнять команду «rm -rf ~», чтобы удалить такие файлы во всех подкаталогах.


  1. kovserg
    21.08.2017 20:19

    мне очень нравится команда locate -A word1 word2


    1. shurutov
      22.08.2017 12:13

      Есть два небольших нюанса:


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


      1. kovserg
        22.08.2017 16:23

        разве это проблема?
        yum -y install mlocate
        updatedb
        в убунте она из коробки


  1. tsabir
    21.08.2017 20:28
    -1

    Иногда нужно запустить команду с определенными переменными окружения, можно сделать это одной строкой:
    $ JAVA_HOME=/java/home ./run.sh


  1. Daniyar94
    21.08.2017 20:56

    От себя добавлю:
    1.
    $ pushd <some_dir> #добавляет директорию в стэк
    $ popd #переносит вас в ту директорию удаляя ее из стэка


    2.
    $ history
    999 pwd
    1000 exit
    1001 history
    $ !999 #Выполняет команду из истории
    /home/daniyar94


    1. BerliozNSK
      22.08.2017 08:04

      pushd и popd вообще выручают, когда надо копаться в конфигах разных программ


  1. domix32
    21.08.2017 21:33

    Для 8 пункта в свое время придумали tar


  1. streetturtle
    21.08.2017 21:46
    +1

    У вас в последнем примере rename файл удалил :(


  1. vk2
    21.08.2017 22:02

    «Вот как выглядит то, что у нас получилось» (N6)

    А зачем вам такой вывод, как на скриншоте?


    1. DeeZ
      23.08.2017 09:21

      Тоже не понял смысла. Но видимо автор имел ввиду команду

      cat /etc/passwd | column -t -s :


  1. Amet13
    21.08.2017 22:05

    Alt + Backspace — удаление слова в консоли.


  1. El_corona
    21.08.2017 22:46

    мой путь начинающего линуксоида стал значительно менее тернист после того, как я узнал об apropos :)


  1. AVX
    21.08.2017 23:23

    Стопицот раз уже про одно и то же. ИМХО, кому работать реально в терминале нужно будет — найдёт намного более продвинутую и полную статью (их на хабре достаточно) или даже man'ы прочитает.
    Я бы вот с бОльшим удовольствием почитал о графических утилитах/командах/вывозах функций ОС и оболочек, заметно повышающих дружелюбность скриптов к пользователю — намного удобнее ткнуть мышкой в файлик скрипта, выбрать что нужно, и получить в нормальном окне результат, и ещё прогресс видеть. Это я не про админов, а про обычных пользователей домашних ПК под линуксом, которые на 90% используют КДЕ, Гном или что-то ещё (реже). Вот например, прогресс-бар в КДЕ:

    kdialog --progressbar "Reading files" $files_count

    Вот диалог открытия папки в КДЕ:
    folder="`kdialog --getexistingdirectory ~`"

    Диалог с кнопками:
    kdialog files:start --yesnocancel "check files" --yes-label "save md5" --no-label "check md5"

    Нормальных обзорных статей по такого рода возможностям особо-то нет, а хотелось бы.


  1. kovserg
    22.08.2017 00:18
    +3

    Вот еще моя любимая команда
    mc


  1. mSnus
    22.08.2017 03:41

    Помнится, мы ещё под DOS-ом писали резидентные менюшки, которые по F2 всплывали везде, где надо, и содержали в себе нужные шорткаты, чтобы их не запоминать, и не выстрелить себе в ногу случайно (особенно на вторые сутки без сна в 5 утра)). F2 — потому что в VC тоже было неплохое пользовательское меню по этой кнопке.


    То есть 20 лет назад под DOS это было, а сейчас под *nix надо держать в голове параметры какого-то pbzip2, а чтобы показать список последних команд надо что-то шаманить… Что стоило за это время улучшить bash или просто сделать что-то получше? У того же абсолютно инопланетного vi все же появились человеческие альтернативы типа nano…


    1. kovserg
      22.08.2017 09:33

      Это классический метод взаимодействия с компьютером и он никуда не делся. Он показал свою эффективность и работает очень уверенно ( cli в cisco, shell в linux ). Такое взаимодействие позволяет быстро комбинировать простые программы и получать результат. Графический интерфейс до сих пор не дорос до подобного.
      Держать в голове параметры не надо у всех утилит есть справка
      pbzip2 --help
      man pbzip2
      info pbzip2

      bash-completion

      «vi имеет два режима в одном он пищит в другом всё портит»
      на основе vi сделан vim — один из самых эффективных редакторов


      1. mSnus
        23.08.2017 17:49

        Между текстовым режимом и графическом есть ещё много градаций. Эффективность у чисто текстового ввода по сравнению с текстом+менюшки для шорткатов сильно ниже, вероятность ошибок у чисто текста — сильно больше. Мне кажется, это очевидно.

        htop удобнее чем просто top, а top удобное, чем вывод по строкам (как в ping, например). Текстовые интерфейсы давно эволюционировали, но наследие сильнО ))


  1. Gasoid
    22.08.2017 10:57

    -


  1. evgenWebm
    22.08.2017 20:53

    Полезно. Спасибо.
    P.S. Сегодня работал за консолью в винде. После винды, консоль линуха, просто шедевром кажется. Сделано людьми, для людей. В винде же… ад и страх cmd


    1. ashumkin
      23.08.2017 11:10
      +1

      clink в помощь )


      1. JegernOUTT
        23.08.2017 11:39

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


      1. ALexhha
        23.08.2017 12:43

        Есть же прекрасный и удобный cmder.net. После него смотреть на стандартную консоль windows без слез нельзя :)


        1. ashumkin
          24.08.2017 12:20

          о, как! ) спасибо )


    1. Fragster
      23.08.2017 11:43

      первая команда, которую я набираю в консоли windows — bash $)


    1. VitP
      24.08.2017 00:06

      Пробовали Cygwin?


      1. evgenWebm
        24.08.2017 00:49

        Он сможет помочь мне вот с такими конструкциями?
        sc sdset Spooler «D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;S-1-5-21-2133228432-2794320136-1823075350-1000)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)»


        1. VitP
          24.08.2017 11:04
          +1

          А что это такое?


          1. AVX
            26.08.2017 21:37

            Установка параметров для службы spooler (диспетчер печати), в частности права ставит как надо тому, кто забил такую команду. По сути — жесть конечно.


  1. DrAndyHunter
    23.08.2017 15:29

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

    Ctrl + >
    или
    Ctrl + <


    1. VitP
      24.08.2017 00:07

      Это работает по дефолту? У меня вместо влево вставляется 5D, а вместо вправо 5C.


  1. ashumkin
    24.08.2017 12:19
    +1

    все перемещения по тексту и работа с историей — это функциональность библиотеки GNU readline
    и работают не только в Bash, но и, естественно, во всех «консолях», которые её используют (irb, например)
    красивые таблички/cheat sheets — в гугле по запросу, хотя то же самое описано по приведённой выше ссылке