我正在按照指示@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。一个#
字符表示它是一个root
shell。)
改变你的处境
为什么您的“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/log
cd /var/log
以 开头的路径/
是绝对路径。解析方式不取决于您当前所在的位置。
该路径~
也是绝对的,因为它(本质上)是 的简写$HOME
。HOME
环境变量,表达式$HOME
扩展为当前用户主目录的完整绝对路径。
~
符号也可以用于表示其他用户的主目录。如果你写,这代表~username
username
的主目录。
回到之前的位置
您当前所在的目录存储在PWD
环境变量中。最后的您所在的目录存储在OLDPWD
环境变量中。您可以OLDPWD
像查看任何环境变量一样查看:
echo $OLDPWD
由于这些信息被存储起来,因此cd
能够有一种特殊、快速且简单的方法返回到之前的位置。pst007x 说,要转到您所在的最后一个目录,请运行:
cd -
如果您之前所在的目录不存在在那个壳里,那么OLDPWD
环境变量就不会被设置,尝试运行cd -
将导致错误(并且您将停留在原地):
ek@Kip:~$ cd -
bash: cd: OLDPWD not set
像老板一样改变你的处境
pushd
和popd
:目录堆栈
想象一堆目录名。堆栈,我的意思是当你添加某样东西时,它会放在顶部,并且你一次只能移除一件东西,而且你移除的东西始终是当前位于顶部的东西。
你可以推任何目录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$
pushd
和popd
的使用频率比 低得多cd
。它们还有其他更高级的用途。运行help pushd
和help popd
了解详情。
了解更多信息并访问文档
cd
还有pwd
更多高级用途。要了解它们,请运行help cd
并man pwd
。
help
是为了shell 内置命令.man
适用于独立命令——作为单独进程运行并作为单独可执行文件存在的命令。该type
命令显示命令是否为 shell 内置命令,如果不是,则显示其运行的程序位于何处。例如,您可以运行type help
、type type
或type man
。
答案3
例如:
cd Desktop/
如果您位于主目录中,则转到桌面目录。
cd -
返回上一目录。
cd /
带您进入根目录。
cd ~/Desktop
无论您身在何处,都会带您进入您的桌面目录。