📄 lsrpm
字号:
#! /usr/bin/env slsh% Generate a listing of an RPM filestatic define pgm_usage (){ vmessage ("Usage: lsrpm FILENAME"); exit (1);}static variable RPM_Command = "rpm -q -l --dump -p ";static define exit_error (msg){ () = fprintf (stderr, "%s\n", msg); exit (1);}static define run_rpm (file){ variable fp; variable lines; variable months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; variable s; fp = popen (RPM_Command + file, "r"); if (fp == NULL) exit_error ("Failed to open RPM process"); % each line contains: % path size mtime md5sum mode owner group isconfig isdoc rdev symlink variable six_months_ago = _time () - 3600*24*30*6; foreach (fp) { variable path, size, mode, owner, group, symlink, mtime; variable mstring; variable tm; s = (); s = strchop (strtrim_end (s, "\n"), ' ', 0); path = s[0]; size = s[1]; mtime = integer (s[2]); mode = integer (s[4]); owner = s[5]; group = s[6]; tm = localtime (mtime); if (mtime < six_months_ago) mtime = sprintf ("%s %2d %4d", months[tm.tm_mon], tm.tm_mday, 1900 + tm.tm_year); else mtime = sprintf ("%s %2d % 2d:%02d", months[tm.tm_mon], tm.tm_mday, tm.tm_hour, tm.tm_min); symlink = ""; if (stat_is ("lnk", mode)) symlink = " -> " + s[10]; mstring = stat_mode_to_string (mode); if (-1 == fprintf (stdout, "%8s %8s %8s %10s %s %s%s\n", mstring, owner, group, size, mtime, path, symlink)) exit_error (sprintf ("Write failed: %s", errno_string (errno))); } () = pclose (fp);}if (__argc != 2) pgm_usage ();run_rpm (__argv[1]);exit (0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -