EMF_Camp_Badge/upip/upysh.py

85 lines
1.5 KiB
Python

import sys
import os
class LS:
def __repr__(self):
self.__call__()
return ""
def __call__(self, path="."):
l = os.listdir(path)
l.sort()
for f in l:
st = os.stat("%s/%s" % (path, f))
if st[0] & 0x4000: # stat.S_IFDIR
print(" <dir> %s" % f)
else:
print("% 8d %s" % (st[6], f))
class PWD:
def __repr__(self):
return os.getcwd()
def __call__(self):
return self.__repr__()
class CLEAR:
def __repr__(self):
return "\x1b[2J\x1b[H"
def __call__(self):
return self.__repr__()
pwd = PWD()
ls = LS()
clear = CLEAR()
cd = os.chdir
mkdir = os.mkdir
mv = os.rename
rm = os.remove
rmdir = os.rmdir
def head(f, n=10):
with open(f) as f:
for i in range(n):
l = f.readline()
if not l: break
sys.stdout.write(l)
def cat(f):
head(f, 1 << 30)
def newfile(path):
print("Type file contents line by line, finish with EOF (Ctrl+D).")
with open(path, "w") as f:
while 1:
try:
l = input()
except EOFError:
break
f.write(l)
f.write("\n")
class Man():
def __repr__(self):
return("""
upysh is intended to be imported using:
from upysh import *
To see this help text again, type "man".
upysh commands:
pwd, cd("new_dir"), ls, ls(...), head(...), cat(...)
newfile(...), mv("old", "new"), rm(...), mkdir(...), rmdir(...),
clear
""")
man = Man()
print(man)