Как стать автором
Обновить

Комментарии 75

При поиске команд в истории через Ctrl+R полезно знать как перемещаться между совпадениями:

Повторный Ctrl+R - в одну сторону, Ctrl+S - в другую. В последнем случае часто нужно сначала добавить в .bashrc такое:

[[ $- == *i* ]] && stty -ixon

pkill fire*

Правильно будет:

pkill "fire*"

Кавычки запрещают башу проводить подстановку имен файлов по шаблону fire*.

Или pkill fire\*

В целом неплохо, если не обращать внимание на то, что все эти рекомендации приводились на Хабре раз по 10 каждая.

"Повторение - мать учения" :) Лично я добавил себе в закладки. Непонятно, правда, зачем здесь sed это все-таки не bash , а отдельное приложение и про него можно было бы отдельную статью (а то и несколько) тиснуть, но это мелочи.

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

Но на него охотно слетаются и потом тиражируют переводчики, которые выбирают материалы чисто по рейтингам. Надо опубликовать условный man bash на YC, чтобы перевод появился на Хабре. Иначе он ни когда не попадет в выборку.

В тухес такие компании вместе с их HR-ами. Меня всегда еще вставляет: "Пришлите ваше резюме с описанием прошлых задач и государственных наград достижений". Вашу ж мать. Сейчас, сделаю. Потому что я бекапы всех своих джир и прочего храню с 2000 года. А а все достижения, вот, могу и без резюме сразу словами описать - делал нормально свою работу :D

  1. firefox & disown ещё можно

curl ifconfig.me ; echo

Тут можно обойтись и без echo:

curl -w'\n' ifconfig.me

могу накинуть ещё вариант:

echo $(curl -s 2ip.ru)

Вариантов достаточно для начала развития вкусовщины

curl -s ipinfo.io | jq -r '.ip'
curl -s ipinfo.io/ip

Кстати, curl далеко не везде есть по дефолту. Я использую

wget -qO- eth0.me

А в некоторых дистрах наоборот, wget'а нет, а curl есть. :-)

Всякие ifconfig.me бывают и которые по http работают, можно даже через nc ip узнать.

А можно через dns:

dig +short A myip.opendns.com @resolver1.opendns.com

А если еще проще:

curl ident.me

Разве не проще написать uname -a для вывода информации о системе?

Там только ядро и архитектура. А название операционки — в release-файлах.
можно без cat, просто lsb_release -a

lsb_release не всегда установлен из коробки.

Нонче модно cat /etc/os-release
И он как правило есть, в отличие от lsb_release

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

поставить fish ;) ну или хотя бы zsh grml

Первая мысль была такая-же :)

// пользователь zsh-grml

А можете поделиться опытом grml по сравнению с oh-my-zsh + p10k? OMZ+P10K субъективно дико тормозили по сравнению с обычным bash'ем (учитывая тонны скриптов, это должно было быть ни разу не субъективно). А что можете сказать о zsh-grml?

Если не трудно, тоже подЕлитесь опытом, ответив на мой комментарий? Любопытно узнать.

или же поставить nushell, она неплохо развивается в последнее время

Может у меня терминал какой-то не такой, но Ctrl+L не очищает экран, а просто прокручивает так, чтобы prompt был наверху экрана

Буфер эмулятора терминала он может и не чистить. Внутри консольного vim он так вообще просто экран перерисовывает. Тут важно не это, а то, что он при этом сбрасывает состояние терминала, которое может быть повреждено какой-нибудь случайно выведенной в него ESC-последовательностью.

Для этого же используется reset

...так работает nano.

"Просматривайте имя дистрибутива Linux"
lsb_release -a

Не сработает из коробки, например, на Fedora

написал как вариант, не уточнил, много где не сработает

mkdir {images,css,src,templates,scripts}
Пример странный. Если у имён нет общей части, то уж проще перечислить их через пробел, чем со скобочками возиться.

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

А потом в середине сломается, потому что папка уже есть. Лучше делать mkdir -p somedir/otherdir/{raz,dva,tri}

А потом в середине сломается, потому что папка уже есть.
Во-первых, mkdir создаст остальные каталоги. Во-вторых, независимо от того, какую проблему мы пытаемся решить, фигурные скобочки в приведённой мной цитате абсолютно ничего не решают. Формула {images,css,src,templates,scripts} на самом деле ещё перед выполнением команды разворачиваются шеллом в обычный список images css src templates scripts, и mkdir получает на вход именно этот список, и потом просто идёт по нему, создавая каталоги. Если пользователь вручную напишет точно такой же список с пробелами, с точки зрения mkdir абсолютно ничего не поменяется.
Лучше делать mkdir -p somedir/otherdir/{raz,dva,tri}
А это уже как раз пример, где у перечисляемых элементов есть общая часть, вынесенная за скобки.

!$ ощутимо время экономит

а можете какой то кей подсказать где это ускоряет?

>sed s'_apples_oranges_g' myfile.txt

Ух ты, не знал!

Для удобного поиска лучше fzf пока ничего не придумали.

наберите в оболочке cat /etc/*rel*

А есть такие дистры, которые не симлинкают файл с инфой о релизе в '/etc/os-release' ?
Просто любопытно.

Симпатичная альтернатива, когда требуется чуть больше информации, чем имя дистра

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

inxi -Fxxx

ещё больше полезной инфы и без ненужного asci арта

>Используйте раскрытие скобок для создания множества файлов

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

nohup firefox freecodecamp.org &

firefox https://freecodecamp.org & disown


pkill fire*

man pgrep, pkill, pwait: All the criteria have to match.
Символы подстановки не нужны.
Терминал
$: sleep 300 &
[1] 15055
$: pkill sle
[1]  + terminated  sleep 300
$: sleep 300 &
[1] 15062
$: pkill leep
[1]  + terminated  sleep 300
$:




Просто наберите в оболочке cat /etc/*rel* и нажмите «Ввод».

А если /etc/*release* файлов нет в составе дистрибутива?

Клавиша Cmd это совсем не замена Control на маке. Cmd-R, Cmd-L, Cmd-D не будут работать в маковском терминале.

Закрытый IP присваивается системой, и его можно уточнить с помощью команды ifconfig.

Или освоить новую команду ip, которая приходит на замену во многих дистрибутивах

https://www.redhat.com/sysadmin/ifconfig-vs-ip

  1. На маке тоже Ctrl-D и Ctrl-I, а не

nohup со времен внедрения systemd толком не работает. Systemd по умолчанию отстреливает эти процессы спустя некоторое время.

Речь о произвольных nohup или запускаемых в контексте systemd? Потому что обычные задачи я стартовал через nohup, потому что им требовалось много часов на выполнение, и они успешно завершались, никто их не прибивал.

Про nohup запускаемых из консоли. Возможно уже поправили, но на протяжении нескольких релизов ubuntu-debain эти процессы после закрытия консоли в которой задача была запущена через nohup отстреливались.

Очень странно. Весь смысл nohup как раз в том, чтобы запущенный процесс продолжал работать после отвала терминала. Видимо, какой-то баг (есть или был). Но я больше с redhat-centos дело имею, на них с таким не сталкивался.

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

Не подумайте, реально интересно как я прошёл мимо такого бага.

От себя добавлю: если работаете в IntelliJ IDEA, можно установить специальный плагин, оборачивающий терминал в графическую оболочку в стиле IntelliJ. Там появляется идеевский комплишен, более привычный чем комплишен комплишен Bash, возможность открывать файлы в идеевском редакторе, и ходить по файловой системе как в Total Commander.

Поскольку это просто графическая надстройка над обычным терминалом, все фичи работают даже если подключены по ssh к удалённой машине.

30-Day Trial

Да, 30-Day Trial, а потом 10$. Не хотите платить 10$ - не проблема, любому попросившему хабравчанину скину в личку купон на год бесплатного использования. Только дайте какой-нибудь фидбэк по плагину.

Оставлю отзыв тут, чтоб не портить вам статистику на плагин-маркете.

Плагин интересный, и несомненно достойный внимания, и конечно он найдёт своего пользователя. Но мне он не подошёл по следующим причинам.

Текст выводится раза в два быстрее чем в дефолтном терминале Идеи, но всё равно прорисовка экрана происходит ощутимо медленно, например если листать большие лог файлы. А если в тексте попадаются непечатные символы (как бы кусок бинарника), то всё начинает нереально тормозить, выводит 2-3 строки в секунду. С нативным эмулятором терминала таких проблем не бывает.

Выделение текста работает непривычно и неинтуитивно. В нормальном эмуляторе терминала по double-click выделяется весь текст между двумя ближайшими пробелами, а в FTerminal по правилам текстового редактора, то есть до ближайшего символа, отличного от буквы-цифры. Получается, что нельзя быстро выделить полный путь к файлу в тексте, или файл с точками/дефисами/подчёркиваниями в имени. Зачем это? Потому что единственная причина для использования мыши в терминале - это выделение с последующим сбросом выделенного куска текста по middle-click в текущую позицию курсора, как будто вы сделали copy-paste. Это не работает, middle-click не распознаётся. А без этой фичи в терминале сразу становится грустно и неуютно. Да и фокус не возвращается сам в строку ввода, если его перевести в окно с выводом. Начинаешь печатать, а оно не печатается.

По Ctrl+D терминал не завершает работу и не закрывается. Многолетняя привычка.

Также не работают и многие другие комбинации клавиш. По этой причине невозможно работать в консольном текстовом редакторе. Зачем, если тут целая IDE? Чтобы быстренько найти и поправить что-то в мульти-гигабайтном текстовом файле.

Очень напрягает всплывающее автодополнение файлов и подсказки параметров для утилит, которые нельзя отключить. Кому нужно это, тот вместо bash юзает zsh, там это работает точно так же, но в нативном текстовом режиме. Если я запускаю в терминале что-то с параметром, например, "x", то мне при нажатии Enter атоматически дописывается первый вариант из автодополнения, в котором есть такая буква. Это мешает, и такого быть не должно.

Двухпанельный GUI файловый менеджер выглядит довольно странно. Как бы он вообще из другой вселенной и непонятно для чего он прикручен к терминалу, в котором и так предостаточно консольных файловых менеджеров (mc, far2l, ranger, nnn, и т.д.).

Cпасибо, очень полезный отзыв! Отвечу по пунктам:

Текст выводится раза в два быстрее чем в дефолтном терминале Идеи, но всё равно прорисовка экрана происходит ощутимо медленно, например если листать большие лог файлы. А если в тексте попадаются непечатные символы (как бы кусок бинарника), то всё начинает нереально тормозить, выводит 2-3 строки в секунду. С нативным эмулятором терминала таких проблем не бывает.

Мой терминал использует идеевский дефолтный терминал, так что прорисовка экрана, при выполнении команд, не должна быть быстрее.

Кажется, я понял что именно в идеевском терминале тормозит, придумаю исправить.

Ага, я подозревал это. Однако ваш терминал корректно выводит emoji в shell prompt (я использую https://starship.rs/), и при этом работает ощутимо шустрее.

С emoji всё странно, то показывает их то выводит крестики.

Не задумывался над этими вещами, исправлю в ближайшее время

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

Это не работает, middle-click не распознаётся

По Ctrl+D терминал не завершает работу и не закрывается. Многолетняя привычка.

Классно, спасибо!

Также не работают и многие другие комбинации клавиш. По этой причине невозможно работать в консольном текстовом редакторе

Какие сочетания клавишь не работают?

Навскидку: Shift+Home/End (выделить текст до начала/конца строки в редакторе), Ctrl+Home/End (перейди в начало/конец файла в редакторе).
Я проверил - это в Идеевском терминале не работает, вы тут ни при чём.

И ещё кое что настроенное в профиле bash, например ходжение по истории команд при помощи PgUp/PgDown, но у вас своя собственная история вместо этого.

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

Да, не должно, и я это вроде как поборол, для большенства юзкейсов. Хочу понять какой именно случай остался. Вы набираете параметр команды "x", который не является именем файла, но в текущей директории есть файл начинающийся на "x" и он вылезает. Такой?

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

Двухпанельный GUI файловый менеджер выглядит довольно странно. Как бы он вообще из другой вселенной и непонятно для чего он прикручен к терминалу, в котором и так предостаточно консольных файловых менеджеров (mc, far2l, ranger, nnn, и т.д.).

К консольным файловым менеджерам не прикрутишь свои команды типа "Открыть файл в IDEA", "Скачать файл", "Загрузить файл". Конечно, они нужны только когда работаешь на другой машине через ssh, для локальных файлов проще идеевским file tree пользоваться.

Ах, для SSH это действительно было интересно, но к сожалению upload в FTerminal не работает :-)
Мои сервера расположены в недоступном напрямую сегменте сети. Чтобы туда попасть используются access servers, которые проверяют права доступа. Мой SSH конфиг (~/.ssh/config) для всех прописанных в нём машин содержит инструкцию "ProxyJump" с указанием промежуточного сервера. Команды типа "ssh" и "scp" следуют этим инструкциям и делают прыжки. Плюс ssh ключи.
Похоже, FTerminal пытается загрузить файл напрямую. Не уверен, но прогресс загрузки просто висит на нуле и ничего не происходит.

Upload не должен зависить от промежуточный серверов и аутентификации. Чтобы поддерживать всякие сложный конфигурации, терминал не пытается создать новый коннекшен, а впечатывает содержимое файла прямо через input, командой типа `cat | base64 -d > my-file.txt`. В дальнейшем сделаю, чтобы использовал scp , если есть возможность.

Какой линукс стоит на сервере? Скорее всего, на другой версии OS команды исполняются немного по другому и из-за этого подвисает.

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

Не везде и не всегда работает, увы. Но так-то да.

по факту можно использовать любой другой символ, например, нижнее подчёркивание:

А верхнее подчёркивание можно? Или среднее.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.