- Hamarosan megkezdődik a nubia 2,8K-s táblagépének szállítása
- Barátokká váltak az eddig rivális AI-óriások
- ASUS blog: Ideális olcsó utazós gép lett az új Vivobook S14
- Az Aura Displays hordozható monitorhármasa jól felturbózhatja a produktivitást
- Dual Mode-os IPS monitorral adott magáról életjelet a Gigabyte
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- TCL LCD és LED TV-k
- Milyen belső merevlemezt vegyek?
- SSD kibeszélő
- Épített vízhűtés (nem kompakt) topic
- Milyen széket vegyek?
- Sony MILC fényképezőgépcsalád
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- Azonnali fotós kérdések órája
Új hozzászólás Aktív témák
-
bambano
titán
válasz
kovbandi82 #2893 üzenetére
valami ilyesmivel próbálkoznék első körben (nyilván még csiszolsz rajta, mielőtt végleges lesz):
for i in $(seq 15 45); do
trdir=$(date '+trash_archive/%Y%m%d' -d "${i} days ago")
[ -d $trdir ] && rm -rf $trdir
done
én visszamennék több napot annak érdekében, hogyha véletlenül nem fut le a szkript (ki van kapcsolva a gép, stb) akkor később azt is letörölje.
vagy a könyvtár kreálásakor betenném rögtön betenném a törlést az at queue-ba, oszt jónapot
de lehet olyat, hogy megmondod a find-nek, hogy csak könyvtárakat keressen, és akkor az megoldja. könyvtár + régebbi, mint két hét + név illeszkedik, az már elég pontos lenne.
-
bambano
titán
válasz
kovbandi82 #2887 üzenetére
lehet bonyolítani a kérdést a dátumokkal, én nem tenném.
elvileg tudsz olyat, hogy adja meg az x idővel ezelőtti dátumot és az ahhoz tartozó mappát törölni.én azt csinálnám, hogy a find utasítás tud creation meg access time szerint keresni, megkerestetném az összes fájlt, ami régebbi, mint két hét, letöröltetném, és utána legyalulnám az üres könyvtárakat.
lehetséges megoldás még, hogy naponta áthelyezed egy olyan mappába, aminek a nevében a nap benne van, és akkor egy hónap után simán felülíródik és nem kell vele foglalkozni.
-
bambano
titán
válasz
Fecogame #2852 üzenetére
egyébként itt most az a feladat, hogy ezt az awk-s programot megjavítsuk, vagy az, hogy megoldjuk a problémát?
mert ha a problémát meg kell oldani, akkor először teszteld le, hogy a busyboxos printf tud-e ilyen formátumot, és ha igen, akkor kezdd azzal, hogy kihajítod az awk-t. -
bambano
titán
megkérdezhetem, hogy miért csinálsz fork bombát?
for ciklusban sftp???amiket használni lehet:
1. az sftp tud rekurzívan másolni. tehát összeállítod egy ideiglenes könyvtárban azt, amit fel kell másolni, és egy sftp utasítással felmásolod.
2. az sftp tud teljes névvel másolni. tehát azt kell csinálni, hogy:
put /helyikonyvtar/helyifajlnev /tavolikonyvtar/tavolifajlnev
3. az sftp, mint minden rendes ftp kliens, tud többszörös fájlmásolást, lásd mput.
4, az sftp tud batch fájlból parancsokat beolvasni.tehát a normális megoldás például lehet ez:
(
cd tavolikonyvtar
for i in *; do
ujfilename=kitalalom az új fájlnevet
echo put $i $ujfilename
done )| sftp .... -
bambano
titán
az egyik lehetséges és egyszerű megoldás, hogy a mentő szkript futtatásának napját nézed, és aszerint csinálsz plusz másolatokat.
valahogy így:
dayofweek=$(date '+%u')
[ $dayofweek -eq 7 ] && cp maimentes hetimentestarolo
ugyanígy lehet dayofmonth-ot csinálni meg dayofyeart (%j). -
bambano
titán
alapvetően azt kellene megoldanod, hogy amikor a mentés történik, az dátum szerint szétválogatva történjen. én erre írtam, hogy tar, mert nem emlékszem, hogy mit írtál, mi a kliens.
ezért kellene inkább azt csinálnod, hogy minden nap csinálsz egy dátum nevű könyvtárat, és raksz rá egy szimbolikus linket. és akkor minden eleve szétválogatva kerül fel a nasra. -
bambano
titán
teljesen rossz elképzelés.
nem mozgatunk, a végső helyére tesszük.
ha a könyvtárnévbe bele tudod tenni a dátumot, akkor a mentési fájlnévbe is.tehát nyugodtan írhatod, hogy:
mentesdir= $(date '/home/mentes/%Y/%m/%d')
[ -d $mentesdir ] || mkdir -p $mentesdir
tar cf $mentesdir/mentfile.tar blablamásik hsz-re: a {} körül hiba escapelni, mert akkor egy olyan fájlnévből, amiben van szóköz, több argumentum lesz és az első elé meg az utolsó mögé hozzáfűz egy idézőjelet.
a -exec mv-vel meg az a baj, hogy minden fájlra forkol egy date-t is, ami felesleges.
a -exec mv $(date)-tel az is a baj, hogy az lc szerinti dátumban szokott lenni szóköz, attól az mv fejreáll.
szerk: ha pedig ez nem felel meg, akkor egy cron jobból minden éjfélkor csináld meg a napi mappát és tegyél rá egy linket, ami állandó nevű.
-
bambano
titán
válasz
Blasius #2751 üzenetére
mert itt a >11.txt átirányítás a screen kimenetét irányítja át, nem a netcatét.
próbáld meg azt, hogy elindítod a screent, belépsz, és utána ott indítod el a netcatet a fenti paranccsal.
vagy próbáld meg azt, hogy a netcates parancsot beleírod egy parancsfájlba az átirányítással együtt, és azt indítod el screenben. -
bambano
titán
válasz
Blasius #2747 üzenetére
emlékeim szerint az openwrt-ben gyárilag nem bash van, és ha fel is rakod rá, akkor is olyan verzió, ami nem kezeli a tcp és az udp csomagokat.
a screen pedig lehet, hogy nem állít be minden környezeti változót.én azon agyalnék, hogy nincs-e jobb megoldás, mint az udp-t menteni.
esetleg nem udp-n hanem rsyslog protokollal logolni...hozzátenném még, hogyha folyamatosan írod a fájlrendszert, az lehet, hogy gyorsan kikészíti a routerben a flash-t. szóval csak olyan helyre írj, ami ramban van.
-
bambano
titán
válasz
Véreshurka #2615 üzenetére
kb. ezt kellene:
for i in mappa3 mappa4 mappa5; do
[ test -d $i ] && [ test -d "${i}.bac" ] && rsync -a --delete $i "${i}.bac"
done
-
bambano
titán
gyökérnek nevezhető az is, ahonnan a tar parancsot indítod.
ha azt írod, hogy tar cvf akarmi.tar /home/juliska, akkor a tar valószínűleg le fogja venni a kezdő /-t és a tarfájlba már home/juliska kezdettel kerülnek be a fájlok. ezért ha excludálod a /home/juliska/tmp-t, akkor arra nem illeszkedik a kizárás. szerintem ilyenkor a home/juliska/tmp-t kell excludálni.
-
bambano
titán
"fogalmam sincs, mi a problémája.": például lehet az, hogy nem ugyanabból a gyökérből csinálod meg a fájlneveket, mint ahonnan a tar-t indítod.
csináld meg a tar file-t, mindegy, hogy jól vagy rosszul, majd utána listázd ki azokat a fájlokat a tarból, amiknek nem kellene benne lenni. majd nézd meg, hogy az exclude tömbben a fájlok ugyanúgy vannak-e és ugyanaz-e a könytáruk is.
ha nem boldogulsz, inkább rakd be egy temporális fájlba az excludálni valókat és -X -szel szedd ki.
-
bambano
titán
válasz
Fecogame #2579 üzenetére
a kérdés az, hogy így akarod megoldani a problémát vagy rendesen.
ha így, akkor nézd meg, hogy a bash hogy kezel tömböket.
ha rendesen, akkor kb. így néz ki:cat <<EOF
http prohardver
http ezmegaz
EOF | while read website; do curl ${website} | stb. ; done
az, hogy tesztbe teszed a kiértékelést, meg =1 meg hasonló bonyolítások, szintén felejtős. A grep rendesen adja vissza a kilépési kódját, tehát:
curl | grep && echo ok
-
bambano
titán
válasz
RedHarlow #2568 üzenetére
vagy temp fájl, vagy megoldod, hogy a riportoló szkript semmi mást ne írjon ki, csak ezt az adatot, és azt használod utána valahogy így:
tempfile=$(reportoloszkript.sh)
másik verzió: a tempfájl útvonalát a hívó szkriptben határozod meg, és átadod a riportolónak, és az azt használja.
-
bambano
titán
válasz
RedHarlow #2543 üzenetére
semennyire.
az egyik verzió, hogy ha van kéznél postgresql, akkor belerakod és azzal szétválogatod.a másik verzió, amit egyszerűbb az az, hogy csplit-tel szétdarabolod az xml fájlt annyi darabra, ahány user szekció van benne, a darabokból kiválogatod, ami kell, és utána összerakod újra.
tehát megoldod, hogy az user záró tag egyedül legyen külön sorban (sed-del két parancs), majd csplit-tel szétvágod a '</User>' delimiterrel.
-
-
bambano
titán
válasz
Fecogame #2504 üzenetére
ez a 101-102 sorok se tetszenek...
a dirname $0/basename $0 az, szerintem, $0.
de az idézőjeleket úgy nem lehet egymásba ágyazni szerintem.szerk: ha matatod a fájlrendszerben a root crontabját, akkor a cron-t illene újraindítani. de, szerintem nem így kellene matatni, hanem a /etc/cron.d alá berakni egy saját crontabot és azt törölni uninstallkor.
-
bambano
titán
válasz
Jester01 #2471 üzenetére
közben én is szöszöltem vele: azon száll el, hogy utf-8-ban egyes karakterek kétbájtosak, és ettől fejreáll a parser.
a megoldás: visszakapcsoltam egybájtos kódolásra, és akkor már működik a tar beépített exclude-ja.tehát az, hogy:
tar cf backupfile konyvtar --exclude '*.pst'
nem működik, de az, hogy:LANG=en_US tar cf backupfile konyvtar --exclude '*.pst'
igen. -
bambano
titán
kicsit beszorultam idővel, tudna valaki tippet adni, hogy lehet lementeni egy kriksz-kraksz fájlneveket is tartalmazó könyvtárat tarral úgy, hogy bizonyos fájlokat ki akarok hagyni?
kösz
ui: ha olyan egyszerű volna, hogy elolvasom a manualt és beírom a megfelelő kapcsolót, akkor nem kérdeznék itt... -
bambano
titán
válasz
Fecogame #2450 üzenetére
ha és amennyiben a piton programozók értettek a dolgukhoz, akkor ez nem is fog működni. ennek a fő oka az, hogy unixban az a szokás, hogy jelszót nem a szabvány bemenetről olvasunk, hanem a terminálról. tehát van rá reális esély, hogy a setup.py program eldobja az stdin-t, és megnyitja a /dev/tty-t és arról akar olvasni, azt pedig nem tudod átirányítani.
-
bambano
titán
-
bambano
titán
válasz
Fecogame #2432 üzenetére
a grepnek (is) annyi fájlmevet adsz meg paraméterként, amennyit akarsz (amennyit a shell elvisel). tehát írhatod:
grep valami /var/log/syslog.1 /var/log/syslog /var/log/messages.1 /var/log/messages satöbbi
arra az esetre, ha a fájlnév kiterjesztéses megoldás nem jutna eszedbe.
-
-
bambano
titán
válasz
Victor Súgó #2396 üzenetére
"1) find ...paraméterek | xargs | ls": ezen még dolgoznod kellene.
-
bambano
titán
-
bambano
titán
válasz
Geripapa #2353 üzenetére
"Ez lett a végeredmény": azt te csak hiszed
szóval ez a másfél méter if-elseif csak az én szemem bántja?
szóval egy case-t nem lehetne helyette, ha már a printf-et nem ismerjük?másrészt még mindig nem grep '<title>' -re keresel.
harmadrészt sed után tr-t, az forkbomba. -
bambano
titán
válasz
0xmilan #2329 üzenetére
a nohup arra való, hogy elkapja a hup szignált és lenyeli.
magyarul ha nohuppal indítasz el bármit, akkor azt nem tudja a shell kilőni, mikor a shellből kilépsz, tehát háttérben fog futni a folyamat.a wait erre nem jó neked, amit akarsz? mert egyébként nagyon zagyva, hogy pontosan mit is szeretnél...
-
bambano
titán
válasz
CPT.Pirk #2327 üzenetére
javaslom az mktemp manualjának olvasgatását
következő lépésként javasolt, hogy specifikus awk-ot használj, mert az awk-k tapasztalat szerint nem egyformák.ha így írtad a paste-t, akkor szerintem az előtte levő awk-kal és az utána levő cat-tal is össze lehet vonni:
awk ... | paste -d ' ' - - >${...}.txtannak nem látom értelmét, hogy a paste-vel kitolod egy temfile-ba, majd azt simán átmásolod a véglegesbe. akkor már mehet rögtön a véglegesbe.
szerk: ha olyan problémád van, hogy a paste-nél megáll a szkript, az egy olyan eset, ami máskor is előfordulhat. más esetekben lehet olyan gond, hogy az előző programnak nincs kimenete, ezért a következő bemenet megakad. ilyenkor érdemes közé tenni egy cat - /dev/null-t.
tehát azt írni, hogy:
awk | cat - /dev/null | paste -d ' ' - - >${...}.txt
de ez nem biztos, hogy erre a konkrét esetre is kell, most nem fogom a konzolon kipróbálni
szerk2: rendszergazdaként futtatott szkriptekben az rm $tempfile annyira nem frankó, csak ha megnézted, hogy pontosan mi is az a file
-
bambano
titán
válasz
CPT.Pirk #2321 üzenetére
szóval a legfőbb gond, hogy így windowson programoznak.
a unixok legnagyobb előnye, hogy minden fájl, és karakteresen mindent lehet olvasni, írni.
ezért az első, amit javítani kellene, hogy nincs tempfile1 meg tempfile2, hanem egy menetben átmegy minden a parancsokon. ennek a unixos megoldás a csővezeték, pipeline.
tehát: az első parancs olvas egy fájlt, az összes többi nem, az utolsó pedig leteszi egy fájlba az eredményt:egrep ... logfile | sed .... | awk ... | sed >kimenet
a második, hogy a sednek több programot is meg lehet adni egyszerre (a sed programnak hívja a s/... kezdetű paraméterét)
tehát nem sed program1 | sed program2 hanem
sed program1 program2 program3a harmadik, hogy az awk és a sed is tudja, amit az egrep. érdemes lenne minél kevesebb programot használni, mert annál bonyolultabb minden.
-
bambano
titán
válasz
Fecogame #2312 üzenetére
jaja, most nyertél 3 másodpercet azon, hogy a jól specifikált bash helyett a lokális rendszer saját shelljét használod, amiről nem tudod, hogy micsoda, így majd belefuthatsz olyan problémákba, amit pár nap alatt ki is tudsz bogozni
"cut gyorsabb, mint az awk vagy a sed": de legalább nem kompatibilis vele... az awk-val is az a baj, hogy melyik gépen mi van felrakva awk néven... gawk? mawk? van egy pár lehetőség.
"cat file | grep kulcsszo": a forkbombáért régebben is szóltunk
-
bambano
titán
le kell választani az utolsó aláhúzás+számok részt a névről és ami marad, az alapján sorbamenni, és letörölni a kettőnél nagyobb verziókat.
valahogy így:
ls -c | sed -e 's/\(.*)\(_[0-9]?)$/\1|\2/' | while IFS=\| read name version ; do
törlöd, ami a $name névcsoportban van és nem az utolsó kettő
doneszerk: nem hibátlan, fejből írtam ellenőrzés nélkül
-
bambano
titán
válasz
Mr Dini #2245 üzenetére
nagyon balta megoldás:
kveri=$(echo $QUERY_STRING| sed -e 's/^rsscontent=//' -e 's/&Submit=Submit$//')
vagy valami ilyesmi
szerk: paraméter darabolásra szintén balta megoldás:
echo $kveri | IFS=\& read par1 par2 par3 ...
az & jelekkel elvileg nem lesz gond, mert az inputként kapott & jelet a böngésző kódolja.
-
bambano
titán
válasz
zsotesz81 #2239 üzenetére
szerintem a patterned nem jó.
[0-9]+\.[0]*$
vagy valami ilyesmi kellene.a (.)*(0)-t nem értem, a *-ot mindig azután kell tenni, amiből többet akarsz.
a másik lehetőség, hogy a szám végéről levágod a .0* patternt, ha van ott olyan, és utána csak egész számos illeszkedést ellenőrzöl.
-
bambano
titán
válasz
spammer #2221 üzenetére
helyesen:
$(( $(ls /masik/path | wc -l) + 1 ))
man bash:
Arithmetic Expansion Arithmetic expansion allows the evaluation of an arithmetic expression and the substitution of the result. The format for arithmetic expansion is:$((expression))
ha így tagolod, akkor csinál egy parancsbehelyettesítést egy egész számra???
Új hozzászólás Aktív témák
Hirdetés
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - NYÁRI AKCIÓ!
- Windows 10/11 Home/Pro , Office 2024 kulcsok
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office
- Lenovo Thinkpad T14 üzleti i5-10310u 10th gen. 8-32Gb RAM 256GB-1TB SSD gar.
- HP ProBook 430 G4 Pentium 4415U (bios jelszavas)
- Azonnali A320 B350 X370 B450 X470 A520 B550 X570 chipset alaplap felvásárlás személyes/csomagküldés
- Telefon felvásárlás!! Samsung Galaxy A12/Samsung Galaxy A22/Samsung Galaxy A32/Samsung Galaxy A52
- HP Laptop 15-fc0026nh (AY7E1EA)
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged