MyCroft

Hozzászólások

10 bejegyzés megtekintése - 21-30 / 59
  • Szerző
    Bejegyzés
  • Hozzászólás: Bash script #2053292
    MyCroft
    Felhasználó
      retaliator44 wrote:
      Egyébként az a sed-es sor az eredeti feladat megoldása. Van valami elegánsabb megoldás esetleg? A feladat konkrétan: az ls -l második oszlopa kell (a számos), meg a dátumoszlopok.
      Az eddigi megoldás még egyszer:
      ls -l |sed ‘s/.{10} *([0-9]+).* [0-9]+ (.*) .*/1 2/’

      Azért vigyázz, mert symlinkeknél gondod lehet:
      lrwxrwxrwx 1 mycroft mycroft    21 2006-10-11 21:29 homepages -> /media/sda8/Homepages
      Egy ilyen sorra ez lesz az eredmény:
      1 2006-10-11 21:29 homepages ->

      (Természetesen az összes space-t tartalamzó filenévnél ugyanez előjön)

      Ha már emlegettem az awk-t, akkor egy lehetőség:
      ls -l | awk ‘{ print $2,$6 }’

      Hozzászólás: Bash script #2053289
      MyCroft
      Felhasználó
        budacsika wrote:
        Szia!
        Nem túl legáns, de működik. (nálam bizos)
        ls -l | cut -d ” ” -f 1,4,5,6,7,8

        Ez csak spec. esetben működik. (Pl. ha egy filera próbálod meg)
        Ugyanis ha több file van, akkor a méret oszlop szélességét az ls -l a „legnyagyobb”-hoz állítja be. Pl:

        Code:
        -rwxrwx— 1 mycroft mycroft 168915 2006-05-10 19:42 cincogo.jpg
        -rw-r–r– 1 mycroft mycroft      0 2006-10-20 08:40 lista.txt

        Látható, hogy a csoport és a méret között lehet több space is (sőt általában több van), így elég érdekes lista lesz a végeredmény, hiszen a cut az üres mezőket is mezőnek tekinti.
        És akkor még bejöhet olyasmi, hogy lehet olyan rendszer, ami a dátumot nem – jellel hanem space-szel választja el, vagy esetleg olyan filenevek, amik tartalmaznak space-t is.
        Ha már ilyen irányban nézelődünk, akkor awk jöhet még szóba, de az már ágyúval verébre kategória 🙂

        Hozzászólás: Bash script #2053288
        MyCroft
        Felhasználó
          retaliator44 wrote:
          MyCroft wrote:
          Ebben a formájában az első neked ment? Mert a { } jeleknél kell a
          ls -l | sed „s/[0-9]/{1,2}//”

          A másodiknál ugyanigy a + elé is kell a , mivel be kell kapcsolni a + jelentésmódosító hatását, valamint be kell tenni ” ” közé:
          ls -l | sed „s/[0-9]+//”

          Persze, tényleg, idézőjelben is volt, de hogy a + elé is kell „”, ez meglep. Főleg azért, mert az egrepben szerintem nem kell. Legalábbis nekem ment. Vagy ez minden programban más? Apropó… a [] elé miért nem kell?

          Szerk.: még egy kérdés: ha valaminek a kimenete egy ‘ jelet tartalmazó kifejezés, mondjuk
          ls -l |sed ‘s/.{10} *([0-9]+).* [0-9]+ (.*) .*/1 2/’
          akkor azt egy scriptben hogy tudom mondjuk echoval egy fileba küldeni?

          Hozzászólás: Bash script #2053285
          MyCroft
          Felhasználó
            retaliator44 wrote:
            A következő lenne a kérdésem:
            a feladat az, hogy eltüntessük az első számoszlopot az ls -l kimenetéből. Az első működik, a második nem. Van ötletetek, miért?
            ls -l|sed s/[0-9]{1,2}//
            ls -l|sed s/[0-9]+//
            Előre is köszi.

            Ebben a formájában az első neked ment? Mert a { } jeleknél kell a
            ls -l | sed „s/[0-9]/{1,2}//”

            A másodiknál ugyanigy a + elé is kell a , mivel be kell kapcsolni a + jelentésmódosító hatását, valamint be kell tenni ” ” közé:
            ls -l | sed „s/[0-9]+//”

            Hozzászólás: MySQL kezdõ #2062857
            MyCroft
            Felhasználó
              chris19 wrote:
              Van egy forrásból fordított MySQL szerverem (4.1.21) és egy olyan problémám volna, hogy az adatbázisba tett ékezetes betűk elvesznek, pedig direct úgy fordítottam, hogy a default charset latin2 és a collation latin2_hungarian_ci. Ez mitől lehet?

              Lehet h butaságot mondok, de ha jól tudom 4.x-es MySql-től a latin2 csak úgy működik rendesen, ha a connect után kiadod a következő parancsot:
              SET NAMES latin2

              Azt nem tudom, hogy pontosan melyik verziótól kezdve kell, de az biztos, hogy 5.0-nál nekem csak ezzel volt hajlandó rendesen kezelni az ékezeteket.

              Hozzászólás: Bash script #2053281
              MyCroft
              Felhasználó

                Vagy esetleg:

                Code:
                if [ ! `expr $1 + 0 2>/dev/null` ]

                Csak győzz válogatni 🙂 (Ja és itt is előbb ellenőrizni kell, hogy van-e $1)

                Hozzászólás: Serverfigyelo, restartolo shellscriptben… #2073874
                MyCroft
                Felhasználó

                  Ez amit én irtam, a „futnia kell” filet használja (lista.txt).
                  A szerverek elindítását sztem úgy meg lehet oldani, hogy csinálsz egy my_servers könyvtárat mondjuk a homekönyvtáradban és oda beleteszel egy-egy symlinket minden szerverre, amit esetleg el kell indítani. Így a scriptből csak ezekre a symlinkekre kell hivatkozni

                  Hozzászólás: Serverfigyelo, restartolo shellscriptben… #2073872
                  MyCroft
                  Felhasználó

                    Első blikkre valami ilyesmi megoldaná a problémádat:

                    Code:
                    #!/bin/bash

                    while read SOR
                    do
                      if [ $(ps aux | grep -c „$SOR”) -eq 1 ]
                      then
                          #elinditjuk a szervert
                      fi
                    done < lista.txt

                    exit 0

                    Hozzászólás: Bash script #2053277
                    MyCroft
                    Felhasználó

                      Na jó, jogos, az egy karaktert visszavonom  🙂
                      Trükközgetni lehetne, pl ilyesmivel, hogy
                      X=echo ${2:0:1}
                      És megnézed, hogy az $X egyenlő-e a +,-,/ jelekkel, ha nem, akkor (valszeg) * volt.
                      De jó lesz az script1 3 * 4 formában is 🙂

                      Szerk:
                      sőt.. ha nincs kint levédve a *, akkor még azzal is gond van, hogy a második szám, amit ($3)-nak várnánk, az általában nem $3 lesz, hanem „hátrébb” csúszik.
                      Jobban belegondolva, hülyeség volt amit az előző hsz-ben írtam, sorry  :blush:

                      Hozzászólás: Bash script #2053275
                      MyCroft
                      Felhasználó

                        Szia bruit!

                        A beadandók elkészítése – elvileg – önálló munka. Így ha az itt látott megoldást küldöd el, azt nyílván nem tudom majd ponttal honorálni.

                        Szerk. (utoljára 🙂 )
                        Módosítottam a feladatkiírást, hogy a *-gal ne legyen gond. Így az általad kitalált megoldás megfelel a feladatnak, ha azt küldöd el, azt természetesen elfogadom.

                        MyCroft

                      10 bejegyzés megtekintése - 21-30 / 59