bash -получить 1-й аргумент текущей команды, которую я редактирую через историю или что-то подобное?

У вас может быть обычная calcпрограмма с использованием какcalc PI + 3(и как расширениеcalc -f script_file_name).

Для использования в shebang create link (работают только жесткие ссылки, если я правильно помню )с именем, например. calcf, а затем в calcпрограмма проверяет имя исполняемого файла (для C/C++, смотрите argv[0]в функцииmain). Теперь у вас есть #! /some/path/calcfв сценариях.

Таким образом, вы избегаете использования таких параметров, как -cв командной строке (3 нажатия клавиш сохранены )и вам не нужны параметры в shebang (, которые могут быть проблематичными, как в комментарии Скотта shebang или не шебанг).

5
24.03.2021, 20:42
4 ответа

Это возможно, но немного громоздко. В bash !#относится ко всему строка уже набрана. Вы можете указать данное слово, к которому хотите обратиться после :в этом случае это будет !#:1. Вы можете расширить его на месте используя shell-expand-lineвстроенный -в привязке клавиш readline Управление-Альт-e .

9
28.04.2021, 22:57

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

mv ~/myTestFileWithLongFilename.{txt,md}

Раскрытие фигурных скобок расширяется до ~/myTestFileWithLongFilename.txt, за которым следует~/myTestFileWithLongFilename.md(важно получить правильный порядок {txt,md}).

Раскрытие фигурных скобок работает в bashнезависимо от того, вводите ли вы их в командной строке или в сценарии.

Расширение фигурной скобки, prefix{word1,word2,word3}suffix, будет повторять строку prefixи suffixдля каждого wordNв фактической фигурной скобке, создавая три отдельных слова prefixword1suffix, prefixword2suffixи prefixword3suffix. Вы также можете использовать диапазоны, такие как {1..4}или {p..u}в раскрытии фигурных скобок.

10
28.04.2021, 22:57

В интерактивном режиме alt + 1 , затем alt + .(период ).

Повторить alt + . , чтобы вернуться в историю команд, извлекая токен #1 из команд, предшествующих самой последней. (Сама команда токен #0, alt + 0)

Без модификатора alt-<token-number>alt-.принимает последний аргумент предыдущей команды. например. mkdir foo/ cd альт+. вернуться, чтобы создать каталог и компакт-диск в нем.

Обычно для всего, кроме последней лексемы (одно измененное нажатие клавиши )Я просто нажимал -стрелку вверх, нажимал -w или alt+d, затем нажимал -y, чтобы уничтожить слово, и дерните его обратно, чтобы не испортить мою историю, затем стрелку вниз -и контрол -y, чтобы снова дернуть его, где я хочу, в командной строке, которую я редактирую. Это в bash, кстати.

1
28.04.2021, 22:57

С помощью set -o viнажмите escape,byw$p(вам может понадобиться добавить пробелы или что-то подобное, и вам может понадобиться BилиW). Тогда вам просто нужно подправить вещи.

1
28.04.2021, 22:57

Теги

Похожие вопросы