Bash script

Kezdőlap Fórumok Programozás Bash script

10 bejegyzés megtekintése - 401-410 / 438
  • Szerző
    Bejegyzés
  • #2053579
    birno
    Felhasználó
      uzsolt 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.

      #2053580
      birno
      Felhasználó

        Egy 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ót

        Ha 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.

        #2053581
        uzsolt
        Felhasználó

          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.

          #2053582
          birno
          Felhasználó
            uzsolt 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!

            #2053583
            dtk1985
            Felhasználó

              hello
              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?

              #2053584
              pointux
              Felhasználó

                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,user4

                Tehát magyarán vesszőket kell számolni (soronként) és hozzáadni 1-et.

                #2053585
                pointux
                Felhasználó

                  Illetve, 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.

                  #2053586
                  dtk1985
                  Felhasználó
                    vizsla 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,user4

                    Tehá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.

                    #2053587
                    pointux
                    Felhasználó

                      osszes 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?

                      #2053588
                      dtk1985
                      Felhasználó

                        bocs, 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.

                      10 bejegyzés megtekintése - 401-410 / 438
                      • Be kell jelentkezni a hozzászóláshoz.