Ссылка на сценарий shell application x shellscript

Имеется исполняемый файл типа application/x-shellscript (/ansys_inc/v172/fluent/bin/fluent). Посредством nautilus я через ПКМ создал ссылку на данный файл и вынес эту ссылку в нужный мне каталог (/home/fluent_link).
  • Печать

Страницы: [1]   Вниз

Тема: Создание ссылки на файл типа application/x-shellscript  (Прочитано 748 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
The_Immortal

Имеется исполняемый файл типа application/x-shellscript (/ansys_inc/v172/fluent/bin/fluent). Посредством nautilus я через ПКМ создал ссылку на данный файл и вынес эту ссылку в нужный мне каталог (/home/fluent_link).

Однако при вызове этой ссылки из терминала я получаю:

./fluent_link
/home/bin/archive/fluent -r[1-9]*
./fluent_link: строка 284: /home/imm/bin/archive/fluent: Нет такого файла или каталога
Т.е. исполняемый файл ищет в моем каталоге /home/imm/ вот такой каталог bin/archive/fluent, которого, естественно, там нет.

Каким образом создать обычный «ярлык», как это делается без каких-либо проблем в Windows?

Спасибо!


ТС не появлялся на Форуме более полугода по состоянию на 22/07/2019 (последняя явка: 01/07/2018). Модератором раздела принято решение закрыть тему.
—zg_nico

« Последнее редактирование: 22 Июля 2019, 14:58:42 от zg_nico »


Оффлайн
EvangelionDeath

The_Immortal, а прикрепить сам файлик, на который вы создали линк не желаете? А то проблема именно в нем, а не в ссылке

HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04


Оффлайн
The_Immortal

EvangelionDeath,

а прикрепить сам файлик

Прикрепил, только не уверен, что это поможет.

проблема именно в нем, а не в ссылке

Не очень понимаю как может быть проблема в файле. В ОС семейства Windows без проблем можно сделать ссылку на любой исполняемый файл и запускать эту ссылку откуда угодно, на то она и ссылка… Тут же — танцы.

P.S. Также прикрепил файл Read.Me, в котором сказано что-то про пути. Может быть проблема как раз-таки в этом? Только я не очень понимаю где задается вот это:

If you use the C shell, you can do this by entering

set path = ( [installation-directory]/Fluent.Inc/bin $path )

or if you use the Bourne or Korn shell, by entering

PATH=[installation-directory]/Fluent.Inc/bin:$PATH
export PATH


Оффлайн
Azure

вот такой каталог bin/archive/fluent, которого, естественно, там нет.

А какой есть (если Вы сами не можете прописать полный путь)?

[installation-directory]/Fluent.Inc/bin

В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !


Оффлайн
archuser

The_Immortal, а попробуйте так запустить:

$(readlink -f ./fluent_link)Если сработает, то проблема не в симлинке, а в самом скрипте, в коде которого не разрешаются пути в случае символических ссылок.


Оффлайн
zg_nico

Каким образом создать обычный «ярлык», как это делается без каких-либо проблем в Windows?

Наткнулся на вот это, в связи с чем вопрос: а сам исполняемый файл по двойному щелчку или через терминал в директории запустить удается? И при этом не возникает ошибки^

/home/bin/archive/fluent -r[1-9]*
./fluent_link: строка 284: /home/imm/bin/archive/fluent: Нет такого файла или каталога
???
Если не возникает, покажите выхлоп

readlink /home/fluent_link (где /home/fluent_link — путь до созданной Вами ссылки) и хочется увидеть вывод по

locate fluent

Thunderobot G150-D2: Intel SkyLake Core i7-6700HQ 2.60GHz, 8Gb DDR4 2133 MHz, Intel HD530, NVidia GeForce GTX 960M 2Gb.  Ubuntu 16.04 64x [Unity], KUbuntu 18.04 64x.


  • Печать

Страницы: [1]   Вверх

Ответ на:

комментарий
от pekmop1024 18.05.11 17:57:12 MSK

$ kcmshell filetypes -> application -> x-shellscript -> Add… -> Cool Terminal

anonymous

(18.05.11 18:25:20 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от dkann 18.05.11 18:03:53 MSK

Ответ на:

комментарий
от Chubakur 18.05.11 18:30:10 MSK

Ответ на:

комментарий
от anonymous 18.05.11 18:25:20 MSK

Ответ на:

комментарий
от dkann 18.05.11 18:35:49 MSK

>открывается текстовый редактор

Так что открывается?

Я правильно понимаю, что вы хотите запустить сценарий shell, а не сам shell? Тогда ls -l myscript.sh в студию.

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от Felagund 18.05.11 18:46:45 MSK

$ kcmshell filetypes -> application -> x-shellscript -> Add… -> Cool Terminal

открывается терминал

Я правильно понимаю, что вы хотите запустить сценарий shell, а не сам shell? Тогда ls -l myscript.sh в студию.

хочу любой файл sh запустить по клику(выполнить).

dkann

(18.05.11 18:53:04 MSK)

  • Показать ответ
  • Ссылка

А в гнуме2 можно настроить: открывать, запускать, спросить. Вот.

anonymous

(18.05.11 19:25:37 MSK)

  • Ссылка

Ответ на:

комментарий
от Axon 18.05.11 20:31:41 MSK

Да ну!? Неужели!? А ничего, что он уже изначально executable, и в терминале прекрасно работает, а вот KDE все равно его запускать не хочет?

anonymous

(18.05.11 21:40:18 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от dkann 18.05.11 18:53:04 MSK

>$ kcmshell filetypes -> application -> x-shellscript -> Add… -> Cool Terminal

Если так дословно и сделать, то действительно будет пустой терминал. Но если написать не Cool Terminal, а например konsole -e %u , то будет по крайней мере возможность запускать по RightClick -> Open With -> Konsole. Такое впечатление, что в некоторых сборках KDE возможность запуска скриптов двойным кликом забита гвоздями.

anonymous

(18.05.11 21:47:03 MSK)

  • Ссылка

Ответ на:

комментарий
от anonymous 18.05.11 21:40:18 MSK

В терминале через «sh ./cool_script.sh» файл будет исполняться и без соответствующего атрибута. И с какой это радости ему быть «изначально executable», если ему никто этого отдельно не сказал? Учи матчасть, в общем.

Axon ★★★★★

(18.05.11 21:48:05 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от Axon 18.05.11 21:48:05 MSK

В терминале через «sh ./cool_script.sh» файл будет исполняться и без соответствующего атрибута. И с какой это радости ему быть «изначально executable», если ему никто этого отдельно не сказал?

Прежде чем советовать кому-то учить что-то, неплохо хотя бы понять написанное. Для «особо изучивших матчасть», поясняю про пунктам:

— Если сразу после сохранения скрипта ему был назначен атрибут executable, это значит «изначально»
— Если скрипт исполняется в терминале без указания оболочки, это значит, что атрибут executable установлен.
— Если в .vimnrc есть что-то вроде

function MakeScriptExecuteable()
    if getline(1) =~ "^#!.*/bin/"
        silent !chmod +x <afile>
    endif
endfunction
    
au BufWritePost * call MakeScriptExecuteable()

то атрибут executable будет присваиваться автоматически при сохранении файла с shebang-line.
— Все ваши аргументы по поводу того, как запустить скрипт в терминале, даже без атрибута executable, не имеют никакого отношения к тому, что в KDE этот скрипт не запустится по даблклику даже будучи 777.

anonymous

(18.05.11 22:07:33 MSK)

  • Показать ответ
  • Ссылка

делаешь исполняемым и всё
так было всегда — и 3.5 кеды не исключение
завязывай троллить
или ты залез кривыми руками в мимы…хотя даже хз куда ты залез
это просто феерия

megabaks ★★★★

(18.05.11 22:25:02 MSK)

  • Показать ответы
  • Ссылка

Ответ на:

комментарий
от megabaks 18.05.11 22:25:02 MSK

ещё один вариант:
поменяй шабанг на #!/bin/bash
или проверь уже рабочая ли ссылка /bin/sh

megabaks ★★★★

(18.05.11 22:27:21 MSK)

  • Ссылка

Ответ на:

комментарий
от anonymous 18.05.11 22:07:33 MSK

А ничего, что для этого должны быть соблюдены аж три условия:

  • скрипт писан в виме
  • в vimrc прописана указанная вами команда

При этом, о том, запускается ли файл в терминале с указанием шелла, ТС не сказал ни слова. Утрите жир.

Axon ★★★★★

(18.05.11 22:29:31 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от megabaks 18.05.11 22:25:02 MSK

>делаешь исполняемым и всё так было всегда — и 3.5 кеды не исключение

Да нет же. OpenSUSE, практически дефлт, только кеды обновлены до 4.6 — запустить можно только по правому клику open with, на дабл клик — 0 реакции, то есть не происходит вообще ничего.

anonymous

(18.05.11 22:35:47 MSK)

  • Показать ответы
  • Ссылка

Ответ на:

комментарий
от anonymous 18.05.11 22:35:47 MSK

не знаю как в сюзи
в мандре и генте работает
мне может видео снять?

megabaks ★★★★

(18.05.11 22:37:36 MSK)

  • Ссылка

Ответ на:

комментарий
от Axon 18.05.11 22:29:31 MSK

Во-первых я помимо vim привел еще пару пунктов, которые вы благополучно проигнорировали.

Во-вторых о том, писан ли скрипт в виме ТС точно так же «не сказал ни слова». И непонятно, чем ваши домыслы о том, чего не сказал ТС, лучше моих.

В-третьих это все по прежнему не имеет отношения к неработающему даблклику в KDE

anonymous

(18.05.11 22:42:08 MSK)

  • Показать ответы
  • Ссылка

Ответ на:

комментарий
от anonymous 18.05.11 22:42:08 MSK

епонятно, чем ваши домыслы о том, чего не сказал ТС, лучше моих.

Тем, что мои домыслы предполагают, что ТС ничего не делал, а твои — что ТС настроил вим так же, как ты, и написал скрипт именно в нём. Бритва оккама, знаете ли, отличная вещь. Рекомендую к использованию.

Axon ★★★★★

(18.05.11 22:44:54 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от anonymous 18.05.11 22:42:08 MSK

В-третьих это все по прежнему не имеет отношения к неработающему даблклику в KDE

Конечно не имеет. Какое всё это может иметь отношение к тому, чего нет?

Axon ★★★★★

(18.05.11 22:45:30 MSK)

  • Ссылка

Ответ на:

комментарий
от Axon 18.05.11 22:44:54 MSK

>мои домыслы предполагают, что ТС ничего не делал, а твои — что ТС настроил вим так же, как ты, и написал скрипт именно в нём.

Да ну!? Принудительное указание шелла для исполнения скрипта это называется ничего не делал? Бритва вещь хорошая, но ей отсекают там где нужно, а не там где хочется.

Конечно не имеет. Какое всё это может иметь отношение к тому, чего нет?

И к чему тогда весь этот поток оффтопа, если сказать по сути нечего?

anonymous

(18.05.11 22:59:16 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от anonymous 18.05.11 22:59:16 MSK

Принудительное указание шелла для исполнения скрипта это называется ничего не делал?

Это предположение касалось не ТС, а тебя. И сделано оно было на основании предыдущего моего предположения о том, что вы сюда тупо потроллить зашли. К слову, оно, как раз, выходит верным, так что и мой вывод всё более обоснован. :-)

Axon ★★★★★

(19.05.11 00:45:27 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от Axon 19.05.11 00:45:27 MSK

>Это предположение касалось не ТС, а тебя. И сделано оно было на основании предыдущего моего предположения о том, что вы сюда тупо потроллить зашли. К слову, оно, как раз, выходит верным, так что и мой вывод всё более обоснован. :-)

Делая предположения основанные на предположениях основанных на предположениях, нужно иметь хоть какие-то обоснования верности самого первого предположения, иначе вся эта конструкция является не более чем результатом богатой фантазии. А вывод не обоснован ни разу, поскольку я только и сказал, что для KDE, в отличии от терминала, установки +x может быть недостаточно. А все остальное результат твоей обострившейся троллефобии.

anonymous

(19.05.11 13:39:02 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от anonymous 19.05.11 13:39:02 MSK

У меня нет троллефобии, скорее, троллефилия. Я и сам это дело люблю, правда, почти исключительно IRL. А первое предположение — о том, что ты тролль, основано на том, что пользы от тебя в этом треде как с козла молока — ты даже и слова не сказал в адрес ТС, не говоря о попытке ему помочь. Так что на троллефобию пенять нечего, троллить можно и не называя этот процесс так про себя.

Axon ★★★★★

(19.05.11 14:01:19 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от anonymous 18.05.11 22:35:47 MSK

Это не баг, а фича. Не запускает сам долфин. Если использовать другой ФМ, то скрипт будет выполняться. Проверял на 11.3 КДЕ 4.4.4

  • Ссылка

Ответ на:

комментарий
от Axon 19.05.11 14:01:19 MSK

У меня нет троллефобии, скорее, троллефилия. Я и сам это дело люблю

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

ты даже и слова не сказал в адрес ТС

Хотя рецепт для ТСа — вот он

anonymous

(20.05.11 22:51:16 MSK)

  • Показать ответ
  • Ссылка

Ответ на:

комментарий
от anonymous 20.05.11 22:51:16 MSK

Хотя рецепт для ТСа — вот он

Хм, не заметил, что это ты.

Axon ★★★★★

(21.05.11 08:37:34 MSK)

  • Ссылка

Всем спасибо, воспользовался крусейдером.

dkann

(22.05.11 00:04:30 MSK)

  • Ссылка

По Alt+F2 пробовал?

//тред не читал традиционно

Zhbert ★★★★★

(22.05.11 00:22:54 MSK)

  • Ссылка

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.

исполняемые файлы в linuxДоброго времени, читатели моих постов о Linux!

В сегодняшней статье расскажу о том, как работают исполняемые файлы. Из моей прошлой статьи о атрибутах доступа к файлам в Linux думаю Вам будет известно, что такое полномочия выполнения (исполнения).  Данное право можно установить для любого файла. Исходя из этого, можно задать вопрос: неужели любой файл можно сделать программой? Да, так  и есть. В Linux является ли файл исполняемым или нет, определяется не по его расширению, как в Windows (понятие расширение файла отсутствует в файловой системе Linux), а по правам доступа. Если у файла установлено право x (выполнения), его можно запустить на выполнение.

Что происходит, когда мы пытаемся выполнить файл? Мы пытаемся набрать имя и, может быть, путь к файлу, который пытаемся запустить в командной строке и нажимаем Enter. (если файл расположен в текущем каталоге, то необходимо набирать ./program). В первую очередь, оболочка проверяет, а имеет ли пользователь права на исполнение этого файла? Если имеет, тогда система смотрит, а это исполняемый бинарный файл? В Linux все исполняемые бинарные файлы в начале файла имеют заголовок .ELF (Executable and Linkable Format) (напомню, что в Windows в исполняемых файлах заголовок — MZ). Если это исполняемый бинарный файл, тогда, согласно его заголовку, происходит распределение оперативной памяти, и управление передается программе.

Если файл не бинарный, тогда считается, что это текстовый файл — скрипт или сценарий. В первых двух байтах сценария обнаруживается последовательность символов #!. Если символы «#!» присутствуют, тогда всю первую строку сценария, начиная с третьего байта, ядро воспримет как команду обработки. Исполнение сценария, содержащего указанную последовательность приведет к запуску указанной после » #!» команды, последним параметром которой будет имя самого файла сценария. Например, для файлов, написанных на языке shell script, первая строка будет выглядеть так:
#! /bin/sh

Для программ, написанных на perl, так:
#! /bin/perl

Таким образом, можно написать сценарий для любой программы, пример:

[bash@localhost ]$ cat > to.sort
 #!/bin/sort
 some
 unsorted
 lines
[bash@localhost ]$ chmod +x to.sort
[bash@localhost ]$ ./to.sort
 #!/bin/sort
 lines
 some
 unsorted

Во всех интерпретируемых языках программирования # — это символ комментария. То есть первая строка считается комментарием и программой не выполняется. При указании интерпретатора можно писать аргументы командной строки. Например:
#! /bin/sed -f command

Если в файле в первой строке нет этих символов, тогда все зависит о программы оболочки, в которой запускается программа. Если используется bash, то он считает, что файл содержит программу, написанную на языке shell script, запускает копию себя любимого и передает этой копии файл на интерпретацию. Если в файле действительно находится программа, то он ее выполняет. Если в файле находится «Война и мир» графа Льва Николаевича Толстого, то на экране появляются сообщения об ошибках shell script: «Я не знаю оператор Пьер Безухов. Наташа Ростова — это оператор или функция?»

Если Вы желаете выполнить exe-файл, который запускали в Windows, необходимо воспользоваться таким пакетом, как Wine. Но это уже совсем другая тема. :)

С Уважением, Mc.Sim!

P.S. Спасибо http://www.kryukov.biz/ за исходный текст.


Теги: bash, Linux, команды, основы


A Shell script is a script written for and to be interpreted by a Shell. Shell scripts use ShellCommands and a specific syntax. Operations performed by shell scripts include file manipulation, program execution, and printing text.

A script is a text file, which may or may not have the file extension .sh. Other file extensions may also be used, e. g. .bash or .zsh, but this has no effect on the script’s functionality. They are just used to inform a human user about the syntax used in the script or to tell an editor program which syntax highlighting it should use.

The first line of the file begins with the so called shebang (#!) followed be the path to the shell to interpret and execute the rest of the script:

For scripts using POSIX syntax:

#!/bin/sh

For scripts using Bash syntax:

#!/bin/bash

The MIME type of shell scripts is nowadays text/x-shellscript but other systems may still use application/x-shellscript. As the MIME type depends on the system’s configuration, other MIME types may be used, even text/plain.

On Microsoft Windows .bat or .cmd files play a similar role but have a different syntax.

External links

  • https://www.shellscript.sh/ — Linux Shell Scripting Tutorial


CategoryCommandLineInterface

OS: Kubuntu 18.04

The default file manager, dolphin, has the facility to use Service Menus, somewhat like Custom Actions in thunar and pcmanfm or Nautilus Actions.

Quoting from here:

In KDE-speak a «servicemenu» is a special entry that appears in a
context menu (or other context-based interface) for a file (or for
directory), depending on the type of files that are selected.

More information is available here.


To learn a bit more about this facility made my own Service Menu called «Open with Kate», ~/.local/share/kservices5/ServiceMenus/open-file.desktop, which I want to use to view and edit scripts in my ~/bin folder when in Dolphin.

[Desktop Action open-file]
Exec=kate "%U"
Name=Open with Kate
Icon=document-open

[Desktop Entry]
Actions=open-file

#Works
#MimeType=all/all

#Works
MimeType=text/plain;

#Doesn't work
#MimeType=text/x-shellscript;

ServiceTypes=KonqPopupMenu/Plugin
Type=Service
X-KDE-Priority=TopLevel

If I use MimeType=all/all or MimeType=text/plain; the service menu is functional. An «Open with Kate» entry is present and functional:

Open with Kate is seen

But I wondered if I could narrow the scope of this menu by changing the MimeType from all/all or text/plain to something more appropriate.

$ file --mime timestamp.sh
timestamp.sh: text/x-shellscript; charset=us-ascii
$

So I tried using MimeType=text/x-shellscript; hoping that the «Open with Kate» entry would appear when I right-clicked on plain text files or scripts but result is that the «Open with Kate» entry just disappears:

Open with Kate is absent

But x-shellscript is present in at least one .desktop file on my system, vim.desktop (towards the end of grep’s output):

$ grep -i shellscript /usr/share/applications/*.desktop
/usr/share/applications/vim.desktop:MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
$

So why doesn’t MimeType=text/x-shellscript; work in the context of «Open with Kate»?

Subversion редко устанавливает типы пантомимы сама по себе; либо ваш клиент сделал это сам (в этом случае вы, вероятно, захотите настроить его конфигурацию), либо активна некоторая форма стандартной обработки svn auto-props (опять же, вы захотите настроить ее — для сценариев оболочки вы также хотите установить svn:eol-style в LF; некоторые оболочки будут ругаться на окончания строк DOS/Windows, и, обеспечив повсеместное использование окончаний строк Unix, вы избежите проблем с использованием файлов через сетевой ресурс или некоторые сборки оболочек Windows (например, Cygwin)).

Проблема с виной svn заключается в том, что свойство имеет версию. Любая версия файла до изменения свойства по-прежнему является двоичной (поскольку MIME-тип не начинается с text/), поэтому различия (и вины) не будут работать (легко) против этих версий.

я думаю единственный фиксировать для этого нужно заставить администратора изменить репозиторий, чтобы удалить «плохой» тип пантомимы.

Однако в качестве обходного пути вы должны иметь возможность передать —force виноват, чтобы указать ему обрабатывать все файлы как текст.

Фактически, глядя на http://subversion.1072662.n5.nabble.com/svn-blame-not-working-for-files-which-had-binary-mime-type-in-a-previous-revision-td177847.html, последние клиенты Subversion скажут вам использовать —force.

Понравилась статья? Поделить с друзьями:
  • Ссср 20 лет спустя сценарий
  • Ссо россии праздник
  • Ссо праздник поздравления
  • Ссо праздник 27 февраля
  • Ссо день праздника