Fa estona no poso res de xoc, I és que a l'estar endinsant-me en el meravellós món de Python he oblidat una mica a aquest altre amic que tant em va ajudar 🙂
Aquí els poso alguna cosa als entusiastes de Bash, com bé diu el títol ... els mostraré com comprovar si existeix o no un arxiu o carpeta en el sistema, només usant: if
Crearem un arxiu .sh i donar-li permisos d'execució, per a això només cal posar la següent comanda en un terminal:
touch prueba.sh && chmod + x prueba.sh
Això el que va fer és crear el fitxer (touch prova.sh) I més donar-li permisos d'execució (chmod + x prueba.sh)
Després escrivim el següent en ell:
if [ -d /opt/ ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi
Què fa això?
simple 😀
A la primera línia - » if [-d / opt /];
Aquí preguntem, hi ha el directori / opt /? Sí directori / carpeta, ja que el -d significa directori o carpeta.
Després en cas que existeixi imprimirem a la terminal «Sí, sí existeix.»(Això és la línia 2 i 3)
En cas contrari i NO hi hagi / opt /, llavors imprimirem «No, no hi ha»(Línia 4 i 5)
Després en l'última línia (la número 6) tanquem el if i llest.
Facin la prova, els mostrarà que / opt / si existeix.
Si desitgen que els mostri l'altre text (el que no existeix) canviïn / opt / per qualsevol altra carpeta que no hi hagi en el sistema, per exemple: / asd /
Com veuen, -d ens serveix per saber si el directori existeix, bé ara si canviem -d per -f és per comprovar existència d'arxius (-d = directori, -f = file / arxiu)
Per exemple:
if [ -f /etc/hosts ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi
Aquí el llistat de les opcions:
-d - »Comprovar si hi ha determinat directori
-f - »Comprovar si hi ha determinat arxiu
-w - »Comprovar si determinat arxiu té permisos d'escriptura
-x - »Comprovar si determinat arxiu té permisos d'execució.
I bé no hi ha molt més que afegir 🙂
Sé que això li serà molt útil i interessant per a aquells que agraden de programar en Bash 😉
Salutacions
Una altra forma de fer-ho sense if ... then..else:
test -f /etc/hosts && elcomando
O també
test ! -f /etc/hosts && echo "no se encontró el archivo"
Etcètera.
Cert 😀
... O_O ... Ets Hugo, Hugo de Cuba? ... Usant windows8, WTF !!!
Doncs si, m'estic familiaritzant amb aquest OS i si he de ser-te franc, l'únic que li he trobat útil és el gestor de còpies, per la resta personalment em sembla una plasta, especialment la seva interfície híbrida i les aplicacions de metro. M'agrada menys que el Vista i el 7 (encara que sigui una mica més eficient que aquests), que tampoc m'agradaven. Per l'única cosa que ho estic fent servir és per jugar NFS13 i Skyrim, però aquest OS es porta tant espai que vaig haver de eliminar el meu partició de Linux [snif].
No obstant això, per a la teva tranquil·litat, et comento que abans d'ahir vaig descarregar l'ISO d'Arch de gener i penso donar-li un tast en la seva versió x86-64, quant aconsegueixi el repo (de casualitat el tindràs?). Ara que segons vaig veure fa servir per defecte paquets signats, em dóna més confiança capbussar-me.
I a més el meu pare em va dir que em manaria XNUMX Sony Xperia, que vull aprofitar per aprendre una mica de programació per a Android, que era un desig pendent. Així que tranquil·litza't, encara no m'he passat a el costat fosc de la força, buahahahaha 😉
man test
És clar.
Wenas! ..
Podríem fer un igual .. ..Però que el directori sigui passat per paràmetre ..
if [ -d $1 ];
then
echo "Sí, sí existe."
else
echo "No, no existe"
fi
I en diem com:
./prueba.sh / opt /
Salutació ..
IF no és un cicle xD
Em ve com anell a el dit per a un script que estic fent. És vàlid utilitzar comodins? Per exemple, per saber si hi ha algun .mp4 llavors executar alguna cosa sobre ells.
if [-f * .mp4];
...
Sí, és totalment vàlid ..
Fins i tot a través de paràmetres .. «* .mp4»
Per exemple,
if [ -f $1 ];
then
rm -r $1
else
ls
fi
Si el crides: ./prueba.sh * .mp4
Si troba arxius .mp4 els esborra .. ..sino et llista els arxius d'aquest directori ..
Gràcies pel feedback i tips! 🙂
Et va faltar la f xD
rm -rf $ 1
Així és més emocionant!
Meravellós !!!, Cada dia m'enamoro més de Linux, Windows ha quedat relegat en algun racó fosc de la meva Disc Dur, a el qual és a punt de ser esborrat per donar pas a la llum de Linux.
Excel·lent! .. ..entonces fes el següent paso..y treu-lo ..
Fa 6 mesos aprox. que tinc en totes les meves màquines només GNU / Linux i no necessito de més .. ..ni de W $ .. ni Wine .. ..i sóc més que feliç així .. 😉
I vaig contagiant als meus alrededores..ya que tots em veuen amb la meva Arch, ràpid, eficient i feliç .. ..i em demanen que els instal·li Linux .. ..yeah! .. 😀
També pots comprobrarlos per diverses extensions, pots fer servir alguna cosa com
#! / Bin / bash
Directori = $ HOME / Descàrregues
if [$ Directori]; then
trobo «A Continuacio una Llista d'arxius Tipus:»
trobo «MP1, mp2, mp3, mp4, wav, flac, flaad, aud, midi»
ls {* .mp?, *. wav, *. fla, *. aud * .midi}
fi
l'usar {} et permet especificar diverses extensions en aquest cas, l'ús de «?» , És un comodí, que li permet prendre «Qualsevol Caràcter».
Espero que els serveixi
T'aconsello la comanda find [directori] [patrón_de_búsqueda] -exec [comando] {} \
No funciona, vaig posar aquests fitxers en el directori:
AB20160420.TXT
AB20160421.TXT
AB20160422.TXT
AB20160423.TXT
AB20160424.TXT
AB20160425.TXT
cerca.sh
#! / Bin / bash
RUTA = / tmp / PROVA
cd $ RUTA
ls -la | awk '{print »« $ 9}'
if [[-f AB.TXT]]; then
trobo »Ingrés a l'IF si existeix qualsevol AB.TXT »
fi
if [-f AB20160422.TXT]; then
trobo «ingrés per a un arxiu AB específic»
fi
quan poso [-f AB.TXT] dóna error
quan poso [[-f AB.TXT]] no dóna error però no troba l'arxiu
només funciona quan poso un arxiu específic, per exemple:
if [-f AB20160422.TXT]; then
No aconsegueixo que funcioni amb comodins * o?
#! / Usr / bin / env bash
#.encoding = utf-8.
CONTSTANTS
EXIT_OK = 0
EXIT_BAD = 66
BOLD = »\ 033 [1m»
NC = »\ 033 [0m»
XARXA = »\ 033 [31m»
if [! «$ 1»];
llavors
trobo «cal un paràmetre»
exit $ EXIT_BAD
fi
cd «$ 1"
files = »ls -h1 $ 1»
for file in $ ($ files); do
echo -e «pots fer qualsevol cosa amb $ BOLD $ file $ nc aquí»
fet
exit $ EXIT_OK
@KZ, Conta més sobre això: «i és que a l'estar endinsant-me en el meravellós món de Python»!
Jajajaja nah ... poc a poc 🙂
Només sóc un novell en Python, gairebé no tinc temps ja per dedicar-li hores i hores, de manera que vaig lent sí, lent però segur en el meu aprenentatge 😀
Moltíssimes gràcies 😀 just ahir caminava pensant com fer això.
això amb ncurses és genial 🙂
en 1 paraula ... EXCEL·LENT!
Fa molt que estava perfeccionant un script per realitzar descàrregues des d'Internet, però em trobava amb el problema que descarregava els arxius que li demanava 1 i una altra vegada sense poder comprovar l'existència 1ro.
Molt bon Estatut.
Tremendo aportació, aquí des Xile s'agraeix.
Cada dia mes LINUX em sorprèn gratament,
Visca el Programari Lliure MIERDAAAA.
sirbe per
verificar si un arxiu és d'un directori
si vull comprovar l'existència d'un fitxer qualsevol en una ruta «/ tmp / receptors» em executi una ordre qualsevol, com seria?
els estaré molt agraït
Salutacions
Benvolguts, i per determinar mendiante IF si l'arxiu es troba poblat íntegrament ???. Ho pregunto pel fet que quan aquestes omplint l'arxiu per una transmissió, aquest el pot prendre fins i tot amb la meitat de les dades.
Salutacions i gràcies per la resposta.
Bé crec que també hauries afegir d'exemple, com «comprobrar que no existeix» un "arxiu" o "directori» com ara
per comprobrar que NO existeix, per exemple utilitzar una variable->
un Directori
#! / Bin / bash
Directori = »$ HOME / Directori de Prova»
Arxiu = »$ HOME / Arxiu de Prova»
if [! -d «$ Directori»]; then
trobo «No existeix $ Directori»
trobo «Creant ->« $ Directori »
mkdir «$ Directori»
else
trobo «El Directori« $ Directori »ja existeix
fi
if [! -d «$ Arxiu»]; then
trobo «No existeix $ Arxiu»
trobo «Creant ->« $ Arxiu »
touch «$ Arxiu»
else
trobo «L'Arxiu« $ Arxiu »ja existeix
fi
quan facis el mkdir fixa't després si la terminal ho va poder crear perquè pot trencar les boles si és una carpeta com a root o de sistema hhah
Salutacions KZKG ^ Gaara una consulta com faria per utilitzar curl. voldria saber com faig des de consola que faci un ping a una url per veure si està disponible per exemple http://portal.com/directorio/archivo1.php on el fitxer1 em estara emmagatzemant les ip de visites és per al monitoratge d'un equip que necessito que faci aquest pin cada mitja hora perquè em tingui al el gol de la ip publica ja que canvia de tant en tant i no em puc connectar per ssh .
Salutacions gràcies per endavant que Déu et beneeixi.
Hola que tal,
Primer, has de dir que la variable IP (per exemple) és el contingut d'aquest arxiu, per a això cal:
1. Descarregar l'arxiu
2. Veure el contingut i treure d'aquí la IP
3. Que aquesta IP sigui la variable
Per exemple:
Aquí baixem el fitxer - »wget http://portal.com/directorio/archivo1.php -o file.html
Després assignem a una variable el seu contingut: - »: $ {IP: =` cat file.html`}
.. suposant que el contingut d'aquest arxiu només tingui la IP, si no és així, caldria treballar amb grep, awk o head.
Un cop tinguis ia la IP com una variable, la resta és el més simple de l'món 🙂
Si vols m'escrius a l'email (kzkggaara [at] desdelinux [dot] net) que amb gust t'ajudo
Moltes gràcies kzkggaara molt agraït.
Hola, no entenc molt sobre informàtica i tampoc sé si aquesta entrada va relacionada amb el problema que tinc.
Us comento per si em llegiu, tot i que és de fa un any el post:
Resulta que creï una carpeta en el meu escriptori per emmagatzemar uns vídeos. Bé, aquests vídeos els vaig esborrar perquè ja no em feien falta i ara aquesta carpeta em diu que no existeix (tot i que està en el meu escriptori visible).
- Aquest és el primer problema que tinc:
No puc esborrar la carpeta.
- Segon problema i crec que més important:
En un intent d'esborrar la carpeta, vaig ficar una carpeta de FOTOS. Ara, quan obro la carpeta que «no existeix» està buida i les FOTOS no hi són.
Com puc recuperar les fotos? He donat a l'opció dins de la carpeta «Mostra documents ocults» però no apareixen la carpeta de les FOTOS.
Espero que pugueu saber com es soluciona.
Gràcies.
Hi ha dos usuaris que són els principals .: root i tu_usuario (natalia per exemple). Tots dos tenen carpetes personals. tu_usuario a / home i root a / (directori arrel). Fent clic dret sobre la carpeta fixa't a qui pertany. Si és a root amb el teu gestor de fitxers utilitzant sudo o gksu o kdesu depenent de l'entorn que facis servir veu a directori arrel -> root -> Desktop i rpobablemente trobis les fotos i puguis esborrar la carpeta. Algunes distros quan no ets el propietari de l'arxiu o directori i no tens permisos d'accés et diuen directori / fitxer no existent. Si el propietari ets tu i no root fas el mateix amb el gestor de fitxers amb suo, etc i vas a directori arrel -> / home -> carpeta_personal -> Desktop i veus si hi estan les fotos i si pots esborrar la carpeta.
Si això no funciona caldrà veure altres opcions des del terminal (consola).
Hola que tal, em trobo realitzant un treball en bash i voldria saber com verificar si hi ha un directori ingressat des teclat, per exemple
#! / Bin / bash
read ruta
#Ingreso ~ / Desktop
#Luego tracte de navegar per aquest directori
cd $ ruta
#Me apareix el següent missatge bash: cd: ~ / Desktop: No existeix el fitxer o directori
La meva pregunta és ¿Què puc fer perquè l'ingressi des teclat m'ho prengui com una ruta d'un directori?
I com puc saber si hi ha un grup,
bones tinc un problema en el meu Canaima quan pressiono el botó cunaguaro diu que no hi ha fitxer o directori com faria per resoldre aquest problema i de la resta no m'obre cunaguaro siusplau gràcies.
Com es fa el if en BASH si el nom de l'arxiu té espais?
Per exemple:
Dades mes de Abril.xlsx
Per preguntar si existeix el fitxer
Carles, així:
if [[ «$ variable» == Dades \ mes \ de \ Abril.xlsx]]; then echo 'coincideix'; fi
També pots:
if [[ «$ variable» == 'Dades mes de Abril.xlsx']]; then echo 'coincideix'; fi
Una altra opció:
[[ «$ Variable» == 'Dades mes de Abril.xlsx']] && echo 'coincideix' || echo 'no coincideix'
En algunes zones fosques d'internet recomanen utilitzar [[]] en comptes de [], i si vas a comparar nombres llavors: ((variable> = 3)) && echo 'variable és més gran o igual que 3' || echo 'variable és menor que 3'
Per tant, per a nombres:
if ((numero! = 4)); then echo "$ {nombre} no es 4»; else echo "$ {número} es 4»; fi
com es pot fer un codi perquè validi si el directori té un text específic, per poder editar-lo.
exemple:
if (text1)
no fer res
else
canviar text1 per text2
un dubte, com seria perquè comprovés cada 15 segons si existeix el fitxer o no, gràcies.
Hola,
això:
if [-w / home / Komun / Logs / tu]; then
esbrina si l'arxiu es pot escriure. Però es basa en els permisos d'usuari. Es pot fer per saber si el grup o els others tenen permisos?