Hozzászólások
Egész pontosan mi a kérés? Házi feladat vagy ZH másokkal való megoldatása?
A feladatok önálló megoldásához az alábbiakat érdemes tanulmányozni, minden kérdésre megvan bennük a válasz:
man bash
man chmod
man dd
man du
man file
man find
man grep
man init
man kill
man ls
man lsof
man ssh
man ssh-agent
man tee
man wc
- A hozzászóláshoz be kell jelentkezni
+1
----------------------------------------------------------
Sebeink emlékeztetnek arra, hogy a múlt valóban megtörtént
- A hozzászóláshoz be kell jelentkezni
ilyen mintha már pont lett volna tegnap
1. dd if=/dev/scd0 of=foo.iso
2. tee
3. lsof, attól függ hogy milyen rendszerről beszélünk
4. /etc/rc1.d
5. KILL, 9
6. ls -i
7. ls -l foo.txt, fájl esetén a permission utáni szám a linkek száma
8. chmod g-w foo.txt
9. a kérdés nem egyértelmű, de ~/.ssh/authorized_keys2 mondjuk.
10. ~, de ezt se értem.
- A hozzászóláshoz be kell jelentkezni
köszi
- A hozzászóláshoz be kell jelentkezni
multkor meg akartam kerdezni, de inkabb csendben maradtam, de
mi a francnak csinalod meg a hazijat?
--
Segmentation violation -- Core dumped blues
- A hozzászóláshoz be kell jelentkezni
Meg mi az ,hogy a névből nem derül ki, hogy mp3/jpg -e ?
Itt van egy, de 1000%, hogy erre nem lehet sokkal szebb megoldást csinálni, honnan állapítod meg pl a file típusát? Ha mégis lehet kiterjesztés alapján, akkor pár sor az egész...
#!/bin/sh
if [ -z "$1" ]; then
echo "Usage: $0 <dir>"
exit 3
fi
if ! [ -d "$1" ] ; then
echo "$1 is not a directory"
exit 2
fi
summary() {
MP3_SUM=0
JPEG_SUM=0
MP3_LINES=0
JPEG_LINES=0
while read FILENAME; do
CONTENT=`file "$FILENAME" 2>/dev/null`
if echo $CONTENT | egrep -e MP3 -e "layer III" >/dev/null; then
SIZE=`du -s "$FILENAME" | cut -f 1`
MP3_SUM=$((MP3_SUM+SIZE))
MP3_LINES=$((MP3_LINES+1))
fi
if echo $CONTENT | grep JPEG >/dev/null; then
SIZE=`du -s "$FILENAME" | cut -f 1`
JPEG_SUM=$((JPEG_SUM+SIZE))
JPEG_LINES=$((JPEG_LINES+1))
fi
done
echo "MP3: $MP3_SUM ($MP3_LINES file(s))"
echo "JPEG: $JPEG_SUM ($JPEG_LINES file(s))"
echo "------"
echo "$((MP3_SUM+JPEG_SUM)) ($(($MP3_LINES+$JPEG_LINES)) file(s))"
}
find "$1" -type f | summary
- A hozzászóláshoz be kell jelentkezni
ettol nem egyszerubb a "file filenev" ?
- A hozzászóláshoz be kell jelentkezni
és szerinted ez mivel csinálja?
- A hozzászóláshoz be kell jelentkezni
b+, jól eldugtad benne :-)
- A hozzászóláshoz be kell jelentkezni
:-)
- A hozzászóláshoz be kell jelentkezni
find $dirname | xargs -l file | egrep "MP3|JPEG" | cut -d: -f1 | xargs du -c /dev/null | grep -v /dev/null | cat -n - | grep total
Tul sok file-ra nem biztos hogy mukodik.
- A hozzászóláshoz be kell jelentkezni
1.) Mi van például az ilyen nevű file-okkal? A fenti sor beleszámolná akkor is, ha nem a kívánt típusba tartoznak.
WNJMP3981/probafile.txt
UJPEG-8.tar.gz
2.) Hasonlóképpen hibásan működne a nevükben kettőspontot tartalmazó file-ok esetén (pl.: "a:b:c:e:f:g"), amik lehetnének a kérdéses típusúak is.
3.) A /dev/null mérete mindig nulla, és biztosan nem a két említett típusba tartozik, ezért nem kell beleszámolni. Ez eleve felesleges.
4.) Éppen ezért nem is kell a listából kiszűrni.
5.) Ha sok file lenne, több total sor lenne a végeredmény.
- A hozzászóláshoz be kell jelentkezni
Nezd, az ilyen feladatoknal az ilyen extrem eseteket nem veszik figyelembe, jo megoldasnak szamit.
A feladat altalanosan fogalmaz. Mivel ezek abszolute beginner feladatok, igy nem kriterium a atombiztos megoldas elkeszitese, hiszen a xargs-rol is csak annyit tudnak, hogy a stdin-rol olvasott adatokat adja at a parancsnak argumentumkent. Az hogy adott mennyisegnel tor, meg hogy vannak korlatai, nem feltetlen mondja el a tanar (nalunk se mondta el pl.), mert az alap tudashoz tokeletesen eleg. Majd kesobb, ha mar meg tud keresni egy fajlt a rendszerben mc meg 5000 cd nelkul, akkor lehet vele ilyenrol is tarsalogni, de addig csak felesleges plusz tanulnivalo.
- A hozzászóláshoz be kell jelentkezni
en konkretam mindig elmondom, hogy mi a problema a finddal:
find nemkell/. | xargs rm
torese:
mkdirhier alma\ /home
find nemkell/. | xargs -l rm
torese:
mkdirhier 'alma
/home'
parancs utan adja ki az ember.
Altalaban az oktatasban ugyan lenyegesen egyszerusitett parancskeszletet oktatunk (az erthetoseg miatt) azonban bizonyos tipikus biztonsagi problemat mutato egyszerusiteseket nem tehetunk.
A find -nal mondani kell a
find . -direxec
de legalabb a
find . -print0 | xargs -0
jellegu kombinaciokig. Csak hogy lassak, az ember shellscriptben gyorsan programozik, nem biztonsagosan (vagy gyorsat).
(let's flame;-)
- A hozzászóláshoz be kell jelentkezni
1.) Mi van például az ilyen nevű file-...
2.) Hasonlóképpen hibásan működne a nevükben...
Ha meg space-t tartalmazo file-nev lenne benne, tan az egesz szet is esene.
Igazabol csak arra akartam ravilagitani, hogy milyen is a 'shell-izu' shell script.
3.) A /dev/null mérete mindig nulla, és biztos...
4.) Éppen ezért nem is kell a listából kiszűrn.
Nem. A /dev/null azert kerult bele, mert hibas $dirname eseten az egesz `pwd`-t kezdi a du maszirozni, ahelyett hogy leallna a find hibauzenetevel, amit igy meg is tesz.
5.) Ha sok file lenne, több total sor lenne a végeredmény.
Bovebben?
- A hozzászóláshoz be kell jelentkezni
1.) és 2.) Értem. Ezzel nem tudok vitatkozni, mivel ez megközelítés kérdése. Eleve nem tartom jó ötletnek egy házifeladat fórumtagok által történő komplett megoldását, inkább a rávezetést tartom célszerűnek. De ha már így alakult, akkor faragjunk belőle jól működő scriptet.
3.) és 4.) Igaz, de ez is nézőpont kérdése. A kiírásban szerepelt a script helyes használatára való figyelmeztetés, valamint a "Ha nem létező könyvtárat adtunk meg..." rész. Ebbe nálam beleértődne a nem könyvtár paraméter esete is. Most egy közönséges file-lal is működik.
5.) Ez az előző hozzászólásod utolsó sorának kiegészítése. A kiírás így szólt: "ezek a típusú állományok összesen mennyi
helyet foglalnak.". Sok vagy hosszúnevű file-ok esetén az xarg miatt a du többször fut le. Ennek megfelelően tobb "total" sor lesz. Ezeknek a soroknak az első oszlopa a cat által beletett file-sorszám, míg a második oszlop az adott du általi méret-részösszeg (az előző du utániak). (Kiválóan tesztelhető mondjuk 5000 db 120 karakter hosszú névvel.)
Azaz az output így néz ki:
A B total
C D total
E F total
G H total
, ahol
G: az összes darabszám + a du futásainak száma
B + D + F + H: a teljes méret
Tehát az output utolsó sorának első oszlopában lévő értékből az output sorainak számát levonva kapnánk a tényleges darabszámot; a második oszlopban szereplő értékeket pedig a végén össze kellene adni.
- A hozzászóláshoz be kell jelentkezni
% dirname=/home/samba/shared/music
% find $dirname | xargs -l file | egrep "MP3|JPEG" | cut -d: -f1 | xargs du -c /dev/null | grep -v /dev/null | cat -n - | grep total
usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements] [-S replsize]]
[-J replstr] [-L number] [-n number [-x]] [-P maxprocs]
[-s size] [utility [argument ...]]
Egyébként az enyém meg linux alatt nem megy valamiért.
- A hozzászóláshoz be kell jelentkezni
Azert jo lenne, ha ez nem lenne altalanos, vagyis hogy hazikat oldunk meg. Oke, jo kihivas nekunk meg minden, de igy az eletbe nem fogod megtanulni a mukodeset az egyes parancsoknak. Es egyaltalan nem fogsz megtanulni Unixot/linuxot kezelni. Ha nem akarod megtanulni, akkor kar volt az egeszet elkezdeni, ha meg meg akarod tanulni, akkor tanulj meg Google-n keresni, meg tanuld meg a man parancs hasznalatat meg tanulj meg egy picit angolul (nem kell nagyon). Ez a hozzaallas azonban egyaltalan nem jo.
- A hozzászóláshoz be kell jelentkezni
sajna nem biztos, hogy ezt mar olvassa...
- A hozzászóláshoz be kell jelentkezni
az lenne a szivelyes keresem, hogy ird le, melyik iskola melyik targyarol van szo.
Kosoznom.
- A hozzászóláshoz be kell jelentkezni
PTE, oprendszerek
és olvasom a hozzászólásokat, bár már nem aktuális
- A hozzászóláshoz be kell jelentkezni