- Печать
Страницы: [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/imm/ вот такой каталог bin/archive/fluent, которого, естественно, там нет.
/home/bin/archive/fluent -r[1-9]*
./fluent_link: строка 284: /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 является ли файл исполняемым или нет, определяется не по его расширению, как в 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:
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:
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.