|
|
import os |
|
|
import shutil |
|
|
import psutil |
|
|
|
|
|
try: |
|
|
import readline |
|
|
except ImportError: |
|
|
try: |
|
|
import pyreadline3 as readline |
|
|
except ImportError: |
|
|
readline = None |
|
|
|
|
|
|
|
|
|
|
|
try: |
|
|
from transformers import pipeline |
|
|
ai_enabled = True |
|
|
nlp = pipeline("text2text-generation", model="google/flan-t5-small") |
|
|
except Exception: |
|
|
ai_enabled = False |
|
|
|
|
|
|
|
|
|
|
|
def cmd_ls(args): |
|
|
path = args[0] if args else "." |
|
|
try: |
|
|
for item in os.listdir(path): |
|
|
print(item) |
|
|
except FileNotFoundError: |
|
|
print(f"ls: cannot access '{path}': No such file or directory") |
|
|
|
|
|
|
|
|
def cmd_cd(args): |
|
|
if not args: |
|
|
print("cd: missing operand") |
|
|
return |
|
|
try: |
|
|
os.chdir(args[0]) |
|
|
except FileNotFoundError: |
|
|
print(f"cd: {args[0]}: No such file or directory") |
|
|
|
|
|
|
|
|
def cmd_pwd(args): |
|
|
print(os.getcwd()) |
|
|
|
|
|
|
|
|
def cmd_mkdir(args): |
|
|
if not args: |
|
|
print("mkdir: missing operand") |
|
|
return |
|
|
try: |
|
|
os.mkdir(args[0]) |
|
|
except FileExistsError: |
|
|
print(f"mkdir: cannot create directory '{args[0]}': File exists") |
|
|
|
|
|
|
|
|
def cmd_rm(args): |
|
|
if not args: |
|
|
print("rm: missing operand") |
|
|
return |
|
|
target = args[0] |
|
|
if os.path.isdir(target): |
|
|
try: |
|
|
shutil.rmtree(target) |
|
|
except Exception as e: |
|
|
print(f"rm: cannot remove '{target}': {e}") |
|
|
else: |
|
|
try: |
|
|
os.remove(target) |
|
|
except FileNotFoundError: |
|
|
print(f"rm: cannot remove '{target}': No such file or directory") |
|
|
|
|
|
|
|
|
def cmd_monitor(args): |
|
|
cpu = psutil.cpu_percent(interval=1) |
|
|
mem = psutil.virtual_memory() |
|
|
print(f"CPU Usage: {cpu}%") |
|
|
print(f"Memory Usage: {mem.percent}%") |
|
|
|
|
|
|
|
|
def cmd_help(args): |
|
|
print("Available commands:") |
|
|
for cmd in commands.keys(): |
|
|
print(f" - {cmd}") |
|
|
if ai_enabled: |
|
|
print(" - ai (natural language queries)") |
|
|
|
|
|
|
|
|
|
|
|
def cmd_ai(args): |
|
|
if not ai_enabled: |
|
|
print("AI features not available (transformers not installed).") |
|
|
return |
|
|
if not args: |
|
|
print("ai: missing query") |
|
|
return |
|
|
query = " ".join(args) |
|
|
print(f"AI Query: {query}") |
|
|
try: |
|
|
result = nlp(query, max_length=100)[0]['generated_text'] |
|
|
print("AI Suggestion:", result) |
|
|
except Exception as e: |
|
|
print(f"AI error: {e}") |
|
|
|
|
|
|
|
|
|
|
|
commands = { |
|
|
"ls": cmd_ls, |
|
|
"cd": cmd_cd, |
|
|
"pwd": cmd_pwd, |
|
|
"mkdir": cmd_mkdir, |
|
|
"rm": cmd_rm, |
|
|
"monitor": cmd_monitor, |
|
|
"help": cmd_help, |
|
|
"ai": cmd_ai, |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
def completer(text, state): |
|
|
options = [cmd for cmd in commands.keys() if cmd.startswith(text)] |
|
|
if state < len(options): |
|
|
return options[state] |
|
|
return None |
|
|
|
|
|
if readline: |
|
|
readline.parse_and_bind("tab: complete") |
|
|
readline.set_completer(completer) |
|
|
|
|
|
|
|
|
|
|
|
def main(): |
|
|
print("Python Terminal Emulator (type 'help' for commands, 'exit' to quit)") |
|
|
while True: |
|
|
try: |
|
|
user_input = input(f"{os.getcwd()} $ ").strip() |
|
|
if not user_input: |
|
|
continue |
|
|
if user_input.lower() in ["exit", "quit"]: |
|
|
print("Exiting terminal.") |
|
|
break |
|
|
|
|
|
parts = user_input.split() |
|
|
cmd, args = parts[0], parts[1:] |
|
|
|
|
|
if cmd in commands: |
|
|
commands[cmd](args) |
|
|
else: |
|
|
print(f"{cmd}: command not found. Type 'help' for available commands.") |
|
|
except KeyboardInterrupt: |
|
|
print("\nUse 'exit' to quit.") |
|
|
except Exception as e: |
|
|
print("Error:", e) |
|
|
|
|
|
|
|
|
if __name__ == "__app__": |
|
|
main() |
|
|
|