www.mamboteam.com
aptitude : me and my debian - a work in progress  
2008-07-09
 
 
Huvudmeny
Startsida
debian
bash
Forum
Användarmeny
tidigare material
nyheter
grafik
BadVista
BASH Forum
Välkommen, Gäst
Vänligen Logga in eller Registrera.
Glömt ditt lösenord?
Utökade filattribut (xattr) (1 läser)
Ned Svara på det här inlägget Favoriserade: 0
ÄMNE: Utökade filattribut (xattr)
#39
marwal (Användare)
Menig
Inlägg: 27
graphgraph
Användare Offline Klicka här för att se användarens profil
Utökade filattribut (xattr) 2007-09-19 19:33 Karma: 0  
För att använda utökade filattribut (eller extended attributes - eller xattr) krävs en kärna som stöder det (2.6 eller senare); ett filsystem som stöder det (ext2, ext3, ReiserFS eller XFS). Dessutom krävs att disken, partitionen eller enheten där det ska användas är monterad med växeln user_xattr i /etc/fstab.

Såhär kan det se ut i /etc/fstab när /home är monterat med stöd för xattr:
Code:

 UUID=510a1719-0adf-4cb3-8df0-bb9d50b43539 /home ext3 defaults,user_xattr 0 2



För att ändringen i fstab ska träda i kraft måste (i det här fallet) /home monteras om. Alternativt så startar man om datorn.

Nedan två python-script som ska göra det lite lättare och smidigare att använda de nya utökade filattributen: 'memo' - för att sätta och radera filanmärkningar och 'lls' som fungerar lite som 'ls' men även listar anmärkningarna. Det senare scriptet hittade jag på nätet. Tyvärr minns jag inte vart - eller vem som skrivit det. Jag har modifierat det en aning.

Så här kan det se ut:


Såhär används de nya kommandona (scripten)
memo
~$ memo 'Textfiler som ska arkiveras' *.txt
~$ memo 'Pythonprogram som inte är klart' test.py
~$ memo -d *.txt (radera kommentarer från alla textfiler)
~$ memo -d test.py (radera kommentar från test.py)


lls
~$ lls (full fillista med ev. kommentarer)
~$ lls *.txt (textfiler med ev. kommentarer)
~$ lls -o (lista bara filer som har kommentarer)
~$ lls -o *.doc (lista bara doc-filer som har kommentarer)


(växeln -a för att inkludera dolda filer är inte implementerad)

lls är någons försök att emulera 'ls'-kommandot i python. Jag hittade det på nätet och modifierade det en smula för att inkludera stöd för xattr.

memo - kod
Code:

 #!/usr/bin/env python # _*_ coding: utf-8 _*_ import sys import xattr def write_xattr(filemessage):     try:xattr.setxattr(file'user.comment'message)     except: print "unable to set xattr for file " file def remove_xattr(file):     tryxattr.removexattr(file'user.comment')     except: print "unable to remove xattr for file " file if len(sys.argv) < 2:     print "Usage: 'memotext' filespec | -d filespec"     sys.exit(1) files sys.argv[2:] for f in files:     if sys.argv[1] == '-d'remove_xattr(f)     else: write_xattr(fsys.argv[1])



memo kräver modulen xattr som installeras med kommandot:
sudo aptitude install python-xattr

lls - kod
Code:

  #!/usr/bin/env python import sysstatos import grppwd import locale import time import xattr limit 0 if len(sys.argv) == or (len(sys.argv) == and sys.argv[1] == '-o'):     try:     if sys.argv[1] == '-o'limit 1     except:     pass     files=os.listdir(".")     files=[filename for filename in files if filename[0] != '.'] else:     if sys.argv[1] == '-o':     files sys.argv[2:]     limit 1     else:     files=sys.argv[1:] locale.setlocale(locale.LC_ALL,'') files.sort(locale.strcoll) now int(time.time()) recent now - (6*30*24*60*60) colours={"default":"",          "blue":   "\x1b[01;34m",          "cyan":   "\x1b[01;36m",          "green":  "\x1b[01;32m",          "red":    "\x1b[01;05;37;41m",      "purple""\x1b[01;35m"} def get_mode_info(mode):     perms="-"     colour="default"     link=""     if stat.S_ISDIR(mode):         perms="d"         colour="blue"     elif stat.S_ISLNK(mode):         perms="l"         colour="cyan"         link os.readlink(filename)         if not os.path.exists(filename):             colour="red"     elif stat.S_ISREG(mode):         if mode & (stat.S_IXGRP|stat.S_IXUSR|stat.S_IXOTH):             colour="green"     mode=stat.S_IMODE(mode)     for who in "USR""GRP""OTH":         for what in "R""W""X":             if mode getattr(stat,"S_I"+what+who):                 perms=perms+what.lower()             else:                 perms=perms+"-"     return (permscolourlink) for filename in files:     try:         stat_info=os.lstat(filename)     except:         sys.stderr.write("%s: No such file or directory\n" filename)         continue     permscolourlink get_mode_info(stat_info.st_mode)     nlink "%4d" stat_info.st_nlink     try:         name "%-8s" pwd.getpwuid(stat_info.st_uid)[0]     except KeyError:         name "%-8s" stat_info.st_uid     try:         group "%-8s" grp.getgrgid(stat_info.st_gid)[0]     except KeyError:         group "%-8s" stat_info.st_gid     size "%8d" stat_info.st_size     trydata " <" xattr.getxattr(filename'user.comment') + ">"     exceptdata ''     ts stat_info.st_mtime     if (ts recent) or (ts now):         time_fmt "%b %e  %Y"     else:         time_fmt "%b %e %R"     time_str time.strftime(time_fmttime.gmtime(ts))     if not limit or (limit and  data != ''):     sys.stdout.write("%s %s %s %s %s %s " % (permsnlinknamegroupsizetime_str))     if colours[colour]:         sys.stdout.write(colours[colour] + filename colours["purple"] + data "\x1b[00m")     else:         sys.stdout.write(filename colours["purple"] + data "\x1b[00m")     if link:         sys.stdout.write(" -> ")     print link



Inlägg ändrat av marwal, den 2007-09-19 19:54
  Logga in för att svara.
Upp Svara på det här inlägget
Powered by FireBoard
 
Top! Top!