• Главная
  • Контакты
Подписаться:
  • 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

Подписка


ЛУЧШЕЕ

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

Гениальная ОС, которую никто не помнит (с нескучными обоями) +67

09:01

Ай да китайцы! Светосильный фикс 7artisans 50mm f/0.95 +35

07:01

Серверы из ноутбуков, смартфонов и приставок +34

07:04

Телеграмма во Владивосток. Часть 1 +30

08:00

Разворачиваем MiniMax-M2.7 на GPU-инфраструктуре с поддержкой S3 +23

07:27

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

12:00

Кому на самом деле принадлежат Unix и Linux: история самого долгого судебного спора в IT +18

07:01

Почему смена IP не делает вас новым пользователем +18

14:17

Я создаю защищённый USB-накопитель, который скрывает часть своего пространства +17

10:05

Не просто коробка с деньгами: будни инженера сопровождения, который поддерживает банкоматы в строю +16

08:53

Как мы придумали NAPI-C как Linux-платформу для прототипирования с UART, I2C, SPI, GPIO +16

13:01

Исследование кода GTA Vice City +14

08:00

Насколько японская офисная культура похожа на стереотипы из аниме, манги и нашего воображения +12

07:52

Мы растрачиваем потенциал светодиодов, который мог бы спасти наше ночное небо +12

12:08

Локус контроля: 4 убеждения, которые тихо хоронят ваши амбиции +11

07:43

Умные камеры для переговорных комнат: какие бывают, как работают и что выбрать +11

12:05

Как я объединил четыре Mac Studio в один компьютер с 1,5 ТБ – и запустил ИИ, который не влезает ни в одну видеокарту +10

09:32

Альбом электроники, написанной реками — как я его выпустила? +10

09:06

Погружаемся в пучины цифро-финансового безумия Думы РФ — обзор закона о криптовалюте +10

07:49

Обзор GenAI-платформы SimpleOne: как перестать делать пилоты и начать масштабировать ИИ +10

12:38

Зарплаты IT-специалистов в первой половине 2026 года: рост ниже инфляции +75

08:05

Ни одного ложноотрицательного: пишем Фильтр Блума на C +46

13:01

Почему Docker не всегда лучший выбор и чем его заменить +45

08:05

От зефира до фаллоса: как Ридли Скотт спас «Чужого» +40

12:00

Краткая история футбольных симуляторов +39

09:01

Подключаем к Raspberry Pi Pico MIDI-клавиатуру и делаем музыкальный синтезатор +38

12:28

Превращаем виртуальный индикатор кислорода Subnautica в реальное устройство. Часть 1 +36

08:35

Дальняя связь на модулях LoRa: принимаем сигнал ниже уровня шума +33

07:01

15 лет спустя: как я модернизировал умный дом на базе PLC и написал свой OPC-сервер для перехода от SCADA к ioBroker +31

08:53

Почему в Linux /bin, /usr/bin, /usr/local/bin… +28

07:05

Про альтернативы переменным резисторам +27

17:08

Плодитесь и размножайтесь. Эволюция как основа геймплея в компьютерных играх +24

09:55

ClickHouse: сценарии, сильные стороны, лучшие практики работы в 2026 году +24

09:55

ClickHouse: сценарии, сильные стороны, лучшие практики работы в 2026 году +24

08:39

От JTAG к IJTAG: зачем понадобился новый стандарт аппаратного тестирования +23

08:00

Инференс с дешевой памятью, 128-ядерные RISC-V и другие новинки из мира железа: дайджест июня +23

11:07

Лучшие российские VPS/VDS-хостинги в 2026 году: сравниваем популярные конфиги. Часть 2 +21

14:17

Пингвин в гостях у Дельфина, или UNIX‑like система на Flipper Zero +19

09:16

VEGMAN R220 G3 и YADRO G4208P G3: что показали стресс-тесты серверов +17

05:40

Довайбкодились. ИИ-инструменты экономят время, но убивают понимание кода? +17

07:08

Как я потерял 45 миллионов рублей на китайском импортозамещении железа для боулинга +246

11:42

Крупнейшие российские регистраторы доменов не отвечают на тикеты. Что происходит и как спасти инфраструктуру? +86

19:56

Dirty Coding Tricks, part 3 +63

13:01

Как я получал степень бакалавра по Computer Science на Coursera +57

20:33

Бегство Солнца +54

08:00

История создания самодельной видеокарты на 8 192 ядра RISC-V из тысяч дешевых микроконтроллеров +47

20:29

Как рой ИИ-агентов Cursor создал SQLite с нуля за $1339 +44

05:44

Компилятор в 16 лет +43

20:19

Карта странствующих слов +39

09:01

Langflow. Самый удобный визуальный редактор для оркестрации ИИ агентов +38

07:01

Ненависть к ИИ +34

07:05

const fn в 2026: ваш компилятор втихаря исполняет Rust +33

14:50

Как загрузить любой шрифт Google Fonts на дисплей ESP32 — без Processing и ручной конвертации +31

12:00

Как бы мы закрывали уязвимости в SELECTOS, если бы у нас были спринты +31

07:03

Собрать прошлое: как архивировать весь трафик сборки SONiC +25

07:03

Собрать прошлое: как архивировать весь трафик сборки SONiC +25

11:39

Т9 за сотню долларов, ассистент за миллиард: сколько на самом деле стоит обучить LLM с нуля +20

11:38

Claude опроверг знаменитую гипотезу якобиана. Она держалась 87 лет, а проверка занимает минуту +20

10:35

Следующий «момент Бэкуса»: почему программирование снова готово подняться на уровень выше +20

07:01

И треснул мир напополам: как в США и Китае развили две инженерные школы графического GenAI +20

ОБСУЖДАЕМОЕ

  • Как я потерял 45 миллионов рублей на китайском импортозамещении железа для боулинга +246

    • 297   34000

    Ненависть к ИИ +34

    • 160   17000

    Крупнейшие российские регистраторы доменов не отвечают на тикеты. Что происходит и как спасти инфраструктуру? +88

    • 126   40000

    Зарплаты IT-специалистов в первой половине 2026 года: рост ниже инфляции +75

    • 104   23000

    Как рой ИИ-агентов Cursor создал SQLite с нуля за $1339 +44

    • 69   27000

    Компилятор в 16 лет +43

    • 58   16000

    Следующий «момент Бэкуса»: почему программирование снова готово подняться на уровень выше +20

    • 56   26000

    Бегство Солнца +54

    • 50   16000

    Гениальная ОС, которую никто не помнит (с нескучными обоями) +74

    • 40   21000

    Гравитация и квантовая физика фундаментально несовместимы +12

    • 40   15000

    «Зачем Javasript-у DI контейнер?» +9

    • 39   13000

    Карта странствующих слов +39

    • 34   16000

    Корпоративный ИИ за $10 млн отмел статью Q1. И он оказался прав — но не так, как он думал +1

    • 33   8800

    FFmpeg в браузере: как мы сделали медиа-конвертер, который ни разу не обращается к серверу +16

    • 32   11000

    Почему Docker не всегда лучший выбор и чем его заменить +45

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