Portál AbcLinuxu, 11. května 2025 18:44

Dotaz: BASH - Vypsani příkazu

12.3.2011 20:48 aass
BASH - Vypsani příkazu
Přečteno: 395×
Odpovědět | Admin
Ahoj, jak bych mohl páni programátoři v bash vypsat příkaz do CL?
Příklad: Když zadam do CL příkaz /home/start.sh

aaa@debian:~# /home/start.sh

tak abych dostal tohle

aaa@debian:~# /etc/init.d/apache2 reload

ne tohle

/etc/init.d/apache2 reload
aaa@debian:~# 
Děkuji za ochotu

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.3.2011 22:03 l4m4
Rozbalit Rozbalit vše Re: BASH - Vypsani příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Externí program nemůže sám jen tak něco napsat do příkazové řádky tvého shellu. Naštěstí.

Asi nejbližší věci jsou

a) alias

b) $(...)

c) source
12.3.2011 23:14 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: BASH - Vypsani příkazu
To bych tak kategoricky netvrdil. Někdy, když vypíšu obsah nějakého netextového souboru na terminál, se mi stane, že na příkazové řádce se objeví nějaké znaky, které se pak dají i odeslat jako příkaz. Ale zatím jsem nezkoumal, čím je to způsobeno ani jestli by se to dalo nějak cíleně použít.
12.3.2011 23:41 l4m4
Rozbalit Rozbalit vše Re: BASH - Vypsani příkazu
To je pravda a napadlo mě i pár dalších způsobů, jak tam asi v principu něco dostat, ale raději je ani nezmiňuji. Snad tazatel napíše, k čemu to chce využívat, a půjde poradit něco příčetného...
13.3.2011 11:52 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: BASH - Vypsani příkazu
To je jen v případě že ty znaky tam nacpe sám terminál. Např.
$ echo -e '\033[c'
Ale nevím o tom, že by se dal terminál donutit odeslat libovolný znak. Teoreticky by se asi dalo připojit na proces shellu a něco mu podsunout do terminálového fd.

Každopádně myslím že tazatel to chtěl používat asi spíš tak, že se mu něco na příkazové řádce "předpřipraví" a on si to pak překontroluje, vyedituje a odešle. Na to lze použít tunu jiných řešení.
In Ada the typical infinite loop would normally be terminated by detonation.
13.3.2011 13:18 aass
Rozbalit Rozbalit vše Re: BASH - Vypsani příkazu

Každopádně myslím že tazatel to chtěl používat asi spíš tak, že se mu něco na příkazové řádce "předpřipraví" a on si to pak překontroluje, vyedituje a odešle. Na to lze použít tunu jiných řešení.
Přesně tak jsem to myslel, nahážu si do souboru.sh hodně dlouhé příkazy a potřebuji je jen zobrazit, které si upravím a dám enter, nic víc od toho nepotřebuji. Děkuji
13.3.2011 14:14 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: BASH - Vypsani příkazu
Co vám brání z toho soubor.sh udělat normální skript? Proměnné věci můžete dodat jako parametr skriptu.
In Ada the typical infinite loop would normally be terminated by detonation.
13.3.2011 16:00 l4m4
Rozbalit Rozbalit vše Re: BASH - Vypsani příkazu
fc
13.3.2011 14:54 Ash | skóre: 53
Rozbalit Rozbalit vše Re: BASH - Vypsani příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud by se vám nepodařilo to vyřešit tak jak chcete, tak mne napadají možnosti, jak si usnadnit práci obdobným způsobem (od časově nejnáročnějších, rozumných a nejefektivnějších až po nejméně náročné a šílené):

Naučit se hodně rychle psát a trénovat paměť na příkazy.

Používat historii shellu (u bash třeba ctrl+r, naučit se pohybovat v shell historii i shell řádce a mazat třeba jednotlivá slova, apod, bash má hodně věcí, lze použít i vim-like mód).

Zkusit zapřahnout schránku, něco jako dát do skriptu
xsel --clipboard <<<"echo foo"
xsel --clipboard -o &
akorát by to chtělo vymyslet aby to neodřádkovalo :)

Zapojit historii bash aktivně, tedy vypsat si ten příkaz do historie, a pak zkusit použít třeba PROMPT_COMMAND pro načtení history -r té historie. Nevím zda by to šlo, možná jo. Pak by stačla šipka nahoru a bylo by.
Jendа avatar 13.3.2011 20:13 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: BASH - Vypsani příkazu
akorát by to chtělo vymyslet aby to neodřádkovalo :)
echo -n foo, ale stejně to nefunguje.
13.3.2011 22:26 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: BASH - Vypsani příkazu

Ono je to mozne cez xsel nasledovne:

pato@debian:~$ xsel --clipboard <<<"ls -l /"
pato@debian:~$ $(xsel --clipboard -o -n &) 
total 93
drwxr-xr-x   2 root root  4096 Mar 13 18:08 bin
drwxr-xr-x   4 root root  1024 Mar 12 17:05 boot
lrwxrwxrwx   1 root root    11 Jan  4 09:03 cdrom -> media/cdrom
drwxr-xr-x  18 root root  3380 Mar 12 17:04 dev
drwxr-xr-x 144 root root 12288 Mar 13 20:41 etc
drwxr-xr-x   4 root root  4096 Jan  4 09:26 home
lrwxrwxrwx   1 root root    30 Jan  4 17:32 initrd.img -> boot/initrd.img-2.6.32-5-amd64
drwxr-xr-x  12 root root 12288 Mar 13 18:14 lib
lrwxrwxrwx   1 root root     4 Jan  4 09:04 lib64 -> /lib
drwx------   2 root root 16384 Jan  4 09:03 lost+found
drwxr-xr-x   4 root root  4096 Mar  4 08:30 media
drwxr-xr-x   3 root root  4096 Jan 31  2010 mnt
drwxr-xr-x   2 root root  4096 Jan  4 09:04 opt
dr-xr-xr-x 187 root root     0 Mar 10 20:39 proc
drwx------  17 root root  4096 Mar 12 17:02 root
drwxr-xr-x   2 root root 12288 Mar 12 17:02 sbin
drwxr-xr-x   2 root root  4096 Nov 20  2009 selinux
drwxr-xr-x   3 root root  4096 Jan  6 13:04 srv
drwxr-xr-x  13 root root     0 Mar 10 20:39 sys
drwxrwsrwx  16 root root   380 Mar 13 21:26 tmp
drwxr-xr-x  12 root root  4096 Feb 14 22:00 usr
drwxr-xr-x  16 root root  4096 Jan  4 22:21 var
lrwxrwxrwx   1 root root    27 Jan  4 17:32 vmlinuz -> boot/vmlinuz-2.6.32-5-amd64
Jendа avatar 13.3.2011 22:29 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: BASH - Vypsani příkazu
On chtěl mít možnost ten příkaz na řádce upravit.
13.3.2011 23:10 Ash | skóre: 53
Rozbalit Rozbalit vše Re: BASH - Vypsani příkazu
To ale dělá něco jiného než je v zadání. Podle mne tam ten nový řádek dá xsel, jiná utilita xclip se bohužel chová stejně, xpaste nemám ale to bude dost možná nějaký alias xsel.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.