Конвертировать строку в #!/bin/sh

1 :Создать исполняемый скрипт-оболочку

Большинство современных сред рабочего стола автоматически запускают файлы, помеченные как исполняемые, при нажатии на них. Просто создайте простой сценарий-оболочку, который запускает нужную команду в вашем любимом текстовом редакторе со следующим содержимым:

#!/bin/bash
java -jar /path/to/app.jar

и сделайте его исполняемым из вашего любимого файлового менеджера или запустив

chmod +x /path/to/script.sh

Теперь, когда вы переходите к каталогу, содержащему ваш сценарий, из вашего файлового менеджера, вы должны иметь возможность щелкнуть (или дважды щелкнуть в зависимости от вашего файлового менеджера ), чтобы выполнить файл.

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

2 :Создать файл записи рабочего стола

Файлы входа на рабочий стол — это файлы, которые сообщают средам рабочего стола Linux, какие приложения вы установили,как их запускать и куча других метаданных о них (, таких как понятное имя и значок ).

Минимальный файл входа на рабочий стол будет выглядеть так::

[Desktop Entry]
Type=Application
Name=Your Apps Name
Exec=java -jar /path/to/app.jar
Categories=Utility;Java;

В среде рабочего стола может быть предусмотрен способ создания этих файлов для вас (проверьте настройки, меню или щелкните правой кнопкой мыши на рабочем столе -это зависит от среды рабочего стола ). Или вы можете создать их вручную, используя ваш любимый текстовый редактор и создав файл в ~/.local/share/applications, который заканчивается на .desktop, например ~/.local/share/applications/your-script.desktop, с содержимым выше.

Файлы рабочего стола имеют преимущество перед сценариями-оболочками, поскольку они добавляются в систему меню среды рабочего стола и часто могут быть размещены на системной панели или на рабочем столе, как и любое другое приложение.

У archlinux есть прекрасное руководство по созданию файлов рабочего стола на их вики или вы можете прочитать спецификации freedesktop.org здесь , чтобы узнать обо всех различных действиях, которые вы можете делать с файлами рабочего стола.

1
23.08.2019, 18:36
2 ответа
$ echo '[4251][7c3c]' | tr -d '[]' | tr '[:lower:]' '[:upper:]' | cut -c 3-
517C3C

Как функция:

decodeSerial () {
    printf '%s\n' "$1" |
    tr -d '[]' |
    tr '[:lower:]' '[:upper:]' |
    cut -c 3-
}

Конвейер удаляет все символы [и ]из ввода, преобразует все символы нижнего регистра -в верхний регистр -и отбрасывает первые два символа из результата.


С помощью одного вызова sed(, который предполагает, что буквенные символы являются шестнадцатеричными цифрами, от aдоf):

$ echo '[4251][7c3c]' | sed 's/[][]//g; y/abcdef/ABCDEF/; s/^..//'
517C3C

Чтобы сохранить последние шесть символов, а не удалять первые два, этот вызов sedможно изменить на

.
sed 's/[][]//g; y/abcdef/ABCDEF/; s/^.*\(.\{6\}\)$/\1/'

Использованиеawk:

$ echo '[4251][7c3c]' | awk '{ gsub("[][]", ""); print toupper(substr($1,3)) }'
517C3C

С помощью команды awkв вашей функции (команда sedвыше может быть вставлена ​​аналогичным образом):

decodeSerial () {
    printf '%s\n' "$1" |
    awk '{ gsub("[][]", ""); print toupper(substr($1,3)) }'
}

Использование awkбез конвейера в функции оболочки:

decodeSerial () {
    awk -v string="$1" 'BEGIN { gsub("[][]", "", string); print toupper(substr(string,3)) }'
}

Обратите внимание, что ваш синтаксис ${serial: -6}— это bash, который может не работать с /bin/sh.

5
27.01.2020, 23:15

Вы можете сделать это с помощью bash манипуляции со строками -:

serial='[4251][7c3c]' ; serial="${serial//[/}" ; serial="${serial//]/}" ; echo "${serial: -6}"

или как функция

decodeSerial () {
  serial="$1"
  serial="${serial//[/}"
  serial="${serial//]/}"
  printf '%s\n' "${serial: -6}"
}
0
27.01.2020, 23:15

Теги

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