Интерфейс командной строки — это альфа и омега для большинства технарей, особенно для разработчиков и сисадминов. Чем бы вы ни занимались — скриптами, конфигурацией серверов или автоматизацией задач, — команды Linux сэкономят вам часы рабочего времени. Но если только вы умеете грамотно с ними обращаться.

Поначалу Linux многих обескураживает, но как только вы разберётесь с интерфейсом командной строки (CLI), вы поймёте, что это лучший друг программиста. Простые, но эффективные команды Linux могут заметно улучшить любые рабочие процессы — от навигации по каталогам до манипуляции с файлами и даже исправления ошибок.

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

Создаём несколько папок с помощью mkdir и скобок {}

Разработчикам часто приходится организовывать файлы и каталоги, особенно при управлении проектом или настройке структуры со сложными каталогами. Обычно для создания нескольких каталогов нужно набирать много однотипных названий. Но есть мощный приём: с помощью команды mkdir и скобок {} можно одним махом создать несколько каталогов.

В чём проблема

Скажем, по проекту вам нужно создать структуру папок для разных сред (разработка, тестирование и продакшн) для нескольких сервисов. Вот как это выглядит, когда по привычке вы делаете это вручную:

mkdir dev
mkdir test
mkdir prod

Чем сложнее становится структура, тем утомительнее эта задача. Например, если вам нужны папки для backend и frontend сервисов во всех трёх средах, задача становится ещё сложнее.

Решение: mkdir со скобками {}

Вместо того чтобы создавать каталог за каталогом по отдельности, можно объединить всё это в одну команду, применив mkdir и скобки {}. Это гораздо эффективнее, потому что создаёт сразу дерево директорий.

Например:

mkdir -p {dev,test,prod}/{backend,frontend}

Давайте разберём этот код:

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

  • Фигурные скобки {} позволяют указать несколько опций, которые автоматически сочетаются друг с другом в команде mkdir.

  • Первый сет {dev,test,prod} создаёт каталоги для разных сред.

  • Второй сет {backend,frontend} — каталоги для разных сервисов.

Что под капотом

При выполнении этой команды создаётся следующая структура папок:

dev/
  backend/
  frontend/
test/
  backend/
  frontend/
prod/
  backend/
  frontend/

В чём хитрость

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

Возвращаемся назад с помощью cd -, а не повторяем команду cd ..

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

В чём проблема

Представьте, что вы работаете во вложенном каталоге:

/home/user/projects/webapp/src/frontend/components

Чтобы вернуться в корневой каталог проекта, обычно приходится несколько раз вводить cd ..:

cd ..
cd ..
cd ..
cd ..

Целых четыре команды, чтобы просто вернуться в /home/user/projects/. Согласитесь, это утомительно, и можно элементарно сбиться со счёта.

Решение: cd -

Есть простая и быстрая альтернатива — команда cd -. Она мгновенно возвращает в предыдущий каталог, как бы глубоко вы ни спустились по вложенной структуре.

Как это работает

Команда cd - не переходит вверх по дереву каталога, как команда cd ... По ней вы возвращаетесь в последний каталог, в котором были. Это почти как кнопка «Назад» в браузере.

Допустим, вы начали с корневого каталога проекта /home/user/projects/webapp/ и перешли во вложенный каталог /home/user/projects/webapp/src/frontend/components. А потом несколько раз набрали cd ... Но можно вернуться назад, просто напечатав:

cd -

И вы тут же попадаете в /home/user/projects/webapp/.

Что под капотом

Команда cd - запоминает предыдущий каталог, так что она быстро перекидывает вас из актуального каталога в предыдущий. Очень удобно перемещаться между двумя каталогами, особенно когда перепрыгиваешь между рабочим и глубоко вложенным каталогом.

Как это применять на практике

Этот приём особенно полезен, когда вы занимаетесь отладкой или переходите из одной части проекта в другую и обратно. Если вам нужно часто переключаться между корневым каталогом и глубоко вложенным подкаталогом, cd - избавляет от необходимости печатать длинный путь к файлу или пробираться в нужный каталог шаг за шагом.

Быстро создаём несколько файлов с помощью touch и диапазона чисел

Разработчикам часто приходится создавать несколько файлов, например, когда они генерируют тестовые файлы, плейсхолдеры или логи. Создать один файл недолго, а вот создавать файл за файлом довольно нудно. К счастью, в Linux можно создавать несколько файлов с помощью одной команды touch и диапазона чисел в скобках {}.

В чём проблема

Допустим, вам нужно создать 100 нумерованных файлов для серии тестовых сценариев: test1.txt, test2.txt, и так до test100.txt. Если делать это вручную с помощью отдельных команд touch, весь процесс будет выглядеть примерно так:

touch test1.txt
touch test2.txt
touch test3.txt
...
touch test100.txt

Конечно, это долго и утомительно. Но есть способ быстрее.

Решение: touch с диапазоном чисел и скобками {}

Чтобы одним махом создать много файлов, применяйте команду touch с диапазоном чисел в скобках {}. Вот как это работает:

touch test{1..100}.txt

Что под капотом

  • Для создания новых файлов используется команда touch. Обычно мы применяем её следующим образом: touch filename.txt.

  • Добавляя в скобки числовой диапазон {1..100}, вы даёте командному интерпретатору Shell задачу, что нужно создать файлы с номером от 1 до 100.

  • В результате с помощью одной команды создаются файлы test1.txt, test2.txt, test3.txt вплоть до test100.txt.

Пример

Давайте разберёмся. Выполняем команду:

touch test{1..10}.txt

В каталоге создаются следующие файлы:

test1.txt
test2.txt
test3.txt
...
test10.txt

В чём хитрость

Этот метод позволяет мгновенно генерировать несколько файлов, а не создавать их вручную один за другим. Больше всего это подходит для сценариев, когда для тестирования или ведения логов нужны файлы-плейсхолдеры, или выполняется автоматизация процессов, для которых на входе нужно много файлов.

Как это применять на практике

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

Обновление файлов в реальном времени с помощью команды tail -f

Программисты часто имеют дело с логами, особенно если они специализируются на бэкенд-системах. Опираясь на данные из логов, разработчики ищут ошибки, анализируют поведение системы или занимаются отладкой. В этом случае неэффективно снова и снова перебирать логи вручную. К счастью, команда tail в реальном времени автоматически следит за обновлениями, показывая только что произошедшие изменения.

В чём проблема

Допустим, вы работаете над приложением, и вам нужно отслеживать новые ошибки, которые заносятся в лог error_file.log. Обычно для чтения последних нескольких строк файла используется команда tail:

tail error_file.log

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

Решение: tail -f отслеживает обновления в реальном времени

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

tail -f error_file.log

Как это работает

  • Команда tail показывает последние 10 строк файла.

  • Параметр -f означает follow — в этом случае терминал остаётся открытым и непрерывно показывает новые строки файла по мере их появления.

Это особенно полезно при мониторинге лога во время выполнения приложения, поскольку сообщения об ошибках или результаты работы можно видеть в реальном времени.

Пример

Скажем, вы следите за входящими запросами и ошибками в логе веб-сервера:

tail -f /var/log/nginx/access.log

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

Как это применять на практике

Команду tail -f очень удобно применять во время отладки. Представьте, что вы пытаетесь найти причину периодически возникающей проблемы в приложении. Отслеживая в реальном времени лог с ошибками, можно сразу же заметить сообщения об ошибках и безотлагательно принять меры.

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

tail -f /var/log/app/error.log

В случае сбоя в приложении вы сразу же увидите всплывающее сообщение об ошибке и сможете быстро всё починить.

Лайфхак: объедините tail -f с grep

Если вы хотите следить за логом в реальном времени, но вас интересуют только отдельные записи, можно объединить tail -f с grep. Например:

tail -f error_file.log | grep "ERROR"

Эта команда показывает только строки со словом ERROR: таким образом вы отфильтруете в результатах лога нужную информацию.

Просматриваем недавние команды с помощью history 5

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

На радость нам Linux отслеживает каждую команду в течение сессии. Команда history показывает список выполненных команд, и с её помощью можно сэкономить силы и время.

В чём проблема

Допустим, вы уже не первый час работаете и выполняли сложную команду grep или find. И знаете, что вам нужно будет использовать её несколько раз. Трудно запомнить точный синтаксис, так что приходится тратить время, вручную выискивая его в терминале.

Решение: history 5, запоминающая последние команды

Команда history показывает список команд, выполненных ранее в текущей сессии Shell. По умолчанию она показывает историю всех команд, но число отображаемых команд можно ограничить.

Например:

history 5

Эта команда покажет пять последних выполненных вами команд, если вам понадобится их быстро найти и повторить.

Как это работает

  • history сама по себе выводит всю историю команд за сессию.

  • Если добавить число (например, history 5), вы ограничите список пятью командами и сможете сосредоточиться на последних задачах, с которыми работаете.

Например, если пять последних команд — это:

  123  ls
  124  cd src/
  125  mkdir newdir
  126  touch newfile.txt
  127  history 5

После выполнения команды history 5 вы увидите:

  123  ls
  124  cd src/
  125  mkdir newdir
  126  touch newfile.txt
  127  history 5

Чем полезен этот приём

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

Как это применять на практике

Скажем, вы занимаетесь отладкой программы и выполняете несколько разных команд для компиляции, проверки логов и перезапуска сервиса. Теперь вам не нужно запоминать каждую команду или скроллить обратно в терминале до нужного места. Можно просто выполнить команду:

history 5

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

Лайфхак: повторное выполнение команд

Можно быстро повторить любую команду из истории с помощью восклицательного знака (!), после которого стоит номер команды. Например, чтобы выполнить команду mkdir newdir выше (под номером 125), надо просто напечатать:

!125

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

Выжимка: пять команд Linux для оптимизации рабочего процесса

  • mkdir со скобками одним махом создаёт несколько папок.

  • cd - быстро возвращается в предыдущий каталог.

  • touch с диапазоном чисел создаёт несколько файлов одновременно.

  • tail -f позволяет в реальном времени отслеживать изменения в логах.

  • history 5 вызывает последние команды для повторного выполнения.

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

Или открыть перспективы и получить повышение с профессиональным обучением:

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


  1. JonikCX
    27.12.2024 07:36

    chatgpt, напиши статью про 5 полезных команд в linux.


  1. Volkodlak
    27.12.2024 07:36

    Какие ж это хитрости, это база


    1. astenix
      27.12.2024 07:36

      Это хитрая база хитрости


    1. adeshere
      27.12.2024 07:36

      Да, это база... но я вот живу в Винде, и навскидку не назову аналоги этих команд. Кроме разве что cd \ в корень или стрелочек для пролистывания истории. Когда мне надо сделать что-то выходящее за рамки файл-менеджера, я пишу bat-ник, а затем в редакторе размножаю и правлю "тупые" команды. Все лучше, чем набирать их вручную.. однако я бы не отказался от подобной "шпаргалки для чайников". Когда комстрока нужна раз в два месяца, курить справку впрок не слишком-то продуктивно (все равно все забудешь). Если же она вдруг срочно понадобилась, проще обычно использовать привычные инструменты, чем гуглить что-то более оптимальное. И вот в этот момент такая заметка-ликбез в закладках вполне может оказаться не лишней. Например, несмотря на массу материалов по регуляркам (которых я тоже не знаю, т.к. они мне нужны раз в полгода), я обращаюсь за справкой не к поисковым системам, а к прочитанным ранее хабростатьям.

      Поэтому я бы не стал ругаться на такие заметки. И особенно на комменты с полезными дополнениями. Хотя систематизация материала в статье и его полнота, с моей точки зрения чайника, все-таки явно не идеальны. Даже какой-то диссонанс с названием возникает...


      1. bolk
        27.12.2024 07:36

        В винде есть прекрасный PowerShell.


      1. chesser69
        27.12.2024 07:36

        Смотрите в сторону powershell. Много ресурсов с хитростями


      1. feelamee
        27.12.2024 07:36

        кроме "прекрасного" powershell из комментариев выше, есть например nushell.

        Очень неплох, хотя до fish по дружелюбности не дотягивает


      1. saboteur_kiev
        27.12.2024 07:36

        Да, это база... но я вот живу в Винде

        Лайвхак:
        ставишь git for windows, и получаешь рабочий git-bash и рабочие shell скрипты.
        Или вообще запускаешь WSL и там скрипты еще и работают почти также по перформансу.

        Заметки бездарные, потому что это блин ну вообще первичная основа.
        Проблема винды в том, что изначально она не разрабатывала командную строку вообще, а bat/cmd был просто ужасно простой по сравнению со всеми другими консольными оболочками тех лет.
        А потом резко перешла на обратно несовместимый монструозный powershell.
        В результате нет истории наработок за 30-40-50 лет, как в shell


    1. chv
      27.12.2024 07:36

      Особенно нереальный лайфхак про history 5, у вас что, кнопку вверх забанили?


  1. Ergistael
    27.12.2024 07:36

    cd -
    bash: cd: Не задана переменная OLDPWD


    1. mavir
      27.12.2024 07:36

      Очевидно, что Вы еще в текущей сессии не переходили в другой каталог


      1. Ergistael
        27.12.2024 07:36

        Да, действительно, спасибо. Правда, ценность этой команды для меня все равно сомнительна: если я перехожу в каталог не "прыжком", а последовательно, то "cd -" ведет себя аналогично "cd ..". Возможно, это полезно для переключения между двуме ветками.


        1. bogolt
          27.12.2024 07:36

          Между ветками тоже работает

          git branch

          prod

          git checkout test1

          git checkout -


        1. JBFW
          27.12.2024 07:36

          Есть еще замечательная кнопка TAB:

          cd pro-TAB-jects/wo-TAB-rk_directory/-TAB-[images,scripts]-i-TAB-mages/....

          И в одну команду переходите куда надо. А потом возвращаетесь в одну команду.


        1. ABATAPA
          27.12.2024 07:36

          pushd/popd


  1. artptr86
    27.12.2024 07:36

    Моя жизнь осталась прежней


    1. MAXH0
      27.12.2024 07:36

      Попробуйте dd if=/dev/zero of=/dev/sda bs=512 count=1 для полноты ощущений ;)


      1. RedEyedAnonymous
        27.12.2024 07:36

        Вспомнился древний 128-байтовый троян времён DOS, зацикливавший таблицу разделов.


      1. Sly_tom_cat
        27.12.2024 07:36

        /dev/sda not found

        Сейчас актуальнее /dev/nvme0n1


        1. artptr86
          27.12.2024 07:36

          /dev/disk0 :)


        1. A_L_I_E_N
          27.12.2024 07:36

          Скрытый текст


      1. SquareRootOfZero
        27.12.2024 07:36

        (занеся палец над Enter) А чо будет-то?...


        1. Wesha
          27.12.2024 07:36

          Да ничего в принципе страшного, MBR сейчас не особо-то и нужен. Вот если бы bs=512M ...


  1. mavir
    27.12.2024 07:36

    Просмотр логов с -f лучше запускать с флагом -n0, чтобы не показывало последних 10 строк

    tail -fn0 error_file.log


  1. viteo
    27.12.2024 07:36

    нужно вводить тег "нейросетевая статья"
    и добавлять его в черный список


    1. kokanov
      27.12.2024 07:36

      А как вы понимаете, что это нейросетнвая статья? (На всякий случай, с автором статьи я ни как не связан. Просто ML инженер)


      1. bogolt
        27.12.2024 07:36

        1. Уровень человека увидевшего линукс впервые.

        2. Есть два варианта. или вы каждый день создаете вложенные папки и тогда вы давно уже знаете как это делать ( написал свой скрипт, разобрались в баше, что вам угодно ) либо вам эта задача не нужна вовсе ( а один раз в год можно сделать руками допустим ).

        3. Заголовок уровня бульварных газет, контент уровня "я выучил команду man".

        4. Что общего у этих команд ( опций). Почему именно их объединили вместе? Почему бы не сказать "пиши скрипт на любую задачу и твоя жизнь не станет прежней"? или там "Устройся менеджером и тебе не придется заниматься вот этим всем"? или "переходи на винду и делай все мышкой"


        1. astenix
          27.12.2024 07:36

          Больше похоже на урок «Все основы Linux» из курса «”Что-то там компьютерное” для тестировщиков».


        1. Astroscope
          27.12.2024 07:36

          "я выучил команду man"

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


        1. Wesha
          27.12.2024 07:36

          Как узнать, что этот комментарий написан человеком?

          • Типичные ошибки пятиклассника с тройкой по русскому (в частности, пунктуация)

          • Типографика ни в Красную Армию (пробелы вокруг скобок, новое предложение не с загалавной и т.п.)

          серьёзно. Я пока ещё не видел вывода LLM, в котором был бы правдоподобно имитировано безграмотное написание. Если её просят, то она вносит ошибки рандомно, а не логично с точки зрения двоечника.)


          1. AlexXYZ
            27.12.2024 07:36

            а не логично с точки зрения двоечника

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


          1. SquareRootOfZero
            27.12.2024 07:36

            логично с точки зрения двоечника

            А какова логика с точки зрения двоечника? Я специальных наблюдений не вёл, но на первый-второй взгляд, там какой-то псевдо-рандом.


      1. bogolt
        27.12.2024 07:36

        То есть предположим человек бы рассказал "Смарите пацаны, есть короче zsh и там все в разы удобнее чем в баше", ну ок.

        Или хотябы рассказал про Ctrl-R обратный поиск команды. Но рассказывать про history и обещать что это изменит чью-то жизнь это ну совсем слабо. Поэтому ну конечно может и нейросетевая а просто очень низкий уровень, который сейчас привычно ассоциировать с нейросетевыми сборниками бесполезных советов.


      1. viteo
        27.12.2024 07:36

        1. группировка по шаблону, который будто бы прямо из промта (в чем проблема, что под капотом, пример, как это работает - и так пять раз)

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

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

        вы сами мне честно ответьте, ниужели у вас не возникло ощущения?


      1. Spyman
        27.12.2024 07:36

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

        Ну просто в "пример", "что под капотом", "решение" и "применение" (или че там 4) - прям одно и тоже. Да и не будет человек трижды распсавший что touch... сгенерирует диапазон файлов писать это в 4 раз в отдельном блоке.

        Напомнило моего препода из универа, который перемножал матрицы 4х4 у доски проговаривая каждую операцию "... 3 элемент второй строки умножаем на 2 элемент третьей строки... 4 элемент второй строкт умножаем на 2 элемент 4 строки..."


    1. ZaeBest
      27.12.2024 07:36

      Плюсую, должны быть бейджи human generated content, human/AI generated content.


    1. Angry_Bel
      27.12.2024 07:36

      Я сначала написал комментарий, а потом почитал остальные.

      А ведь похоже, очень похоже. Что нибудь из разряда 4о


    1. 3vi1_0n3
      27.12.2024 07:36

      Судя по всему, это перевод


  1. 3vi1_0n3
    27.12.2024 07:36

    Скобки "{}" это глоббинг в баше, так что пример с директориями и touch это просто два примера одного и того же. Раскрытие таких скобок происходит до передачи команды на выполнение.

    "!125" - man history, там есть другие приколюхи типа поиска в истории по "!?подстрока", который может быть быстрее, чем искать команду глазами в истории. Также man bash описывает некоторые операции с историей команд, например "history -c" для очистки истории команд.

    Команда cd при смене директории устанавливает переменную окружения OLDPWD, и если параметр это "-", он заменяется на значение переменной OLDPWD до передачи на выполнение. Ну и можно было описать pushd и popd, раз уж разговор зашел про навигацию по директориям.

    Всё выше напрямую связано с bash и описывается практически во всех руководствах как база по работе в командной оболочке. Статья прям для совсем начинающих. Можно было бы заодно упомянуть как "|" работает, если так.

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


    1. 411
      27.12.2024 07:36

      Ещё бы статью как многие башизмы реализовывать в POSIX шелле.


      1. 3vi1_0n3
        27.12.2024 07:36

        Мысль интересная, спасибо. Я к ней вернусь позже, сейчас пишу маленький фреймворк для баша без вызова внешних команд, чтоб минимизировать внешние вызовы и максимизировать использование того, что там уже есть. Займет некоторое время.


      1. saboteur_kiev
        27.12.2024 07:36

        через sed/awk/bc же =)


    1. JBFW
      27.12.2024 07:36

      вы не поверите, какое количество "специалистов по поддержке ПО на Unix системах" не знает что делает команда ls ~/bin


      1. Wesha
        27.12.2024 07:36

        не знает что делает команда ls ~/bin

        Выдаёт ошибку, конечно же! /s

        (если в домике у пользователя нет каталога bin — а он по умолчанию не создаётся...)


    1. firnind
      27.12.2024 07:36

      Спасибо, не знал про поиск по истории, всегда делал history | grep что_нужно


      1. LexiusGaiden
        27.12.2024 07:36

        А ctrl+R?


      1. AdVv
        27.12.2024 07:36

        Пропишите в ~/.inputrc:

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

        После чего набрав в терминале первые буквы команды вы сможете осуществлять поиск в истории команд, которые начинались с этих символов.

        Т.е. набрав cp и нажав стрелку вверх, вы получите предыдущий cp, который запускался в терминале, за ним еще и еще. Стрелкой вниз можно листать обратно.


    1. Spyman
      27.12.2024 07:36

      Коммент который лучше статьи)


  1. AndronNSK
    27.12.2024 07:36

    А что мне потом делать с этим чудовищным количеством времени (3 секунды в неделю), которое я экономлю на cd или mkdir?


    1. kuzzdra
      27.12.2024 07:36

      Ну статью же написать! ;)


      1. Wesha
        27.12.2024 07:36

        И вволю посраться в комментах под ней!


  1. evgenyk
    27.12.2024 07:36

    Спасибо, все знал, кроме фишки с touch {1..10}, давно хотел такое. Оказывается работает и {01..10}. Супер!


    1. saboteur_kiev
      27.12.2024 07:36

      Попробуй еще echo {user,server}{{a..c},{x..z}}


  1. NotSlow
    27.12.2024 07:36

    еще накину мелочи:

    cd без параметров перекинет в домашний каталог

    история комманд хранится в ~/.bash_history (на случай если вам надо что-то не из недавнего, а старое найти)

    видеть обновления файлов в реальном времени можно еще в mc - открыть по f3 файл, нажать и держать end


    1. Wesha
      27.12.2024 07:36

      история комманд хранится в ~/.bash_history

      (ехидно:) А нет у меня такого файла!

      (а вот .tcshrc — есть!)


  1. Staschik
    27.12.2024 07:36

    Иногда почитываю сайт там много подобных хитростей


  1. a1111exe
    27.12.2024 07:36

    Это хитрости, меняющие жизнь? :) Думал прочитать что-нибудь интересное о find, xargs, grep, perl, sed, awk, cut, tr, paste, comm, jq, inotifywatch, strace, screen, в таком духе..


  1. Derevtso
    27.12.2024 07:36

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

    Вообще, я больше к Windows привык, но постоянно на любой работе сталкивался с линуксами - RedHat, Ubuntu, CentOS, Debian, и прочие, время от времени, пишутся какие-то скрипты, докерфайлы, всё такое. Да и на домашних ноутах часто Manjaro ставлю, оно удобное.

    И, увидев пару вещей из этой статьи, я буквально, обомлел: "А что, так можно было?" Спасибо авторам подобных статей: на какие-то плюшки если ты случайно не наткнулся, то так и будешь всю жизнь как дурак.

    Ну не учил я man всех системных функций наизусть. (

    PS: обычно для просмотра обновления логов пользовался watch ... tail


  1. Borelli
    27.12.2024 07:36

    В tail -f можно сразу за несколькими логами следить, команда будет выводить перед каждым блоком новых данных имя файла. Удобно, если отладка требует отслеживать и лог ошибок и специфичный лог:

    tail -f app.log error.log custom_feature.log


  1. DaneSoul
    27.12.2024 07:36

    Чтобы вернуться в корневой каталог проекта, обычно приходится несколько раз вводить cd ..:

    cd ..
    cd ..
    cd ..
    cd ..

    Можно выразить в одной команде:

    cd ../../../../


  1. Aromad
    27.12.2024 07:36

    Ещё надо было написать про опции -A, -B и -С для grep-а


  1. Angry_Bel
    27.12.2024 07:36

    Я брюзжу, но поехали.

    cd - будет работать если вы вводили цельный путь (что логично). А если я шел шаг за шагом, то толку от этого. Это вернёт на уровень ниже. Откровение. cd ~ или cd / и то полезнее, там не нужно думать куда тебя перенесет, ты знаешь конченый результат. Можно и пару назад а одной команде, которым я пользуюсь через ../../../

    history - я надеюсь что вы не в серьез, а просто угораете. Ибо перебирать последние 25-50команд в поисках той самой вместо ctrl(cmd) +r и начинать вводить команду - это прям решение. Если мне нужна 3-5 по списку из недавних то банально стрелка вверх помогает.

    Вы всерьез это используете, и ещё что-то экономите на этом? И не секунды/минуты, а прям время?

    Я прокрастинирую больше, чем сэкономлю на командах


    1. N1X
      27.12.2024 07:36

      cd - будет работать если вы вводили цельный путь (что логично).

      Ну я порой так делаю. Удобно когда нужно несколько раз скакнуть туда/сюда чтобы посмотреть какой-то файл. Но целый путь к часто используемому каталогу стараюсь вбить, чтобы переход отбился в истории и потом можно быстренько было сделать Ctrl+R по этому пути... В принципе с этой связкой получается довольно удобно, но в любом случае это вкусовщина )


  1. a_guzarev
    27.12.2024 07:36

    При ротации логов "tail -f" перестанет отслеживать изменения в файле. Чтобы tail продолжал отслеживать лог после ротации, нужно использовать опцию "-F":

    tail -F some.log


  1. chesser69
    27.12.2024 07:36

    ИМХО, детский сад, потому что гуглится очень быстро. Скажем, я в bash нулевой, но скрипт по поиску в текущей версии папки проектов Гита быстро переписал на поиск по всем веткам. Такое должен уметь делать любой разраб если хочет долго оставаться в профессии.


  1. feelamee
    27.12.2024 07:36

    `man` - вот что изменит вашу жизнь)

    Для начала попробуйте `man man`


    1. saboteur_kiev
      27.12.2024 07:36

      "настоящий мужик начинает каждую команду с обращения man"


  1. DrMefistO
    27.12.2024 07:36

    Самый явный аргумент в пользу нейросетёвости статьи: это заголовок "Просматриваем недавние команды с помощью history 5". И дальше текст в это разделе, который будто кроме 5 ничего не знает.


  1. Apokalepsis
    27.12.2024 07:36

    Мне кажется `| grep` сильно полезнее чем `cd -`


  1. AnyKey80lvl
    27.12.2024 07:36

    >"Команда cd - запоминает предыдущий каталог"
    Как эта чушь попала на главную? Куда команда cd это запоминает?

    Для меня самым полезным знанием о bash стали шорткаты Ctrl-R и Alt-. Вот они сильно изменили стиль и увеличили эффективность.

    Ещё лайфак - стараюсь делать cd всегда по абсолютным путям. Вместо cd ../myanotherrepo - cd ~/git/myanotherepo. Так это можно достать из истории по Ctrl-R и быстро попасть в нужное место независимо от текущей директории.


  1. AdVv
    27.12.2024 07:36

    Ну как без коронки про "!!", вместо которых подставляется последняя запущенная команда ?

    Когда забыл "sudo", и как царь "sudo !!"


    1. saboteur_kiev
      27.12.2024 07:36

      если что-то забыл в длинной строке, то можно так

      $ cho hello
      Command 'cho' not found
      $ ^cho^echo^
      echo hello
      hello


  1. qandak
    27.12.2024 07:36

    touch можно передать и существующие файлы, обновляются только временные метки (тут внезапно раскрывается смысл названия команды).