Рейтинг:0

Как получить файл сценария bash для запроса подсказки перед переходом к следующему шагу?

флаг cn

У меня есть однострочный скрипт для создания файла в каталоге и открытия файла с помощью Kwrite. Я бы хотел, чтобы скрипт запрашивал имя файла, который будет создан и открыт Kwrite. В настоящее время он даже не открывает терминал, но в идеале должен. Как мне добиться этого с помощью следующего скрипта?:

кошка > файл.php & kwrite файл.php

Я намерен вставить скопированные части одного файла, чтобы создать новый файл.

vanadium avatar
флаг cn
Better ask about what you want to achieve, rather than about help with a method you *think* will allow you to achieve your goal. For what you try here, you do not need a script. A simple `kwrite filename` will immediately open kwrite and have that save to `filename`.
Mark Lee avatar
флаг cn
@vanadium то, что ты говоришь, имеет большой смысл. Я конвертирую некоторые html-макеты в php-шаблоны WordPress и пытаюсь уменьшить количество повторений. Страница WP состоит из нескольких включенных блоков. Каждый блок html-разметки нужно интегрировать с каким-нибудь php. После того, как я скопирую блок, я хочу создать файл php без необходимости иметь несколько экранов и приложений. Я открываю новый файл php с помощью. `printf'\n\n' > foo.php & kwrite foo.php` works but I want to be prompted to name each new file.
Рейтинг:3
флаг cn

Вариант 1. Использование параметра сценария bash

Создайте скрипт следующим образом:

#!/бин/баш
( эхо-то > "$1".php && kwrite "$1".php ) &
чистый

Затем вы можете вызвать скрипт, передав имя файла после команды. Затем скрипт автоматически создаст файл с нужным вам содержимым, добавив .php расширение автоматически и откройте файл в kwrite, отпустив приглашение терминала для ввода следующей команды.

$1 в скрипте есть переменная, которая автоматически извлекает следующее слово в командной строке. например если скрипт вызывается php-файл, то команда

phpfile мой файл

создаст и откроет файл мой файл.php.

Вариант 2. Использование читать команда

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

#!/бин/баш
echo "Пожалуйста, введите имя файла: "
прочитать ИМЯ ФАЙЛА
повторить что-то > "$FILENAME".php && nohup kwrite "$FILENAME".php &
чистый

нет может быть полезно, если вы работаете с терминала. Он отделяет редактор от процессов терминала, поэтому он не будет закрыт, если вы закроете терминал.

Вариант 3. С помощью графического инструмента

Зенити, установленный по умолчанию в Ubuntu, или Кдиалог на рабочем столе Plasma позволяют запрашивать у пользователя ввод в графическом диалоговом окне для использования в сценариях. Вы вызываете эти инструменты в сценарии. Пользовательский ввод затем помещается в переменную. Преимущество здесь в том, что тогда вы можете назначить скрипт на горячую клавишу. Затем вы можете вызвать его одним нажатием клавиши, чтобы появилось диалоговое окно Zenity, и скрипт выполнил свою работу.

#!/бин/баш
FILENAME=$(zenity --entry --title "Запрос имени" --text "Пожалуйста, введите имя файла:")
повторить что-то > "$FILENAME".php && nohup kwrite "$FILENAME".php &
чистый
Mark Lee avatar
флаг cn
Спасибо @vanadium. Вы указали мне путь к решению с помощью токенизации. Ваш ответ создает пустой файл(ы). Этот скрипт запрашивает имя: `#!/bin/bash echo "Пожалуйста, введите имя файла" прочитать имя файла printf '\n\n' > "$filename".php & kwrite "$filename".php` . My issue now is to execute the script via a double click. I'll install Zenity presently because it sounds from what you said exactly the solution.
vanadium avatar
флаг cn
Действительно, zenity, вероятно, будет тем, что вы ищете. Для полноты я добавил также опцию «чтение» (ввод на терминале) и добавил примеры для всех опций. М
Mark Lee avatar
флаг cn
ваша рекомендация Zenity привела меня к Kdialog и открыла совершенно новый аспект моего сценария, который вырос с семи строк до 27 с полем списка переключателей, которое открывает опции для пользователя (меня). Это также упростило обработку ошибок для новичков. В очередной раз благодарим за помощь.
vanadium avatar
флаг cn
Пожалуйста, примите ответ, если он вам полезен: поставьте галочку напротив вопроса. В своем ответе я также упомянул Kdialog для пользователей Plasma.
Mark Lee avatar
флаг cn
Выполнено! Думал, что уже принял это, но, похоже, я проголосовал только за. Хорошо, что вы добавили Kdialog, так как он установлен вместе с KDE. Я даже сделал README.md теперь, когда это выглядит так изящно.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.