Ftp:为什么!cd不起作用?

时间:2014-01-25 13:26:36

标签: unix command-line ftp

当连接到ftp服务器时,使用cd,pwd,ls等导航远程服务器。 对于本地服务器,有一些特殊的命令,如lcd,lpwd等,以及!命令。

虽然!ls和!pwd工作,但为什么呢!cd ..不起作用?

2 个答案:

答案 0 :(得分:3)

我认为需要在原始问题陈述中定义“不工作”。

ftp你可以做的事情:

`!cd foo`

如果foo是本地文件夹,则不会产生错误。但是,当使用来自!的{​​{1}}(或通常来自任何支持“转义”命令的命令到shell的方式,例如ftp)时,vi的每个实例用法是它自己的子shell。因此,当命令完成时,!所采取的操作不再有效,您将回到原来的位置。所以:

cd

ftp> !pwd /home/mortimer ftp> !ls doc misc ftp> !cd doc ftp> !ls doc misc 似乎“不起作用”,但实际上确实有效。只是当cd的shell实例完成后,!的效果不再存在(shell的每个实例都保持自己的工作目录状态)。

尝试这种方式来说明:

cd

所以在这里,ftp> !ls doc misc ftp> !ls doc foo.txt bah.txt ftp> !cd doc ; ls foo.txt bah.txt ftp> !ls doc misc 的工作方式与在{em> shell的相同实例中执行的cd命令所示。

这就是ls提供更改本地目录(ftp)的唯一命令的原因。 lcd命令不在lcd的子shell中执行,而是实际更改了它正在运行的当前工作目录:

ftp

(以上是使用BSD ftp> !ls doc misc ftp> lcd doc Local directory now /home/mortimer/doc ftp> !ls foo.txt bah.txt 程序运行,该程序在执行ftp时显示“本地目录...”消息。)

答案 1 :(得分:0)

!用于运行shell命令。该命令在子shell中运行。

子shell中的

cd命令仅对子shell有效;它不会影响父进程。