Kezdőlap › Fórumok › Programozás › Bash script
- This topic has 437 hozzászólás, 56 résztvevő, and was last updated 13 years, 7 months telt el by
Goosfrabaa.
-
SzerzőBejegyzés
-
2008-09-29-20:43 #2053579uzsolt wrote:Ha jól gondolom, akkor ${file} lesz, amit akarsz.
így már csak olyan fájlokat nyit meg amiknek teljesen egybe van írva a nevük, szóköz, kötőjel stb sem lehet benne.
2008-10-02-13:23 #2053580Egy szemléletesebb példa:
Code:~/scripts$cat player
#!/bin/sh
cd „$(dirname „$1″)”
file=$(echo $(basename „$1”)|sed ‘s/ /\ /g’|sed ‘s/[/\[/g’|sed ‘s/]/\]/g’)
ls|grep -A 100 „$file”|sed ‘s/ /\ /g’|xargs sudo nice -n -10 mplayer -fs
~/scripts$ls -l /home/norbi/temp/teszt/
összesen 358524
-rw-r–r– 1 norbi norbi 366761984 szept 27 02.06 a – b – c’d [e].avi
~/scripts$sh -x player /home/norbi/temp/teszt/a – b – c’d [e].avi
++ dirname ‘/home/norbi/temp/teszt/a – b – c”’d [e].avi’
+ cd /home/norbi/temp/teszt
+++ basename ‘/home/norbi/temp/teszt/a – b – c”’d [e].avi’
++ echo a – b – ‘c”’d’ ‘[e].avi’
++ sed ‘s/ /\ /g’
++ sed ‘s/[/\[/g’
++ sed ‘s/]/\]/g’
+ file=’a – b – c”’d [e].avi’
+ ls
+ grep -A 100 ‘a – b – c”’d [e].avi’
+ sed ‘s/ /\ /g’
+ xargs sudo nice -n -10 mplayer -fs
xargs: pár nélküli egyszeres idézőjel; alapértelmezésben az idézőjelek speciálisak az xargs számára, hacsak nem használja a -0 kapcsolótHa megadom a xargs-nak a -0 kapcsolót:
Code:~/scripts$sh -x player /home/norbi/temp/teszt/a – b – c’d [e].avi
++ dirname ‘/home/norbi/temp/teszt/a – b – c”’d [e].avi’
+ cd /home/norbi/temp/teszt
+++ basename ‘/home/norbi/temp/teszt/a – b – c”’d [e].avi’
++ echo a – b – ‘c”’d’ ‘[e].avi’
++ sed ‘s/ /\ /g’
++ sed ‘s/[/\[/g’
++ sed ‘s/]/\]/g’
+ file=’a – b – c”’d [e].avi’
+ ls
+ grep -A 100 ‘a – b – c”’d [e].avi’
+ sed ‘s/ /\ /g’
+ xargs -0 sudo nice -n -10 mplayer -fs
MPlayer 1.0rc2-4.3.1-DFSG-free (C) 2000-2007 MPlayer Team
CPU: AMD Athlon(tm) XP 2500+ (Family: 6, Model: 10, Stepping: 0)
CPUflags: MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 0
Compiled with runtime CPU detection.
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.Playing a – b – c’d [e].avi
.
File not found: ‘a – b – c’d [e].avi
‘
Failed to open a – b – c’d [e].avi
.Exiting… (End of file)
Ekkor már a „[]” karaktereket sem veszi figyelembe.
2008-10-02-16:05 #2053581Azt nem értem, miért kell ilyen hülye karaktereket használni fájlnevekben 😛
Lehet, hogy a hétvégén valamikor majd megpróbálom tesztelgetni.2008-10-02-16:15 #2053582uzsolt wrote:Azt nem értem, miért kell ilyen hülye karaktereket használni fájlnevekben 😛
Lehet, hogy a hétvégén valamikor majd megpróbálom tesztelgetni.Azt sajna én sem, de elég sűrűn találkozom velük.
Előre is köszi!2008-10-23-12:16 #2053583hello
suliba kell egy scriptet irnom, amely listazza a szerveren talalhato groupokat, es melle irja az egyes groupokban talalhato userek szamat. hogy lehet megtudni legegyszerubben, hogy egy group osszesen hany usert tartalmaz? nezegettem az /etc/group es az /etc/passwd fajlokat. az /etc/group-ban a felhasznaloi csoportok mellett nem szerepel az osszes felhasznalo, az /etc/passwd-ben meg nem szerepel felhasznalok mellett az osszes group, amelybe tartoznak. letezik erre egy egyszeru megoldas, ahol nem ebbol a 2 fajlbol kell kikeresgelnem a szukseges informaciokat?2008-10-23-12:53 #2053584az /etc/group-ban a felhasznaloi csoportok mellett nem szerepel az osszes felhasznalo
Pedig kéne.
Elvileg az a szerkezete, hogy
coport1…user1,user2
coport2…user1,user3,user4Tehát magyarán vesszőket kell számolni (soronként) és hozzáadni 1-et.
2008-10-23-12:59 #2053585Illetve, fontos, még a „:” is, mert az a lezáró karakter.
csoport1:… – kettőspontig bezárólag az a csoport neve és utána ahány vessző van + 1 a felhasználók száma.sed, grep a felhasználandó programok.
Ez meg hasznos kis állomány: http://sed.sourceforge.net/sed1line.txt aszem minden benne lesz, ami kell.
2008-10-25-01:40 #2053586vizsla wrote:az /etc/group-ban a felhasznaloi csoportok mellett nem szerepel az osszes felhasznalo
Pedig kéne.
Elvileg az a szerkezete, hogy
coport1…user1,user2
coport2…user1,user3,user4Tehát magyarán vesszőket kell számolni (soronként) és hozzáadni 1-et.
koszi a segitseget. szerintem nem tartalmazza a csoportokhoz hozzarendelt osszes felhasznalot csak azokat, amelyek nem szerepelnek a /etc/passwd-ben. ott pl az egesz evfolyam egy „20008” GID-vel rendelkezo csoportba tartozik, de az /etc/group-ban meg sincs ott a csoport neve mellett az osszes felhasznalo.2008-10-25-16:50 #2053587osszes felhasznalot csak azokat, amelyek nem szerepelnek a /etc/passwd-ben
Ez nem világos. Ez tartalmazza a id-ket, meg a burkot, azok nélkül meg nincs felhasználó.
Vagy a mondat értelme más, mint, amit írni akarnál, vagy azok a felhasználók nem léteznek… mert ugye jelszó nélkül elvan egy felhasználó, de burok, meg főként id nélkül?2008-10-28-21:25 #2053588bocs, en fogalmaztam felre. ugy ertettem hogy, az /etc/group-ban csak masodlagos hozzarendelesek vannak. /etc/passwd-ben a felhasznalonak van egy default groupja, oda ha jol tudom csak 1 group kerulhet felhasznalokent. az /etc/group-ban pedig meeg hozzaadhatunk felhasznalokat (amelyek rendelkeznek mar egy default grouppal) a csoportokhoz.
vegulis felesleges az egesz mert en csak az /etc/grouppal fogok foglalkozni a scriptben, meg ha igy nem is kapok hiteles informaciokat. tanar valoszinu elnezett valamit es nem szamolt vele hogy ez nem oldhato meg olyan egyszeruen. -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz