命令行是你的至交好友 -Part 2

操作目录和文件 在命令行环境中,每个人都要做的一件事就是操作文件系统,创建,删除,复制和移动文件系统对象,并且执行命令。这对你来说可能已经是家常便饭,然而,还是让我们来看一眼:

[table=401]
[tr] [td=24] 01
[/td] [td=370] csaba@csaba-pc ~ $ mkdir ~/tmp/NetTuts
[/td] [/tr]
[/table][table=382]
[tr] [td=24] 02
[/td] [td=351] csaba@csaba-pc ~ $ cd ~/tmp/NetTuts/
[/td] [/tr]
[/table][table=508]
[tr] [td=24] 03
[/td] [td=477] csaba@csaba-pc ~/tmp/NetTuts $ mkdir ./AnotherDir
[/td] [/tr]
[/table][table=499]
[tr] [td=24] 04
[/td] [td=467] csaba@csaba-pc ~/tmp/NetTuts $ mkdir ./SecondDir
[/td] [/tr]
[/table][table=557]
[tr] [td=24] 05
[/td] [td=526] csaba@csaba-pc ~/tmp/NetTuts $ touch ./SecondDir/aFile
[/td] [/tr]
[/table][table=98%]
[tr] [td=24] 06
[/td] [td=583] csaba@csaba-pc ~/tmp/NetTuts $ touch ./SecondDir/AnotherFile
[/td] [/tr]
[/table][table=480]
[tr] [td=24] 07
[/td] [td=448] csaba@csaba-pc ~/tmp/NetTuts $ cd ./SecondDir/
[/td] [/tr]
[/table][table=98%]
[tr] [td=24] 08
[/td] [td=584] csaba@csaba-pc ~/tmp/NetTuts/SecondDir $ pushd ~/tmp/NetTuts
[/td] [/tr]
[/table][table=397]
[tr] [td=24] 09
[/td] [td=366] ~/tmp/NetTuts ~/tmp/NetTuts/SecondDir
[/td] [/tr]
[/table][table=392]
[tr] [td=24] 10
[/td] [td=361] csaba@csaba-pc ~/tmp/NetTuts $ ls -al
[/td] [/tr]
[/table][table=116]
[tr] [td=24] 11
[/td] [td=84] total 16
[/td] [/tr]
[/table][table=468]
[tr] [td=24] 12
[/td] [td=436] drwxr-xr-x 4 csaba csaba 4096 Feb 19 21:09 .
[/td] [/tr]
[/table][table=477]
[tr] [td=24] 13
[/td] [td=446] drwx------ 7 csaba csaba 4096 Feb 19 21:09 …
[/td] [/tr]
[/table][table=554]
[tr] [td=24] 14
[/td] [td=523] drwxr-xr-x 2 csaba csaba 4096 Feb 19 21:09 AnotherDir
[/td] [/tr]
[/table][table=545]
[tr] [td=24] 15
[/td] [td=513] drwxr-xr-x 2 csaba csaba 4096 Feb 19 21:09 SecondDir
[/td] [/tr]
[/table][table=377]
[tr] [td=24] 16
[/td] [td=346] csaba@csaba-pc ~/tmp/NetTuts $ popd
[/td] [/tr]
[/table][table=261]
[tr] [td=24] 17
[/td] [td=229] ~/tmp/NetTuts/SecondDir
[/td] [/tr]
[/table][table=489]
[tr] [td=24] 18
[/td] [td=458] csaba@csaba-pc ~/tmp/NetTuts/SecondDir $ ls -al
[/td] [/tr]
[/table][table=106]
[tr] [td=24] 19
[/td] [td=75] total 8
[/td] [/tr]
[/table][table=468]
[tr] [td=24] 20
[/td] [td=436] drwxr-xr-x 2 csaba csaba 4096 Feb 19 21:09 .
[/td] [/tr]
[/table][table=477]
[tr] [td=24] 21
[/td] [td=446] drwxr-xr-x 4 csaba csaba 4096 Feb 19 21:09 …
[/td] [/tr]
[/table][table=508]
[tr] [td=24] 22
[/td] [td=476] -rw-r–r-- 1 csaba csaba 0 Feb 19 21:09 aFile
[/td] [/tr]
[/table][table=98%]
[tr] [td=24] 23
[/td] [td=534] -rw-r–r-- 1 csaba csaba 0 Feb 19 21:09 AnotherFile
[/td] [/tr]
[/table][table=426]
[tr] [td=24] 24
[/td] [td=394] csaba@csaba-pc ~/tmp/NetTuts/SecondDir $
[/td] [/tr]
[/table]

逐句解释:
[list=1]
[*]
在/home/csaba/tmp下创建一个名为NetTuts的目录

[*]
将刚刚创建的目录切换为当前目录

[*]
在当前目录下创建一个名为“AnotherDir”的目录

[*]
在当前目录下创建一个名为“SecondDir”的目录

[*]
使用touch命令在“SecondDir”目录下创建两个空文件

[*]
切换当前目录到SecondDir.

[*]
使用pushd命令切换目录到~/tmp/NetTuts来把当前目录存储到堆栈之中

[*]
列出目录~/tmp/NetTuts下的所有文件

[*]
使用popd命令来返回前一个目录,这样会从堆栈中获取并且移除最顶层的目录

[*]再一次列出内容会看到我们上几步所创建的两个文件

[/list]当然,对于命令行你们可以有个万能文件管理器,称之为MidnightCommander。要开始用的时候只需要执行它的命令就行。它也内置了文本编辑器(高亮代码的那段)适合大部分语言,而且有智能缩进和其他的一些特性。它不完全是一个被夸大的编辑器,事实上,它是一个相当简单的工具,特别适合简单和快速编辑。你可以随意的选择任何文件然后按F4,或者你可以在编辑模式下直接打开一个文件。
[table=98%]
[tr] [td=14] 1
[/td] [td=540] csaba@csaba-pc ~/tmp/NetTuts/SecondDir $ mcedit ./aFile
[/td] [/tr]
[/table]

输入/输出每个命令必须和命令行环境交互。命令需要输入和提供输出。
标准输入是命令读取信息的来源。键盘是默认标准输入,标准输入经常被称为“stdin”。
标准输出是命令的输出会被发送到的地方。默认是当前控制台,标准输出通常被称为“stdout”。
标准错误是命令输出错误的地方。默认当前控制台,常被称为"stderr"。

到目前为止,我们可以定义简单的状态,来表示一个命令从键盘上读取并输出它的结果(包括好的和坏的)到屏幕上.
[indent]在Unix(或类unix系统)中,所有的东西都会被抽象成文件,你的键盘是文件,你的鼠标是文件,你的屏幕是文件,程序是文件,文本是文件,等等 [/indent]文件描述符是一个整形数字用于操作系统引用打开的文件,所有的unix系统至少包含三个文件描述符.
[list]
[*]
描述符 no. 0 – 标准输入

[*]
描述符 no. 1 – 标准输出

[*]描述符 no. 2 – 标准错误输出

[/list]

嘿嘿,回个贴表明我来过。支持支持!
[i]item.taobao.com/item.htm?spm=686.1000925.1000774.6.GX4R

这个有点高端了吧?暂时还看不懂的路过……