2023-08-27 01:31:40 +00:00
|
|
|
#["builtin", "packages.builtin", ["echo", "ls", "rm", "clear", "cd", "ll"]]
|
|
|
|
import os
|
|
|
|
import stat
|
2023-08-27 01:57:23 +00:00
|
|
|
|
|
|
|
if os.name != 'nt':
|
|
|
|
import pwd
|
|
|
|
import grp
|
2023-08-27 01:31:40 +00:00
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def echo(message: list) -> int:
|
|
|
|
try:
|
|
|
|
print(" ".join(message))
|
|
|
|
except:
|
|
|
|
return
|
|
|
|
|
|
|
|
def ls(args):
|
|
|
|
del args
|
|
|
|
|
|
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
def rm(files: list):
|
|
|
|
for file in files:
|
|
|
|
os.remove(file)
|
|
|
|
|
|
|
|
def clear(args):
|
|
|
|
del args
|
|
|
|
os.system('cls' if os.name == 'nt' else 'clear')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def cd(args):
|
|
|
|
if len(args) == 0 or args[0] == "~":
|
|
|
|
new_path = os.path.expanduser("~") # Get the home directory path
|
|
|
|
elif len(args) == 1:
|
|
|
|
new_path = os.path.abspath(args[0]) # Get the absolute path
|
|
|
|
else:
|
|
|
|
print("Usage: cd <path> or cd ~")
|
|
|
|
return
|
|
|
|
|
|
|
|
try:
|
|
|
|
os.chdir(new_path) # Change the current working directory
|
|
|
|
except FileNotFoundError:
|
|
|
|
print("Directory not found.")
|
|
|
|
except Exception as e:
|
|
|
|
print(f"An error occurred: {e}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def ls(args):
|
|
|
|
del args # You can remove this line if you're not using args
|
|
|
|
|
|
|
|
blue_color = '\033[34m'
|
|
|
|
green_color = '\033[32m'
|
|
|
|
white_color = '\033[37m'
|
|
|
|
reset_color = '\033[0m'
|
|
|
|
|
|
|
|
dir_path = os.getcwd()
|
|
|
|
try:
|
|
|
|
with os.scandir(dir_path) as entries:
|
|
|
|
for entry in entries:
|
|
|
|
if not entry.name.startswith('.'):
|
|
|
|
file_path = os.path.join(dir_path, entry.name)
|
|
|
|
file_stat = os.stat(file_path)
|
|
|
|
if stat.S_ISDIR(file_stat.st_mode):
|
|
|
|
print(blue_color + entry.name + '/' + reset_color, end=' ')
|
|
|
|
elif file_stat.st_mode & stat.S_IXUSR:
|
|
|
|
print(green_color + entry.name + '*' + reset_color, end=' ')
|
|
|
|
else:
|
|
|
|
print(white_color + entry.name + reset_color, end=' ')
|
|
|
|
print() # Newline after listing
|
|
|
|
except Exception as e:
|
|
|
|
print(f"An error occurred: {e}")
|
|
|
|
|
|
|
|
|
|
|
|
def ll(args):
|
2023-08-27 01:57:23 +00:00
|
|
|
if os.name != 'nt':
|
|
|
|
print("This command only works for linux")
|
|
|
|
return
|
2023-08-27 01:31:40 +00:00
|
|
|
dir_path = os.getcwd()
|
|
|
|
|
|
|
|
green_color = '\033[32m'
|
|
|
|
blue_color = '\033[34m'
|
|
|
|
whiteColor = '\033[37m'
|
|
|
|
orange_color = '\033[33m'
|
|
|
|
reset_color = '\033[0m'
|
|
|
|
|
|
|
|
try:
|
|
|
|
with os.scandir(dir_path) as entries:
|
|
|
|
for entry in entries:
|
|
|
|
file_stat = entry.stat()
|
|
|
|
file_name = entry.name
|
2023-08-27 01:57:23 +00:00
|
|
|
|
2023-08-27 01:31:40 +00:00
|
|
|
|
|
|
|
pw = pwd.getpwuid(file_stat.st_uid)
|
|
|
|
gr = grp.getgrgid(file_stat.st_gid)
|
|
|
|
|
|
|
|
is_hidden = (file_name and file_name[0] == '.')
|
|
|
|
|
|
|
|
time_str = time.ctime(file_stat.st_mtime)
|
|
|
|
if time_str.endswith('\n'):
|
|
|
|
time_str = time_str[:-1] # Remove newline character
|
|
|
|
|
|
|
|
permission_str = (
|
|
|
|
(green_color + "r" if file_stat.st_mode & stat.S_IRUSR else whiteColor + "-") +
|
|
|
|
(blue_color + "w" if file_stat.st_mode & stat.S_IWUSR else whiteColor + "-") +
|
|
|
|
((orange_color if is_hidden else green_color) + "x" if file_stat.st_mode & stat.S_IXUSR else whiteColor + "-") +
|
|
|
|
(green_color + "r" if file_stat.st_mode & stat.S_IRGRP else whiteColor + "-") +
|
|
|
|
(blue_color + "w" if file_stat.st_mode & stat.S_IWGRP else whiteColor + "-") +
|
|
|
|
((orange_color if is_hidden else green_color) + "x" if file_stat.st_mode & stat.S_IXGRP else whiteColor + "-") +
|
|
|
|
(green_color + "r" if file_stat.st_mode & stat.S_IROTH else whiteColor + "-") +
|
|
|
|
(blue_color + "w" if file_stat.st_mode & stat.S_IWOTH else whiteColor + "-") +
|
|
|
|
((orange_color if is_hidden else green_color) + "x" if file_stat.st_mode & stat.S_IXOTH else whiteColor + "-")
|
|
|
|
)
|
|
|
|
|
|
|
|
print(
|
|
|
|
"{:<11}{:>4} {:<8} {:<8} {:>8} {} {}{}".format(
|
|
|
|
permission_str,
|
|
|
|
file_stat.st_nlink,
|
|
|
|
pw.pw_name,
|
|
|
|
gr.gr_name,
|
|
|
|
file_stat.st_size,
|
|
|
|
time_str,
|
|
|
|
(blue_color if entry.is_dir() else (orange_color if is_hidden else green_color) if file_stat.st_mode & stat.S_IXUSR else whiteColor),
|
|
|
|
file_name,
|
|
|
|
reset_color
|
|
|
|
)
|
|
|
|
)
|
|
|
|
except Exception as e:
|
|
|
|
print(f"An error occurred: {e}")
|