Hirdetés

2024. április 25., csütörtök

Gyorskeresés

Hozzászólások

(#2201) Jester01 válasza Keeperv85 (#2200) üzenetére


Jester01
veterán

Nem próbáltam, azt mondod, a -delete nem törli a nem üres könyvtárat? Akkor cseréld le: -exec rm -r {} +

Jester

(#2202) Keeperv85 válasza Jester01 (#2201) üzenetére


Keeperv85
nagyúr

A -delete csak az üres könyvtárakat tudja törölni. :K

Ezzel az utóbbi módosítással kitörli az összes alkönyvtárat, a fájlokat hagyja csak meg...

[ Szerkesztve ]

(#2203) Jester01 válasza Keeperv85 (#2202) üzenetére


Jester01
veterán

Na, kipróbáltam. Ez szerintem jó lesz:
find . -depth -mindepth 2 \( -type f \! -path '*/res/values/*' -o -type d -empty \) -delete

Jester

(#2204) Keeperv85 válasza Jester01 (#2203) üzenetére


Keeperv85
nagyúr

Ez most jó, köszi! :Y :R

(#2205) prucam


prucam
tag

Sziasztok,

most csinálok éppen egy egyszerű scriptet, ami hétfőnkét egy adott sort beszúr minden file-be.

#!/bin/bash
n1=`date +"%A"`
n2=hétfő
c=`date +"%V"`
n=`date +"%A"`
x=/mnt/sdc10/home/iras/*
if [ "$n1" = "$n2" ]; then
for i in $x;
do
echo "$c. $n #############################################" >> $i;
done
else
echo "Nem hétfő van!"
fi
exit

Miután lefut ezt az üzit irja ki:

"./3_mi_a_neved: line 10: /mnt/sdc10/home/iras/: Is a directory"

Hogyan kellene javítani?

Az "iras" mappában csak kiterjesztés nélküli fájlok vannak.

A sok "#" karaktert hogyan lehetne rövidebben írni? (pl. 33#)

üdv

(#2206) bambano válasza prucam (#2205) üzenetére


bambano
titán
LOGOUT blog

felejtsd el ezt a hétfő ellenőrizgetést.
nem az a jó módszer, hogy elindítod minden nap, és megnézed, hétfő van-e, hanem az, hogy csak hétfőn indítod el.

a hozzáfűzés meg lehet, hogy azért nem megy, mert könyvtár vagy könyvtárra mutató link is van az írásos könyvtárakban.

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#2207) prucam válasza bambano (#2206) üzenetére


prucam
tag

Csináltam egy új mappát, s bemásoltam oda a file-ket, s tényleg nem volt semmi hibaüzi.
Nekem mindig lesz, ez van…

Az "if" az kell, mert olyan script-be lesz ami minden nap "fut".

üdv

(#2208) bambano válasza prucam (#2207) üzenetére


bambano
titán
LOGOUT blog

ha beírod az elejére, hogy set -x, akkor debug módban fut és többet lehet tudni róla, hogy mit csinál.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#2209) prucam válasza bambano (#2208) üzenetére


prucam
tag

x=/mnt/sdc10/home/iras/*

szerintem ez lesz a rossz. A kiterjesztés nélküli file-kre nem jó a "*". Így a mappák is (sőt még az almappák is!) benne vannak.
Hogyan kellene, azt nem tudom, írtam a linux-os topicba, valaki csak tudja.

A "set-x" -es próbálgatom más scripteknél is. Nem tudtam, hogy van ilyen.

:R

(#2210) Headless válasza prucam (#2209) üzenetére


Headless
őstag

Hát vagy find-al keresed meg és futtatod amit kell
find $x -type f -exec ....

vagy

a meglévő for ciklusba teszel egy ellenörzést hogy fájl-e...
valahogy így

if [ -f "$file" ];then
echo "file"
fi

ha van printf parancsod, akkor megfelelő számú szóközt tudsz csinálni valahogy így. azt meg kicserélheted #-re de szerintem nem éri meg, lehet van jobb megoldás is.
printf "%33s" |sed "/ /#/g"

LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/

(#2211) prucam


prucam
tag

Köszi mindenkinek a segítséget!

Végül is ezt sikrült "fabrikálni":

find . -maxdepth 1 -type f ! -name "*.*"

üdv

(#2212) bambano válasza prucam (#2209) üzenetére


bambano
titán
LOGOUT blog

"A kiterjesztés nélküli file-kre nem jó a "*".": miért ne lenne jó? a linuxon általában nincs kiterjesztés, szóval ne lenne jó az esetek többségére?

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#2213) Jester01 válasza bambano (#2212) üzenetére


Jester01
veterán

Úgy értette, hogy csak a kiterjesztés nélküliekre.

Az "általában nincs kiterjesztés" meg vicces állítás. Programfájlokon általában nincs, de minden máson jellemzően van. De ezt te is tudod. :P

Jester

(#2214) dabadab válasza Jester01 (#2213) üzenetére


dabadab
titán

Megnéztem egy Debianon, a nem home-ban lévő file-ok 94%-ának van kiterjesztése.

DRM is theft

(#2215) bambano válasza dabadab (#2214) üzenetére


bambano
titán
LOGOUT blog

ennek a fájlnak:

/lib/x86_64-linux-gnu/libcryptsetup.so.4.6.0

mi a kiterjesztése?

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#2216) Jester01 válasza bambano (#2215) üzenetére


Jester01
veterán

Azon lehet vitatkozni, de van neki ;] Ezzel együtt még mindig bőven több a hagyományos kiterjesztéssel rendelkező fájl.

Jester

(#2217) emvy válasza bambano (#2215) üzenetére


emvy
nagyúr

.so, termeszetesen :)

while (!sleep) sheep++;

(#2218) Fecogame


Fecogame
veterán

while [ $(ls /egyik/path | wc -l) -gt $(ls /masik/path | wc -l) ]
do
some commands
done

A vastagított rész értékéhez szeretnék hozzáadni egyet. Hova kellene beírnom, és legfőképp, hogyan? :)

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#2219) spammer válasza Fecogame (#2218) üzenetére


spammer
veterán

Pl.:

while [ $(ls /egyik/path | wc -l) -gt $(expr $(ls /masik/path | wc -l) + 1) ]
while [ $(ls /egyik/path | wc -l) -gt $((( $(ls /masik/path | wc -l) + 1 ))) ]

De biztos vannak szebb megoldások is. :)

[ Szerkesztve ]

„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."

(#2220) bambano válasza spammer (#2219) üzenetére


bambano
titán
LOGOUT blog

az aritmetikai kiértékelés az nem két zárójel?

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#2221) spammer válasza bambano (#2220) üzenetére


spammer
veterán

$( (( $(ls /masik/path | wc -l) + 1 )) )

„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."

(#2222) bambano válasza spammer (#2221) üzenetére


bambano
titán
LOGOUT blog

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???

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#2223) spammer válasza bambano (#2220) üzenetére


spammer
veterán

Ja de, igazad van, elég két zárójel, persze... Csak a $(...) között variáltam előtte és abba írtam bele, így lett $( $((...)) ). De végül is működik hárommal is. :DDD

[ Szerkesztve ]

„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."

(#2224) Fecogame válasza spammer (#2219) üzenetére


Fecogame
veterán

Köszi, működik! :)

Lassú a mobilinterneted? 4G/LTE antennák, közvetlenül raktárról ---> http://bit.ly/LTE_Antennak

(#2225) sonar


sonar
addikt

Sziasztok,

itt a grep miért nem működik?
Ha echo-val kiiratom a line változót szépen megvan, csak a grep nem eszi meg.
for line in $(cat 1.txt); do grep "$line" /sandbox/incoming/* -l ; done

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#2226) Jester01 válasza sonar (#2225) üzenetére


Jester01
veterán

A -l rossz helyen van. Amúgy a "grep nem eszi meg" nem egy jó hibaleírás, az ilyenért pofon jár.

Jester

(#2227) sonar válasza Jester01 (#2226) üzenetére


sonar
addikt

Bárhova tettem a -l paramétert az eredmény változatlanul semmi.
Ha a $line paramétert kézzel adom meg a grep-nek szépen listázza a fileokat. Mihelyt egy ciklusba ágyazom az eredmény semmi. De ha echo $line -t még utána biggyesztem akkor az echo-s sorok megjönnek. :F

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#2228) BullZeye


BullZeye
veterán

Állítólag itt nagyobb eséllyel kapok választ :D

Dijnet törli számlákat, nekem viszont szükségem lenne rá, de vagy 1 év lenne letölteni egyenként mindet, és emailben konkrétan mossák kezeiket, hogy ilyen helyzetbe hozzák az embereket.

Találtam HUP-on egy megoldást, és más linux rendszerem nincs, csak Synology ds215j

Itt a Shell Script hozzá, viszont login után azt írja ki, hogy:

login... OK
query service providers... ERROR: not able to detect service providers
Terminated

Van valami tippetek, hogy miért? Linkek elméletileg jók, legalábbis amit értettem belőle, vagy kell valamit telepítenem hozzá még pluszba? :)

(#2229) Jester01 válasza BullZeye (#2228) üzenetére


Jester01
veterán

PROVIDERS=$(dijnet "control/szamla_search" | xpath '//select[@name="szlaszolgid"]/option[string-length(@value)!=0]')

Gondolom nem az xpath-nak megfelelő tartalom jön vissza. Nézd meg mi a dijnet "control/szamla_search" kimenete.

Jester

(#2230) BullZeye válasza Jester01 (#2229) üzenetére


BullZeye
veterán

"https://www.dijnet.hu/ekonto/control/szamla_search"

Ez az oldal (link), és azon belül pedig van egy legördülő választó, aminek a DIVje szlaszolgid, és abban van kb 6-7 bejegyzés ahogy a képen látható

Másnak működik, csak nekem nem, Synology DS215Jn próbálom futtatni SSHn keresztül root/admin joggal. Kell ehhez valami egyéb dolgot telepíteni?

[ Szerkesztve ]

(#2231) BullZeye válasza BullZeye (#2230) üzenetére


BullZeye
veterán

xmllint hiányzott!

(#2232) D@reeo


D@reeo
aktív tag

Sziasztok

Van egy vékonykliensem, ami valamiért eldobálja a netet. Hálózat van, csak a nagyvilágba nem lát ki.
Amíg nem találom meg az okát, írtam egy ilyet:

#!/bin/bash

wget -q --spider http://google.com

if [ $? -eq 0 ]; then
echo "Online"

else
echo "Offline, restarting eth0 interface"
date +"%Y/%m/%d %H:%M:%S : Restarting" >> online.txt
ifconfig eth0 down && ifconfig eth0 up

fi

Működik is, megy a crontabba, a kérdésem igazából annyi lenne, hogy érdemes ezen valahol csiszolni (timeout érték, ciklusba tenni, wget helyett ping/curl stb)? Köszi

(#2233) dabadab válasza D@reeo (#2232) üzenetére


dabadab
titán

"érdemes ezen valahol csiszolni (timeout érték, ciklusba tenni, wget helyett ping/curl stb)?"

igen, nagyjából ez :)

a wget helyett egy icipicivel kevesebb sávszélességet használ mondjuk egy

ping -c 1 -w 1 google.com >/dev/null

(ez is exit statusszal üzen, szóval utána az if maradhat)

Meg persze be lehet rakni az egészet egy ciklusba és nem cronból indítani (gondolom percenként), hanem folyamatosan futtatni és belerakni a ciklus végébe egy "sleep 1"-et és akkor már másodpercenként tudja ellenőrizni a netet.

DRM is theft

(#2234) D@reeo válasza dabadab (#2233) üzenetére


D@reeo
aktív tag

Szia

Köszi szépen.
Átírtam, bár a sávszélesség nem játszik nagyon szerepet, otthoni net, nincs data limit.
Cikkluson gondolkodtam én is, bár az 1 seccenként való futtatás teljesen felesleges szerintem.
Most valóban 1 percenként fut a debug alatt, a későbbiekben meglátom, hogy így hagyom-e .Szép estét

(#2235) D@reeo


D@reeo
aktív tag

Sziasztok

#!/bin/sh
LogDir=/opt/log

find $LogDir -name "*.bak*" -exec ls -lah {} \; >> /opt/log/log.log
find $LogDir -name "*.bak*" -type f -print0 | xargs -0 rm -f

A két find helyett az első find eredményét szeretném cikklusba tenni és úgy futtatni a törlést. Tudna valaki segíteni, hogyan kellene? Köszi

[ Szerkesztve ]

(#2236) Headless válasza D@reeo (#2235) üzenetére


Headless
őstag

Szia nem egészen értem mit akarsz.

find az ígyis úgyis recursive ha csak nem beállítod a -maxdepth -mindepth kapcsolókat. Másrészt miért a xarg? ha ott van a beépített delete funkció?

find "$LogDir" -name "*.bak*" -type f -delete

ahh most leeesett tehet a *.bak* mappán balüli *.bak* fájlokat szeretnéd törölni?

ehhez viszont nagy kérdés hogy csak a *.bak/*.bak-et akarod törölni vagy *.bak/akarmi/*.bak-et is

amúgy én a -path szűrőt használnám... először delete nélkül futtasd, nehogy törölj valamit ami kell..

find "$LogDir" -path "*.bak/*.bak" -type f -delete

ez az utóbbi verzió ami a *.bak/akármi/*.bak-ot is törli.

LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/

(#2237) bambano válasza D@reeo (#2235) üzenetére


bambano
titán
LOGOUT blog

logot tee-vel lehet csinálni:

find $LogDir -name '*.bak' | tee logfile | while read filenev; do rm -f "$filenev"; done

az ls -lah kimeneti formátuma nem alkalmas közvetlen törlésre.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#2238) D@reeo válasza bambano (#2237) üzenetére


D@reeo
aktív tag

Sziasztok,

@Headless
/opt/log/ alatt minden (al)könyvtárból.
"miért a xarg" Hirtelen ezt találtam gugliban.
a -delete-t nem próbáltam ki, de nem tudom, hogy a logolást mennyire nehezítené meg.

@bambano, köszi, utánaolvasok a teenek.
ls-lah azért ugrott be elsőnek, mer így könnyen tudom a fájlméretet is logolni.

Működik így is szépen 2 külön paranccsal, csak hát szebb lenne optimalizálva futtatni :)

(#2239) zsotesz81


zsotesz81
senior tag

Sziasztok

Van egy számolós scriptem, parancssorban kérek be két számot. Amit meg szeretnék oldani, az az, hogy fogadja el a tizedespontot is amennyiben a pont után 0-k vannak csak, vagy semmi (tehát 10. = 10.0 = 10.0000 = 10)
Próbáltam valami pattern-t ('*([1-9])?(.)*(0)') írni, de ez nem jó.
Ami még kikötés, hogy csak ksh belső parancsok használhatók.
Tudnátok ebben segíteni?

(#2240) bambano válasza zsotesz81 (#2239) üzenetére


bambano
titán
LOGOUT blog

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.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#2241) zsotesz81 válasza bambano (#2240) üzenetére


zsotesz81
senior tag

"a (.)*(0)-t nem értem" - nyugi, én sem :DDD ; csak próbálkoztam, még tanulom csak a shell scriptet :)

(#2242) zsotesz81 válasza bambano (#2240) üzenetére


zsotesz81
senior tag

ez lett a jó: +([0-9])?(.)*(0)

(#2243) bambano válasza zsotesz81 (#2242) üzenetére


bambano
titán
LOGOUT blog

próbáld már ki egy 10.00500 és egy 10A000 számmal légyszi.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#2244) zsotesz81 válasza bambano (#2243) üzenetére


zsotesz81
senior tag

nem fogadja el ezeket, elfut if-es feltételnél az else ágra

(#2245) Mr Dini


Mr Dini
addikt
LOGOUT blog

Sziasztok!

Egy CGI szkript írásán dolgozom, ami természetesen bash alapú és POSTDATA-t hivatott feldolgozni. Van egy QUERY_STRING változóm, értelemszerűen ebbe kerül a Query String. Ami pedig így néz ki pl:

rsscontent=<változó szöveg>&Submit=Submit

Nekem valahogy az rsscontent utáni <változó szöveg>-et kéne egy változóban megkapnom, úgy, hogy az ékezetes karakterekkel és az & jelekkel is tudjon mit kezdeni.

Olyan szempontból könnyű a dolog, hogy minden statikus, csak az rsscontent értéke nem...

Tudnátok segíteni? Köszi! :R

Hogy hívják az éhes horgászt? Gyere Pista, kész a kaja!

(#2246) Headless válasza Mr Dini (#2245) üzenetére


Headless
őstag

Ez az a pont amikor vagy váltasz valami erre használatos nyelvre (lua,php,stb). Vagy a form enctype-ját átállítod multipartra. Viszont így a változó beállítások sokszor nehezebbek lesznek, és pl az sem fog működni, amit írtam pü-ben tegnap.

<form action=… method=post enctype='multipart/form-data'>

Így rendesen szeparált listát kapsz a változókról, nem csak egy urlenkódolt listát, vagyis nem & lesz a szeparátorod.

LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/

(#2247) bambano válasza Mr Dini (#2245) üzenetére


bambano
titán
LOGOUT blog

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.

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#2248) vargalex válasza Mr Dini (#2245) üzenetére


vargalex
félisten

Én valami ilyesmit csinálnék:

rsscontent=$(echo -e $(echo "rsscontent=<változó szöveg>&Submit=Submit" | sed -e 's/^rsscontent=\([^&]*\)&\(.*\)/\1/' | sed 'y/+/ /; s/%/\\x/g'))

Azaz, ha URL encode-olva jön, és az rsscontent tartalma pl.: "változó&szöveg":

gavarga@gavarga-e5540 ~ % rsscontent=$(echo -e $(echo "rsscontent=v%C3%A1ltoz%C3%B3%26sz%C3%B6veg&Submit=Submit" | sed -e 's/^rsscontent=\([^&]*\)&\(.*\)/\1/' | sed 'y/+/ /; s/%/\\x/g'))
gavarga@gavarga-e5540 ~ % echo $rsscontent
változó&szöveg

Alex

(#2249) Mr Dini


Mr Dini
addikt
LOGOUT blog

Nagyon szépen köszönöm uraim a gyors segítséget! :)

@Headless

Luát webszerveren nem szeretnék futtatni, a PHP-val meg igen régen volt dolgom... :B Azon gondolkozom, hogy az összes jelenlegi szkriptet átírom Perl-re... Szerintem azzal járnék a legjobban, hisz tulajdonképp az összes ilyen form adatfeldolgozás "stringműveletekből" áll.

Hogy hívják az éhes horgászt? Gyere Pista, kész a kaja!

(#2250) Lacc


Lacc
aktív tag

Sziasztok!

Nem igazán értek a shell programozáshoz. Szerettem volna a whoami függvény eredményét változóba menteni, de nem ment, persze ha hegy számot akarok megadni, akkor megy. Folyton azt kapom hibánat, hogy a =: nem támogatott. Pedig ez jó:
var1 = 2
ezzel nincs baja, viszont már ezzel igen:
var2 = whoami
Aztán rákerestem neten, és eval-os megoldásokat találtam, kipróbáltam, ugyanúgy csak hiba-hiba hátán, grrrr.

Amihez nekem kellene segítség az csak ennyi:
echo 'alias vagrant="cd /vagrant"' | tee /home/vagrant/.bash_aliases
A vagrant helyett szeretném a whoami függvény eredményét megadni.
Ugyanis nem mindig lesz vagrant felhasználó létrehozva, valamikor más lesz a felhasználó neve.

Ezt hogy lenne lehetséges? :R

Copyright © 2000-2024 PROHARDVER Informatikai Kft.