基本命令
基本文件处理命令
基本定位命令
**cd ** 更改目录。
**cd / ** 转到系统的根目录。
**pwd ** 显示当前工作目录。
john@john-desktop:~$ cd/ john@john-desktop:/$ pwd /
绝对路径和相对路径
在上面的示例中,我们将路径/传递给了cd命令。它告诉cd去哪里。 **/ **参数是绝对路径,表示它指定相对于文件系统树根的位置。还有许多其他绝对路径。识别绝对路径的一种简单方法是,它们都以 **/ **开头。例如,如果我导航到路径/home/john,我们将告诉cd命令导航到 **/ **位置,然后导航到home位置,最后导航到john区域。
除了绝对路径,还有相对路径。这些路径是相对于当前目录的。例如,如果您在/home位置,并且想要导航到目录 **john **,则只需输入命令 **cd john **。
john@john-desktop:~$ cd / john@john-desktop:/$ pwd / john@john-desktop:/$ cd home john@john-desktop:/home$ pwd /home john@john-desktop:/home$ cd john john@john-desktop:~$ pwd /home/john john@john-desktop:~$ cd / john@john-desktop:/$ pwd / john@john-desktop:/$ cd /home/john john@john-desktop:~$ pwd /home/john
相对目录通常包含一个或多个特殊的 **.. **目录。这些 **.. **目录指向父目录。
在下面的示例中,我们将 **.. **传递给cd命令以将其返回上一级。
传递给cd命令的另一个有用的参数是 **- **。此参数表示返回上一个位置。另一个有用的捷径是 **~ **的传递。传递给cd命令时,此参数会将转到你的home目录。转到home目录的更快方法是执行不带参数的 **cd **命令。在示例中,这是/home/john。也可以使用 **~ **指定其他人的home目录。 **cd ~family **将转到/home/family目录。
john@john-desktop:/home$ ls -al total 24 drwxr-xr-x 4 root root 4096 Oct 22 2011 . drwxr-xr-x 24 root root 4096 Dec 19 23:40 .. drwxr-xr-x 31 family family 4096 Nov 14 17:20 family drwxr-xr-x 70 john john 12288 Jan 16 20:09 john john@john-desktop:/home$ pwd /home john@john-desktop:/home$ cd .. john@john-desktop:/$ pwd / john@john-desktop:/$ cd - /home john@john-desktop:/home$ pwd /home john@john-desktop:/home$ cd john john@john-desktop:~$ pwd /home/john john@john-desktop:~$ cd .. john@john-desktop:/home$ pwd /home john@john-desktop:/home$ cd ~ john@john-desktop:~$ pwd /home/john john@john-desktop:~$ cd / john@john-desktop:/$ pwd / john@john-desktop:/$ cd john@john-desktop:~$ pwd /home/john
**..目录不是唯一的特殊目录。您会在上面的列表中注意到也有一个`.目录。虽然 .不与 cd命令一起使用,它通常用于指定当前位置。通常,点在您希望从当前位置运行的程序或脚本的前缀。然后,我们可以执行命令 ./myscript。 **./**表示我们正在从当前位置运行名为 myscript的脚本
使用 ls命令列出文件
您将遇到的最有用和最常见的命令之一是 ls命令。(字面意思是list)。
当单独运行 ls时,它将列出当前目录中的所有普通文件。
如果将 -a参数添加到 ls命令,从而使之成为 ls -a,则包括隐藏文件在内的所有文件都将显示在当前目录中。在Linux中,隐藏文件是以点`.**开头的文件名。
如果为 ls命令提供 -l选项,那么我们将获得当前目录中文件的扩展视图或长视图。也可以将要显示的目录传递给 ls命令。 ls -l /home /john将显示/home /john区域中的所有文件。
可以传递给 ls的另一个有用参数 命令是 -t选项。 -t选项按修改时间(最新的)排序。传递 -r选项将颠倒顺序。可以将多个选项添加到 ls -rtla中。此命令使用扩展列表选项列出所有文件,包括按相反的时间顺序隐藏的文件!
显示目录信息 -d,如果将目录路径传递给 ls命令,则会显示该目录的内容。但是,有时显示有关目录的信息而不显示其内容很有用。
递归列表 -R,使用 -R递归列表选项来显示目录和子目录文件以及信息
在Linux中什么是索引节点 Inodes
linux服务器上的每个文件在创建时都会被赋予一个 inode编号。这是唯一的索引号。
为了显示索引节点信息,将 -i参数传递给 ls命令。尽管索引节点号是唯一的,但有可能出现多次引用相同名称的文件或目录而出现相同索引号的情况。当您遇到此问题时,您发现自己是一个符号链接。可以将一个目录链接到另一个目录,或者将文件链接到文件名。例如,如果我们创建一个名为 link1的文件,则将为其分配一个索引节点号。如果我们然后创建一个从文件 link1到 link2的链接,则这两个都将显示相同的索引节点号。
$ ls -li total 24 4456702 -rw-rw-r-- 1 tir tir 0 Jan 17 20:35 1 4456697 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop 4468756 -rw-rw-r-- 1 tir tir 396 Jan 17 20:36 file1 5512561 drwxrwxr-x 3 tir tir 4096 Jan 17 20:47 test1 4456699 -rw-rw-r-- 1 tir tir 526 Jan 17 20:17 visiblefile $ touch link1 $ ls -li total 24 4456702 -rw-rw-r-- 1 tir tir 0 Jan 17 20:35 1 4456697 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop 4468756 -rw-rw-r-- 1 tir tir 396 Jan 17 20:36 file1 4456701 -rw-rw-r-- 1 tir tir 0 Jan 17 21:18 link1 5512561 drwxrwxr-x 3 tir tir 4096 Jan 17 20:47 test1 4456699 -rw-rw-r-- 1 tir tir 526 Jan 17 20:17 visiblefile $ ln link1 link2 $ ls -li total 24 4456702 -rw-rw-r-- 1 tir tir 0 Jan 17 20:35 1 4456697 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop 4468756 -rw-rw-r-- 1 tir tir 396 Jan 17 20:36 file1 4456701 -rw-rw-r-- 2 tir tir 0 Jan 17 21:18 link1 4456701 -rw-rw-r-- 2 tir tir 0 Jan 17 21:18 link2 5512561 drwxrwxr-x 3 tir tir 4096 Jan 17 20:47 test1 4456699 -rw-rw-r-- 1 tir tir 526 Jan 17 20:17 visiblefile
可以看到link1和link2共享相同的inode编号(这是第一列中的编号)。这是因为link1和link2确实是同一样东西。如果要将某些数据附加到文件 link1,则该数据也将显示在文件 link2中。
创建目录- mkdir
mkdir命令用于创建新目录。目录使您可以整理文件并保持系统整洁。
在Linux系统中浏览时,您会发现实际上有数百个目录(如果不是数千个)。
重要的系统文件和用户文件存储在其中。在大多数情况下,我们将在家庭区域/ home / user中工作。
在下面的示例中,我们将使用/ home / tir。只需执行 mkdir命令后跟一个名称,即可创建一个目录: mkdir mydir1。
如果我们想创建一个包含多个子目录的目录,那么我们不能仅仅执行 mkdir one/two/three,因为我们会收到一个错误 **mkdir: cannot create directory `one/two/three': No such file or directory **。
要创建嵌套目录,我们将必须将 -p标志传递给我们的命令。然后,此选项将创建所有丢失的目录。所以现在我们的命令将是 mkdir -p one/two/three
复制和重命名文件- cp和 mv
在本节中,我们将学习如何创建文件,复制文件然后重命名文件。首先,我们需要研究如何创建文件。有多种创建文件的方法,可以通过您选择的文本编辑器,也可以通过简单的命令或程序来创建。在下面的示例中,我们将使用 touch命令, echo命令和简单的重定向命令来生成文件。
touch是从字面上修改文件时间戳的命令。如果该文件尚不存在,则将创建它。该文件将被创建为空文件。命令 touch emptyfile将创建一个名为emptyfile的文件,大小为0字节,并带有当前时间的时间/日期标记。
echo是一个生成输出到屏幕(标准输出)的命令。该命令可用于显示消息或显示变量的内容。 echo被广泛用于交互式脚本中。在我们的示例中,我们将执行命令echo输出重定向到文件**> echofile。现在,此命令已创建一个名为 **echofile** 的文件,其中包含文本
输出重定向到文件**。>箭头是一个简单的重定向命令,可将输出发送到文件。如果文件已经存在,则将其覆盖。如果我们不想覆盖文件,则可以使用附加选项 >>。这不会覆盖文件,只需将任何输出附加到文件(如果存在)。如果文件不存在,则会创建它。要查看文件的内容,我们使用通用命令 cat。
现在,我们已经创建了两个测试文件 echofile和emptyfile。现在,我们将使用 cp命令将这些文件复制到另一个文件。复制文件后,我们将使用 mv移动命令(重命名)重命名文件。
最简单形式的 cp命令的语法为 cp file1 file2。从字面上看是将file1复制到file2。
$ ls -l total 16 -rw-rw-r-- 1 tir tir 52 Jan 18 10:01 echofile -rw-rw-r-- 1 tir tir 0 Jan 18 09:59 emptyfile -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop $ cp echofile echofile2 $ cp emptyfile emptyfile2 $ ls -l total 20 -rw-rw-r-- 1 tir tir 52 Jan 18 10:01 echofile -rw-rw-r-- 1 tir tir 52 Jan 18 10:38 echofile2 -rw-rw-r-- 1 tir tir 0 Jan 18 09:59 emptyfile -rw-rw-r-- 1 tir tir 0 Jan 18 10:39 emptyfile2 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop $ ls -il total 20 4469052 -rw-rw-r-- 1 tir tir 52 Jan 18 10:01 echofile 4469053 -rw-rw-r-- 1 tir tir 52 Jan 18 10:38 echofile2 4469051 -rw-rw-r-- 1 tir tir 0 Jan 18 09:59 emptyfile 4469054 -rw-rw-r-- 1 tir tir 0 Jan 18 10:39 emptyfile2 4456697 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop $ mv echofile renamed_echofile $ mv emptyfile renamed_emptyfile $ ls -il total 20 4469053 -rw-rw-r-- 1 tir tir 52 Jan 18 10:38 echofile2 4469054 -rw-rw-r-- 1 tir tir 0 Jan 18 10:39 emptyfile2 4456697 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop 4469052 -rw-rw-r-- 1 tir tir 52 Jan 18 10:01 renamed_echofile 4469051 -rw-rw-r-- 1 tir tir 0 Jan 18 09:59 renamed_emptyfile
从上面的示例中,我们可以看到复制的文件具有自己的唯一索引节点号。但是,重命名的文件将保留原始inode号。
如前所述, mv命令实际上代表`移动**。此命令的另一种用法是将文件从一个位置移动到另一个位置。在下面的示例中,我们将使用一个小文件创建一个新目录。然后,我们将文件移到另一个位置。移动文件时,它会离开其当前位置,并放置在其目标位置。
$ pwd /home/tir $ mkdir newdir1 $ cd newdir1 $ ls -al > testfile1 $ ls -l total 4 -rw-rw-r-- 1 tir tir 188 Jan 18 10:57 testfile1 $ cd .. $ pwd /home/tir $ ls -lR newdir1 newdir1: total 4 -rw-rw-r-- 1 tir tir 188 Jan 18 10:57 testfile1 $ mkdir newdir2 $ ls -l total 28 -rw-rw-r-- 1 tir tir 52 Jan 18 10:38 echofile2 -rw-rw-r-- 1 tir tir 0 Jan 18 10:39 emptyfile2 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop drwxrwxr-x 2 tir tir 4096 Jan 18 10:57 newdir1 drwxrwxr-x 2 tir tir 4096 Jan 18 10:59 newdir2 -rw-rw-r-- 1 tir tir 52 Jan 18 10:01 renamed_echofile -rw-rw-r-- 1 tir tir 0 Jan 18 09:59 renamed_emptyfile $ pwd /home/tir $ cd newdir1 $ ls testfile1 $ mv testfile1 ../newdir2/ $ cd ../newdir2 $ ls -l total 4 -rw-rw-r-- 1 tir tir 188 Jan 18 10:57 testfile1 $ pwd /home/tir/newdir2
删除文件和目录- rm和 rmdir
到目前为止,我们已经学习了创建文件和目录的一些基本方法。现在我们需要学习如何删除这些文件和目录结构。
删除文件的最常见方法是使用 rm删除命令。
最简单的形式 rm file1将删除指定的文件。但是,您可以在 rm命令之后指定多个文件。 rm file1 file2。也可以使用模式匹配 rm file *。在模式匹配示例中,将从名称文件开头的所有文件从当前位置中删除。尽管这是删除文件的一种非常方便的方法,但是如果您输入有误,也可能非常危险。为了验证您要删除特定文件还是一组与特定模式匹配的文件,我们可以使用-i选项。这意味着在删除之前提示我。每当遇到命令 rm时,也可以创建 rm命令的别名来替换 -i参数。alias命令将采用以下格式别名rm = rm -i。可以使用您选择的文本编辑器将此别名条目添加到〜/ .bashrc文件中。
$ pwd;ls -l /home/tir total 28 -rw-rw-r-- 1 tir tir 52 Jan 18 10:38 echofile2 -rw-rw-r-- 1 tir tir 0 Jan 18 10:39 emptyfile2 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop drwxrwxr-x 2 tir tir 4096 Jan 18 11:02 newdir1 drwxrwxr-x 2 tir tir 4096 Jan 18 11:02 newdir2 -rw-rw-r-- 1 tir tir 52 Jan 18 10:01 renamed_echofile -rw-rw-r-- 1 tir tir 0 Jan 18 09:59 renamed_emptyfile $ touch deleteme.txt $ ls -l total 28 -rw-rw-r-- 1 tir tir 0 Jan 18 11:47 deleteme.txt -rw-rw-r-- 1 tir tir 52 Jan 18 10:38 echofile2 -rw-rw-r-- 1 tir tir 0 Jan 18 10:39 emptyfile2 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop drwxrwxr-x 2 tir tir 4096 Jan 18 11:02 newdir1 drwxrwxr-x 2 tir tir 4096 Jan 18 11:02 newdir2 -rw-rw-r-- 1 tir tir 52 Jan 18 10:01 renamed_echofile -rw-rw-r-- 1 tir tir 0 Jan 18 09:59 renamed_emptyfile $ rm deleteme.txt $ ls -l total 28 -rw-rw-r-- 1 tir tir 52 Jan 18 10:38 echofile2 -rw-rw-r-- 1 tir tir 0 Jan 18 10:39 emptyfile2 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop drwxrwxr-x 2 tir tir 4096 Jan 18 11:02 newdir1 drwxrwxr-x 2 tir tir 4096 Jan 18 11:02 newdir2 -rw-rw-r-- 1 tir tir 52 Jan 18 10:01 renamed_echofile -rw-rw-r-- 1 tir tir 0 Jan 18 09:59 renamed_emptyfile $ rm echofile2 emptyfile2 $ ls -l total 24 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop drwxrwxr-x 2 tir tir 4096 Jan 18 11:02 newdir1 drwxrwxr-x 2 tir tir 4096 Jan 18 11:02 newdir2 -rw-rw-r-- 1 tir tir 52 Jan 18 10:01 renamed_echofile -rw-rw-r-- 1 tir tir 0 Jan 18 09:59 renamed_emptyfile $ rm renamed* $ ls -l total 20 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop drwxrwxr-x 2 tir tir 4096 Jan 18 11:02 newdir1 drwxrwxr-x 2 tir tir 4096 Jan 18 11:02 newdir2
现在,有两种方法可以删除目录。最明显的命令是 rmdir,您可以猜测它代表删除目录。为安全起见,如果对仍然有文件的目录执行 rmdir命令,则该命令将失败,并显示以下错误:rmdir:无法删除 testdir1:目录不为空。为了解决这个问题,我们可以从该目录下删除所有文件,然后重新执行 rmdir命令:
$ pwd /home/tir $ ls -l total 16 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop drwxrwxr-x 2 tir tir 4096 Jan 18 11:02 testdir1 $ ls -lR testdir1 testdir1: total 4 -rw-rw-r-- 1 tir tir 188 Jan 18 10:57 testfile1 $ rmdir testdir1 rmdir: failed to remove `testdir1': Directory not empty $ cd testdir1 $ rm testfile1 $ cd .. $ pwd /home/tir $ ls -l total 16 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop drwxrwxr-x 2 tir tir 4096 Jan 18 12:09 testdir1 $ rmdir testdir1 $ ls -l total 12 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop
删除目录并删除目录中可能包含的任何文件的另一种方法是使用 rm命令,但是,这一次我们将传递参数 -fr。然后,命令 rm -fr directory_name将删除该目录中找到的所有文件,然后删除该目录。这种特定的方法通常受到管理员的青睐。请非常小心,以确保您知道要删除的内容!一旦执行,就没有退货。在下面的示例中,我们将演示 rm -fr命令。
$ pwd /home/tir $ ls -lR .: total 16 -rw-r--r-- 1 tir tir 8445 Apr 16 2012 examples.desktop drwxrwxr-x 2 tir tir 4096 Jan 18 12:21 testdir1 ./testdir1: total 4 -rw-rw-r-- 1 tir tir 455 Jan 18 12:21 testfile1 $ rm -fri testdir1 rm: descend into directory `testdir1'? y rm: remove regular file `testdir1/testfile1'? y rm: remove directory `testdir1'? y
在上面的示例中,我们发布了 rm -fri testdir1。通过在 -fr中添加 i选项,我们被要求逐步确认我们的操作。尽管此功能非常有用,但是如果要删除包含许多其他目录和文件的目录,则可能需要一段时间。