随笔-2  评论-1  文章-17  trackbacks-0
1. cd 和主目录 如果我们想要转到主目录,我们可以输入:$ cd 没有参数,cd 将转到主目录,对于超级用户来说是 /root,对于一般用户来说通常是 /home/username。但是,如果我们想要指定一个主目录中的文件,将会怎样呢?可能我们想要将一个文件参数传给 myprog 命令。如果该文件在主目录中,我们可以输入: $ ./myprog /home/drobbins/myfile.txt 但是,使用像这样的绝对路径并不总是很方便。幸好,我们可以使用 ~(代字符)字符来完成同样的事: $ ./myprog ~/myfile.txt 其他用户的主目录Bash 将把单独的 ~ 扩展为指向主目录,然而您还可以用它来指向其他用户的主目录。例如,如果我们想要引用 fred 的主目录中的名为 fredsfile.txt 的文件,可以输入: $ ./myprog ~fred/fredsfile.txt 使用 Linux 命令 1.介绍" LS " 现在,我们将快速地看一看 ls 命令。很可能,您已经很熟悉 ls,并且知道只输入 ls 本身将列出当前工作目录的内容:通过指定 -a 选项,您可以看到目录中的所有文件,包括隐藏文件 — 那些以 . 开头的文件。您可以在下面的示例中看到,ls -a 将显示 . 和 .. 专门的目录链接:   您可以使用 -d 来查看目录本身,而您还可以用 -R 来完成相反的工作 — 不仅只查看一个目录内部,而且要递归地查看该目录内所有的目录内部!我们将不会有对应该选项的任何示例输出(因为它一般占很大的篇幅),但是为了感觉一下它是怎样工作的,您可以试几个 ls -R 和 ls -Rl 命令。最后,ls 的 -i 选项可以用来在清单中显示文件系统对象的索引节点号: $ ls -i /usr 1409 X11R6 314258 i686-linux 43090 libexec 13394 sbin 1417 bin 1513 i686-pc-linux-gnu 5120 local 13408 share 8316 distfiles 1517 include 776 man 23779 src 43 doc 1386 info 93892 portage 36737 ssl 70744 gentoo-x86 1585 lib 5132 portage.old 784 tmp 理解索引节点,第 1 部分 文件系统的每个对象都分配到一个独一无二的索引,叫做索引节点号。这可能看起来微不足道,但是理解索引节点对于理解许多文件系统操作来说很重要。例如,请考虑出现在每个目录中的 . 和 .. 链接。为了完全理解 .. 目录实际上是什么,我们将先来看一看 /usr/local 的索引节点号: $ ls -id /usr/local 5120 /usr/local /usr/local 目录有一个 5120 索引节点号。现在,我们来看一 看 /usr/local/bin/.. 的索引节点号: $ ls -id /usr/local/bin/.. 5120 /usr/local/bin/.. 您可以看到,/usr/local/bin/..具有和/usr/local相同的索引节点号!这就是我们抓住的问题的实质。过去,我们认为 /usr/local 是这个目录本身。 现在,我们发现索引节点 5120实际上是这个目录,并且我们发现了指向该索引节点的两个目录条目(叫做“链接”)。/usr/local 和 /usr/local/bin/..都链接到索引节点 5120。虽然索引节点 5120 只在磁盘中的一地方存在,但是多个目录条目都链接到它上面。事实上,通过使用 ls -dl 命令,我们可以看到索引节点 5120 被引用的总次数 $ ls -dl /usr/local drwxr-xr-x 8 root root 240 Dec 22 20: 57 /usr/local 如果我们看一看从左起的第二栏,我们可以看到目录 /usr/local(索引节点 5120)被引用了 8 次。在我的系统中,引用该索引节点的不同路径有这些: /usr/local /usr/local/. /usr/local/bin/.. /usr/local/games/.. /usr/local/lib/.. /usr/local/sbin/.. /usr/local/share/.. /usr/local/src/.. 2. MKDIR 我们来快速地看一看 mkdir 命令,它可以用来创建新目录。下面的示例创建了三个新目录:tic、tac 和 toe,都在 /tmp 下: $ cd /tmp $ mkdir tic tac toe 缺省情况下,mkdir 不会为您创建父目录;邻接的上一元素的完整路径必须存在。因此,如果您想要创建目录 won/der/ful,您将需要发出三个单独的 mkdir 命令: $ mkdir won/der/ful mkdir: cannot create directory `won/der/ful': No such file or directory $ mkdir won $ mkdir won/der $ mkdir won/der/ful mkdir -p 然而,mkdir有一个很方便的-p选项,该选项告诉mkdir创建所有缺少的父目录,如下所示: $ mkdir -p easy/as/pie 总之,非常简单。要学习更多关于 mkdir 命令的知识,请输入 man mkdir 来阅读手册页。除 cd(它内置在 bash 中)之外,这几乎适用于这里所涉及的所有命令(比如 man ls)。   现在,我们将要快速地看一看 cp 和 mv 命令,这些命令用来复制、重命名以及移动文件和目录。为了开始该概述,我们将首先用 touch 命令在 /tmp 中创建一个文件: TOUCH $ cd /tmp $ touch copyme   如果文件存在,touch 命令将更新文件的“mtime”(请回想 ls -l 输出中的第六栏)。如果文件不存在,那么将创建一个新的空文件。现在您应该有一个大小为零的 /tmp/copyme 文件。 ECHO 和重定向 既然文件存在,我们来把一些数据添加到文件中。我们可以使用echo命令来完成,它带有自己参数,并且把这些参数打印到标准输出。首先,单独的 echo 命令是这样的: $ echo \"firstfile\" firstfile   带有输出重定向的同样的 echo 命令为: $ echo \"firstfile\" > copyme 大于符号告诉 shell 将 echo 的输出写到名为 copyme 的文件中。如果该文件不存在,将创建这个文件;如果该文件存在,将覆盖这个文件。通过输入 ls -l,我们可以看到 copyme 文件为 10 个字节长,因为它包括 firstfile 这个词和换行符: $ ls -l copyme -rw-r--r-- 1 root root 10 Dec 28 14:13 copyme CAT 和 CP 为了在终端显示文件的内容,要使用 cat 命令: $ cat copyme firstfile 现在,我们可以使用 cp 命令的基本调用来由原始的 copyme 文件创建 copiedme 文件: $ cp copyme copiedme 通过观察,我们发现它们确实是相互独立的文件;它们的索引节点号不同: $ ls -i copyme copiedme 648284 copiedme 650704 copyme MV 现在,我们来用“mv”命令将“copiedme”重命名为“movedme”。其索引节点号将仍然是同一个;但是,指向该索引节点的文件名将改变。 $ mv copiedme movedme $ ls -i movedme 648284 movedme 只要目标文件和源文件驻留在同一文件系统上,被移动的文件的索引节点号就将仍然不变。在本教程系列的第 3 部分,我们将进一步看一下文件系统。
posted on 2006-10-31 11:10 花斑鼠 阅读(80) 评论(0)  编辑 收藏 引用 所属分类: linux system
只有注册用户登录后才能发表评论。