import os
import getpass
class GlobalPath:
SELF_PATH = __file__[:__file__.rfind('\\')]
visible_path = ''
def ls(path: str = 'DEFAULT') -> str:
if path != 'DEFAULT':
files = os.listdir(path)
else:
files = os.listdir(GlobalPath.SELF_PATH)
res = ''
for offset, file in enumerate(files):
res += file + '\t'
if offset % 6 == 0 and offset != 0:
res += '\n'
return res
def cat(*files) -> str:
res = ''
for file in files:
with open(file=f'{GlobalPath.SELF_PATH}\\{file}', mode='r', encoding='utf-8') as f:
for line in f:
res += line
return res
def pwd() -> str:
return GlobalPath.SELF_PATH
def cd(path: str):
if path == '..':
GlobalPath.SELF_PATH = generate_new_path(GlobalPath.SELF_PATH)
path = generate_new_path(GlobalPath.visible_path).replace('\\\\', '')
GlobalPath.visible_path = path
else:
if os.path.exists(GlobalPath.SELF_PATH + f'\\{path}'):
GlobalPath.SELF_PATH += f'\\{path}'
GlobalPath.visible_path += f'\\{path}'
def convert_path_to_list(visible_path: str) -> list:
return visible_path.split('\\')
def generate_new_path(path):
tmp = convert_path_to_list(path)
tmp.pop()
path = ''
for offset, file in enumerate(tmp):
if offset != 0:
path += f'\\{file}'
else:
path += f'{file}'
return path
def run():
commands = {
'ls': ls,
'cat': cat,
'pwd': pwd,
'cd': cd,
}
while True:
user_name = f'{getpass.getuser()}@ubuntu:{GlobalPath.visible_path if GlobalPath.visible_path else "~"}$ '
enter_command = input(user_name).split(' ')
command, args = enter_command[0], enter_command[1:]
if not commands.get(command):
continue
try:
res = commands[command](*args)
except Exception as e:
print(e)
continue
if res:
print(res)
if __name__ == '__main__':
run()