Comments 78
При поиске команд в истории через Ctrl+R полезно знать как перемещаться между совпадениями:
Повторный Ctrl+R - в одну сторону, Ctrl+S - в другую. В последнем случае часто нужно сначала добавить в .bashrc такое:
[[ $- == *i* ]] && stty -ixon
pkill fire*
Правильно будет:
pkill "fire*"
Кавычки запрещают башу проводить подстановку имен файлов по шаблону fire*.
В целом неплохо, если не обращать внимание на то, что все эти рекомендации приводились на Хабре раз по 10 каждая.
"Повторение - мать учения" :) Лично я добавил себе в закладки. Непонятно, правда, зачем здесь sed
это все-таки не bash
, а отдельное приложение и про него можно было бы отдельную статью (а то и несколько) тиснуть, но это мелочи.
В некоторых компаниях HR ставят плюсики резюме при наличии ссылок на публикации. Формат "10 рецептов как.." даёт возможность не напрягаясь набивать требуемый контейнт и привлекать публику. Достаточно взять столько же абзацев из рандомных статей по теме в гугле и немножко поменять слова для большей уникальности. Парочку можно добавить от себя. В образовательном смысле это мусор, т.к. не даёт системной картинки.
Но на него охотно слетаются и потом тиражируют переводчики, которые выбирают материалы чисто по рейтингам. Надо опубликовать условный man bash на YC, чтобы перевод появился на Хабре. Иначе он ни когда не попадет в выборку.
В тухес такие компании вместе с их HR-ами. Меня всегда еще вставляет: "Пришлите ваше резюме с описанием прошлых задач и государственных наград достижений". Вашу ж мать. Сейчас, сделаю. Потому что я бекапы всех своих джир и прочего храню с 2000 года. А а все достижения, вот, могу и без резюме сразу словами описать - делал нормально свою работу :D
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 ident.me
Разве не проще написать uname -a для вывода информации о системе?
Как ускорить работу в командной оболочке Bash?
поставить fish ;) ну или хотя бы zsh grml
Первая мысль была такая-же :)
// пользователь zsh-grml
Если не трудно, тоже подЕлитесь опытом, ответив на мой комментарий? Любопытно узнать.
или же поставить nushell, она неплохо развивается в последнее время
На bash жизнь тоже есть. https://github.com/Bash-it/bash-it
Буфер эмулятора терминала он может и не чистить. Внутри консольного vim он так вообще просто экран перерисовывает. Тут важно не это, а то, что он при этом сбрасывает состояние терминала, которое может быть повреждено какой-нибудь случайно выведенной в него ESC-последовательностью.
...так работает nano.
"Просматривайте имя дистрибутива Linux"
lsb_release -a
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' ?
Просто любопытно.
Симпатичная альтернатива, когда требуется чуть больше информации, чем имя дистра
![](https://habrastorage.org/getpro/habr/upload_files/b76/805/398/b76805398dd77efd79ea06d3b5851dd0.png)
>Используйте раскрытие скобок для создания множества файлов
Только аккуратно. Очень легко сделать ошибку. Помню, коллега хотел выпендриться и на HP-UX создал несколько лишних устройств, когда расширял диски. Удалять уже было боязнено.
Клавиша Cmd это совсем не замена Control на маке. Cmd-R, Cmd-L, Cmd-D не будут работать в маковском терминале.
Закрытый IP присваивается системой, и его можно уточнить с помощью команды
ifconfig
.
Или освоить новую команду ip
, которая приходит на замену во многих дистрибутивах
На маке тоже Ctrl-D и Ctrl-I, а не ⌘
nohup со времен внедрения systemd толком не работает. Systemd по умолчанию отстреливает эти процессы спустя некоторое время.
Про nohup запускаемых из консоли. Возможно уже поправили, но на протяжении нескольких релизов ubuntu-debain эти процессы после закрытия консоли в которой задача была запущена через nohup отстреливались.
Не спору ради, интереса для:
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/), и при этом работает ощутимо шустрее.
Не задумывался над этими вещами, исправлю в ближайшее время
Выделение текста работает непривычно и неинтуитивно. В нормальном эмуляторе терминала по double-click выделяется весь текст между двумя ближайшими пробелами, а в FTerminal по правилам текстового редактора, то есть до ближайшего символа, отличного от буквы-цифры.
Это не работает, middle-click не распознаётся
По Ctrl+D терминал не завершает работу и не закрывается. Многолетняя привычка.
Также не работают и многие другие комбинации клавиш. По этой причине невозможно работать в консольном текстовом редакторе
Какие сочетания клавишь не работают?
Навскидку: Shift+Home/End (выделить текст до начала/конца строки в редакторе), Ctrl+Home/End (перейди в начало/конец файла в редакторе).
Я проверил - это в Идеевском терминале не работает, вы тут ни при чём.
И ещё кое что настроенное в профиле bash, например ходжение по истории команд при помощи PgUp/PgDown, но у вас своя собственная история вместо этого.
Если я запускаю в терминале что-то с параметром, например, "x", то мне при нажатии Enter атоматически дописывается первый вариант из автодополнения, в котором есть такая буква. Это мешает, и такого быть не должно.
Да, не должно, и я это вроде как поборол, для большенства юзкейсов. Хочу понять какой именно случай остался. Вы набираете параметр команды "x", который не является именем файла, но в текущей директории есть файл начинающийся на "x" и он вылезает. Такой?
Двухпанельный 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 команды исполняются немного по другому и из-за этого подвисает.
Выпустил версию 1.0.5, там пофикшено большенство проблем, а именно:
выделение текста как в нативном терминале
вставка выделенного текста по middle-click
перенос фокуса в command input при попытке печатать в console log
закрытие сессии по Ctrl+D
Upload/Download удалённых файлов на RHEL 8
Неработающая кнопка Cancel при Upload file
Недокикшено:
Фикс скорости вывода текста ещё не готов, но я добавил опцию отключить поиск ссылок в тексте, тогда тормозить перестанет. Для этого включите "fterminal.hyperlink.disable" в Registry (Открыть Registry - двойной Shift, потом введите "Registry...")
Неуместные всплывающее автодополнения: правильный фикс ещё не сделал, но отключил автокомплишен для случаев типа "cd /" и "cd -"
Не работающие сочетания клавиш типа Shift+Home/End: создал тикит на JetBrains
О, классно, обязательно попробую и оставлю отзыв. Встроенный терминал Идеи ужасен, очень сильно тормозит, невозможно работать, и имеет проблемы с отображением некоторых символов, сколько шрифты не настраивай. Приходится отдельный терминал держать открытым и постоянно в нём переключаться между несколькими открытыми проектами.
(перенёс коммент в другую ветку)
по факту можно использовать любой другой символ, например, нижнее подчёркивание:
А верхнее подчёркивание можно? Или среднее.
Как ускорить работу в командной оболочке Bash