Portál AbcLinuxu, 13. května 2025 20:15

Dotaz: alias - jak spustit cd a ll zároveň?

11.1.2008 10:01 Terka | skóre: 13
alias - jak spustit cd a ll zároveň?
Přečteno: 521×
Odpovědět | Admin
ahoj, je mozne provest pomoci aliasu nasledujici: kdyz zmenim adresar, aby mi rovnou poslal i prikaz ll -tr.

misto
cd adresar
cd adresar; ll -tr
ten adresar muze byt libovolny, myslela jsem neco jako
sleep 1; ll -tr & cd adresar
(tj. aby prikaz ll -tr chvili pockal) diky! T.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.1.2008 10:25 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: pomoc s aliasem
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pomocí aliasu to zřejmě nepůjde. K tomuto účelu bych použil funkci.
Např takto:
zmena () {
cd $1 && ll -tr
sleep 1
}

Funkci lze umístit do souboru ~/.bashrc, aby byla vždy k dispozici.
11.1.2008 10:43 Terka | skóre: 13
Rozbalit Rozbalit vše Re: pomoc s aliasem
Diky! 1. Je tedy _jiste_ ze to pomoci aliasu nejde? 2. Ten sleep jsem chtela proto aby se spustil "ll -tr" az za sekundu a tim by se ten "cd" vykonal drive. To by zpusobilo "prohozeni" techto 2 prikazu a slo by to do aliasu.
11.1.2008 10:50 xavier | skóre: 10 | blog: borkovo
Rozbalit Rozbalit vše Re: pomoc s aliasem
sleep ale nepozdrzi vykonani prikazu. sleep 1; ll -tr & cd adresar by nejdřív vykonal příkaz sleep(pockal by vterinu) a pak by se provedli prikazy ll -tr & cd adresar.
11.1.2008 10:55 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: pomoc s aliasem
Je tedy _jiste_ ze to pomoci aliasu nejde?

Jde to (bash mi tohle vezme): alias cd2='(sleep 1; ll -tr; echo)& cd', ale má to nevýhodu, že se mj. objeví zpráva o spuštění procesu v pozadí (a za chvíli o jeho ukončení) a po doběhnutí výpisu se neobnoví prompt (tím myslím, že je o těch x řádek výš).

Mimochodem, i ta funkce se může jmenovat cd - na ten původní cd se jde odvolat pomocí něčeho jako command cd nebo tak nějak.

I am always ready to learn although I do not always like to be taught. (W. Churchill)
11.1.2008 11:00 xavier | skóre: 10 | blog: borkovo
Rozbalit Rozbalit vše Re: pomoc s aliasem
Původní cd by se spouštělo \cd.
11.1.2008 11:14 Terka | skóre: 13
Rozbalit Rozbalit vše Re: pomoc s aliasem
me to vylistuje stary adresar, ne ten novy
11.1.2008 11:23 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: pomoc s aliasem

I potom, co se to uspí na delší dobu (třeba 2s)? Mimochodem, to echo tam být nemusí, to jsem jenom špatně zkopíroval.

I am always ready to learn although I do not always like to be taught. (W. Churchill)
11.1.2008 11:27 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: pomoc s aliasem

Hups - to se mi nepovedlo - teď jsem to znovu zkoušel a vylistuje to skutečně ten starý (předtím jsem měl v obou podobně pojmenované soubory). Takže to asi aliasem nepůjde (asi určitě, protože ten parametr potřebuji použít 2× nebo někde uprostřed, což alias neumí), ale tou funkcí určitě ano. Omlouvám se.

I am always ready to learn although I do not always like to be taught. (W. Churchill)
11.1.2008 11:29 Terka | skóre: 13
Rozbalit Rozbalit vše Re: pomoc s aliasem
jo i potom.
11.1.2008 12:08 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: pomoc s aliasem
To je ale správně. Příkaz cd mění pracovní adresář shellu, ale v tu dobu už je obsah těch kulatých závorek spuštěn jako samostatný proces se svým vlastním pracovním adresářem. Pokud chcete něco jiného, pak bude asi lepší, když napíšete, jak přesně se to má chovat.
11.1.2008 12:05 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: pomoc s aliasem
U aliasů je ale problém v tom, že neinterpretují jednotlivé poziční parametry. Takže jestli jsem zadání pochopil správně, tak je požadováno změnit pracovní adresář následně na něm provést ll -tr a to tvůj zápis aliasu neprovede. Alias provede příkaz ll -tr na aktuálním pracovním adresáři a současně změní pracovní adresář.
11.1.2008 12:14 Terka | skóre: 13
Rozbalit Rozbalit vše Re: pomoc s aliasem
ano presne tak. zkousela jsem to a stacila by i ta funkce, jen mi nebeha s cd -, cd ..
11.1.2008 12:20 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: pomoc s aliasem
  function cdls
  {
    cd "$1"
    ls -l
  }

mi funguje.

11.1.2008 12:24 Terka | skóre: 13
Rozbalit Rozbalit vše Re: pomoc s aliasem
me ne. kdyz dam cd .., tak to nevyhodi prompt
11.1.2008 12:25 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: pomoc s aliasem
Myslíte 'cdls ..'?
11.1.2008 12:30 Terka | skóre: 13
Rozbalit Rozbalit vše Re: pomoc s aliasem
ano
11.1.2008 12:46 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: pomoc s aliasem
Nemůže za to zbytek po některém z předchozích pokusů naaliasovat cd?
11.1.2008 12:54 Terka | skóre: 13
Rozbalit Rozbalit vše Re: pomoc s aliasem
tak uz mi to chodi i pres funkci, diky vsem! jen tam musim dopsat cd samotne, aby mi hazelo do home
11.1.2008 12:33 Jan Šimák | skóre: 37 | Hradec Králové
Rozbalit Rozbalit vše Re: pomoc s aliasem
Funkce se používají stejně jako jakékoli jiné příkazy, takže: jmeno_funkce parametr1 parametr2 ... Např: cdls /var/
11.1.2008 12:15 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: pomoc s aliasem

Přesně tak. Viz též bash(1):

There is no mechanism for using arguments in the replacement text. If arguments are needed, a shell function should be used (see FUNCTIONS below).

...

For almost every purpose, aliases are superseded by shell functions.

David Watzke avatar 11.1.2008 20:37 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: pomoc s aliasem
1. Je tedy _jiste_ ze to pomoci aliasu nejde?
Mrkni na shopt expand_aliases.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
11.1.2008 21:04 Ash | skóre: 53
Rozbalit Rozbalit vše Re: pomoc s aliasem
Přesněji na sekci ALIASES, ze které už nakonec citoval Michal Kubeček. Je tam v zásadě řečeno že to nejde.
11.1.2008 10:54 Aleš Kapica | skóre: 52 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: alias - jak spustit cd a ll zároveň?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Si to udělej jako skriptík a ten si strč někam do cesty..
11.1.2008 11:15 Terka | skóre: 13
Rozbalit Rozbalit vše Re: alias - jak spustit cd a ll zároveň?
to prave nechci, potrebovala bych to pomoci aliasu
11.1.2008 11:26 Terka | skóre: 13
Rozbalit Rozbalit vše Re: alias - jak spustit cd a ll zároveň?
Jedna se o bash. Chci napsat cd a pravym tlacitkem mysi vlozit cestu, enter. Aby to udelalo cd a pak ll -tr. Jde ta funkce udelat primo v aliasu?
11.1.2008 11:38 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: alias - jak spustit cd a ll zároveň?
Jaký je důvod pokoušet se to pořád naroubovat na alias? Jenom to překrytí původního příkazu cd?

Napíšete si do .bashrc funkci pokud ji chcete volat příkazem cd, uděláte si na ni alias
cd2 () {
  cd $1 && ll -tr
}
alias cd=cd2
11.1.2008 11:40 Terka | skóre: 13
Rozbalit Rozbalit vše Re: alias - jak spustit cd a ll zároveň?
a co se stane pri cd .. cd - cd -- cd ?
11.1.2008 13:30 Ash | skóre: 53
Rozbalit Rozbalit vše Re: alias - jak spustit cd a ll zároveň?
Nic zvláštního, klasika -- cd .. nadřazený adresář, cd - předchozí adresář, cd -- do $HOME.
11.1.2008 15:37 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: alias - jak spustit cd a ll zároveň?
Podívejte se do bash(1), co se tam píše o proměnné CDPATH.
11.1.2008 16:23 Ash | skóre: 53
Rozbalit Rozbalit vše Re: alias - jak spustit cd a ll zároveň?
Asi jste chtěl reagovat na nějaký jiný příspěvek, řeklbych.
12.1.2008 00:01 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: alias - jak spustit cd a ll zároveň?
To ani ne, jen takové náhlé zatmění mysli, neuvědomil jsem si, že je rozdíl mezi cd bez parametru a cd s prázdným parametrem.
11.1.2008 11:51 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: alias - jak spustit cd a ll zároveň?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Na kieho oného tam potrebuješ cd?

Keď urobím alias takto:

alias vypis='ls -tlr'

a potom spustim takto:

vypis /tmp

ak potom dostanem vypis adresara /tmp.
11.1.2008 11:57 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: alias - jak spustit cd a ll zároveň?
Jo a pokiaľ ti ide o to urobiť náhradu za cd samotné, tak by som to robil cez prompt. Existuje Bash-Prompt-HOWTO. V obsluhe prompt-u by som porovnal $OLDPWD a $PWD a ak sa líšia zavolal ls.
11.1.2008 14:37 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: alias - jak spustit cd a ll zároveň?
pekná finta, škoda, že som si otázku nepozrel skôr
PROMPT_COMMAND='[ "$OLDPWD" = "$PWD" ] || ls -tr'
11.1.2008 14:58 Ash | skóre: 53
Rozbalit Rozbalit vše Re: alias - jak spustit cd a ll zároveň?
A tohle vám funguje? Vždyť $OLDPWD se od $PWD liší víceméně pořád, takže to vám bude ls -tr dělat permanentně.
11.1.2008 15:36 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: alias - jak spustit cd a ll zároveň?
hmm, len som slepo prepísal predchádzajúcu myšlienku
PROMPT_COMMAND='[ "$OLDPWD" = "$PWD" ] || ls -tr; cd .'
správne fungovať bude, ale prestane fungovať cd -

oboje by sa dalo vyriešiť premennou, alias cd nastaví, prompt_command zruší

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.