- Motorola Edge 50 Neo - az egyensúly gyengesége
- Hívószám-hamisítás
- Magisk
- One mobilszolgáltatások
- iPhone topik
- Íme az új Android Auto!
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Szívós, szép és kitartó az új OnePlus óra
- Samsung Galaxy Fit 3 - keveset, de jól
- Honor Magic6 Pro - kör közepén számok
Új hozzászólás Aktív témák
-
Ez miért van így, és hogyan lehetne megoldani? Hiszen végeredményben a "continue" egy while loop-ban van, nem is csak egy if szerkezetben.
A példascript:
#!/bin/bash
func() {
ls /tmp/eznincsitt || continue
}
while true; do
if [ "1" -eq "1" ]; then
func
fi
exit
done
bash -x futtatás eredménye:
+ true
+ '[' 1 -eq 1 ']'
+ func
+ ls /tmp/eznincsitt
ls: cannot access '/tmp/eznincsitt': No such file or directory
+ continue
/tmp/test.sh: line 4: continue: only meaningful in a `for', `while', or `until' loop
+ exit
-
Nem tudom hogy működik ez a githubosdi.
EasyRöviden:
1., Belépsz a github fiókodba
2., Megnyitod a projektben azt a fájlt, amit magadnál is szerkesztettél. Ez esetben ezt
3., Jobb felül "ceruza", mintha szerkeszteni akarnád
4., Forkolod a repot magadhoz
5., Megszerkeszted a fájlt, majd elmented
6., Beküldöd a pull requestet
7., Kész -
ksh-ban hogy lehet dinamikus nevű változót létrehozni/használni? Bash-ban így működik, de ksh-ban nem, és nem találtam rá megoldást:
# cat test.sh
#!/bin/bash
a_2014='hello 2014'
year=2014
varname=a_${year}
echo ${!varname}
# ./test.sh
# hello 2014
-
Ezt most nem értem... Szeretném egy változót ellenőrizni, hogy tartalmazza-e a "https" részt.
#!/bin/sh
VAR="https://barmilyenurl.com"
[ "$VAR" = *"https"* ] && echo "VAR tartalmazza ezt: https"
A kimenet mégis üres. Miért?
-
válasz
gery2123 #2760 üzenetére
Egy fájlba ezt dobd bele (IP-t írj bele, meg a wakeup commandot)
! ping -c 1 192.168.0.1 &> /dev/null && WAKEUP_COMMAND_IDE
Majd a crontabban időzítsd be 5 percenkénti futásra, valahogy így:
*/5 * * * * /azen/scriptem.sh
---De lehet így is működik, majd a többiek megerősítik vagy cáfolják:
*/5 * * * * ! ping -c 1 192.168.0.1 &> /dev/null && WAKEUP_COMMAND_IDE
-
Munkahelyen találtam egy scriptet, ami tartalmaz egy ilyen részt:
if [ "$VALAMI" -gt "1" ]; then
echo akarmi
fi
exec 2>&1
if [ "$VALAMI2" -gt "1" ]; then
echo akarmi2
fi
Középen annak az exec-nek van bármi értelme?
-
Szeretném kiíratni az alábbi szöveget (nagyon leegyszerűsített példa), hogy éppen hol tart a folyamat, de nem mindig új sorban, hanem mindig ugyanabba. Hasonlóan, mint egy process bar.
A kódom valahogy így néz ki
for i in {1..10}; do
sleep 1 && echo -e "Épp itt tartok: $i\nMinden oké."
done
Na most ha így csinálom, 20 sor lesz az output. Azt szeretném, hogy több sort írjon ki, de éppen csak azt, ahol tart (vagyis jelen példában mindig 2 sort jelenít csak meg). Nem tudom hogy keressek rá
Valami ilyesmit szeretnék, csak nem egy karaktert kiírni, hanem akár több sort egyszerre.
i=1
sp="/-\|"
echo -n ' '
while true
do
sleep 0.1
printf "\b${sp:i++%${#sp}:1}"
done
-
-
Hogyan lehetne megszámolni, hogy adott számsorozat elemei között (ebben a sorrendben nézve) hányszor történt emelkedés/csökkenés? Példa:
2
3
4
6
2
1
7
3A fenti példában 4 alkalommal emelkedett és 3 alkalommal csökkent az érték.
Nyilván összehasonlítom az aktuálisat az előzővel, ez rendben van, csak hogyan kezelem le ezt a legelső elemnél? Counterrel a for cikluson belül?
-
ksh-ban szeretnék tört számokkal dolgozni, lehetőleg külső parancs nélkül. Az oka, hogy több tízezerszer kell lefuttatnom, és számít, mennyi idő alatt végez. awk-val már megcsináltam, csak lassú.
A furcsa az, hogy itt kiírja rendesen az eredményt tört számként:
pi@raspberrypi:~ $ ksh -c 'echo $((250/0.8))'
312.5Itt viszont nem:
pi@raspberrypi:~ $ ksh -c 'echo $((24832/23413))'
1
És így sem:
pi@raspberrypi:~ $ ksh -c 'echo $((23413/24832))'
0
Miért? És hogyan lehetne rávenni, hogy ne kerekítsen?
-
Van egy ilyen awk parancsom:
awk "BEGIN {print (($(awk "BEGIN {print (100 - 0.11)}") * 0.000025442)/100)}"
A kimenet pedig így néz ki:
2.5414e-05
Na most én ezt "normálisan" kiírva szeretném megkapni, nem pedig tudományos formátumban. Találtam ezt a megoldást, de beillesztve (print cserélve printf-re) nem működik, errort dob:awk "BEGIN {printf "%.2f", (($(awk "BEGIN {printf "%.2f", (100 - 0.11)}") * 0.000025442)/100)}"
Error:
awk: line 1: syntax error at or near %
Hogyan kaphatnám meg az eredményt, ami
0.00002541401
? -
Hogyan tudom egy stringről megállapítani, hogy tartalmaz-e a ponton és a 0-án kívül mást?
Konkrétabban van egy számom (
0.000000
formátumban ), ami aztán lehet0.534545
,6.3434
vagy8
is. Azt szeretném megvizsgálni, hogy az értéke 0 vagy annál nagyobb.
Talán a legegyszerűbb megoldás a pontra és 0-ra szűrni, és ha mást is tartalmaz, akkor jelez. De lehet van még egyszerűbb megoldás is -
Szeretnék létrehozni egy olyan (valószínűleg) tömböt, ami x számú elemet tartalmazhat, és ha a limiten felül hozzáadok egy újat, akkor a a legrégebben hozzáadott kiesik belőle.
Létezik ilyen? Ha igen, mi a neve?
Példa 3 tagú tömbre:
Ujelem1
Ujelem2
Ujelem3
Majd ha hozzáadom az Ujelem4-et, és így nézne ki:
Ujelem2
Ujelem3
Ujelem4
Most egy fájlba irányítom ezeket az elemeket és onnan szűrök rá tail-el, de rendkívül lassú módszer így.
-
Van egy for ciklusom, ami már létező változókon megy végig. A változók végén változik a szám.
pl. w1, w2, w3
Szeretném használni egy curl parancsban, de sehogy sem tudom feloldani:
w1="https://prohardver.hu"
w1="https://hardverapro.hu"
w3="https://logout.hu"
for i in w{1..3}; do
number=${i: -1}
[ $(curl -sI "$(echo w${number})" | grep -c 'HTTP/2 200') != "1" ] && echo OK
done
A teljes változó website1 lenne, de ha elé írok egy dollárjelet, akkor a website változót üresnek veszi, és a curl csak az "1"-et kapja meg. echo-val sem sikerült megoldanom. Mi a megoldás?
-
-
Van egy számsorom, pl.
2 3 4 5 10 9 7 8 10
Szeretném a legnagyobb ugrást/kilengést megtalálni, vagyis a fenti esetben a két egymás mellett lévő 5 és 10 értéket. A számok egy fájlban vannak, minden sorban egy szám.
A még jobb megoldás lenne ezt százalékos különbséggel megnézni :)
Logikailag ezt hogy lehetne kivitelezni?
-
Váó, köszönöm a sok segítséget
Sorban:
Menü rendszer átvariálva, az észrevételek teljesen jogosak
Most már változókkal dolgozik a script. Teljesen abban voltam, hogy a case-ból kilépve elfelejti a belsejében definiált változókat.
A cron bejegyzés immáron az /etc/cron.d/ mappába kerül, és onnan is törli ki a fájlt uninstall-nál. Ésszerűbb, egyszerűbb, biztonságosabb. Jó észrevétel
a dirname $0/basename $0 az, szerintem, $0.
Így van. JavítvaTök jó lenne, ha ezt paranccsorból is meg lehetne adni, mert mondjuk .deb csomagot így elég nehéz csinálni belőle
Erre holnap ránézek.ja, és uninstallkor ezeket szerintem illene kiszedni az iptablesből.
Jogos. Ezt is holnap megnézem hogyan lehet egyszerűen kivitelezni.és ha jól emlékszem, case-hez shellben nem kell külön break, a ;; megoldja.
Sajnos nem, break nélkül újra megkérdezi, hogy mit szeretnék választani az étlapról és nem ugrik tovább.A harmadik sorhoz: ennek egyrészt az /usr/local/sbin-ben lenne a helye...
Nem értem pontosan mire gondolsz itt.a grepnek van egy -F kapcsolója...
Valamiért nem működik,invalid context length argument
hibát ad a grep. -
Első GitHub projektem, kérnék építő jellegű kritikát, a topik témájából fakadóan főleg a kódra nézve
-
válasz
samujózsi #2488 üzenetére
Ami az első sorban van, az annyit csinál, hogy a megadott könyvtárból a
grep
kiszűri azokat a találatokat, amikwpcli
stringet tartalmaznak, majd kiprinteli a legutolsó sort, a végén azawk
pedig a 9. oszlopot.Elméletileg az awk is ugyanezt csinálná, csak valamiért mégsem. A kizárásos szűrés nélkül lefut hiba nélkül:
ls -dl /mnt/backup/* | awk 'END{ print $9 }'
Amit írtál commandot valóban működik (
), csak nem értem, hogy az enyém miért nem, és miért kellett bonyolítani, hogy működőképes legyen?
-
válasz
Jester01 #2476 üzenetére
Ha már itt tartunk, nem engedtem el ezt a command egyszerűsítés dolgot
Ezt a parancsot:
ls -dl /mnt/backup/* | grep -v wpcli | tail -1 | awk '{ print $9 }'
Erre alakítottam át, csak valamiért nem működik:
ls -dl /mnt/backup/* | awk '! /wpcli/ END{ print $9 }'
És sajnos így sem:
ls -dl /mnt/backup/* | awk '! /wpcli/ && END{ print $9 }'
A hiba:
awk: cmd. line:1: ! /wpcli/ END{print $9}
awk: cmd. line:1: ^ syntax error
Hol lehet a gond? -
Van egy parancsom, ami a következő:
certbot certificates | grep 'Domains' | awk '{ print $2 }' &> /tmp/file
Tökéletesen lefut, az egyetlen probléma, hogy az alábbi output megjelenik a terminálban:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Ha így futtatom, akkor nem jelenik meg, csak ez esetben a szűrés nincs elvégezve:
certbot certificates &> /tmp/file
Szeretném elrejteni, ami miatt a parancsom végén a "&>" átirányítást használom. Azonban ez nem működik, ha közben még átadom az outputot más parancsoknak pipe-al.
Hogyan lehetne elrejteni ezt az egy sort, ami megjelenik pluszban?
-
Lehet volt már, de találtam egy egészen hasznos cikket a témában:
-
Van egy python script (pgAdmin - setup.py), ami a futtatásakor bekér 3 dolgot egymás után:
- Email cím
- Jelszó
- Jelszó még egyszerPróbáltam már így scriptelni, de valamiért nem működik:
echo $EMAIL && echo $PW && echo $PW $(python ./setup.py)
Egyszerűen nem veszi be az echo-zott adatokat.
Hogyan lehetne lescriptelni, hogy ne kelljen manuálisan beírni?
-
Szeretnék kicserélni egy szöveget egy fájlban
erről:
listen_addresses = 'localhost'
erre:
listen_addresses = '*'
Azonban az alábbi commanddal nem működik, a szimpla macsaköröm és a csillag miatt
sed -i "s/listen_addresses = 'localhost'/listen_addresses = '*'/g" "/tmp/postgresql.conf"
Hogyan lehetne ezt megoldani?
-
-
Ma nekiültem optimalizálni a scriptjeimet sebesség szempontjából.
Az alábbiakat alkalmaztam:
cut gyorsabb, mint az awk vagy a sed
cat file | grep kulcsszo
helyettgrep "kulcsszo" /file/eleresi/ut
#!/bin/bash
helyett#!/bin/sh
Az eredmény:
Az egy scriptemnél 2,9s helyett 1,2s
A másiknál pedig 4,6s helyett 1,5s lett a lefutási idő
Úgy érzem megérte
-
Logikailag hogyan lehet felépíteni egy olyan parancsot, ami rekurzívan az összes almappában keres, és amelyikben csak egy fájl létezik ( aminek kiterjesztése .srt ), azok útvonalait listázza ki?
-
Nem tudom hogyan induljak el, egy kis (elméleti) segítséget kérnék.
Van egy scriptem, amiben nagyjából hasonló sorok vannak, összesen 16, viszont szebben szeretém megoldani:
mysqldump --opt -Q -u USER --password=PASSWORD DATABASE_0 | gzip > /tmp/DATABASE_0.sql.gz
mysqldump --opt -Q -u USER --password=PASSWORD DATABASE_1 | gzip > /tmp/DATABASE_1.sql.gz
mysqldump --opt -Q -u USER --password=PASSWORD DATABASE_2 | gzip > /tmp/DATABASE_2.sql.gz
mysqldump --opt -Q -u USER --password=PASSWORD DATABASE_3 | gzip > /tmp/DATABASE_3.sql.gz
..
..
..
mysqldump --opt -Q -u USER --password=PASSWORD DATABASE_F | gzip > /tmp/DATABASE_F.sql.gzTehát az értékek amik változnak, azok 0-9 közötti számok és a-f betűk.
Valamiféle ciklust szeretnék létrehozni, ami mindössze ezeket a változó értékeket helyettesíti be annyiszor, ahány van belőlük ( jelen esetben 16 ), utána pedig kilép.
Hogyan lehetne ezt megoldani? Valami kis egyszerű példát tudnátok rá mutatni?
Köszönöm
-
Érdekesség:
-
while [ $(ls /egyik/path | wc -l) -gt $(ls /masik/path | wc -l) ]
do
some commands
doneA vastagított rész értékéhez szeretnék hozzáadni egyet. Hova kellene beírnom, és legfőképp, hogyan?
-
Van egy szerver, amin szeretnék crontabbal futtatni egy shell scriptet egy adott userrel. Azonban nem megy.
Ha a scriptet önmagában lefuttatom ( ./ezazascript.sh ), akkor sikeresen lefut.
Ha beírom crontabba, akkor nem fut le.
Viszont ha ugyanebbe a crontabba beírok pl. egy touch-ot, akkor az lefut.Ilyen jogai vannak a scriptnek, ez elég?
-rwxr-x--- 1 user group 318 Aug 18 10:35 ezazascript.sh
Mi lehet a gond?
-
Lehet olyan shell scriptet írni, hogy megvizsgálja a legutóbb kiadott parancs kimenetét, és ha adott szöveg van benne, akkor továbbengedi, míg ha nincs benne, akkor megáll / kiír egy szöveget?
Ha igen, hogyan? Milyen kulcsszavakra kellene keresnem?
-
Köszönöm a válaszokat!
bob.zxr: Ez esetben nem kérne jelszót? Gyanítom, hogy de
colomb2: Próbáltam, ezt a hibát kaptam:
standard in must be a tty
vargalex: Olyan szerverről van szó, ahol nem vagyok root és nincs is jogom szerkeszteni a sudoers fájlt. Csak az adott user jelszavát tudom, akinek a nevében a parancsokat kellene futtatni.
bambano: Pontosabban mire gondoltál?
-
Van egy user, aminek a nevébe szeretnék átjelentkezni a shell scriptem futtatásakor. Hogyan tudom ezt megtenni?
su - username
Idáig oké, de a hozzá tartozó jelszót hogyan iratom be vele?
-
Szeretnék egy script-et írni ( egyenlőre csak a következő dologra ) Windows alatt.
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
ping www.prohardver.huA fenti két paranccsal az a gondom, ha lefut az első sor, nem lép tovább a másodikra, hanem megvárja míg a Firefox be nem záródik. Hogyan lehetne ezt kiküszöbölni?
Az most lényegtelen, hogy értelme nincs, majd lesz ha bővítem
-
válasz
bambano #2048 üzenetére
Cégen belüli spéci program. Annyi, hogy amikor megnyitom, egyből lehet is gépelni a jelszót, illetve utána az entert megnyomni. Ezt minden gépindításnál meg kell tenni, mind a négy programnál, ezt szeretném automatizálni.
Programok indítása, illetve a közöttük való várakozás már megvan, már csak gépelni kellene, illetve entert/tabot ütni.
-
válasz
Jester01 #2044 üzenetére
Időközben rájöttem, hogy ( valószínűleg a cache miatt ) a tömörítés ~1mp alatt végez. Így a beírt parancsok folyamatosan futnak le, csak meglepően gyorsan.
Más: Lehetséges olyan script-et írni linux-ra, ami adott programban begépel adott szöveget, majd leüt egy entert? Gyakorlatilag olyan megoldást keresek, ami szimulálja a karakter leütéseket, és lehetőleg script-ként futtatható.
-
válasz
Jester01 #2038 üzenetére
Egy scriptben van mysql dump és tar-os tömörítés. Az utolsó mysql mentéssel és a tömörítéssel is gyannabn a másodpercben végez. A tar.gz állomány mérete ~600MB.
Ebből arra következtetek, hogy a mysql dump és a tar tömörítés egyszerre fut le. Ez többszöri tesztelés után is így lett. A scriptben első körben a mysql mentés van, majd pedig a legvégén a tömörítés.
-
Ha egy shell script fájlban megadok több tömörítést egy-egy sorban, pl.:
tar -zcvf /var/backup1.tar.gz /egyik
tar -zcvf /var/backup2.tar.gz /masik
tar -zcvf /var/backup3.tar.gz /harmadikEgyszerre futnak le ezek a tömörítések? Ha igen, hogyan tudnám őket egymás után ( nem párhuzamosan ) lefuttatni. Ha lehet, akkor olyan kitétellel, hogyha pl. a "masik" hibába ütközik, akkor is fusson le a "harmadik"?
Új hozzászólás Aktív témák
Hirdetés
- Telefon felváráslás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- ÁRGARANCIA! Épített KomPhone Ryzen 7 9800X3D 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Azonnali készpénzes AMD CPU AMD VGA számítógép felvásárlás személyesen / postával korrekt áron
- BESZÁMÍTÁS! MSI X470 R7 5800X 32GB DDR4 512GB SSD ROG STRIX RTX 2080 Super 8GB Rampage SHIVA 650W
- LG 65C3 - 65" OLED evo - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged