Wie erhält man den Dateieigentümer in AIX, ohne die ls-Ausgabe zu verfälschen?

Wie erhält man den Dateieigentümer in AIX, ohne die ls-Ausgabe zu verfälschen?

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 istatkeine 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?--printfistatgrepawkstat --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

}

verwandte Informationen