- A hozzászóláshoz be kell jelentkezni
- 4732 megtekintés
Hozzászólások
Az a baj, hogy van test? Számomra inkább az nem egészen világos, hogy ha van belső shell parancsként, minek külsőként is? Hasonlóképpen pl. az echo esetében.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
bash es dash eseten ez igaz (linuxon az sh altalaban symlink a dash-re), BSD-ken ez amennyire tapasztaltam mashogy van, mas az alap shell, bash pedig nincs is a /bin-ben, boot folyamat alatt altalaban nem is erheto el a /usr mountolasa elott.
A cikkben a megegyezo file meretekbol latszik is hogy az sh, ksh, rksh feltehetoleg ugyanaz, ezekben nincs test vagy "[" builtin es ezt nem neztem meg, de feltehetoen echo sincs.
- A hozzászóláshoz be kell jelentkezni
Ezért kell a -l opció mellett ismerni a -i opciót is és persze tudni, h mi a franc az az i-node (szám). A fájlméret nem igazán egyértelmű azonosítási lehetőség - gondolj pl. a busybox-ra, de sokkal jobb példa a FreeBSD-féle /rescue, ahol ilyen busybox-szerű (de teljesen más megvalósítás) eredményeként van (ezen a gépen pl.) 143 db azonos méretű bináris, amiknek még az ilyen-olyan checksum-ja, meg hash-e is megegyezik (merthogy ugyanaz a bináris 143 különböző linken), de ha /rescue/sh-t indítasz, akkor egy POSIX-shell-szerűség fog futni, míg ha /rescue/csh-t, akkor C-shell! (És hogy a kiindulásra is hivatkozzunk, ha /rescue/test -ként vagy /rescue/[ -ként, akkor a test segédprogram.)
- A hozzászóláshoz be kell jelentkezni
Történelmi okokból van. A korai shellekben sok olyan parancs nem volt belső parancsként elérhető, ami ma (pl. POSIX előírások, vagy más okból) már igen. Tipikusan az echo, test ( vagy [ ) és pwd ilyenek. Sok régi script hivatkozik is a /bin/test-re vagy /bin/echo-ra (a pwd-re és a [-re asszem az életben nem láttam path-szal hivatkozni). Ráadásul a Bourne- és a C-shellek némileg eltérő opciókat ismertek, amikor már lett belső paranacs - ennek (is) lett az egyk következménye, hogy ha valaki biztosan azt a fajtát akarta használni a scriptjében, akkor /bin/test-et írt
- A hozzászóláshoz be kell jelentkezni
Köszönöm szépen. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
ezek szerint tevedtem. :)
Mindenesetre egy google "ksh man page" keresessel talalt oldalon nem szerepelt a builtin-ek kozott es most kiprobalva sajat man page-en sem, viszont gyakorlatban van.
- A hozzászóláshoz be kell jelentkezni
Milyen ksh? A pdksh (a saját man-jában is annak hívja magát) doksijában szerepel a [ parancs a "Command Execution" fejezetben, az "Additional ksh regular commands" között, majd részletesen a test parancsnál. Ha ksh93-ról beszélünk, akkor a "Built-in Commands." részben lenne a helye, de valóban nem szerepel a manual-ban sehol a test (vagy [ ) parancs, egyedül a ksh/bash/posix-specifikus [[ forma leírása szerepel - ez tény. (Lehet kéne nekik dobni egy hibajegyet :-) )
$ ksh93
$ type [[
[[ is a keyword
$ type [
[ is a shell builtin
$ type test
test is a shell builtin
- A hozzászóláshoz be kell jelentkezni
a kill a legfontosabb belső parancs, nem? :)
- A hozzászóláshoz be kell jelentkezni