Wie könnte ichzuverlässigden Besitzer einer Datei in AIX abrufen? Mit zuverlässig meine ich, dass ich die Ausgabe von nicht analysieren möchte ls
. Unter Linux würde ich einfach ein ausführen stat --printf=%U foo
, aber ich arbeite an AIX 6.1 und 7.1. Ich weiß, dass ich ausführen kann , aber da es unter AIX istat
keine Option gibt , müsste ich die Ausgabe trotzdem mit und verfälschen , was daher nicht so wünschenswert ist. Mit anderen Worten, wie kann ich Linux emulieren, indem ich nur die Kern-Utilities von AIX verwende?--printf
istat
grep
awk
stat --printf=%U foo
Antwort1
Dies ist ein Skript, das ich vor einiger Zeit geschrieben habe, um ein stat(1)-ähnliches Dienstprogramm in AIX zu erhalten. Habe gerade %U! hinzugefügt. Ich fand es nützlicher, die Option -c zu verwenden, die sich etwas anders verhält als --printf. Enthält eine praktische lokale Kopie des Stat-Arrays von Perl als Kommentarblock.
#!/usr/bin/env perl -w
# emulate GNU coreutils stat command in a limited way
# -- only implemented a subset of the stat() options
use strict;
use Getopt::Std;
our $opt_c;
getopts('c:') or die "Usage: $0 [ -c (%n %i %u %g %s %U %X %Y %Z) ] file ...";
# default format is empty (not useful, but avoids 'undef' errors later)
$opt_c |= '';
for (@ARGV) {
my @s = stat;
next unless @s; # silently fail on to the next file
my $p = $opt_c; # make a copy of the format string to mangle for each file
# mangle and print
$p =~ s/%n/$_/g;
$p =~ s/%i/$s[1]/g;
$p =~ s/%u/$s[4]/g;
$p =~ s/%g/$s[5]/g;
$p =~ s/%s/$s[7]/g;
$p =~ s/%U/getpwuid($s[4])/eg;
$p =~ s/%X/$s[8]/g;
$p =~ s/%Y/$s[9]/g;
$p =~ s/%Z/$s[10]/g;
print "$p\n";
# 0 dev device number of filesystem
# 1 ino inode number
# 2 mode file mode (type and permissions)
# 3 nlink number of (hard) links to the file
# 4 uid numeric user ID of file's owner
# 5 gid numeric group ID of file's owner
# 6 rdev the device identifier (special files only)
# 7 size total size of file, in bytes
# 8 atime last access time in seconds since the epoch
# 9 mtime last modify time in seconds since the epoch
# 10 ctime inode change time in seconds since the epoch (*)
# 11 blksize preferred block size for file system I/O
# 12 blocks actual number of blocks allocated
}