附录练习 8-10 Learn Python 3 The Har
附录练习 8 来回移动 (pushd, popd)
在这个练习中,你将学习如何用 pushd
命令保存你当前的位置然后去到一个新的位置,以及如何用 popd
命令返回之前保存的位置。
55.9.1 跟我做
Linux/macOS
$ cd temp
$ mkdir i/like/icecream
$ pushd i/like/icecream
~/temp/i/like/icecream ~/temp
$ popd
~/temp
$ pwd
~/temp
$ pushd i/like
~/temp/i/like ~/temp
$ pwd
~/temp/i/like
$ pushd icecream
~/temp/i/like/icecream ~/temp/i/like ~/temp
$ pwd
~/temp/i/like/icecream
$ popd
~/temp/i/like ~/temp
$ pwd
~/temp/i/like
$ popd
~/temp
$ pushd i/like/icecream
~/temp/i/like/icecream ~/temp
$ pushd
~/temp ~/temp/i/like/icecream
$ pwd
~/temp
$ pushd
~/temp/i/like/icecream ~/temp
$ pwd
~/temp/i/like/icecream
$
Windows
> cd temp
> mkdir i/like/icecream
Directory: C:\Users\zed\temp\i\like
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 12/20/2011 11:05 AM icecream
> pushd i/like/icecream
> popd
> pwd
Path
----
C:\Users\zed\temp
> pushd i/like
> pwd
Path
----
C:\Users\zed\temp\i\like
> pushd icecream
> pwd
Path
----
C:\Users\zed\temp\i\like\icecream
> popd
> pwd
Path
----
C:\Users\zed\temp\i\like
> popd
>
警告! |
---|
在 Windows 系统下,你一般不用像 Linux 系统那样用 -p ,但是我想这应该是最近的更新,如果你用老的 Windows 系统的 Powershell,应该还是需要 -p 的,所以每个人的情况可能不太一样,你可以试试看。 |
55.9.2 你学到的
你正在通过这些命令进入程序员的世界,这些命令很常用,所以我必须要教给你们。它们能让你暂时地去到别的目录,然后再回来,并在两者之间随意切换。
pushd
命令会把你当前的目录“push”到一个列表里,然后它会切换到另外一个目录,就好像在说:“保存我现在的位置,然后去到那儿”。
popd
命令则是把你从你之前去到的目录那里拉回来。
最后,在 Unix 下使用 pushd
的话,如果你后面不加任何东西,它会在你的当前目录和你之前保存的目录之间来回切换。但是在 Powershell 下这个就不适用了。
55.9.3 附加练习
- 用这些命令在你电脑的目录之间来回移动。
- 移除 i/like/icecream 目录,然后自己创建一些,并在它们中间来回切换。
- 跟自己解释
pushd
和popd
的输入结果,注意它和堆栈的概念很类似。- 虽然你已经知道了,但是要记住
mkdir -p
(在 Linux/MacOS 下)会创建一个完整的路径,即使所有的目录都不存在。这也就是我在本练习开头所做的。- 记住 Window 也会创建一个完整的路径,并且不需要
-p
。
附录练习 9 创建空文件 (Touch, New-Item)
在这个练习中你将学习如何使用 touch
(MacOS)或者 new-item
(Windows) 命令来创建空文件。
55.10.1 跟我做
Linux/macOS
$ cd temp
$ touch iamcool.txt
$ ls iamcool.txt
$
Windows
> cd temp
> New-Item iamcool.txt -type file
> ls
Directory: C:\Users\zed\temp
Mode LastWriteTime Length Name
---- ------------- ------ -----
a--- 12/17/2011 9:03 AM iamcool.txt
>
55.10.2 你学到的
你学习了如何创建空文件。在 Unix 系统下用 touch
,在 Windows 系统下用 New-Item
。
55.10.3 附加练习
- Unix:创建一个目录,切换到该目录下,然后在它里面创建一个文件,然后再切换到该目录的上一次,用
rmdir
命令移除该目录。你会收到报错,试着理解一下为什么。- Windows:做同样的事情,但是你不会收到报错,你会收到一个提示符问你是否真的要移除这个目录。
附录练习 10 复制文件 (cp)
在这个练习中,你将学习如何用 cp
命令把一个文件从一个地址复制到另一个地址。
55.11.1 跟我做
Linux/macOS
$ cd temp
$ cp iamcool.txt neat.txt
$ ls
iamcool.txt neat.txt
$ cp neat.txt awesome.txt
$ ls
awesome.txt iamcool.txt neat.txt
$ cp awesome.txt thefourthfile.txt
$ ls
awesome.txt iamcool.txt neat.txt thefourthfile.txt
$ mkdir something
$ cp awesome.txt something/
$ ls
awesome.txt iamcool.txt neat.txt something thefourthfile.txt
$ ls something/ awesome.txt
$ cp -r something newplace
$ ls newplace/ awesome.txt
$
Windows
> cd temp
> cp iamcool.txt neat.txt
> ls
Directory: C:\Users\zed\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 12/22/2011 4:49 PM 0 iamcool.txt
-a--- 12/22/2011 4:49 PM 0 neat.txt
> cp neat.txt awesome.txt
> ls
Directory: C:\Users\zed\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 12/22/2011 4:49 PM 0 awesome.txt
-a--- 12/22/2011 4:49 PM 0 iamcool.txt
-a--- 12/22/2011 4:49 PM 0 neat.txt
> cp awesome.txt thefourthfile.txt
> ls
Directory: C:\Users\zed\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 12/22/2011 4:49 PM 0 awesome.txt
-a--- 12/22/2011 4:49 PM 0 iamcool.txt
-a--- 12/22/2011 4:49 PM 0 neat.txt
-a--- 12/22/2011 4:49 PM 0 thefourthfile.txt
> mkdir something
Directory: C:\Users\zed\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 12/22/2011 4:52 PM something
> cp awesome.txt something/
> ls
Directory: C:\Users\zed\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 12/22/2011 4:52 PM something
-a--- 12/22/2011 4:49 PM 0 awesome.txt
-a--- 12/22/2011 4:49 PM 0 iamcool.txt
-a--- 12/22/2011 4:49 PM 0 neat.txt
-a--- 12/22/2011 4:49 PM 0 thefourthfile.txt
> ls something
Directory: C:\Users\zed\temp\something
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 12/22/2011 4:49 PM 0 awesome.txt
> cp -recurse something newplace
> ls newplace
Directory: C:\Users\zed\temp\newplace
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 12/22/2011 4:49 PM 0 awesome.txt
>
55.11.2 你学到的
现在你会复制文件了,它很简单。在这个练习中,我还创建了一个新目录,并且把一个文件复制到了那个新目录中。
我要告诉你一个关于程序员和系统管理员的秘密。他们很懒,我也很懒,我的朋友同样很懒。这也正是为什么我们要用计算机。我们热衷于让计算机为我们做无聊的事情。这个练习到目前为止你已经输入了很多重复的命令来学习它们,但是实际情况不是这样的,通常如果你发现自己在做一些无聊和重复的事情,就已经有一个程序员在想办法如何让这件事情变得简单,你只是不知道而已。
关于程序员的另一件事情就是,他们可能没你想的那么聪明。如果你觉得他们输入的东西有多么高深莫测,那你就错了。在你做练习的时候,你可以先试着先想想这些命令的名字和含义,然后再输入。一般你会想到一个名字或者一些缩写。如果你还是想象不出来,就回过头复习一下或者在网上搜一搜。
5.11.3 附加练习
- 用
cp -r
命令复制更多包含文件的目录。- 把一个文件复制到你的 home 目录或者桌面。
- 在图形用户界面找到这些文件,然后用文本编辑器打开它们。
- 注意我有时候会放一个
/
在目录结尾,这样是为了确保这是一个目录,如果不是的话,我会收到报错。