如何更改终端中的目录,并知道我在哪个目录?
我按照指示@ 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
如何判断目录中的内容以及如何导航目录。 我知道我必须遗漏一些简单的事情。
在您的会话中, 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 )
编辑 :
好的,对不起,我没有看到你的链接。 你的post有点误导,现在我觉得我找到了你:
因此,您希望从您发布的“入门”指南中链接的源存档安装tex-live。 要做到这一点,您必须先删除任何预先存在的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-
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: start installation to hard disk help quit Enter command: I # ... and so on ...
从这里开始,只需回答安装脚本提出的问题即可,您应该没问题。
执行摘要(TL; DR)
- 使用
pwd
知道你的位置(或者在你的提示符中查看:
和$
)。 - 使用
cd
在其他地方更改目录。 与Windows不同,cd
必须始终后跟空格; 像cd/
和cd..
这样的命令不起作用,但cd /
和cd ..
会。
知道你在哪里
方式1:运行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
分开。 (如果你正在运行一张Live CD,它的主机名将是ubuntu
,有些人也会在安装过程中选择它作为计算机的名称。)
:
字符将其与您当前所在目录的名称分开。在这种情况下,它由~
表示。 ~
是您的主目录的简写。 当您不在主目录中时,您应该看到完整的目录名称。 例如:
ek@Kip:~$ cd /var/log ek@Kip:/var/log$
(要完成提示的每个部分的含义:对于遵循此约定的提示,要么出现$
或#
字符。 $
,就像在这种情况下,意味着它是普通的用户shell。 #
字符意味着它是一个root
shell。)
改变你的位置
为什么你的“cd”命令不起作用。
要更改目录,请使用cd
命令。
你跑cd/
。 这不起作用,因为您实际上没有运行cd
命令。 在Ubuntu和其他类Unix操作系统中(实际上,在像bash
这样的Unix风格的shell中,你正在使用的shell),命令的名称被认为只在空格或行尾结束。
所以不同于Windows中的命令提示符(其中cd\
被解释为与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 .
并不是很好cd .
虽然。 你总是待在原地。
绝对和相对路径
如果你cd
到不以/
开头的东西,那么它会尝试转到当前目录中的那个目录 。
例如,如果你跑了
cd var/log
然后它会尝试进入当前所在位置的var
子目录,并进入该子目录的子目录。 除非两者都存在,并且在那些地方, cd
命令将失败(并且你将保持原来的位置)。
如果要转到根目录的var
子目录的log
子目录,请改为运行:
cd /var/log
仅当您当前位于/
cd var/log
等效于cd /var/log
。
以/
开头的路径是绝对的。 解决方法并不取决于您目前的位置。
路径~
也是绝对的,因为它(基本上)是$HOME
简写。 HOME
是一个环境变量 ,表达式$HOME
扩展到当前用户主目录的完整绝对路径。
~
表示法也可用于表示另一个用户的主目录。 如果您编写~ username
,则表示username
的主目录。
回到你以前的位置
您当前所在的目录存储在PWD
环境变量中。 您所在的最后一个目录存储在OLDPWD
环境变量中。 您可以像查看任何环境变量一样查看OLDPWD
:
echo $OLDPWD
因为存储了这些信息,所以cd
能够以一种特殊,快速,简便的方式返回到以前的位置。 正如pst007x所说 ,要转到您所在的最后一个目录,请运行:
cd -
如果你在那个shell中没有任何早期目录,那么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
。
例如:
cd Desktop/
如果您在主目录中,则转到Desktop目录。
cd -
返回上一个目录。
cd /
带你到根目录。
cd ~/Desktop
无论您身在何处,都会带您进入桌面目录。