• Главная
  • Контакты
Подписаться:
  • Twitter
  • Facebook
  • RSS
  • VK
  • PushAll
logo

logo

  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • За год
    • Положительные
    • Отрицательные
  • Сортировка
    • По дате (возр)
    • По дате (убыв)
    • По рейтингу (возр)
    • По рейтингу (убыв)
    • По комментам (возр)
    • По комментам (убыв)
    • По просмотрам (возр)
    • По просмотрам (убыв)
Главная
  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • Главная
  • 10 мини-лайфхаков в Bash

10 мини-лайфхаков в Bash +15

23.04.2017 19:07
Zorinoid 21 14500 Источник
*nix*
1. Чтобы быстро скопировать/переименовать файл с длинным именем, можно набрать:

cp /home/user1/myfile123456789.txt{,-new}

и обратно:

cp /home/user1/myfile123456789.txt{-new,}

2. Бесполезная, но прикольная форк-бомба (правда, не сработает, если у Вас задан ulimit для количества процессов):

:(){ :|:& };:

3. Эмулятор сетевого принтера на локальном компьютере:

nc -l -p 9100 > job.prn

4. Простейшее нагрузочное тестирование веб-сайта:

for i in {1..1000}; do echo ya.ru; done | xargs -P 20 wget &>/dev/null

5. Удобочитаемый вывод команды mount:

mount | column -t

6. SSH туннель с локального порта 7777 на удаленный порт 8888 на сервере myserver.com:

ssh -fN user@myserver.com -L 7777:myserver.com:8888

7. Вывести случайное число от 0 до 32767:

echo $RANDOM

8. Выполнить в консоли команды из текстового файла:

source ./commands.txt

9. Создать случайный пароль:

openssl rand -base64 8

10. Защита от одновременного запуска нескольких копий скрипта:

flock -n /tmp/lock.txt -c "/home/user1/test.sh > test.log"

На этом пока все, удачных экспериментов в командной строке!
Поделиться с друзьями
-->

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


  1. Jogger
    23.04.2017 22:44
    #10187752
    +9

    И это что, статья? Надо хотя бы объяснять, что значат какие параметры. А то какой-то бессистемный набор «заклинаний» получается.


    1. ploop
      23.04.2017 22:49
      #10187756
      +12

      Согласен — «делай так и будет щастье!!!111» никогда не нравилось. Даже если находил такие решения — приходилось по ним гуглить/манить/доки читать. А то так недалеко и rm -rf скопипастить от какого-нибудь приколиста.


  1. 776166
    23.04.2017 23:00
    #10187766
    +3

    Слово «лайфхак» в названии понижает уровень материала на 3 порядка.


  1. amarao
    24.04.2017 03:23
    #10187894
    +3

    Пытаюсь понять чью жизнь вы взламываете. Свою? Читателя?


  1. mikkisse
    24.04.2017 09:11
    #10188028
    +8

    Похоже, что астрологи объявили месяц статей о bash на Хабре. Количество гневных комментариев увеличилось вдвое.


  1. redfs
    24.04.2017 11:02
    #10188194
    +6

    Из 10 пунктов примерно 8.5 никакого отношения к bash не имеют. Думаю, что автору надо переименовать статью в «Моя записная книжка».


    1. RPG
      24.04.2017 23:51
      #10189440

      У меня такая же есть на 32 Кб, всё думаю, может и правда сделать заметку "во что превратился мой .bashrc"?:)


  1. ubobrov
    24.04.2017 12:54
    #10188404
    -2

    Пусть это и не статья, но для себя полезное я нашёл.


  1. inkvizitor68sl
    24.04.2017 12:56
    #10188408
    +4

    Да оставили бы просто ссылку на https://www.commandlinefu.com/commands/browse


  1. CaptainFlint
    24.04.2017 13:24
    #10188472
    +2

    mount | column -t
    
    findmnt удобнее.

    source ./commands.txt
    
    Вместо source можно использовать просто точку:
    . ./commands.txt
    


    1. ghostinushanka
      25.04.2017 00:28
      #10189472

      Всем юниорам/эникеям бью по рукам за «точку» и заставляю писать source. Читаемость и восприятие возрастает на порядок. Проверено годами практики — иногда излишняя краткость во вред, особенно учитывая что в баш скриптах подгрузка «библиотек» используется редко и мало (ну а если надо много подгружать и функционал расширять — Python/Ruby/Perl на выбор).


      1. RPG
        25.04.2017 00:38
        #10189480

        .(){ bash -e "$1";}

        Подарите джуниорам бесценные часы отладки:) Можно добавить более весёлую шутку на свой вкус.


      1. CaptainFlint
        25.04.2017 01:52
        #10189520

        Баш не только для долговременных скриптов используется. Там, где важна поддержка, предпочтительнее читабельность. А для командной строки и разовых скриптов краткость здорово экономит время. Вы же не будете в командной строке каждый раз вбивать ls -l --almost-all --human-readable --recursive вместо ls -lAhR.


  1. icCE
    24.04.2017 13:50
    #10188506

    Вспомнилось

    dd if=/dev/zero of=/dev/null?

    или

    cat /dev/urandom | gzip > /dev/null

    Еще так

    tail /dev/urandom | cat — | grep something


  1. ALexhha
    24.04.2017 13:57
    #10188520
    +1

    Выполнить в консоли команды из текстового файла:
    source ./commands.txt

    а вы при этом знаете, в чем будет отличие от bash ./commands.txt?

    Простейшее нагрузочное тестирование веб-сайта:

    серьезно? А чем вас не устроил ab?


    1. kmeaw
      24.04.2017 23:33
      #10189414

      а вы при этом знаете, в чем будет отличие от bash ./commands.txt?

      В том, что команды будут выполнены в том же окружении, будто их ввели прямо в этот шелл с клавиатуры; bash ./commands.txt, напротив, запустит новый процесс:

      $ foo() { echo This is function foo.; }
      $ cat commands.txt
      foo
      $ source ./commands.txt
      This is function foo.
      $ bash ./commands.txt
      ./commands.txt: line 1: foo: command not found


      1. ALexhha
        25.04.2017 13:29
        #10190184

        что команды будут выполнены в том же окружении

        только не окружении, а сессии. И стоило бы указывать этот момент. Ибо «Выполнить в консоли команды из текстового файла» мало о чем говорят


    1. RPG
      24.04.2017 23:46
      #10189436

      а вы при этом знаете, в чем будет отличие от bash ./commands.txt?

      лишний раз subshell не будет запускаться (вдруг и правда кому-то нужно)


      серьезно? А чем вас не устроил ab?

      тоже хотел узнать, что может быть проще ab, к тому же предлагаемый вариант ужасен — wget намусорит файлами вида index.html.*


      И если уж на то пошло, сильно укоротить можно: seq 1000 | xargs -I{} -P20 wget -qO/dev/null ya.ru (да простит нас Яндекс)


  1. iassasin
    24.04.2017 14:44
    #10188626

    Поясните, пожалуйста, как работает форк-бомба из пункта 2?


    1. grossws
      24.04.2017 15:04
      #10188678
      +1

      Объявляется функция :, которая вызывает два своих экземпляра (команды через pipe запускаются параллельно) в фоне. Далее (после точки с запятой) вызывается функция :.


      1. iassasin
        24.04.2017 15:26
        #10188730

        А, понял, спасибо. Меня запутал ':', подумал, что это еще какой-то оператор и ничего про него не нашел.

МЕТКИ

  • Хабы
  • Теги

*nix

bash

СЕРВИСЫ
  • logo

    CloudLogs.ru - Облачное логирование

    • Храните логи вашего сервиса или приложения в облаке. Удобно просматривайте и анализируйте их.
Все публикации автора
  • 10 мини-лайфхаков в Bash +15

    • 23.04.2017 19:07

Подписка


ЛУЧШЕЕ

  • Сегодня
  • Вчера
  • Позавчера
02:35

Как я объяснял племяннику 2x + 4 = 10 и случайно собрал визуальную лабораторию (сайт) +9

05:00

Lumen: попытка воссоздать лучшие практики мониторинга СУБД +2

13:42

Нейронный Навье‑Стоксгейт: скандал с OpenAI вокруг решения «задачи тысячелетия» на $1'000'000 +70

07:31

Как на ровном месте сэкономить 1000+ ядер, или Куда на самом деле уходили 80% CPU +46

09:01

HTML и CSS помогут вам сделать дружелюбный интерфейс! Вот моя коллекция простых лайфхаков +45

08:00

Архитектура современных ИИ-агентов: собираем прототип за один вечер +37

14:43

От статьи на Хабре до Байконура: вывоз «Прогресса», хабраэффект и космический перенос +33

14:43

От статьи на Хабре до Байконура: вывоз «Прогресса», хабраэффект и космический перенос +32

07:23

ООН проголосовала за новую карту мира, показывающую истинный масштаб Африки +32

05:01

Никто не просил — а я сделал банку робота‑секретаря +24

07:00

Куда исчезли 15 тысяч кВт·ч: автоматизируем учет на старом заводе +23

13:01

Как выбрать IT-профессию и понять, что учить — метод на примере кибербезопасности +22

07:05

Хардварные стартапы — которые меняют мир +20

12:40

Как запустить Qwen3.8-Flash-Next 125B на 6 ГБ VRAM +18

12:22

Люди гибнут за канбан. 7 способов убить даже хорошую доску +17

05:57

Хакерспейсы Батуми и Тбилиси + ASIC чип спроектированный в Грузии +17

14:38

SPF, DKIM и DMARC на примере обычного письма: как работает email‑аутентификация +16

09:09

«Ключ к доверию. Безопасность в эпоху высоких технологий»: как готовили выставку Музея криптографии и Бастиона +16

08:24

Скроллбар в 2k26 +15

07:01

Шесть ярких презентаций о технологиях как бесплатный архив идей и уроков +15

13:24

Архитектура цифровых устройств: разбираемся с процедурными и конвейерными вычислениями +14

11:14

Черный экран смерти: как прочитать дамп за пять минут вместо переустановки Windows +14

07:09

Теренс Тао: вундеркинд из Австралии, который вырос гениальным математиком +59

13:01

Возвращение из мёртвых монолитной SD-карты +53

07:48

Электронные лампы. Большой обзор в трех частях. Часть 3 +45

08:00

Почему CD и DVD не вечные: сколько живут оптические диски на самом деле +43

09:01

Я искренне беспокоюсь по поводу «GTA VI» +42

22:00

Эти пчелы делают неправильный с++ +38

11:38

Как говорить с искусственным интеллектом. Книга о промптах +37

12:57

Интерпретатор Python в 1024 байтах +36

07:03

Анти‑тест: сколько шагов сотруднику ИБ до нарушения УК РФ? +34

12:33

Экономика владения мобильной фермой. Сколько стоит собрать собственный парк устройств +32

13:31

QArtText: QR коды для чтения невооружённым глазом +20

11:05

Что реально даёт HTTP/2 и HTTP/3 — и когда не даёт вообще ничего +18

19:44

«Я Сетунь 70». Эмулятор троичной ЭВМ на Rust +16

12:26

Недельный геймдев: #294 — 6 сентября, 2026 +16

13:09

От 10 первопроходцев до 700 энтузиастов: Бета-программа ОС Аврора отмечает 5-летие +15

12:57

Странные олдскульные технологии, которые так и не взлетели, часть 3 +15

11:30

Прогноз: благодаря ИИ формальная верификация станет мейнстримом +14

09:30

Как ADR помог мне не утонуть в первой крупной архитектурной задаче +14

07:00

«Ссылка недействительна» с первой попытки: её открыли до пользователя +13

19:42

Языковые страны на месте США +12

ОБСУЖДАЕМОЕ

  • ООН проголосовала за новую карту мира, показывающую истинный масштаб Африки +32

    • 160   16000

    Нейронный Навье‑Стоксгейт: скандал с OpenAI вокруг решения «задачи тысячелетия» на $1'000'000 +70

    • 93   27000

    Как говорить с искусственным интеллектом. Книга о промптах +37

    • 72   103000

    Ребрендинг по-азиатски: примеры неудачной смены логотипа +7

    • 69   15000

    Как настроить Arch Linux, чтобы он обошёл Windows 11 по производительности и стилю +3

    • 48   11000

    Анти‑тест: сколько шагов сотруднику ИБ до нарушения УК РФ? +34

    • 43   102000

    Возвращение из мёртвых монолитной SD-карты +53

    • 29   13000

    Cursor ограничивает доступ из России. Куда переходить? -5

    • 28   11000

    Эти пчелы делают неправильный с++ +38

    • 27   16000

    Я искренне беспокоюсь по поводу «GTA VI» +42

    • 25   15000

    Почему CD и DVD не вечные: сколько живут оптические диски на самом деле +43

    • 23   14000

    Модель выложила системный промпт, в котором было написано его не выкладывать +5

    • 22   9200

    Я не читаю свой код. Два месяца вайбкодинга большого проекта — честный отчёт +11

    • 21   5600
  • Главная
  • Контакты
© 2026. Все публикации принадлежат авторам.