#! /usr/bin/env python3# Variant of "which".# On stderr, near and total misses are reported.# '-l<flags>' argument adds ls -l<flags> of each file found.import sysif sys.path[0] in (".", ""): del sys.path[0]import sys, osfrom stat import *def msg(str):sys.stderr.write(str + '\n')def main():pathlist = os.environ['PATH'].split(os.pathsep)sts = 0longlist = ''if sys.argv[1:] and sys.argv[1][:2] == '-l':longlist = sys.argv[1]del sys.argv[1]for prog in sys.argv[1:]:ident = ()for dir in pathlist:filename = os.path.join(dir, prog)try:st = os.stat(filename)except OSError:continueif not S_ISREG(st[ST_MODE]):msg(filename + ': not a disk file')else:mode = S_IMODE(st[ST_MODE])if mode & 0o111:if not ident:print(filename)ident = st[:3]else:if st[:3] == ident:s = 'same as: 'else:s = 'also: 'msg(s + filename)else:msg(filename + ': not executable')if longlist:sts = os.system('ls ' + longlist + ' ' + filename)if sts: msg('"ls -l" exit status: ' + repr(sts))if not ident:msg(prog + ': not found')sts = 1sys.exit(sts)if __name__ == '__main__':main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。