Skrypt działający podobnie jak instrukcja ls -l.

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

pawelzaj12
Użytkownik
Posty: 7
Rejestracja: 2010-02-15, 14:02

Skrypt działający podobnie jak instrukcja ls -l.

Post autor: pawelzaj12 »

Proszę o pomoc. Muszę napisać skrypt, który działa jak instrukcja ls -l. Różnica ma polegać na tym, że prawa dostępu mają być wyświetlone w formacie ósemkowym. Wiem jak napisać skrypt. Niestety nie mam pojęcia jak zamienić prawa dostępu w formacie literowym na format ósemkowy. Pomocy!
Awatar użytkownika
dienet
Moderator
Posty: 2105
Rejestracja: 2007-07-24, 18:58
Lokalizacja: Racibórz/Rybnik

Re: Skrypt działający podobnie jak instrukcja ls -l.

Post autor: dienet »

Kod: Zaznacz cały

#!/bin/bash

function o()
{
        osemka=0
        n=0
        while [ $n -lt ${#1} ]
        do
                wartosc=`echo ${1:n:1}`

                if [ $wartosc == "r" ]
                then
                        #echo "r"
                        let osemka=osemka+4
                fi

                if [ $wartosc == "w" ]
                then
                        #echo "w"
                        let osemka=osemka+2
                fi

                if [ $wartosc == "x" ]
                then
                        #echo "x"
                        let osemka=osemka+1
                fi

                n=$(( $n + 1 ))
        done

        echo -n $osemka
}

prawa="dr--rw-r--"

typ=`echo $prawa | cut -c 1-1`

prawa_user=`echo $prawa | cut -c 2-4`
prawa_group=`echo $prawa | cut -c 5-7`
prawa_others=`echo $prawa | cut -c 8-10`

o $prawa_user
o $prawa_group
o $prawa_others
Pozdr0
dienet
[img]http://i164.photobucket.com/albums/u19/slawek15/kotekeo0lq3.jpg[/img]
pawelzaj12
Użytkownik
Posty: 7
Rejestracja: 2010-02-15, 14:02

Re: Skrypt działający podobnie jak instrukcja ls -l.

Post autor: pawelzaj12 »

wielkie dzięki, ratujesz mi życie
Awatar użytkownika
dienet
Moderator
Posty: 2105
Rejestracja: 2007-07-24, 18:58
Lokalizacja: Racibórz/Rybnik

Re: Skrypt działający podobnie jak instrukcja ls -l.

Post autor: dienet »

Żeby można wysłać cały string do funkcji dodaj:

Kod: Zaznacz cały

                modul=`expr $n % 3`

                if [ $modul == 0 ]
                then
                        echo $osemka
                        let osemka=0
                fi
Zaraz za linią n=$(( $n + 1 )) i wywołuj ala:

Kod: Zaznacz cały

o ${prawa:1}
Ostatnio zmieniony 2010-02-15, 17:55 przez dienet, łącznie zmieniany 1 raz.
Pozdr0
dienet
[img]http://i164.photobucket.com/albums/u19/slawek15/kotekeo0lq3.jpg[/img]
Awatar użytkownika
Lizard
Moderator
Posty: 2629
Rejestracja: 2005-05-21, 15:48
Lokalizacja: miasto w mieście

Re: Skrypt działający podobnie jak instrukcja ls -l.

Post autor: Lizard »

A co z literkami s, S, t, T?
dienet pisze:

Kod: Zaznacz cały

                if [ $wartosc == "r" ]
                then
                        #echo "r"
                        let osemka=osemka+4
                fi

                if [ $wartosc == "w" ]
                then
                        #echo "w"
                        let osemka=osemka+2
                fi

                if [ $wartosc == "x" ]
                then
                        #echo "x"
                        let osemka=osemka+1
                fi
A może by tak case word in, hę?
Error 404 - footer not found
Awatar użytkownika
dienet
Moderator
Posty: 2105
Rejestracja: 2007-07-24, 18:58
Lokalizacja: Racibórz/Rybnik

Re: Skrypt działający podobnie jak instrukcja ls -l.

Post autor: dienet »

A co z literkami s, S, t, T?
Nie ma ich jak widać, jakoś nawet o nich nie pomyślałem (nie używam).
A może by tak case word in, hę?
Jasne czemu nie, choć nie była mi znana ta składania przed napisaniem tego.
Pozdr0
dienet
[img]http://i164.photobucket.com/albums/u19/slawek15/kotekeo0lq3.jpg[/img]
Awatar użytkownika
Lizard
Moderator
Posty: 2629
Rejestracja: 2005-05-21, 15:48
Lokalizacja: miasto w mieście

Re: Skrypt działający podobnie jak instrukcja ls -l.

Post autor: Lizard »

dienet pisze:Nie ma ich jak widać, jakoś nawet o nich nie pomyślałem (nie używam).
Nie byłbym tego taki pewien. :-)

Kod: Zaznacz cały

# find / -perm /7000 -exec ls -ld {} \;
drwxrwxrwt 2 root root 40 2009-12-23 12:08 /dev/shm
find: /proc/27481/task/27481/fd/4: Nie ma takiego pliku ani katalogu
find: /proc/27481/task/27481/fdinfo/4: Nie ma takiego pliku ani katalogu
find: /proc/27481/fd/4: Nie ma takiego pliku ani katalogu
find: /proc/27481/fdinfo/4: Nie ma takiego pliku ani katalogu
-rws--x--x 1 root root 26804 2007-05-09 19:59 /bin/ping6
-rws--x--x 1 root root 31836 2008-03-24 21:11 /bin/su
-rwsr-xr-x 1 root root 32208 2008-03-31 23:56 /bin/umount
-rwsr-xr-x 1 root root 49120 2008-03-31 23:56 /bin/mount
-rws--x--x 1 root root 28992 2007-05-09 19:59 /bin/ping
drwxr-sr-x 2 root root 4096 2007-06-16 16:27 /usr/doc/cdrtools-2.01.01a57/READMEs
drwxr-sr-x 2 root root 134 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/conf
drwxr-sr-x 7 root root 4096 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/html
drwxr-sr-x 4 root root 4096 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/html/drivers
drwxr-sr-x 2 root root 37 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/html/drivers/icons
drwxr-sr-x 2 root root 39 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/html/drivers/scripts
drwxr-sr-x 2 root root 37 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/html/icons
drwxr-sr-x 2 root root 4096 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/html/pic
drwxr-sr-x 2 root root 144 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/html/scripts
drwxr-sr-x 4 root root 139 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/html/build
drwxr-sr-x 2 root root 4096 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/html/build/hints
drwxr-sr-x 2 root root 144 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/html/build/scripts
drwxr-sr-x 2 root root 144 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/scripts/monitoring
drwxr-sr-x 2 root root 84 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/scripts/rc1
drwxr-sr-x 2 root root 23 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/scripts/rc2
drwxr-sr-x 2 root root 4096 2009-12-08 14:36 /usr/doc/ntp-4.2.4p8/scripts/stats
-rwxr-sr-x 1 root utmp 4864 2007-02-07 07:48 /usr/lib/utempter/utempter
-rws--x--x 1 root root 10480 2006-12-13 23:28 /usr/bin/crontab
-rws--x--x 1 root root 34064 2008-03-24 21:11 /usr/bin/chage
-rws--x--x 1 root root 28924 2008-03-24 21:11 /usr/bin/chfn
-rws--x--x 1 root root 16124 2008-03-24 21:11 /usr/bin/expiry
-rws--x--x 1 root root 19840 2008-03-24 21:11 /usr/bin/newgrp
-rws--x--x 1 root root 34396 2008-03-24 21:11 /usr/bin/gpasswd
-rws--x--x 1 root root 27152 2008-03-24 21:11 /usr/bin/chsh
-rws--x--x 1 root root 34844 2008-03-24 21:11 /usr/bin/passwd
-rwxr-sr-x 1 root slocate 31112 2006-04-19 06:56 /usr/bin/slocate
-rwxr-sr-x 1 root tty 10028 2008-03-31 23:56 /usr/bin/wall
-rwxr-sr-x 1 root tty 8388 2008-03-31 23:56 /usr/bin/write
-rwsr-sr-x 1 daemon daemon 36484 2006-08-03 02:55 /usr/bin/at
-rws--x--x 1 root bin 90400 2006-02-06 20:00 /usr/bin/sudo
-rws--x--x 1 root root 11484 2007-05-09 19:59 /usr/bin/traceroute6
-rws--x--x 1 root bin 16100 2003-03-03 03:28 /usr/bin/traceroute
-rwsr-xr-x 1 root root 8756 2009-04-26 22:18 /usr/bin/lppasswd
-rwsr-xr-x 1 root root 12190 2008-04-20 08:17 /usr/libexec/pt_chown
-rws--x--x 1 root root 171004 2008-07-28 22:27 /usr/libexec/ssh-keysign
-rwsr-x--- 1 root messagebus 229524 2008-03-15 07:26 /usr/libexec/dbus-daemon-launch-helper
drwxrwxrwt 5 root root 137 2010-02-16 17:28 /tmp
drwxrwxrwt 2 root root 6 2008-11-20 09:21 /tmp/.ICE-unix
drwxrwxrwt 2 root root 6 2008-11-20 09:21 /tmp/.X11-unix
drwxr-s--- 5 502 ftp 4096 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05
drwxr-sr-x 2 502 ftp 79 2005-06-01 04:06 /var/cache/cpan/build/gettext-1.05/t
drwxr-sr-x 3 502 ftp 75 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/test_data
drwxr-sr-x 3 root ftp 24 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/test_data/pl_PL.UTF-8
drwxr-sr-x 2 root ftp 34 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/test_data/pl_PL.UTF-8/LC_MESSAGES
drwxr-sr-x 8 root ftp 72 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/blib
drwxr-sr-x 4 root ftp 30 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/blib/lib
drwxr-sr-x 2 root ftp 37 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/blib/lib/Locale
drwxr-sr-x 3 root ftp 19 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/blib/lib/auto
drwxr-sr-x 3 root ftp 20 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/blib/lib/auto/Locale
drwxr-sr-x 2 root ftp 20 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/blib/lib/auto/Locale/gettext
drwxr-sr-x 3 root ftp 31 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/blib/arch
drwxr-sr-x 3 root ftp 19 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/blib/arch/auto
drwxr-sr-x 3 root ftp 20 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/blib/arch/auto/Locale
drwxr-sr-x 2 root ftp 54 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/blib/arch/auto/Locale/gettext
drwxr-sr-x 2 root ftp 20 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/blib/bin
drwxr-sr-x 2 root ftp 20 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/blib/script
drwxr-sr-x 2 root ftp 20 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/blib/man1
drwxr-sr-x 2 root ftp 44 2008-09-23 13:46 /var/cache/cpan/build/gettext-1.05/blib/man3
drwxrwxrwt 2 root root 6 2010-01-03 23:53 /var/lock
drwxrwxrwt 2 root mail 17 2008-08-15 13:18 /var/spool/mail
drwxrwx--T 2 daemon daemon 17 2006-08-03 02:55 /var/spool/atjobs
drwxrwx--T 2 daemon daemon 6 2006-08-03 02:55 /var/spool/atspool
drwxrwxrwt 2 root root 6 2009-10-03 08:47 /var/spool/samba
drwxrwx--T 2 root lp 6 2009-04-26 22:17 /var/spool/cups/tmp
drwxrwxrwt 2 root root 23 2009-09-27 19:01 /var/tmp
Error 404 - footer not found
Awatar użytkownika
dienet
Moderator
Posty: 2105
Rejestracja: 2007-07-24, 18:58
Lokalizacja: Racibórz/Rybnik

Re: Skrypt działający podobnie jak instrukcja ls -l.

Post autor: dienet »

W sensie nie ma ich w skrypcie, a że są w systemie to wiem.
Pozdr0
dienet
[img]http://i164.photobucket.com/albums/u19/slawek15/kotekeo0lq3.jpg[/img]
pawelzaj12
Użytkownik
Posty: 7
Rejestracja: 2010-02-15, 14:02

Re: Skrypt działający podobnie jak instrukcja ls -l.

Post autor: pawelzaj12 »

mam pytanie odnośnie tego skryptu: w jaki sposób pobrać od użytkownika informację, którego katalogu wyświetlić zawartość i jak użyć napisanego wcześniej skryptu aby zamienić prawa dostępu na format ósemkowy plików znajdujących się w tym katalogu?
Awatar użytkownika
Lizard
Moderator
Posty: 2629
Rejestracja: 2005-05-21, 15:48
Lokalizacja: miasto w mieście

Re: Skrypt działający podobnie jak instrukcja ls -l.

Post autor: Lizard »

Proponuję skorzystać z gotowca. Po co dwa razy odrabiać tę samą pracę domową? Zwłaszcza, gdy nie ma się zielonego pojęcia o powłoce i jej poleceniach.
Error 404 - footer not found
Awatar użytkownika
difrost
Moderator
Posty: 2802
Rejestracja: 2006-03-11, 12:31
Lokalizacja: Wrocław
Kontakt:

Re: Skrypt działający podobnie jak instrukcja ls -l.

Post autor: difrost »

Po co kombinować z przetwarzaniem tego. man stat!

EDIT: No tak, w linku Lizarda, właśnie ów został podany :)
Ostatnio zmieniony 2010-03-04, 21:09 przez difrost, łącznie zmieniany 1 raz.
[url=http://bdtk.sourceforge.net][img]http://pin.if.uz.zgora.pl/~beton/bdt-ready.png[/img][/url] #337142
--------------------------------------------
"I had a letter in the post today. It said 'Gas Bill'. It sounds a tempting offer." -- Alan Cox
"Users have been trained that when a computer bluescreens and losing all of their data, it's either (a) just the way things are, or (b) it's microsoft's fault." -- Theodore Tso
ODPOWIEDZ