Rheinwerk Computing Linux - 7 A héj
7.11 Hatékony együttműködés a Bashszal
Ennek az alfejezetnek a célja annak bemutatása, hogyan teheti könnyebbé mindennapi munkáját a bash (Bourne-Again-Shell) használatával.

7.11.1 A parancs előzményei
Mindenképpen ismernie kell a legegyszerűbb bash funkciót, amely valamilyen munkát végez az Ön számára: a parancs előzményeit. Menti a legutóbb beírt parancsokat. Hozzáférhet hozzájuk, és nem kell újra megadnia őket, hogy visszakapja őket. Ezenkívül a bash lehetőséget kínál ezen parancsok szerkesztésére.
Egy egyszerű előzményhívás áttekintést nyújt az előzményekben található parancsokról. Szám beírásával láthatja az utolsó n bejegyzést.
7.59 A történelem
A nem kívánt bejegyzéseket az előzményekből törölheti az előzmények listájából a -d előzmények segítségével.
Az előzmények görgetése
Tegyük fel például, hogy a find/usr/local/bin -name "fájlnév" parancs végrehajtásra került. Most ugyanazt a parancsot más fájlnévvel szeretné futtatni. Annak érdekében, hogy ne kelljen mindent újra begépelnie, a kurzor billentyűvel felfelé töltheti be a parancssorba utoljára beírt parancsot.
A felfelé mutató nyíl újbóli megnyomásával a bash újratölti az utolsó előtt meghívott parancsot a parancssorba, és így tovább - ilyen egyszerű. A lefelé mutató nyíl segítségével böngéssze újra az előzményeket.
Szerkesztés a parancssorban
A régi keresési hívás adaptálása érdekében az új fájlnevet be kell illeszteni a régi parancs bemenetébe. A kurzor balra és jobbra mozoghat a parancssorban, és törölheti és beillesztheti a karaktereket minden pozícióba.
A felkiáltójelnek nagyon speciális funkciója van a bash-ban. A parancsok meghívására szolgál az előzményekből.
Az utolsó beírt parancsot két felkiáltójellel ismételheti meg:
7.60 Az utolsó parancs újbóli végrehajtása
Megismételheti a parancsok előzményeiben tárolt parancsok egyikét is, megadva a parancs számát. A parancs előzményszámát az előzmények parancs meghívásával kaphatja meg. A parancsot ezután újra végrehajtjuk! N-vel (ahol n a parancs száma).
7.61 !n
Parancsok keresése
A bash nagyon hasznos tulajdonsága, hogy parancsok után kutathat a parancs első néhány karakterének megadásával. Most valószínűleg azon gondolkodik, hogy mit tud elképzelni ezzel? Mint oly gyakran előfordul, ez a funkcionalitás egy példával magyarázható a legjobban.
[pl] A felhasználó először megadja az uname parancsot, majd a uptime parancsot. Most újra szeretné indítani az üzemidőt, később uname-et, anélkül, hogy újra megadná ezeket a parancsokat. A parancs előzményeinek első megtekintése gyakran nehézkes. Ezért a felhasználó parancskeresést használ.
A legegyszerűbb változat most a következő: A felhasználó beír egy felkiáltójelet, majd azonnal követi a parancs első betűjét, azaz egy »u« betűt. A shell ekkor hívja meg az utolsó "u" betűvel kezdődő parancsot, azaz üzemidőt. De ha a felhasználó meg akarja nevezni az uname-et, akkor nem elég egy »u« betűt tenni a felkiáltójel után. Ehhez meg kell adni a parancs második betűjét, azaz egy »n« betűt, amely után az utolsó »un« betűvel kezdődő parancsot újra végrehajtják:
7.62 Parancsok keresése
Az utolsó parancsot, amely egy adott karakterláncot tartalmazott, megtalálja a hívással !? fuss újra.
A trükkök zsákjából
Ez sokkal kényelmesebb a Ctrl + R billentyűkombinációval. Ezzel az eljárással a bash automatikusan megmutatja, hogy mely parancsot hajtják végre a parancssor szerkesztése közben:
7.63 Ctrl + R
Cserélje ki a régi parancsok részeit
Emlékszik a megismételt hívásra, hogy megtalálják, amelyet szerkeszteni kellett egy új fájlnév kereséséhez? Ez újra egyszerűsíthető a bash-ban, ha a find parancsot utoljára adták meg. Az utolsó parancsban cserélendő karakterlánc megadásával egy régi parancs módosítva hajtható végre.
Az említett keresési hívás így nézett ki: find/usr/local/bin -name "fájlnév". Az zsh fájlnév kereséséhez és ugyanazon parancs használatához a régi parancsot az \ Alter-String \ NewString \ minta szerint kell kezelni, azaz:
7.64 A find parancs új fájlnévvel
7.11.2 A fájlnevek automatikus kitöltése
Hasonló gyakorlati funkció, mint a parancs előzménye, a fájlnevek automatikus kitöltése, amelyet a tab billentyű segítségével bash vezérel. Mivel a programok a Unix alatt is fájlokat jelenítenek meg, ez a funkció természetesen velük is működik.
A Tab billentyű használatakor két esetet kell megkülönböztetni:
- Csak egy egyező fájl van.
- Több egyező fájl van.
Csak egy jelölt
Az első esetben létrehozunk egy példakönyvtárat, amelybe egy abc.txt nevű fájlt teszünk.
7.65 Hozzon létre egy könyvtárat egy fájlból
Ha olyan programot használunk, mint a/bin/ls, amelynek paraméterként átadjuk ezt a fájlt, akkor csak a Tab billentyűt kell megnyomnunk, mivel a könyvtárban csak egy fájl található, és a bash automatikusan a fájl nevét állítja be a Kívánt pozíció a bemenetben.
[Pl.] Próbálja ki maga: Váltson az új könyvtárra, írja be az ls és a szóközöket, majd nyomja meg a Tab billentyűt. A Bash-nek most automatikusan be kell írnia az abc.txt fájlnevet a parancssorba.
Most létrehozunk egy fájlt az xyz.txt névvel a könyvtárban. Ha megismétli az utolsó példát új körülmények között, akkor az nem fog könnyen működni. Bash önmagában nem tudja, hogy a két fájl közül melyiket adja át paraméterként. A trükk ma már úgy működik, hogy annyi karaktert ad meg a fájlnévből, amíg csak egyetlen fájlnév van, amelyre az első karakterek vonatkoznak - ebben az esetben a fájl első betűje elegendő (vagy egy »a«, vagy egy »» x «), mivel egyetlen fájlnév sem tartalmazza ugyanazokat a karaktereket. Ha ezután a Tab billentyűt újra megnyomja, a bash automatikusan újra kitölti a fájl nevét.
De a bash egy kis munkát végezhet érted. Tegyük fel, hogy két abc és abd fájl van egy könyvtárban. Ha amúgy sincs választás a karakterek között, akkor a Tab billentyű lenyomásával ezek a karakterek mindig a monitorra kerülnek. Tehát, ha egy ilyen könyvtárban megnyomja a Tab billentyűt, a bash beírja az első két karaktert (mivel ezek egyébként megegyeznek, és ezeket be kell írnia). Ekkor csak egy »c« vagy «d« betűt kell megadnia.
Abban az esetben, ha az xyz fájl még mindig megtalálható a könyvtárban, az első betűt újra meg kell adni, mivel két eset ismét előfordulhat.
Ha egynél több fájl van, akkor a Tab billentyű kétszer megnyomásával áttekintést kaphat a könyvtárban található fájlokról, miközben parancsokat ad meg. Ennek kétszeri megnyomásával a bash mindig megadja azokat a fájlválasztásokat, amelyek még lehetségesek az előző bevitel szerint.
Ez azt jelenti a példában: Ha a három xyz, abc és abd fájl megint szerepelne a könyvtárban, akkor a bash először mindháromat felsorolná. Ha ezután beír egy "A" betűt és megnyomja a Tab billentyűt, a bash megadja a "B" betűt (az egyetlen hasznos lehetőség) a képernyőn. Ha ezután ismételten megnyomja a Tab billentyűt, a bash mostantól a két lehetséges abc és abd fájlnevet adja ki.
Ezenkívül a  tab billentyű »intelligens«: A shell bejegyzés elején csak egy futtatható parancsnak van értelme - ennek megfelelően csak a futtatható fájlok vagy a beépített shellek vannak kitöltve.