Оптимизируем процесс работы в консоли

    Все привыкли редактировать текст в текстовых редакторах, блокнотах, веб-формах и т.д. В процессе набора текста мы пользуемся привычными стрелками, кнопками «End» и «Home», более опытные зажимают «Ctrl» и стрелками шагают по словам (что, кстати, не всегда работает). И при переходе на консоль мы ориентируемся на те же самые правила, даже не зная, что bash предлагает очень удобные средства и комбинации клавиш, которые очень упрощают работу и минимизируют количество операций для выполнения задачи. К тому же, в bash есть удобные средства работы с историей, масса различных подстановок и других интересных функций. Самые часто используемые мной и любым опытным администратором я и опишу в этой статье.

    Для того, чтобы все, описанное мной, заработало, не нужно ничего до устанавливать, не нужно писать скрипты, конфиги и прочие дополнения: все эти средства работают абсолютно одинаково в большинстве современных интерпретаторах bash, работающих на любой UNIX системе.
    Мой педагогический опыт говорит о том, что практика — лучший способ понять, полюбить и привыкнуть к новым функциям, поэтому я не стал рисовать голые таблицы, а сделал повествование, и рекомендую в процессе чтения статьи открыть консоль и пробовать все, чем еще не пользовались, руками.

    Операции относительно курсора

    По привычке, для перемещения в начало строки используется кнопка «Home», а для перемещения в конец — кнопка «End». Но на сколько удобно тянуться к этим кнопкам при наборе команды? Bash предлагает не отрываться от буквенно-цифровой клавиатуры и использовать комбинации «Ctrl+A» вместо «Home» и «Ctrl+E» вместо «End». Иногда, набрав длинную команду, вспоминаешь, что перед ней нужно было выполнить еще одну: в этом случае оптимальным способом будет переместиться по «Ctrl+A» в начало строки, дописать символ "#" (тем самым закомментировав команду, но оставив ее в истории), и нажав Enter, после чего можно выполнить нужную команду, в истории найти закомментированную команду, убрать символ комментария и выполнить ее.
    Чтобы очищать текст до или после курсора используются комбинации клавиш: «Ctrl+K» — удаление текста от текущей позиции курсора до конца строки, а «Ctrl+U» — до начала строки. Ну и наконец, по «Ctrl+C» можно удалить сразу всю строку.
    Можно удалять сразу слова: «Ctrl+W» удаляет слово слева от курсора, «Alt+D» — справа. Но удаленные слова еще и помещаются в буфер, последнее удаленное слово можно вставить начиная с текущего положения курсора по комбинации «Ctrl+Y».
    Часто в спешке можно набрать 2 символа в не правильной последовательности: в этом случае удобно воспользоваться комбинацией клавиш «Ctrl+T», которая предназначена для замены местами символа до курсора и символа под курсором.

    История

    Обычно познания подсистем истории bash ограничиваются стрелками вверх и вниз. В работе удобно использовать еще следующие возможности:
    • Восклицательный знак. Вызывает какую-то команду из истории, а сама история выводится в пронумерованном виде на экран по команде history. Например: выполнить пятую команду из истории можно набрав "!5", а пред-предыдущую по "!-2". Предыдущая же команда вызывается по "!!", а первая команда в списке (в обратном порядке), начинающаяся на «ro» — при помощи комбинации "!ro".
    • Переменные и подстановки. Очень часто нужно в новую команду вставить последний аргумент предыдущей. Яркий пример: по команде ls посмотрели содержимое далекого каталога, и требуется в него перейти. Не писать же опять полный путь? Здесь можно использовать подстановку "!$", наследованную из C shell, или родную переменную "$_". Вместо обеих будет подставлен последний аргумент предыдущей команды. Единственный минус — его нельзя будет посмотреть и подредактировать. В этом случае целесообразно использовать комбинацию «Alt+.», которая вставит нужный аргумент в текущее положение курсора, и можно делать с ним что угодно. Стоит так же заметить, что если последний аргумент предыдущей команды представляет собой маску(wildcard), то вместо подстановки "!$" будет использоваться весь текст, соответствующий этой маске, а не последний элемент. Можно так же получать и первый аргумент предыдущей команды, для этого используется подстановка "!^", но на практике это используется реже.
      Опечатку в предыдущей строке можно исправить не копаясь в ней: операция замены "^^" позволяет заменить текст предыдущей команды на новый и выполнить новую команду. Например:

      [vorb@localhost ~]$ ls -l /dev/dsa
      ls: невозможно получить доступ к /dev/dsa: Нет такого файла или каталога
      [vorb@localhost ~]$ ^dsa^sda
      ls -l /dev/sda
      brw-rw---- 1 root disk 8, 0 Апр 5 03:18 /dev/sda


      Здесь ошибочная запись «dsa» прошлой команды заменена на корректную «sda», и новая команда выполнена успешно.

    Перемещение по файловой системе

    Командой «cd», как и авто дополнением по кнопке «TAB» уже никого не удивишь. Но часто приходится «бегать» по всей файловой системе с необходимостью потом вернуться назад. Здесь пригодится основанный на модели стека механизм bash, который поддерживается командами pushd и popd: pushd выполняет переход в целевой каталог и занесение абсолютного пути предыдущего каталога в стек, а popd — наоборот, выбирает из стека предыдущий путь и переходит в него. Пример:

    [vorb@localhost ~]$ pushd /var/cache/urpmi/rpms/
    /var/cache/urpmi/rpms ~
    [vorb@localhost rpms]$ pushd /etc/urpmi/mediacfg.d/Cooker-2010.0-i586/
    /etc/urpmi/mediacfg.d/Cooker-2010.0-i586 /var/cache/urpmi/rpms ~
    [vorb@localhost Cooker-2010.0-i586]$ popd
    /var/cache/urpmi/rpms ~
    [vorb@localhost rpms]$ popd
    ~
    [vorb@localhost ~]$

    В этом примере я сначала перешел в каталог с кэшем urpmi, потом в каталог с конфигами urpmi, затем вернулся назад в каталог с кэшем, и домой. Одна из самых распространенных задач, решаемых с использованием этого механизма: перейти в каталог с конфигами, затем в каталог с кэшем, с логами, или чем либо еще, и иметь возможность быстро вернуться назад.
    Кстати, команда «cd» тоже имеет свои хитрости: «cd» без параметров сменит каталог на домашний, «cd ~user» — на домашний каталог пользователя user.

    В принципе, это все, о чем я хотел рассказать в рамках этой статьи. Конечно, это далеко не все, и, если есть желание развивать знания в этом направлении, рекомендую книгу Джерри Пика, Тима О'Райли и Майка Лукидиса «UNIX: Инструментальные средства». В ней описан не только bash, но и C shell, и ksh, и сколько я ее читаю — всегда нахожу что-то новое для себя.
    Успехов!

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 76

      +5
      Автору спасибо — почерпнул новые знания, статью в мемы, а заплюсую завтра — сегодня мана кончилась =)
        +30
        cd -
        переход в предыщую директорую
        например

        $ pwd
        /usr/local/include/boost
        $ cd
        bogolt@view:~$ cd -
        /usr/local/include/boost

        тут мы из директории /usr/local/include/boost перешли в домашнуюю, а потом с помощью 'cd -' вернулись в предыщую
          +1
          Точно! Забыл об этом упомянуть :) Спасибо!
            +3
            ~$ shopt -s autocd
            ~$ /tmp
            cd /tmp
            /tmp$ /etc/init.d
            cd /etc/init.d
            /etc/init.d$ -
            /tmp
            /tmp$ ~
            ~$
            +28
            Самая полезная фича для меня Ctrl-R — реверсивный поиск. Позволяет найти команду в истории по ее части, и не только запустить заново, но и отредактировать перед этим.
              +5
              Ага! А все следующие Ctrl-R будут пытаться найти другие совпадения.
                +7
                Что-то не точно сформулировал свою мысль.
                Все последующие нажатия комбинации Ctrl-R будут пытаться найти другие команды в истории по уже введённому контексту. Т.е. ввели известную нам подстроку и нажимаем Ctrl-R до тех пор, пока не найдём нужную команду.
                  0
                  оо спасибо!
                0
                Спасибо, пару удобных комбинаций не знал.
                  +4
                  Операции с курсором, кстати — это не Bash, это readline. И ещё он умеет работать в vi-режиме (почти всё поддерживается)

                  $ set -o vi

                  что намного удобнее может быть для редактирования.
                    +10
                    «Удобнее для тех, кто знаком с vi»
                      0
                      Эмс… Почему это? Можно и через этот режим познакомиться с тем, как работается в Vi. Один фиг — надо всякие нажималки магические запоминать. По-умолчанию стоит emacs режим, но вы же не считаете, что он удобнее только для тех, кто знаком с emacs.

                      Вот. Так что, попробовать стоит. IMHO, всё же Vi устроен логичнее, да и искать всякими regexp'ами позволяет по истории, что может быть полезнее.
                        0
                        Я то знаю, я его и использую уже давно. Не забывайте что большинство считает что у vi есть всего два режима. И всё же «порог вхождения» у emacs ниже чем у vi\vim =)
                          +3
                          О. Вот про порог вхождения не соглашусь. Я в Emacs так и не вошёл, например. Хотя пытался раза три. Уж слишком там много магических последовательностей нужно запоминать. vim как-то в этом плане более интуитивно понятный.
                            0
                            Ну это для Вас. Для большинства новичков которых я видел\знаю vi сложнее. Нажать Ctrl-a же проще и понятнее, чем Esc затем, Shift-a
                              0
                              Ну… Я ж — не уникальная в этом личность. Для многих vim оказывается проще, поэтому я и упомянул про vi-режим readline. Да и потом, я же тоже пытался в Emacs войти с уровня новичка. Но вот почему-то проще оказалось войти в Vim. Хотя, вроде как, формально, действительно проще нажимать ctrl-a, а не esc, shift-a… Но вот почему-то Emacs не пошёл у меня.
                                0
                                Мы с Вами просто относимся к тем, кому удобнее vi, но, как показывает статистика, нас меньшинство :)
                                  0
                                  Да почему? Вот статистика использования пакетов в Arch Linux

                                  www.archlinux.de/?page=FunStatistics

                                  Нужно учитывать, что nano и vi там ставятся по умолчанию при инсталляции системы, а вот Vim, Gedit, Emacs уже надо устанавливать руками. Ну… Как бы… Arch, конечно, не mainstream дистрибутив, но всё же.
                                    0
                                    Вот именно что не мейнстрим. Есть куча новичков в *NIX системах, для которых vi не так лёгок в освоении :)
                      0
                      хм. А как пользоваться? Вот я башу сказал set -o vi, а дальше? ниче не поменялось вроде в поведении readline.
                        0
                        Esc для выхода из режима вставки попробуйте
                          0
                          Спасибо!
                          +1
                          Ну. Надо же ещё документацию почитать. Возможностей, по идее, не больше, просто пользоваться может быть удобнее. На любителя всё конечно.

                          Но, например, вот бывает такое удобство… Допустим, хотим поискать нечто (find) с некими экзотическими ключиками, которые вспоминать лень. Для этого…

                          1. Жмём Esc — вошли в командный режим
                          2. Пишем /find — это поиск в истории. Жмём enter. Жмём n или N пока не находим нужное вхождение:

                          find 'a b c d' -type f -a --newer…

                          3. Жмём 0 — попадаем в начало строки. Жмём f' — переходим на первую кавычку, жмём c; — замена всего до следующей кавычки (; — повтор предыдушей команды перемещения, и заменяем путь для поиска:

                          find 'some path' -type f -a --newer…

                          Самое удобное в vi режиме — это как раз навигация по символам в командной строке. Можно ещё куски копировать. Например, можно было бы жмахнуть y; — и получить путь в 'буфере обмена'. По моим личным ощущениям — это удобнее, чем emacs.
                          0
                          Это просто невообразимо круто! Спасибо тебе добрый человек)
                          +2
                          Кстати странно, что всё это отсутствует почти во всех руководствах по баш и учебников по линукс, так же как и большинство горячих клавиш. Я когда только начинал познавать линукс, то далеко не из первой книжки по этой системе узнал о существовании ctrl+alt+f(1-12), что весьма странно, вроде и основы, а в книжках для чайника про это нет.
                            +3
                            Ctrl+R — поиск по истории. начинаешь печатать, а консолька сама подставляет подходящие команды.
                              +1
                              чёрт опередиле. :(
                                +3
                                Esc+. — подстановка в команду последнего аргумента предыдущей команды. Дьявольски удобно.
                              0
                              Спасибо, забрал в избранное
                                +5
                                > Майка Лукидиса
                                Уставшими глазами прочел «Майка Линуксоида» :)

                                А за статью большое спасибо, в избранное!
                                  +5
                                  alias-ы тоже полезны

                                  alias ..="cd .."
                                  alias ...="cd ../.."
                                  alias ....="cd ../../.."
                                  alias .....="cd ../../../.."
                                  alias psx="ps -auxw | grep $1"
                                  ...
                                    0
                                    А у меня вот такое лежит в алиасах.

                                    function kkill()
                                    {
                                    kill $(pgrep $1)
                                    }

                                    Если нужно прибить процесс, просто жму k+k+[Tab] и вписываю имя неугодного процесса.
                                    ps -A тоже на алиасе, для удобства.
                                      0
                                      killall
                                        0
                                        ой, не совсем точно описал! k+k+[Tab] и вписываю фрагмент из имени.
                                        Предположим, мы занимались до этого рукоблудием и играли в «Сапера». Для его умерщвления достаточно выполнить kkill mine.
                                        Мне так удобнее, да и проще клацнуть два «k» с табом, чем k+i+l+l+a+[Tab]… Но, это дело вкуса.
                                        +3
                                        man pkill
                                        +1
                                        shopt -s autocd

                                        :-)
                                        +2
                                        ещё вспомнил в копилку: Ctrl+L очищает экран.
                                          +1
                                          Предпочитаю использовать команду 'reset' (это не перезагрузка, просто сброс консоли). Помогает, когда шеллу сносит крышу от кривых esc-последовательностей. Заодно сбрасывает весь буфер, в то время как после Ctrl+L можно тупо проскроллить вверх и увидеть всё выше. (И зачем тогда чистить экран?)
                                            +1
                                            Ну, очистить экран чтобы вся выведенная на нём до этого информация не отвлекала от работы.
                                          +13
                                          А вот фича, которую я люблю даже больше CTRL-R:

                                          $ cat .inputrc
                                          "\e[A": history-search-backward
                                          "\e[B": history-search-forward


                                          А теперь наберите в консоли:

                                          $ cat

                                          И курсором вверх-вниз для показа последних комманд, начинающихся на cat(или что угодно другое).
                                            0
                                            согласен, это куда полезнее зачастую :)
                                            +2
                                            'man bash' вам в помощь!

                                            в главе Readline Command Names приведен полный список команд.

                                            мой хит-парад — C-u, C-w, C-y, M-#
                                              +8
                                              zsh попробуйте — оч. много интерактивных приятностей
                                                +1
                                                И отсутствие привычного readline. Поначалу напрягает.
                                                  +2
                                                  Я удаленно администрирую больше 10 юниксовых серверов, мне в принципе будет неудобно метаться между разными шеллами, запоминать кучу комбинаций клавиш и т.д. На всех моих серверах по умолчанию идет bash, поэтому все описанное мной здесь работает куда бы я не залогинился (ну кроме одной машиной с AIX, там Korn shell).
                                                  А zsh это, конечно, очень хорошо, но дальше домашней машины и ноута он не выходит.
                                                    +1
                                                    Согласен полностью. Но ещё более согласен если не только вы их администрите. На серверах и вообще шаредных компах в руте используем bash почти в голом виде, с минимумом алиасов. И вим гол как сокол. В таких вещах чем стандартнее тем лучше (про судо знаю, но у нас всё равно рут для админов — причины есть). А в скриптах, конечно, первой строкой — банг-баш.
                                                  –3
                                                  man bash
                                                    +15
                                                    Еще к удобствам можно отнести работу с хистори и настройку окружения:
                                                    1. Ведение лога истории с datestamp'ом:
                                                    export HISTTIMEFORMAT='%F %T '
                                                    2. Занесение команды в .bash_history сразу же, после нажатия enter (а не после завершения сеанса), что весьма удобно при одновременной работе в нескольких сессиях:
                                                    PROMPT_COMMAND='history -a;history -n'
                                                    3. Удобная настройка PS1 (чтобы было видно и юзера/хост и желательно дату и время [у меня некоторые сессии висят неделями])
                                                    export PS1='\033[00;32m\][`date +%d" "%h" "%Y" "%T`] \u@\h \w\n \$\[\033[00m\] '
                                                    4. Увеличение размера хистори (при активной работе 500 — это очень мало)
                                                    export HISTSIZE=100500
                                                    5. Говорим башу не заносить в хистори повторяющиеся друг за другом команды:
                                                    export HISTCONTROL=ignoredups
                                                    6. Отключаем занесение «бесполезных» с точки зрения истории команд:
                                                    export HISTIGNORE="&:ls:[bf]g:exit:[ ]*:ssh:history"
                                                    7. Не забываем про bash_completition (который предварительно надо не забыть подключить):
                                                    if [ -f /etc/bash_completion ]; then
                                                    . /etc/bash_completion
                                                    fi
                                                    — 8. $ ls some-file
                                                    $ cp !$ !$.back
                                                    ( !$ — заменяется на последний аргумент [в данном случае some-file] )
                                                    9. фича только для bash 4 и выше (в 3, емнип, не работает)
                                                    shopt -s globstar
                                                    и echo ** будет практически равносилен find.
                                                    Вроде все, что вспомнил (:
                                                      0
                                                      Еще нравится:
                                                      cp /etc/very/long/path/{filename.txt,newname.txt}

                                                        0
                                                        Эх, заранее отправилось. Продолжу:

                                                        cp /etc/very/long/path/filename.txt{,.bak} # равносильно cp /etc/very/long/path/filename.txt /etc/very/long/path/filename.txt.bak
                                                        mv /etc/very/long/path/filename.txt{,.bak} # равносильно mv /etc/very/long/path/filename.txt /etc/very/long/path/filename.txt.bak
                                                      0
                                                      Хоть по сути к bash'у это относится лишь косвенно, но я бы ещё упомянул о каких-нибудь сторонних утилитах, упрощающих работу в консоли. К примеру screen. Очень удобно держать в консоли несколько подписанных вкладок и перемещаться по ним по хоткеям (Ctrl + RightArrow/LeftArrow, например). У меня всегда открыто 5 вкладок, которыми активно пользуюсь.
                                                        +4
                                                        такие элементарные вещи.
                                                        очень часто забываешь про них, и половину из всего этого не знал. спасибо что научили и освежили память.
                                                        выполнение предыдущец команды из под рута: sudo!!!
                                                        поиск файла в система: locate file.name (предварительно совершив updatedb)
                                                          +1
                                                          А как же божественные Ctrl-p\n? Это куда удобнее чем тянуться к стрелочкам.

                                                            +1
                                                            Как Ctrl-A мнемонически соотносится со словом Home?
                                                              0
                                                              это комбинации клавиш из емакса. Мнемоника там не причем
                                                                0
                                                                круто, а запоминать как?
                                                                  +1
                                                                  буква А — начало алфавита — начало строки.
                                                                    +3
                                                                    буква E в Ctrl+E, — видимо, конец алфавита? ;) Всё-таки неинтуитивные шорткаты.
                                                                  • UFO just landed and posted this here
                                                                –2
                                                                alias pingy=ping ya.ru
                                                                alias tracy=traceroute ya.ru

                                                                Если провайдеру не доверяете.
                                                                • UFO just landed and posted this here
                                                                    0
                                                                    То, что работает во всех шеллах, а не только в bash, для временного захода в какой-то каталог и возврата обратно: запустить ещё один экземпляр оболочки и там сделать всё необходимое.
                                                                    Ниженаписанное делалось в FreeBSD в csh.
                                                                    [/usr/local/etc/rc.d] 23:53 kibab@kibab-nb%csh
                                                                    [/usr/local/etc/rc.d] 23:53 kibab@kibab-nb%cd /etc/
                                                                    [/etc] 23:54 kibab@kibab-nb%grep -r someCrappyJob rc.conf
                                                                    [/etc] 23:54 kibab@kibab-nb%exit
                                                                    [/usr/local/etc/rc.d] 23:54 kibab@kibab-nb%


                                                                    Кстати, в данном случае я не набирал «exit», а просто нажал Ctrl-D: конец потока стандартного ввода, что завершает шелл.

                                                                    Мой пример можно было бы сделать ещё и вот так:
                                                                    [/usr/local/etc/rc.d] 23:57 kibab@kibab-nb%(cd /etc/ && grep someCrappyJob rc.conf)
                                                                    [/usr/local/etc/rc.d] 23:57 kibab@kibab-nb%

                                                                    … но это уже другая история :-) Собсна, скобки — это шорткат для запуска дочернего шелла и команды в нём.
                                                                      +1
                                                                      Вот с переменными только проблемы у незнающих возникнут при использовании подшеллов. Что-то типа
                                                                      $ (A=1); echo $A
                                                                      может вызвать как минимум удивление (:

                                                                      Да далеко не всегда нужны подшеллы. Команды можно группировать фигурными скобками {}:
                                                                      $ [ $(($RANDOM%2)) -eq 0 ] && { echo 'Even'; echo 'It works!'; } || { echo 'Odd'; echo 'It doesnt work!'; }
                                                                      +1
                                                                      ничего нового, всё уже есть на хабре, и даже не особо не разбросано по отдельным постам.
                                                                        +12
                                                                        Оформил в виде памятки:
                                                                        1. CTRL+R — вводишь слово, с которым надо найти команду в истории. Повторные CTRL+R перебирают все команды в истории с этим словом.
                                                                        2. CTRL+L — очистка экрана. Я обычно писал набирал clear [enter]> для этого.
                                                                        3. CTRL+A — замена HOME, CTRL+E — end
                                                                        4. CTRL+U — удаление текста от курсора до начала строки, CTRL+K — удаление от курсора до конца строки, CTRL+Y — вставить удаленный предыдущими примерами кусок текста, CTRL+C — удаление всей строки (обычно работает как отмена команды).
                                                                        5. CTRL+T — меняет местами символ под курсором и предыдущий набранный (при опечатке вида /dev/dsa вместо /dev/sda)
                                                                        6. ^^ — нет это не смайлик. После попытки выполнить команду, набранную с ошибкой, строка вида ^ошибка^правильно запустит на выполнение исправленную команду.
                                                                        7. # — если вместо набранной команды надо сначала выполнить другую, можно закомментировать строку и нажать [enter], впоследствии вернуться к команде в истории, раскомментировать и выполнить.
                                                                        8. ALT+. — подставляет к текущей команде аргумент предыдущей. Например, чтобы после команды ls [длинный путь] не набирать этот путь для перехода в директорию, можно набрать cd + «Alt+.» + «ENTER»
                                                                        9. Добавляем в ~/.inputrc строчки:
                                                                          "\e[A": history-search-backward
                                                                          "\e[B": history-search-forward

                                                                          Теперь для поиска команды в истории достаточно ввести первые буквы и перебирать варианты стрелками вверх/вниз.
                                                                        10. sudo !! — выполнить предыдущую команду через sudo.


                                                                        Работу с хистори и настройка окружения (для постоянного использования добавить в .bashrc)

                                                                        1. Ведение лога истории с datestamp'ом:
                                                                        export HISTTIMEFORMAT='%F %T '

                                                                        2. Занесение команды в .bash_history сразу же, после нажатия enter (а не после завершения сеанса), что весьма удобно при одновременной работе в нескольких сессиях:
                                                                        PROMPT_COMMAND='history -a;history -n'

                                                                        3. Удобная настройка PS1 (чтобы было видно и юзера/хост и желательно дату и время [у меня некоторые сессии висят неделями])
                                                                        export PS1='\033[00;32m\][`date +%d" "%h" "%Y" "%T`] \u@\h \w\n \$\[\033[00m\] '

                                                                        4. Увеличение размера хистори (при активной работе 500 — это очень мало)
                                                                        export HISTSIZE=100500

                                                                        5. Говорим башу не заносить в хистори повторяющиеся друг за другом команды:
                                                                        export HISTCONTROL=ignoredups

                                                                        6. Отключаем занесение «бесполезных» с точки зрения истории команд:
                                                                        export HISTIGNORE="&:ls:[bf]g:exit:[ ]*:ssh:history"

                                                                        7. Используем «сокращения» для популярных комманд:
                                                                        alias u='sudo pacman -Syu'
                                                                        alias extmonitor='xrandr --output VGA1 --auto --primary && xrandr --rate 72 && xrandr --output LVDS1 --off'
                                                                        alias intmonitor='xrandr --output LVDS1 --auto --primary && xrandr --output VGA1 --off'
                                                                          +2
                                                                          А подскажите, для виндовых «мигрантов», как из консоли открыть файл в ассоциированной программе. В винде было удобно, набираешь file.pdf и все. А тут как?

                                                                          Ubuntu 10.04 + Gnome, если это важно.
                                                                            +1
                                                                            $ xdg-open filename
                                                                              +3
                                                                              Можно дописать в .bashrc
                                                                              alias x=«xdg-open»

                                                                              Получаем
                                                                              $ x %f
                                                                              чтобы вызвать файл под курсором в mc
                                                                              $ x.
                                                                              чтобы открыть папку, в которой находишься
                                                                                +1
                                                                                Спасибо, так и сделал. Только в .bashrc в комментах советуют алиасы кидать в .bash_aliases, добавил туда.
                                                                            +1
                                                                            Топик добавления комментариев в избранное [x]
                                                                              +1
                                                                              Делал pdf-шпаргалку с клавиатурными сочетаниями bash. Страница на github'e.
                                                                              • UFO just landed and posted this here
                                                                                +1
                                                                                Вот если бы еще все трюки из комментариев (допустим, из заплюсованных) скопировать в тело статьи…
                                                                                  0
                                                                                  многие сочетания клавиш, например Ctrl+A и Ctrl+E не работают в screen по умолчанию, т.к. перекрываются дефолтные сочетаниями вроде Ctrl+A+A.
                                                                                  Возможно ли включить стандартные сочетания в screen?
                                                                                    0
                                                                                    man screen: C-a a.
                                                                                    Т.е. Ctrl-a,a пошлет в консоль Ctrl-a.

                                                                                    по опции -e можно указать иную управляющую escape последовательность.

                                                                                    Ctrl-e у меня в screen работает.
                                                                                    0
                                                                                    Странно что не указали Alt-f и Alt-b — движение курсора вправо/влево по словам.

                                                                                    Only users with full accounts can post comments. Log in, please.