Ik haw neat fan set Bash, en it is dat ik, wylst ik de prachtige wrâld fan Python yngean, in bytsje fergetten bin fan dizze oare freon dy't my sa folle holp
Hjir set ik wat foar Bash-entûsjasters, lykas de titel seit ... Ik sil jo sjen litte hoe't jo kontrolearje as d'r in bestân of map yn it systeem is, allinich mei: if
Wy sille in .sh-bestân meitsje en tagongsrjochten foar útfiering jaan, hjirfoar set gewoan it folgjende kommando yn in terminal:
oanreitsje test.sh && chmod + x test.sh
Dit wat hy die is it bestân oanmeitsje (oanreitsje test.sh) en jou jo ek útfieringsmachtigingen (chmod + x test.sh)
Litte wy dan it folgjende dêryn skriuwe:
if [ -d /opt/ ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi
Wat docht dit?
Ienfâldich 😀
Yn 'e earste rigel - » as [-d / opt /];
Hjir freegje wy, bestiet de / opt / map? Ja map / map, om't de -d betsjut map of map.
As it bestiet dan sille wy yn 'e terminal drukke «Ja, it bestiet.»(Dit is rigel 2 en 3)
Oars en / opt / bestiet NET, dan sille wy ôfdrukke «Nee it bestiet net»(Regel 4 en 5)
Dan yn 'e lêste rigel (nûmer 6) slute wy it if en dat is it.
Doch de test, it sil jo sjen litte dat / opt / bestiet.
As jo wolle dat ik jo de oare tekst sjen lit (dejinge dy't net bestiet) feroarje / opt / foar elke oare map dy't net yn jo systeem bestiet, bygelyks: / asd /
Sa't jo sjogge, helpt -d ús om te witten as de map bestiet, no as wy -d feroarje nei -f is it om it bestean fan bestannen te kontrolearjen (-d = map, -f = bestân / bestân)
Bygelyks:
if [ -f /etc/hosts ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi
Hjir is de list mei opsjes:
-d - »Kontrolearje oft in bepaalde map bestiet
-f - »Kontrolearje oft in bepaald bestân bestiet
-w - »Kontrolearje oft in bepaald bestân skriuwrjochten hat
-x - »Kontrolearje as in bepaald bestân útfieringsmachtigingen hat.
En goed, d'r is net folle mear te foegjen 🙂
Ik wit dat dit tige nuttich en ynteressant sil wêze foar dyjingen dy't graach programmearje yn Bash 😉
groetnis
42 opmerkingen, lit jo
In oare manier om it te dwaan sûnder as ... dan..else:
test -f /etc/hosts && elcomando
Of ek
test ! -f /etc/hosts && echo "no se encontró el archivo"
Etc.
Rjochts 😀
... O_O ... Binne jo Hugo, Hugo út Kuba? ... Windows8, WTF brûke !!!
No ja, ik wurd fertroud mei dit bestjoeringssysteem en as ik earlik wêze moat, is it iennichste ding dat ik nuttich fûn haw de kopiemanager, oars fyn ik it persoanlik in pine, foaral de hybride ynterface en de metro-tapassingen. Ik fyn it minder leuk dan de Vista en de 7 (al is it in bytsje effisjinter dan dizze), wat ik ek net leuk fûn. It iennige wêr't ik it foar brûke is NFS13 en Skyrim spielje, mar dit OS nimt safolle romte dat ik myn Linux-partysje [snif] wiskje moast.
Foar jo frede fan 'e geast sil ik jo lykwols fertelle dat ik earjuster de Arch ISO foar jannewaris downloade en ik planje it in lytse test te jaan yn' e x86-64 ferzje, sa gau't ik de repo krij (sille jo hawwe it?). No dat, lykas ik seach, standert tekene pakketten brûkt, jouwt it my mear fertrouwen om yn te dûken.
En myn heit fertelde my ek dat hy my in Sony Xperia stjoere soe, wêr't ik gebrûk fan meitsje wol om wat programmearjen foar Android te learen, wat in wachtsjende winsk wie. Dus bedarje, ik bin noch net nei de tsjustere kant fan 'e krêft gien, buahahahaha 😉
man test
Wis.
Wenas! ..
Wy koenen deselde meitsje .. ..maar de map wurdt trochjûn as parameter ..
if [ -d $1 ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi
En wy neame it as:
./test.sh / opt /
Groet..
IF is gjin syklus xD
It past my as in want foar in skript dat ik doch. Is it jildich wildcards te brûken? Bygelyks om út te finen oft d'r .mp4's binne, draaf dan wat derop.
as [-f * .mp4];
...
Ja, it is folslein jildich ..
Sels fia parameters .. "* .mp4"
Bygelyks,
if [ -f $1 ];
then
rm -r $1
else
ls
fi
As jo it neame: ./test.sh * .mp4
As it .mp4-bestannen fynt, wisket se se .. .. mar de bestannen yn dy map wurde net neamd.
Tank foar de feedback en tips! 🙂
Jo hawwe de f xD mist
rm -rf $ 1
Dit is spannender!
Prachtich !!!, Elke dei dat ik mear fereale wurde op Linux, is Windows ferwidere nei in donkere hoeke fan myn hurde skiif, dy't op it punt wurdt wiske om plak te jaan foar it ljocht fan Linux.
Prachtich! .. .. nim dan de folgjende stap .. en helje dy út ..
6 moannen lyn sawat. Ik haw allinich GNU / Linux op al myn masines en ik hoech net mear .. .. net W $ .. of Wyn .. ..en ik bin soks mear dan bliid .. 😉
En ik ynfektearje myn omjouwing .. om't elkenien my mei myn Arch sjocht, rap, effisjint en lokkich .. ..en se freegje my om Linux te ynstallearjen .. ..yeah! .. 😀
Jo kinne se ek kontrolearje op ferskate tafoegings, jo kinne sokssawat brûke
#! / bin / bash
Directory = $ HOME / Downloads
as [$ Directory]; dan
echo "Hjir is in list mei triemtypen:"
echo "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
fi
mei help fan {} kinne jo yn dit gefal meardere tafoegings oantsjutte, it gebrûk fan "?" , is in jokerteken, wêrmei jo "Any Character" nimme kinne.
Ik hoopje dat it jo helpt
Ik advisearje it kommando fine [map] [search_pattern] –exec [kommando] {} \
It wurket net, ik set dizze bestannen yn 'e map:
AB20160420.TXT
AB20160421.TXT
AB20160422.TXT
AB20160423.TXT
AB20160424.TXT
AB20160425.TXT
search.sh
#! / bin / bash
PATH = / tmp / TEST
cd $ ROUTE
ls -la | awk '{print »« $ 9}'
as [[-f AB.TXT]]; dan
echo »Fier it IF yn as d'r AB is.TXT »
fi
as [-f AB20160422.TXT]; dan
echo "ynfier foar in spesifyk AB-bestân"
fi
doe't ik [-f AB.TXT] jout flater
doe't ik [[-f AB.TXT]] jout gjin flater, mar kin it bestân net fine
it wurket allinich as ik in spesifyk bestân set, bygelyks:
as [-f AB20160422.TXT]; dan
Ik kin it net krije om mei jokertekens * te wurkjen of?
#! / usr / bin / env bash
#.kodearring = utf-8.
KONSTANTEN
EXIT_OK = 0
EXIT_BAD = 66
BOLD = »\ 033 [1m»
NC = »\ 033 [0m»
RED = »\ 033 [31m»
as [! "$ 1"];
dan
echo "mist in parameter"
ôfslute $ EXIT_BAD
fi
cd "$ 1"
bestannen = »ls -h1 $ 1»
foar bestân yn $ ($ bestannen); dwaan
echo -e "jo kinne alles dwaan mei $ BOLD $ bestân $ nc hjir"
klear
útgean $ EXIT_OK
@KZ, fertel hjir mear oer: "en dat komt om't ik de prachtige wrâld fan Python yn gean"!
HAHAHAHA né ... bytsje by bytsje 🙂
Ik bin noch mar in nijeling foar Python, ik ha amper tiid om oeren en oeren der oan te wijen, dus ik bin stadich ja, stadich mar wis yn myn learen 😀
Tige tank 😀 juster juster tocht ik hoe dit te dwaan.
dit mei flokken is geweldich 🙂
yn 1 wurd ... UTSTEKEND!
Lange tiid perfeksjoneare ik in skript om downloads fan it ynternet te meitsjen, mar ik hie it probleem dat it de bestannen dy't it 1 frege en opnij downloade sûnder it bestean 1ro te ferifiearjen.
Hiel goede tuto.
Geweldige bydrage, hjir út Sily wurdt wurdearre.
Alle dagen ferrast my LINUX my noflik,
Lang libje Frije software MIERDAAAA.
tsjinje foar
kontrolearje oft in bestân út in map komt
As ik it bestean fan in bestân yn in paad «/ tmp / ûntfangers» kontrolearje wol, dan elke kommando útfiere, hoe soe it dan wêze?
Ik sil heul tankber wêze
groetnis
Bêste, en om te bepalen troch IF as it bestân folslein befolke is ???. Ik freegje dit, om't jo it bestân ynfolje foar in oerdracht, it kin it sels mei de helte fan 'e gegevens nimme.
Groetnis en tank foar jo reaksje.
No, ik tink dat jo ek in foarbyld moatte tafoegje, lykas "Kontrolearje dat d'r gjin" in "bestân" of "map" is, lykas bygelyks
om te kontrolearjen dat it NET bestiet, brûk bygelyks in fariabele->
In map
#! / bin / bash
Directory = »$ HOME / Test Directory»
Bestân = »$ HOME / Testbestân»
as [! -d "$ Directory"]; dan
echo "D'r is gjin $ Directory"
echo "Oanmeitsje ->" $ Directory "
mkdir "$ Directory"
oars
echo "Directory" $ Directory "bestiet al
fi
as [! -d "$ Bestân"]; dan
echo "Bestân $ bestiet net"
echo "Oanmeitsje ->" $ Bestân "
reitsje "$ Triem" oan
oars
echo "Bestân" $ Bestân "bestiet al
fi
as jo de mkdir dogge, kontrolearje dan letter as de terminal it koe oanmeitsje, om't it de ballen kin brekke as it in map is as root as systeem hhah
Groetnis KZKG ^ Gaara in fraach lykas ik soe dwaan om krul te brûken. Ik wol graach wite hoe't ik fan 'e konsole nei ping in url doch om te sjen as it bygelyks beskikber is http://portal.com/directorio/archivo1.php Wêr't file1 de IP's fan 'e besite sil opslaan, is it foar it kontrolearjen fan in team dat ik dizze pin elke heal oere moat meitsje, sadat ik my bewust bin fan' e publike IP, om't it sa no en dan feroaret en ik kin gjin ferbining meitsje fia ssh ,
Groetnis tanke jo foarôf God segenje jo.
Hoi is it giet
Earst moatte jo sizze dat de IP-fariabele (bygelyks) de ynhâld fan dat bestân is, hjirfoar moatte jo:
1. Download it bestân
2. Besjoch de ynhâld en helje it IP derôf
3. Dat IP is de fariabele
Bygelyks:
Hjir downloade wy it bestân - »wget http://portal.com/directorio/archivo1.php -o file.html
Dan jouwe wy in fariabele de ynhâld ta: - »: $ {IP: =` cat file.html`}
.. oannomend dat de ynhâld fan dat bestân allinich it IP hat, as net, soene jo moatte wurkje mei grep, awk of kop.
As jo ienris de IP as fariabele hawwe, is de rest it simpelste ding yn 'e wrâld 🙂
As jo my wolle skriuwe nei de e-post (kzkggaara [at] desdelinux [dot] net) dat sil ik jo graach helpe
Tige tank kzkggaara tige tankber.
Hoi, ik begryp net folle oer kompjûterjen en ik wit net oft dizze post relatearre is oan it probleem dat ik haw.
Ik reagearje as jo my lêze, hoewol it berjocht fan in jier lyn is:
It docht bliken dat ik in map op myn buroblêd makke om wat fideo's op te slaan. No, ik haw dy fideo's fuortsmiten, om't ik se net mear nedich wie en no fertelt dizze map my dat it net bestiet (hoewol it sichtber is op myn buroblêd).
- Dat is it earste probleem dat ik haw:
Ik kin de map net wiskje.
- Twadde probleem en ik tink wichtiger:
Yn in besykjen om de map te wiskjen, sette ik in FOTO'S map. No as ik de map iepenje dy't "net bestiet" is dizze leech en de FOTO's binne der net.
Hoe kin ik de foto's weromhelje? Ik haw de opsje jûn yn 'e map "Ferburgen dokuminten sjen litte", mar de map FOTO's ferskynt net.
Ik hoopje dat jo kinne wite hoe't it wurdt oplost.
Thank you.
D'r binne twa brûkers dy't de wichtichste binne: root en jo_user (natalia bygelyks). Se hawwe beide persoanlike mappen. jo_user yn / thús en root yn / (root-map). Troch mei de rechtermuisknop op de map te sjen sjen wa't it heart. As it root is mei jo bestânbehearder mei sudo of gksu of kdesu, ôfhinklik fan 'e omjouwing dy't jo brûke, gean dan nei de root-map -> root -> Desktop en jo sille wierskynlik de foto's fine en jo kinne de map wiskje. Guon distros as jo net de eigner binne fan it bestân of map en jo hawwe gjin tagongsrjochten, fertelle dat map / bestân net bestiet. As jo de eigner binne en jo binne net root, doch itselde mei de bestânbehearder mei sudo, etc en gean nei de root-map -> / home -> personal_folder -> Desktop en sjoch as de foto's der binne en as jo de map kinne wiskje.
As dit net wurket, moatte jo oare opsjes sjen fan 'e terminal (konsole).
Hoi, hoe giet it? Ik doch in baan yn bash en ik wol graach wite hoe te ferifiearjen as d'r in map is ynfierd fanút it toetseboerd, bygelyks
#! / bin / bash
lêzen rûte
#Enter ~ / buroblêd
#Dêrnei besykje ik troch dizze map te navigearjen
cd $ paad
# Ik krij it folgjende bash-berjocht: cd: ~ / buroblêd: It bestân of map bestiet net
Myn fraach is, wat kin ik dwaan dat ik it ynfiere fanôf it toetseboerd en nim it as mappaad?
En hoe kin ik wite as in groep bestiet,
goed Ik ha in probleem yn myn canaima as ik op 'e knop cunaguaro drukke, seit dat d'r gjin bestân of map is, lykas it soe dwaan om dat probleem op te lossen en de rest iepenet cunaguaro net asjebleaft bedankt
Hoe dogge jo it if yn BASH as de bestânsnamme spaasjes hat?
Bygelyks:
April data.xlsx
Om te freegjen oft it bestân bestiet
Carlos, sa:
as [["$ fariabele" == Gegevens \ moanne \ fan \ April.xlsx]]; dan echo 'match'; fi
Jo kinne ek:
as [["$ fariabele" == 'Gegevens foar de moanne april.xlsx']]; dan echo 'match'; fi
In oare opsje:
[["$ Variable" == 'Gegevens foar de moanne april.xlsx']] && echo 'matches' || echo 'komt net oerien'
Yn guon tsjustere gebieten fan it ynternet advisearje se [[]] te brûken ynstee fan [], en as jo getallen fergelykje sille dan: ((fariabele> = 3)) && echo 'fariabele is grutter as of gelyk oan 3' || echo 'fariabele is minder dan 3'
Dêrom foar getallen:
as ((getal! = 4)); dan echo "$ {number} is net 4"; oars echo "$ {number} is 4"; fi
hoe kinne jo in koade meitsje om te validearjen as de map in spesifike tekst hat, om dizze te bewurkjen.
foarbyld:
as (tekst1)
neat dwaan
oars
feroarje tekst1 nei tekst2
in fraach, hoe soe it wêze om elke 15 sekonden te kontrolearjen as it bestân bestiet of net, tank.
hallo,
dizze:
as [-w / home / Komun / Logs / ti]; dan
Fyn út as it bestân skriuwber is. Mar it is basearre op brûkersrjochten. Kin it wurde dien om út te finen oft de groep as de oaren tagongsrjochten hawwe?