介绍
熟悉命令行是利用Linux服务器平台的第一步,也是基本上所有您希望在这个环境中进行的服务器相关活动的必要前提。
虽然许多工具都有图形替代方案,但学习命令行是一种技能,可以让您以非大多数GUI(图形用户界面)的方式以效率、速度和灵活性工作。
我们都必须从某个地方开始,所以我们将在本文中涵盖最基本的内容:如何导航您的系统并找出是什么。
前提条件
本文是非常基本的,所以不需要很多先前的知识,但是,您需要登录到您的VPS实例才能开始探索,您可以使用的选项主要取决于您在家使用的操作系统。
当你 创建一个新的DigitalOcean dropplet时,你将收到一个密码,并给出一个IP地址来访问你的新服务器。
1ssh root@your_IP
另一种选择是使用您的 DigitalOcean 控制面板右上角的Console Access
按钮,从而直接在您的 Web 浏览器窗口中创建虚拟终端会话。
找出你在哪里与PWD
在此时刻,你应该登录到你的Linux机器,你可能会看到这样的东西:
1root@your_hostname:~#
这就是命令,这就是我们输入命令的地方。
你也在服务器的文件系统中某个特定位置,你会在服务器的文件等级中始终处于某个位置,这对你输入的命令将如何运作有影响。
这类似于在本地计算机上打开文件浏览器时。您可以点击不同的文件夹,前往文件系统中的不同位置. 如果您进入文件浏览器的编辑菜单,您可能有一些选项,这些选项将适用于您所在的特定文件夹中的项目。
命令行只是同一想法的文本表示。
那么我们在我们的文件系统中究竟在哪里?提示本身有一个线索。在提示结束时的#
或$
字符之前(这将取决于您登录的用户),您将看到一个tild字符(~)。
您的主目录是为您的用户存储文件的地方. ~ 字符是该目录的缩写。
另一种方法来找出你在文件系统中的位置是使用命令称为pwd
。
在您的终端中输入这些字符,然后按 Enter:
1pwd
1/root
/root
目录是 root (管理) 用户的主目录. 如果您作为另一个用户登录,您会看到这样的东西:
1pwd
1[label Output]
2/home/your_username
无论您在本教程中登录的用户是哪个,所以输出都很好。
环顾与ls
现在你知道你目前在哪个目录,但我们怎么知道这个目录中的内容?
我们可以询问我们的服务器当前目录中的哪些文件和目录,用命令称为ls
。
1ls
这应该只会让你回到命令提示,而不会给你任何信息。命令失败了吗?不,它成功了,它只是没有在当前目录中找到任何文件或文件夹。
让我们创建几个测试文件,看看ls
在这个目录中有文件时如何行为。
1touch file{1..5}
这将创建 5 个名为 file1, file2,..., file5 的文件在当前目录中。
让我们重新审视ls
命令,看看它会做什么:
1ls
1file1 file2 file3 file4 file5
奇妙. 该命令现在认识到我们在我们的主目录中有一些文件。
大多数命令都有默认行为,当你称呼它时就会执行,就像我们上面所做的那样。然而,大多数命令行为也可以通过将可选参数传递到命令中来增加。
有时,它们会通过命令激活可用的可选功能,而其他时候则会指定该命令应对的对象。
让我们从第一种情况开始。
探索 ls 选项
并非所有的命令都有内置的帮助选项,但我们很多人都这样做。大多数时候,你可以通过在命令的末尾添加一个--帮助
或-h
来访问它。
1ls --help
1Usage: ls [OPTION]... [FILE]...
2List information about the FILEs (the current directory by default).
3Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
4
5Mandatory arguments to long options are mandatory for short options too.
6 -a, --all do not ignore entries starting with .
7 -A, --almost-all do not list implied . and ..
8 --author with -l, print the author of each file
9 -b, --escape print C-style escapes for nongraphic characters
10 --block-size=SIZE scale sizes by SIZE before printing them. E.g.,
11. . .
这将为您提供有关正确使用命令的一些指导,并为您提供有哪些选项可用于更改默认行为的想法。左侧的列为您提供要输入的字符来增加命令,右侧的列为描述每个旗帜。
我们添加的帮助
是一个我们可以通过的选项的例子。
另一种方法来了解对您感兴趣的命令可用的选项是通过检查手册,这样做是通过键入人
,然后输入您感兴趣的命令。
1man ls
您可以通过箭头键滚动页面并通过键入q
来退出。
正如你所看到的,ls
有很多选项,我们可以通过命令来改变它的行为。
1ls -l
1-rw-r--r-- 1 root root 0 Feb 28 19:45 file1
2-rw-r--r-- 1 root root 0 Feb 28 19:45 file2
3-rw-r--r-- 1 root root 0 Feb 28 19:45 file3
4-rw-r--r-- 1 root root 0 Feb 28 19:45 file4
5-rw-r--r-- 1 root root 0 Feb 28 19:45 file5
这向我们显示了相同的五个文件,但它显示了它们的长
格式,这给了我们有关文件的更多信息,如所有者(第一个根
),组所有者(第二个根
),文件的大小( 0 ),最后修改的日期和其他一些信息。
让我们尝试另一种选择:
1ls -a
1. .aptitude .bashrc file2 file4 .profile .ssh
2.. .bash_history file1 file3 file5 .rnd .viminfo
这向我们展示了一些我们以前没有看到的文件。a
旗是all
旗的同义词.这向我们展示了当前目录中的所有文件,包括隐藏的文件。
在Linux系统中,所有用起始点命名的文件都默认地隐藏了,它们不是秘密的,任何人都可以找到它们,它们只是为了方便的文件管理而保留在外。
我们也可以通过多个旗帜,简单地将它们连接在一起:
1ls -l -a
1drwx------ 4 root root 4096 Feb 28 19:45 .
2drwxr-xr-x 23 root root 4096 May 3 2013 ..
3drwx------ 2 root root 4096 Feb 28 17:19 .aptitude
4-rw------- 1 root root 2036 Feb 28 18:20 .bash_history
5-rw-r--r-- 1 root root 570 Jan 31 2010 .bashrc
6-rw-r--r-- 1 root root 0 Feb 28 19:45 file1
7. . .
这很好,但我们也可以崩溃选项旗帜,如下:
1ls -la
这将完全相同,需要更少的打字。
另一个有趣的选项是-R
旗,它重复列出文件. 因为我们在我们的主目录中唯一的目录是隐藏的,我们也必须通过-a
选项:
1ls -Ra
1.:
2. .aptitude .bashrc file2 file4 .profile .ssh
3.. .bash_history file1 file3 file5 .rnd .viminfo
4
5./.aptitude:
6. .. cache config
7
8./.ssh:
9. .. authorized_keys
现在我们知道如何改变ls
的行为,让我们改变ls
运作的对象
。
在其他目录中使用 ls
默认情况下,ls
会列出当前目录的内容,但是,我们可以通过命令末尾看到内容的任何目录的名称。
例如,我们可以通过键入显示在所有Linux系统上可用的名为/etc
的目录的内容:
1ls /etc
1acpi fstab magic rc.local
2adduser.conf fstab.d magic.mime rc.local.orig
3aliases fuse.conf mailcap rcS.d
4aliases.db gai.conf mailcap.order reportbug.conf
5alternatives groff mailname resolvconf
6anacrontab group mail.rc resolv.conf
7apm group- manpath.config rmt
8. . .
我们在这里看到,这个目录中有许多文件。
以 slash (/) 开头的任何目录路径都被称为绝对
路径,这是因为它指向目录路径,具体从最高的目录,根目录中,该路径是由/
字符指定的。
引用目录的另一种方法是使用相对
路径,这将搜索与您当前所处目录相关的目录。
我们在当前的文件夹中没有任何非隐藏的目录,所以让我们快速演示一些,我们还会添加一些文件。 现在不要担心这些命令,它们只是用来演示一个想法,所以只需输入如是:
1mkdir dir{1..3}
2touch dir{1..3}/test{A,B,C}
这将创建一些目录,其中包含一些文件。我们可以用正常的ls
命令查看目录:
1ls
1dir1 dir2 dir3 file1 file2 file3 file4 file5
为了看到dir1
目录内部是什么,我们可以像上面所示的那样提供绝对路径,通过将我们想要看到的目录附加到我们当前目录的值的末端。
1pwd
1/root
然后将我们感兴趣的目录添加到结尾:
1ls /root/dir1
1testA testB testC
我们可以通过简单地命名目录来引用当前目录中的目录,如下:
1ls dir1
1testA testB testC
如果我们没有用 slash 开始路径规格,操作系统会搜索从当前目录开始的目录路径。
移动周围
到目前为止,我们已经学会了如何找出我们在文件系统中的位置,并且我们已经学会了如何使用ls
命令来找出特定目录中的某些文件信息。
但是我们如何更改工作目录?更改工作目录将使我们能够从不同的位置使用相对路径。
我们可以通过使用cd
命令绕过文件等级,这个命令代表更改目录。
在其最基本的用途中,我们可以简单地键入:
1cd
这似乎不会做任何事情,事实上,它没有。CD
没有任何额外的信息是更改您的家庭目录,因为我们已经在我们的家庭目录中,没有任何命令要做。
关于如何使用命令的更一般的想法是这样的:
1cd /path/to/directory
在这种情况下,‘/path/to/directory’应该被您想要移动的目录位置的路径取代,例如,要更改到根
目录,指定一个单一的切割(/),这是树的顶部,我们可以键入:
1cd /
**注:根目录(由单个前进缩略/
)与根用户的主目录(位于/root
位置)不同,这起初可能令人困惑,但请记住,目录树的顶部称为文件系统根。
你可能已经注意到你的命令提示已经改变。
在#
或$
之前,目录列表已经从tild(记住,看起来像~
的符号,代表您的用户主目录),到文件系统的根
目录。
我们可以通过再次使用pwd
命令来验证我们现在处于不同的目录:
1pwd
1/
我们还可以在我们的新目录中查看文件:
1ls
1bin etc lib media proc sbin sys var
2boot home lib64 mnt root selinux tmp vmlinuz
3dev initrd.img lost+found opt run srv usr
现在,让我们尝试使用相对路径移动到一个新的目录. 我们看到这个目录中有一个名为usr
的目录。
1cd usr
正如你所看到的,我们也可以使用cd
的相对路径。我们如何回到根目录?我们可以输入我们以前使用的相同的cd /
命令,但让我们尝试一些不同的东西。
让我们试着使用相对路径向上移动树,我们如何使用相对路径参考包含我们当前文件夹的文件夹?
我们可以使用特殊语法引用包含我们当前目录的目录. 包含我们当前目录的目录被称为其父母
目录. 我们可以使用两个点(..)引用母目录。
让我们回到一个层次:
1cd ..
2pwd
1/
正如你所看到的,我们回到根目录中,我们也可以用一个点参考我们的当前目录:
1ls .
1bin etc lib media proc sbin sys var
2boot home lib64 mnt root selinux tmp vmlinuz
3dev initrd.img lost+found opt run srv usr
这在一些可能在这个阶段不太明显的情况下是有用的,但你会欣赏在以后轻松引用当前目录的能力。
正如我们之前所说的,~
符号是指我们的家庭目录,让我们用它作为另一个目录路径的开始,以改变我们家中的dir1
:
1cd ~/dir1
2pwd
1/root/dir1
我们现在很容易地使用~
符号来取代我们的路径的第一部分。
但是,如果我们在更改目录之前忘记了做一些事情,想回到我们最新的目录呢?我们可以通过键入返回我们以前的目录:
1cd -
2pwd
1/
我们回到我们最后的目录。
让我们最后回到我们的主目录,我们可以使用tild作为路径来完成这项工作,但你可能会记住cd
的默认模式会让我们回到我们的主目录,如果我们没有添加任何路径。
1cd
2pwd
1/root
正如你所看到的,我们又把它带回了我们的家庭目录。
结论
你还不知道如何调查文件,但你应该能够轻松地导航系统,跟踪你所在的位置,并查看你周围的文件。