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

Автор dr.Faust, 3 июня 2010, 19:57

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

dr.Faust

ifconfig - тоже программа, ничем не хуже чем bash, но не работает и с ним. Я всё же склоняюсь к http://forumooo.ru/index.php/topic,429.msg3127.html#msg3127
Свобода информации - свобода личности!

convas

http://ss64.com/bash/
An A-Z Index of the Bash command line for Linux:
...
  if       Conditionally perform a command
  ifconfig Configure a network interface
  ifdown   Stop a network interface
...

dr.Faust

И что? Тем не менее, и ifconfig и даже cp к примеру это программы.
Linux guru, поправьте меня если не так...
Свобода информации - свобода личности!

convas

#18
cp - файл с программой, расположен в /bin

где расположен файл ifconfig ?

если файл ср удалить из /bin, то
Shell("cp file1 file2")
вызовет ошибку "Файл не найден".


bormant

Цитата: convas от  4 июня 2010, 19:13Где расположен файл ifconfig
# which ifconfig
/sbin/ifconfig

Не читайте перед обедом советских газет (q) проф.Преображенский -- Булгаков М.А., Собачье сердце.
Автору на яд. Поддержать форум.

prof-alex

Цитата: dr.Faust от  4 июня 2010, 20:02
Тем не менее, и ifconfig и даже cp к примеру это программы.
Ряд программ, в bash (и не только в нём) оказываются встроенными. Но именно для того, чтобы не натыкаться на ограничения различных оболочек в сценариях, лучше указывать полный путь к исполняемому файлу.
Но если окружение построено на busybox (к примеру), то /bin/cp окажется ссылкой на busybox :-)

«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации» Э. Дейкстра

convas

Цитата: bormant от  4 июня 2010, 22:18
# which ifconfig
/sbin/ifconfig

Не читайте перед обедом советских газет (q) проф.Преображенский -- Булгаков М.А., Собачье сердце.

А где файл echo?

А российских газет никогда и нигде, даже в туалете. -- Я.

prof-alex

Цитата: convas от  4 июня 2010, 23:14
А где файл echo?
Вы будете смеяться, но: $ which echo
/bin/echo

«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации» Э. Дейкстра

convas

#23
Так в чем же разница тогда между cp и echo, ifconfig - и то, и другое программы, а ср выполняется , а другие нет?
(В ifconfig знака > нет.)

prof-alex

Знак '>' не обрабатывается программой (ifconfig в частности), это указание интерпретатору как именно её (программу) запускать. Все эти трюки с перенаправлением ввода/вывода нужно делать в скриптах, которые, в свою очередь, будут вызываться из Shell(...)

«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации» Э. Дейкстра

dr.Faust

Свобода информации - свобода личности!

N2H4

#26
Цитата: Трио от  4 июня 2010, 12:05
команда Shell не работает если нужно вывести отчёт в файл. (Хотя почему-то у N2H4 работает (?)
Ещё раз подтверждаю:
у меня действительно работает на связке InfraLinux 8.04 + OO.o 3.1.1 Pro + lxterm в роли x-terminal-emulator [интересно, есть ли у кого-нибудь ещё такая система или такая же версия OO.o, чтобы сравнить?],
если команду, передаваемую x-terminal-emulator, окружить любыми кавычками (

Shell ("x-terminal-emulator -e 'echo ""ффффффффф кккк"" > /tmp/TmpIntFl'")
или
Shell ("x-terminal-emulator -e ""echo 'ёё' > /tmp/TmpIntFl""")

)
а вот почему?  По-видимому, не может устоять перед моим обаянием, если у кого-то при таких же условиях не работает...

Цитата: convas от  4 июня 2010, 10:55
x-terminal-emulator - отдельная программа, эмулирующая работу bash, и имеющая командную строку, в которой можно (или нельзя) передать  собственно команду для выполнения.
Моей версии lxterm'а - точно можно
Цитата: convas от  4 июня 2010, 15:21
Чтобы выполнить команду "echo 'тест' > /tmp/TmpIntFl" нужно, чтобы Shell выглядел так:
Shell("bash echo 'тест' > /tmp/TmpIntFl")  - ???
Но bash не может иметь такой командной строки.
Цитата: Трио от  4 июня 2010, 12:05
хотя canvas говорит, что вообще не должно работать (?)
Зато его эмулятор lxterm - может, что у меня и работает, не вопреки, а как раз согласно утверждению convas, если прочитать его внимательнее.

Вместо lxterm (x-terminal-emulator) можно использовать xterm, только что проверено.




О! Также оба варианта работают на Debian Lenny + OOo 2.4.1 + lxterm (x-terminal-emulator) или xterm.
Возможно, дело в терминале?
Куда указывает x-terminal-emulator у тех, у кого не работают вышеописанные команды?





Shell ("bash -c 'echo ""тест"" > /tmp/TmpIntFl'")

тоже создаёт файл /tmp/TmpIntFl с нужным текстом...

Рыбка Рио

А вот эта команда действительно работает (OOO320m18 ваниль и OOO320m12 Go-OO) :
Цитата: N2H4 от  5 июня 2010, 08:10

Shell ("bash -c 'echo ""тест"" > /tmp/TmpIntFl'")

тоже создаёт файл /tmp/TmpIntFl с нужным текстом...
ubuntu 12.04 + LibO3.6.0

Рыбка Рио

И вот эти работают:
Shell ("lxterm -e 'echo ""ффффффффф кккк"" > /tmp/TmpIntFl4'")
Shell ("xterm -e 'echo ""ффффффффф кккк"" > /tmp/TmpIntFl4'")
Значит, N2H4 нашли причину: дело в теминале. (?)
ubuntu 12.04 + LibO3.6.0

Рыбка Рио

Кстати, тема на oooforum.org приобретает новый вид. Оказывается не нужно скрипты bash делать исполняемыми их можно писать прямо в макросе. К примеру:

Sub Main
Shell ("bash -c 'zenity --timeout 5 --info --text ""Привет, ребята.""'")
End Sub


ubuntu 12.04 + LibO3.6.0