更改当前目录并查看可用目录
Change current directory and view available directories
这不是重复的,因为原始答案无助于将其实施到我的原始输入命令解释器中。在到期时归功于原始 question/answer。
所以我在 python 中开发 DOS 风格的操作系统,我想知道如何或者是否有可能执行一个命令,让我像常规命令提示符一样在目录之间切换让你做。
我不确定我自己解释得有多好,但基本上我会在终端中使用与 cd
相同的命令,这样我就可以读取文件夹中嵌入的文件,在文件夹之间切换等。我不需要对它的复杂程度有任何限制,但我希望它不会太长。
我还没有找到明确的解决方案。在最好的情况下,这就是您需要输入的全部内容
cd folder1
cd folderinfolder1
这将被输入到 raw input
或 input
然后执行所以我假设它需要拆分所以它知道在 space 之前有 cd
并且在 space 之后是文件名,例如 folder
我也有使用 os.listdir
只显示文件而不显示任何文件夹的问题。
会这样使用
directory=raw_input("enter cd followed with a directory")
这个问题可能有点多,也不确定可不可以
import os
os.chdir('folder1')
或
os.chdir('folderinfolder1')
除了在创建 shell 时使用 C 之外,我已经这样做了,在我的例子中,我使用了一个库chdir 函数,它看起来像这样:
static void min_cmd_cd_av(char *av, char ***env)
{
char *tmp;
if (av && 0 == chdir(av))
{
tmp = min_env_get_val(env, "PWD=");
min_env_set_path(env, "OLDPWD=", tmp);
free(tmp);
tmp = (char *)ft_memalloc(4098 * sizeof(char *));
getcwd(tmp, 4098);
min_env_set_path(env, "PWD=", tmp);
ft_strdel(&tmp);
}
else
ft_printf("\e[91mERROR: Invalid Path/Permissions\e[96m\n");
}
int min_cmd_cd(int ac, char **av, char ***env)
{
char *tmp;
if (ac <= 1)
{
tmp = min_env_get_val(env, "HOME=");
if (tmp)
{
min_cmd_cd_av(tmp, env);
ft_strdel(&tmp);
}
else
ft_printf("\e[91mERROR: Home variable not found!\e[96m\n");
}
else if (ac > 1)
{
min_shell_path(&av, env);
min_cmd_cd_av(av[1], env);
}
return (0);
}
我使用 shell 环境来更新 PWD 和 OLDPWD,这样您也可以在 shell 中实现它。
这不是重复的,因为原始答案无助于将其实施到我的原始输入命令解释器中。在到期时归功于原始 question/answer。
所以我在 python 中开发 DOS 风格的操作系统,我想知道如何或者是否有可能执行一个命令,让我像常规命令提示符一样在目录之间切换让你做。
我不确定我自己解释得有多好,但基本上我会在终端中使用与 cd
相同的命令,这样我就可以读取文件夹中嵌入的文件,在文件夹之间切换等。我不需要对它的复杂程度有任何限制,但我希望它不会太长。
我还没有找到明确的解决方案。在最好的情况下,这就是您需要输入的全部内容
cd folder1
cd folderinfolder1
这将被输入到 raw input
或 input
然后执行所以我假设它需要拆分所以它知道在 space 之前有 cd
并且在 space 之后是文件名,例如 folder
我也有使用 os.listdir
只显示文件而不显示任何文件夹的问题。
会这样使用
directory=raw_input("enter cd followed with a directory")
这个问题可能有点多,也不确定可不可以
import os
os.chdir('folder1')
或
os.chdir('folderinfolder1')
除了在创建 shell 时使用 C 之外,我已经这样做了,在我的例子中,我使用了一个库chdir 函数,它看起来像这样:
static void min_cmd_cd_av(char *av, char ***env)
{
char *tmp;
if (av && 0 == chdir(av))
{
tmp = min_env_get_val(env, "PWD=");
min_env_set_path(env, "OLDPWD=", tmp);
free(tmp);
tmp = (char *)ft_memalloc(4098 * sizeof(char *));
getcwd(tmp, 4098);
min_env_set_path(env, "PWD=", tmp);
ft_strdel(&tmp);
}
else
ft_printf("\e[91mERROR: Invalid Path/Permissions\e[96m\n");
}
int min_cmd_cd(int ac, char **av, char ***env)
{
char *tmp;
if (ac <= 1)
{
tmp = min_env_get_val(env, "HOME=");
if (tmp)
{
min_cmd_cd_av(tmp, env);
ft_strdel(&tmp);
}
else
ft_printf("\e[91mERROR: Home variable not found!\e[96m\n");
}
else if (ac > 1)
{
min_shell_path(&av, env);
min_cmd_cd_av(av[1], env);
}
return (0);
}
我使用 shell 环境来更新 PWD 和 OLDPWD,这样您也可以在 shell 中实现它。