Ik heb er niets van gedaan Slaan, en het is dat wanneer ik de wondere wereld van Python betreed, ik een beetje ben vergeten over deze andere vriend die me zo veel heeft geholpen 🙂
Hier leg ik iets voor Bash-enthousiastelingen, zoals de titel al zegt ... Ik zal je laten zien hoe je kunt controleren of een bestand of map in het systeem bestaat, gewoon met behulp van: if
We gaan een .sh-bestand maken en het uitvoeringsrechten geven, hiervoor is het voldoende om het volgende commando in een terminal te plaatsen:
touch test.sh && chmod + x test.sh
Wat dit deed, is het bestand maken (tik op test.sh) en geven u ook uitvoeringsrechten (chmod + x test.sh)
Laten we er dan het volgende in schrijven:
if [ -d /opt/ ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi
Wat doet dit?
Eenvoudig 😀
Op de eerste regel - » als [-d / opt /];
Hier vragen we, bestaat de / opt / directory? Ja directory / map, omdat het -d betekent directory of map.
Als het bestaat, zullen we afdrukken in de terminal «Ja, het bestaat.»(Dit zijn lijn 2 en 3)
Anders en / opt / bestaat NIET, dan zullen we afdrukken «Nee het bestaat niet»(Lijnen 4 en 5)
Dan sluiten we in de laatste regel (nummer 6) de if en dat is het.
Doe de test, het zal je laten zien dat / opt / bestaat.
Als je wilt dat ik je de andere tekst laat zien (degene die niet bestaat), verander / kies / dan voor een andere map die niet in je systeem bestaat, bijvoorbeeld: / asd /
Zoals je kunt zien, helpt -d ons om te weten of de map bestaat, als we nu -d veranderen in -f, is het om het bestaan van bestanden te controleren (-d = map, -f = bestand / bestand)
Bijvoorbeeld:
if [ -f /etc/hosts ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi
Hier is de lijst met opties:
-d - »Controleer of een bepaalde directory bestaat
-f - »Controleer of een bepaald bestand bestaat
-w - »Controleer of een bepaald bestand schrijfrechten heeft
-x - »Controleer of een bepaald bestand uitvoeringsrechten heeft.
En er is niet veel meer toe te voegen 🙂
Ik weet dat dit erg handig en interessant zal zijn voor degenen die graag in Bash 😉 programmeren
groeten
Een andere manier om het te doen zonder als ... dan ... anders:
test -f /etc/hosts && elcomando
Of ook
test ! -f /etc/hosts && echo "no se encontró el archivo"
Enzovoort.
Rechts 😀
… O_O… Bent u Hugo, Hugo uit Cuba? … Met Windows8, WTF !!!
Nou ja, ik begin bekend te raken met dit besturingssysteem en als ik eerlijk moet zijn, is het enige dat ik nuttig heb gevonden de kopieerbeheerder, anders vind ik het persoonlijk vervelend, vooral de hybride interface en de metro-applicaties. Ik vind het minder leuk dan de Vista en de 7 (zij het een beetje efficiënter dan deze), die ik ook niet leuk vond. Het enige waar ik het voor gebruik is om NFS13 en Skyrim te spelen, maar dit besturingssysteem neemt zoveel ruimte in beslag dat ik mijn Linux-partitie [snif] moest verwijderen.
Voor uw gemoedsrust zal ik u echter vertellen dat ik eergisteren de Arch ISO voor januari heb gedownload en ik ben van plan om het een kleine test te geven in zijn x86-64-versie, zodra ik de repo heb (wilt u heb het?). Nu ik zag dat het standaard ondertekende pakketten gebruikt, geeft het me meer vertrouwen om erin te duiken.
En mijn vader vertelde me ook dat hij me een Sony Xperia zou sturen, waarvan ik wil profiteren om wat programmeren voor Android te leren, wat een hangende wens was. Dus kalmeer, ik ben nog niet naar de donkere kant van de kracht gegaan, buahahahaha 😉
handtest
Tuurlijk.
Wenas! ..
We zouden dezelfde kunnen maken .. ..maar de map wordt doorgegeven als een parameter ..
if [ -d $1 ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi
En we noemen het als:
./test.sh / opt /
Groet..
ALS is geen cyclus xD
Het past mij als een handschoen voor een script dat ik doe. Is het geldig om jokertekens te gebruiken? Als u bijvoorbeeld wilt weten of er .mp4's zijn, voert u er iets op uit.
als [-f * .mp4];
...
Ja, het is volledig geldig ..
Zelfs via parameters .. "* .mp4"
Bv
if [ -f $1 ];
then
rm -r $1
else
ls
fi
Als je het noemt: ./test.sh * .mp4
Als het .mp4-bestanden vindt, worden ze verwijderd ... ... maar de bestanden in die map worden niet weergegeven ...
Bedankt voor de feedback en tips! 🙂
Je hebt de f xD gemist
rm -rf $ 1
Dit is spannender!
Geweldig !!!, Elke dag word ik meer verliefd op Linux, Windows is gedegradeerd naar een donkere hoek van mijn harde schijf, die op het punt staat te worden gewist om plaats te maken voor het licht van Linux.
Uitstekend! .. ..zet dan de volgende stap .. en haal het eruit ..
6 maanden geleden ca. Ik heb alleen GNU / Linux op al mijn machines en ik heb niet meer nodig .. ..niet W $ .. of Wine .. ..en ik ben meer dan blij zo .. 😉
En ik infecteer mijn omgeving .. aangezien iedereen me ziet met mijn Arch, snel, efficiënt en gelukkig .. ..en ze vragen me Linux te installeren .. ..ja! .. 😀
Je kunt ze ook controleren op verschillende extensies, je kunt zoiets gebruiken
#! / Bin / bash
Directory = $ HOME / Downloads
als [$ Directory]; vervolgens
echo "Hier is een lijst met bestandstypen:"
echo "mp1, mp2, mp3, mp4, wav, flac, flaad, aud, midi"
ls {* .mp ?, *. wav, *. fla, *. aud * .midi}
fi
met {} kunt u in dit geval meerdere extensies specificeren, het gebruik van "?" , is een jokerteken, waarmee u "Elk teken" kunt nemen.
Ik hoop dat je leert
Ik raad het commando find [directory] [search_pattern] –exec [command] {} \
Het werkt niet, ik heb deze bestanden in de directory gezet:
AB20160420.TXT
AB20160421.TXT
AB20160422.TXT
AB20160423.TXT
AB20160424.TXT
AB20160425.TXT
search.sh
#! / Bin / bash
PAD = / tmp / TEST
cd $ ROUTE
ls -la | awk '{print »« $ 9}'
als [[-f AB.TEKST]]; vervolgens
echo »Voer de IF in als er een AB is.TEKST "
fi
if [-f AB20160422.TXT]; vervolgens
echo "invoer voor een specifiek AB-bestand"
fi
toen ik [-f AB.TXT] geeft foutmelding
toen ik [[-f AB.TXT]] geeft geen foutmelding maar kan het bestand niet vinden
het werkt alleen als ik een specifiek bestand plaats, bijvoorbeeld:
if [-f AB20160422.TXT]; vervolgens
Ik kan het niet laten werken met jokertekens * of?
#! / usr / bin / env bash
#.codering = utf-8.
CONTSTANTEN
EXIT_OK = 0
EXIT_BAD = 66
BOLD = »\ 033 [1m»
NC = »\ 033 [0m»
RED = »\ 033 [31m»
als [! "$ 1"];
harte
echo "ontbreekt een parameter"
verlaat $ EXIT_BAD
fi
cd "$ 1"
bestanden = »ls -h1 $ 1»
voor bestand in $ ($ bestanden); Doen
echo -e "je kunt hier alles doen met $ BOLD $ file $ nc"
gedaan
verlaat $ EXIT_OK
@KZ, vertel hier meer over: "en dat komt omdat ik de wondere wereld van Python betreed"!
HAHAHAHA nee ... beetje bij beetje 🙂
Ik ben nog maar een nieuweling van Python, ik heb nauwelijks tijd om er uren en uren aan te besteden, dus ik ben traag, ja, traag maar zeker in mijn leerproces 😀
Heel erg bedankt 😀 gisteren dacht ik na over hoe ik dit moest doen.
dit met ncurses is geweldig 🙂
in 1 woord… UITSTEKEND!
Ik was lange tijd bezig met het perfectioneren van een script om downloads van internet te maken, maar ik werd geconfronteerd met het probleem dat het de bestanden downloadde waar het om vroeg 1 en opnieuw zonder het bestaan van 1ro te kunnen verifiëren.
Zeer goede tuto.
Geweldige bijdrage, hier uit Chili wordt gewaardeerd.
Elke dag verrast LINUX me aangenaam,
Lang leve gratis software MIERDAAAA.
dienen voor
controleer of een bestand uit een directory komt
Als ik het bestaan van een bestand in een pad «/ tmp / receivers» wil controleren, voer dan een commando uit, hoe zou dat zijn?
ik zal heel dankbaar zijn
groeten
Beste, en om op IF te bepalen of het bestand volledig gevuld is ???. Ik vraag dit omdat wanneer u het bestand vult voor een verzending, het zelfs met de helft van de gegevens kan duren.
Groeten en bedankt voor je reactie.
Nou, ik denk dat je ook een voorbeeld moet toevoegen, zoals "Controleer of er geen" een "bestand" of "map" is, zoals bijvoorbeeld
om te controleren of het NIET bestaat, gebruik bijvoorbeeld een variabele->
Een directory
#! / Bin / bash
Directory = »$ HOME / Test Directory»
File = »$ HOME / Testbestand»
als [! -d "$ Directory"]; vervolgens
echo "Er is geen $ Directory"
echo "Creëren ->" $ Directory "
mkdir "$ Directory"
anders
echo "Directory" $ Directory "bestaat al
fi
als [! -d "$ bestand"]; vervolgens
echo "Bestand $ bestaat niet"
echo "Creëren ->" $ Bestand "
tik op "$ File"
anders
echo "File" $ File "bestaat al
fi
wanneer je de mkdir doet, controleer later of de terminal het kan maken, want het kan de ballen breken of het een map is als root of systeem hhah
Groeten KZKG ^ Gaara een vraag zoals ik zou doen om curl te gebruiken. Ik zou graag willen weten hoe ik vanuit de console een url kan pingen om te zien of deze bijvoorbeeld beschikbaar is http://portal.com/directorio/archivo1.php Waar file1 de bezoek-IP's zal opslaan, is het voor het monitoren van een team dat ik die pin elk half uur moet maken, zodat ik op de hoogte ben van het openbare IP-adres, aangezien het van tijd tot tijd verandert en ik geen verbinding kan maken via SSH.
Gegroet dank u bij voorbaat God zegene u.
Hallo daar,
Ten eerste moet je zeggen dat de IP-variabele (bijvoorbeeld) de inhoud van dat bestand is, hiervoor moet je:
1. Download het bestand
2. Bekijk de inhoud en haal daar het IP-adres op
3. Dat IP is de variabele
Bijvoorbeeld:
Hier downloaden we het bestand - »wget http://portal.com/directorio/archivo1.php -o bestand.html
Vervolgens wijzen we de inhoud van een variabele toe: - »: $ {IP: =` cat file.html`}
.. ervan uitgaande dat de inhoud van dat bestand alleen het IP-adres heeft, anders zou u met grep, awk of head moeten werken.
Als je het IP al als een variabele hebt, is de rest het eenvoudigste ter wereld 🙂
Als je wilt, schrijf me dan per e-mail (kzkggaara[at]desdelinux[dot]net) Ik help je graag verder
Heel erg bedankt kzkggaara erg dankbaar.
Hallo, ik begrijp niet veel van computergebruik en ik weet niet of dit bericht verband houdt met het probleem dat ik heb.
Ik geef commentaar voor het geval je me leest, ook al is het bericht van een jaar geleden:
Het blijkt dat ik een map op mijn bureaublad heb gemaakt om enkele video's op te slaan. Nou, ik heb die video's verwijderd omdat ik ze niet langer nodig had en nu vertelt deze map me dat het niet bestaat (ook al is het zichtbaar op mijn bureaublad).
- Dat is het eerste probleem dat ik heb:
Ik kan de map niet verwijderen.
- Tweede probleem en ik denk dat belangrijker:
In een poging de map te verwijderen, heb ik een map PHOTOS geplaatst. Als ik nu de map open die "niet bestaat", is deze leeg en zijn de FOTO'S er niet.
Hoe kan ik de foto's herstellen? Ik heb de optie gegeven in de map "Verborgen documenten weergeven", maar de map FOTO'S verschijnt niet.
Ik hoop dat je kunt weten hoe het is opgelost.
Dank u.
Er zijn twee gebruikers die de belangrijkste zijn: root en jouw_gebruiker (bijvoorbeeld natalia). Ze hebben allebei persoonlijke mappen. uw_gebruiker in / home en root in / (hoofdmap). Door met de rechtermuisknop op de map te klikken, kunt u zien van wie deze is. Als het root is met je bestandsbeheerder met sudo of gksu of kdesu, afhankelijk van de omgeving die je gebruikt, ga dan naar de root-directory -> root -> Desktop en je zult waarschijnlijk de foto's vinden en je kunt de map verwijderen. Sommige distributies als je niet de eigenaar bent van het bestand of de map en je geen toegangsrechten hebt, vertellen dat je map / bestand niet bestaat. Als je de eigenaar bent en niet de root, doe dan hetzelfde met de bestandsbeheerder met sudo, etc en ga naar de root directory -> / home -> personal_folder -> Desktop en kijk of de foto's er zijn en of je ze kunt verwijderen de map.
Als dit niet werkt, moet u andere opties van de terminal (console) zien.
Hallo, hoe gaat het? Ik doe een klus in bash en ik zou graag willen weten hoe ik kan controleren of er een map is ingevoerd via het toetsenbord, bijvoorbeeld
#! / Bin / bash
lees route
# Voer ~ / Desktop in
#Dan probeer ik door die map te navigeren
cd $ pad
# Ik krijg het volgende bash-bericht: cd: ~ / Desktop: het bestand of de directory bestaat niet
Mijn vraag is, wat kan ik doen om het via het toetsenbord in te voeren en het als een mappad te beschouwen?
En hoe kan ik weten of er een groep bestaat,
goed Ik heb een probleem in mijn canaima als ik op de knop cunaguaro druk, het zegt dat er geen bestand of map is zoals het zou doen om dat probleem op te lossen en de rest opent cunaguaro niet, dank je.
Hoe doe je de if in BASH als de bestandsnaam spaties heeft?
Bijvoorbeeld:
April data.xlsx
Om te vragen of het bestand bestaat
Carlos, zoals dit:
if [["$ variable" == Gegevens \ maand \ van \ april.xlsx]]; dan echo 'match'; fi
U kunt ook:
if [["$ variable" == 'Gegevens voor de maand april.xlsx']]; dan echo 'match'; fi
Een andere optie:
[["$ Variable" == 'Gegevens voor de maand april.xlsx']] && echo 'komt overeen met' || echo 'komt niet overeen'
In sommige donkere delen van het internet raden ze aan om [[]] te gebruiken in plaats van [], en als je getallen gaat vergelijken, dan: ((variable> = 3)) && echo 'variabele is groter dan of gelijk aan 3' || echo 'variabele is kleiner dan 3'
Daarom voor cijfers:
if ((nummer! = 4)); dan echo "$ {number} is niet 4"; anders echo "$ {nummer} is 4"; fi
Hoe kun je een code maken om te valideren of de directory een specifieke tekst heeft, zodat je deze kunt bewerken.
bijvoorbeeld:
if (tekst1)
niets doen
anders
verander text1 in text2
een vraag, hoe zou het zijn om elke 15 seconden te controleren of het bestand bestaat of niet, bedankt.
Hallo,
dit:
als [-w / home / Komun / Logs / ti]; vervolgens
Kijk of het bestand schrijfbaar is. Maar het is gebaseerd op gebruikersrechten. Kan het worden gedaan om erachter te komen of de groep of de anderen machtigingen hebben?