如何在终端中更改目录并知道我在哪个目录?

如何在终端中更改目录并知道我在哪个目录?

我正在按照指示@Ubuntu 社区帮助;但是,我仍然对一些事情感到困惑。我研究了一下,找到了这篇文章:使用终端更改目录,但它超出了我的能力范围,我仍然不确定该怎么做。我是新手,需要一些额外的指导,所以请继续关注我!;-) 以下是我终端的脚本:

christy@ubuntu:~$ ls
Desktop    examples.desktop     install-tl-unx.tar.gz  Pictures  Templates
Documents  install-pkgs.log     libnautilus-gksu.so    Projects  Videos
Documents  install-pkgs.log     libnautilus-gksu.so    Projects  Videos
christy@ubuntu:~$ cd/
bash: cd/: No such file or directory

我如何知道哪个目录中有什么内容以及如何浏览目录。我知道我一定遗漏了一些简单的事情。

答案1

在您的会话中ls显示当前目录的内容(但不显示文件名以点开头的隐藏文件)。您可以通过键入 导航到另一个目录cd dirname。在这里,您必须用要更改为的目录名称替换“dirname”。通常,您以主目录作为当前工作目录开始。在您的情况下,最有可能的是/home/christy。如果ls显示一个名为“Template”的目录,您可以通过键入(注意空格)以下命令更改为“Template”(=使其成为当前工作目录):

cd Templates

如果当前目录中不存在同名的目录,则您将当前工作目录更改为“模板”或打印“没有这样的文件或目录”。输入pwd将始终为您提供当前工作目录(包括父目录)的完整补丁。

您可以为每个命令提供可选参数。例如,cd字符串“Templates”就是这样一个可选参数。ls -a例如,如果您输入,该ls命令也会打印出隐藏文件。或者,ls Templates它将打印 Tempaltes 目录的内容,而不是当前工作目录的内容。参数必须与命令名称和彼此之间至少有一个空格隔开。两者之间缺少空格是您的命令不起作用的原因。

由于空格字符具有特殊含义,因此如果它是参数的一部分,则需要将其引用或转义。因此,例如,如果您想将当前工作目录更改为“源文件”,则需要键入以下命令之一:

cd Source\ Files
cd "Source Files"

上面一行被“转义”,而下面一行被“引用”。

如果您想了解更多,更好的指南可能是:Linux 简介pdf)(html


编辑

好的,抱歉,我没有看到你的链接。你的帖子有点误导,现在我想我明白了:

所以你想从源档案链接在“入门”指南您发布的内容。为此,您必须首先删除任何预先存在的 tex-live 安装。您可以通过打开终端执行以下操作来执行此操作:

christy@ubuntu:~$ pwd 
/home/christy # <---- This is the directory you are working in
christy@ubuntu:~$ sudo apt-get remove texlive-*
[sudo] password for christy: 

此时您必须输入密码,然后会收到几条无聊的消息,我在此不再赘述。然后您必须下载名为的档案install-tl-unx.tar.gz(您已经下载过,无需再次下载,但为了以防万一,我还是向您展示了如何下载):

christy@ubuntu:~$ wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz

--2012-07-09 15:08:23--  http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
Resolving mirror.ctan.org... 80.237.159.15
Connecting to mirror.ctan.org|80.237.159.15|:80... connected.
HTTP request sent, awaiting response... 302 Found
# ... some more stuff like this ...
Saving to: `install-tl-unx.tar.gz'

100%[=====================================>] 2,530,831   --.-K/s   in 0.1s    

2012-07-09 15:08:23 (17.3 MB/s) - `install-tl-unx.tar.gz' saved [2530831/2530831]

下载完档案后,你可以解压它

christy@ubuntu:~$ tar xvf install-tl-unx.tar.gz
install-tl-20120701/
install-tl-20120701/readme-txt.dir/
install-tl-20120701/readme-txt.dir/README.RU-cp1251
# ... bla bla skipping over some more messages like this ...
install-tl-20120701/readme-html.dir/readme.sr.html
install-tl-20120701/readme-html.dir/readme.ru.html
install-tl-20120701/readme-html.dir/readme.de.html

现在您已经解压了档案,您可以更改到解压后的目录。

christy@ubunut:~$ ls | grep install-tl-  # <---- with this line you find out the number
install-tl-20120701                      # <---- in this case "20120701"
install-tl-unx.tar.gz                    # <---- if just this is present with no number you did something wrong
christy@ubuntu:~$ cd install-tl-20120701 # <---- enter this number here
christy@ubuntu:~$ pwd
/home/christy/install-tl-20120701/       # <--- this is your new working directory

数字“20120701”是一个时间戳,表示您拥有哪个版本的 tex-live。这个数字可能与您不同,但命令ls | grep install-t1-会告诉您应该使用哪个版本。如果所有这些操作都有效,您可以从此处运行安装脚本:

christy@ubuntu:~$ sudo ./install-tl
[sudo] password for jan: 
Loading http://ftp.univie.ac.at/packages/tex/systems/texlive/tlnet/tlpkg/texlive.tlpdb
Installing TeX Live 2012 from: http://ftp.univie.ac.at/packages/tex/systems/texlive/tlnet
Platform: x86_64-linux => 'x86_64 with GNU/Linux'
# ... bla bla and so on bla ...
Actions:
  <I> start installation to hard disk
  <H> help
  <Q> quit

Enter command: I
# ... and so on ...

从这里开始,只需回答安装脚本询问您的问题就可以了。

答案2

执行摘要(TL;DR)

  • 使用pwd来了解您所在的位置(或在提示中的:和之间查看)。$
  • 用于cd将目录更改为其他目录。与 Windows 不同,cd必须总是后面跟着一个空格;像cd/和这样的命令cd..将不起作用,但是cd /cd ..可以。

知道你在哪里

方法一:跑步pwd

您当前所在的目录是特定于 shell 的(更一般地,特定于应用程序)。您可以在一个目录中运行一个 shell,在另一个目录中运行另一个 shell。

要知道您当前位于哪个目录,请运行:

pwd

例如(从我现在恰好在我的机器上打开的shell):

ek@Kip:~$ pwd
/home/ek

这告诉我我在目录中/home/ek/home(有点令人困惑)是目录包含人类用户的主目录(它本身不是任何用户的主目录)。人类用户username有主目录。/home/username

用户root在 中没有主目录/home。相反,root的主目录是/root。请不要将其与根目录,即/

方法 2:检查您的提示。

提示符的默认配置是告诉您当前所在的目录。提示符是出现的文本,通知您 shell 已准备好接受命令。

在您在问题中向我们展示的示例中,您的提示是:

christy@ubuntu:~$

christy是您的用户名。该@字符将其与ubuntu您的计算机主机名 分开。(如果您正在运行实时 CD,其主机名将是ubuntu,有些人也会在安装期间选择它作为其计算机的名称。)

角色:将它与您当前所在目录的名称。~在这种情况下,用.表示,这是~您的主目录的简写。当您不在主目录中时,您应该会看到完整的目录名称。例如:

ek@Kip:~$ cd /var/log
ek@Kip:/var/log$

(最后说明提示符中每个部分的含义:对于遵循此约定的提示符,会出现一个$或一个#字符。$,就像在这种情况下一样,表示它是一个普通用户 shell。一个#字符表示它是一个rootshell。)

改变你的处境

为什么您的“cd”命令不起作用。

要更改目录,请使用cd命令。

你运行了cd/。这不起作用,因为你实际上并没有运行该cd命令。在 Ubuntu 和其他类 Unix 操作系统中(实际上,在Unix 风格的 shell喜欢bash(即您使用的 shell)姓名命令的结束仅被视为在空格或行尾处结束。

因此,与 Windows 中的命令提示符不同(其中 的cd\解释与 相同cd \cd..的解释与 相同cd ..),在bash(您在 Ubuntu 中使用的 shell)中,cd/不是有效命令。您必须使用cd /

cd/表示“当前目录中名为 的条目,cd并且该条目也是一个目录。”无论是否存在这样的子目录,它都不能作为命令运行,因此无论哪种方式您都会收到错误(尽管什么您得到的错误会有所不同):

ek@Kip:~$ cd/
bash: cd/: No such file or directory
ek@Kip:~$ mkdir cd
ek@Kip:~$ cd/
bash: cd/: Is a directory

移至您的主目录

要转到主目录,请cd直接运行以下命令,无需任何参数:

cd

有些人喜欢明确地命名他们的主目录。您可以使用其全名,或者

cd ~

cd其本身就足够了。

向上移动一个目录

将目录更改为当前目录父目录(即包含它的目录),使用:

cd ..

..表示当前目录的父目录。如果您在根目录 ( /) 中,则有一个例外:..仅表示/。因此,cd ..在 之外的任何地方运行时,运行都会向上移动一个目录/;在 中运行时/,您将停留在 中/

每个目录都包含一个..条目。它们还都包含一个.指向当前目录本身的条目。不过运行起来并不容易cd .。你总是停留在原地。

绝对路径和相对路径

如果你cd做了某事不是以 a 开头/,然后尝试转到该目录在当前目录中

例如,如果你跑

cd var/log

然后它会尝试进入var您当前所在位置的子目录,以及log该子目录的子目录。除非这两个子目录都存在,并且位于这两个位置,否则该cd命令将失败(并且您将停留在原来的位置)。

如果你log想进入var根目录,请运行以下命令:

cd /var/log

仅当您当前处于时才/相当于。cd var/logcd /var/log

以 开头的路径/是绝对路径。解析方式不取决于您当前所在的位置。

该路径~也是绝对的,因为它(本质上)是 的简写$HOMEHOME环境变量,表达式$HOME扩展为当前用户主目录的完整绝对路径。

~符号也可以用于表示其他用户的主目录。如果你写,这代表~usernameusername的主目录。

回到之前的位置

您当前所在的目录存储在PWD环境变量中。最后的您所在的目录存储在OLDPWD环境变量中。您可以OLDPWD像查看任何环境变量一样查看:

echo $OLDPWD

由于这些信息被存储起来,因此cd能够有一种特殊、快速且简单的方法返回到之前的位置。pst007x 说,要转到您所在的最后一个目录,请运行:

cd -

如果您之前所在的目录不存在在那个壳里,那么OLDPWD环境变量就不会被设置,尝试运行cd -将导致错误(并且您将停留在原地):

ek@Kip:~$ cd -
bash: cd: OLDPWD not set

像老板一样改变你的处境

pushdpopd:目录堆栈

想象一堆目录名。堆栈,我的意思是当你添加某样东西时,它会放在顶部,并且你一次只能移除一件东西,而且你移除的东西始终是当前位于顶部的东西。

你可以任何目录dir通过运行以下命令将其放入堆栈:

pushd dir

如果要将当前目录推送到堆栈顶部,可以使用.(如上所述,它始终代表当前目录):

pushd .

然后你就可以继续做自己的事情了,随意更改目录。当你想返回到上次用 推送到堆栈的目录时pushd,请运行:

popd

这将转到该目录,并且流行音乐将其从堆栈中移除。现在堆栈少了一个目录。如果这是堆栈中唯一的目录,那么堆栈现在为空。

你可以拥有一个大于 1 的堆栈。也就是说,你可以使用单独的pushd命令将多个目录推送到堆栈上。每个后续popd命令将转到(和弹出,即从堆栈中删除) 最近推送的目录尚未弹出。

以下是一个例子:

ek@Kip:~$ cd /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd .
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ pushd /home/ek
~ /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:~$ cd /var/log/apt
ek@Kip:/var/log/apt$ pushd .
/var/log/apt /var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ cd
ek@Kip:~$ popd
/var/log/apt /etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/var/log/apt$ popd
/etc/apt/sources.list.d /etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ cd /
ek@Kip:/$ pushd usr
/usr / /etc/apt/sources.list.d
ek@Kip:/usr$ cd
ek@Kip:~$ popd
/ /etc/apt/sources.list.d
ek@Kip:/$ popd
/etc/apt/sources.list.d
ek@Kip:/etc/apt/sources.list.d$ popd
bash: popd: directory stack empty
ek@Kip:/etc/apt/sources.list.d$

pushdpopd的使用频率比 低得多cd。它们还有其他更高级的用途。运行help pushdhelp popd了解详情。

了解更多信息并访问文档

cd还有pwd更多高级用途。要了解它们,请运行help cdman pwd

help是为了shell 内置命令.man适用于独立命令——作为单独进程运行并作为单独可执行文件存在的命令。该type命令显示命令是否为 shell 内置命令,如果不是,则显示其运行的程序位于何处。例如,您可以运行type helptype typetype man

答案3

例如:

cd Desktop/ 如果您位于主目录中,则转到桌面目录。

cd - 返回上一目录。

cd / 带您进入根目录。

cd ~/Desktop 无论您身在何处,都会带您进入您的桌面目录。

相关内容