2.3.2 常用命令
长期使用Windows的用户往往习惯图形用户界面(Graphical User Interface),容易忽略命令行界面(Command-line Interface)的功能。甚至有人会觉得使用Windows就是按鼠标,使用Linux就是敲键盘,虽然这个理解有失偏颇,但是,在Linux中大量操作的确需要通过命令行界面完成。图形用户界面的易用性毋庸置疑,但是命令行界面也有其优势,尤其是在进行一些复杂操作的时候,如图2-19所示。
图2-19 在终端中打开的Bash Shell
而Kali Linux 2本身就是Linux系统,所以在使用时不可避免地要大量涉及命令行的操作。在学习命令之前,需要先了解3个名词:Shell、Bash和终端。
在Kali Linux 2中使用Shell来执行命令,Shell是一种应用程序,用户通过这种应用程序的界面访问操作系统内核的服务。Shell有很多种,在Kali Linux 2中使用的是Bash Shell,这也是目前比较流行的一种。而终端是用于与Shell交互的应用程序,是Shell和其中运行的其他命令行程序的交互界面。
首先使用Bash Shell执行一个输出“hello world”的命令,这里可以使用echo,它类似于Python编辑器中的print。
kali@kali:~$ echo "hello world" hello world
接下来介绍一些常用的命令。首先是跟目录相关的一些命令。
pwd是print working directory的缩写,其功能是显示当前工作目录。
kali@kali:~$ pwd /home/kali
如果需要切换目录,可以使用cd命令,cd是更改目录(change directory)的缩写,其功能为将活动目录更改为指定的路径。可以使用“cd+目标目录”的方式切换到目标目录,例如切换到目录var。
kali@kali:~$ cd /var/ kali@kali:/var$
如果要返回上一级目录,可以使用“cd..”,如果要返回到主目录,可以使用“cd”。
kali@kali:/var$ cd kali@kali:~$
如果想要查看目录中的内容可以使用ls命令。例如查看目录/var里面的内容。
kali@kali:~$ ls /var backups cache lib local lock log mail msf.doc opt payload.dll payload.exe run spool tmp www
ls命令后面还可以使用参数-a,表示列出文件夹中的所有隐藏文件,ls -l表示显示详细的文件列表。
mkdir是make directory的缩写,用于创建新的目录。
rmdir用于删除一个空目录,rm命令用于删除非空目录。
接着研究一些和文件相关的命令,主要是浏览、查找、复制和删除操作。这里大部分命令不再给出使用实例,在后面的应用中将会用到这些命令。
□ cat:用于显示文件内容,语法为“cat目录项”。
□ cp:复制文件或目录,语法为“cp源文件 目标文件”。
□ rm:移除文件或目录。
□ mv:移动文件与目录,语法为“mv源文件 目标文件”。
□ find:查找文件或者目录的操作,语法格式为“find[命令选项] [路径] [表达式选项]”。例如查找/var目录下所有名称以.log结尾的文件就可以使用如下命令:
kali@kali:~$ sudo find /var/ -name "*.log"
这里使用了一个非常重要的命令sudo,它表示以系统管理者的身份执行命令,也就是说,经由sudo执行的命令就好像是root亲自执行。
如果一次要执行多个命令,可以使用管道运算符“|”,将一个命令的输出作为输入发送到另一个命令的方法如下:
command1 | command2
当命令将其输出发送到管道时,该输出的接收端是另一个命令。
最后介绍的是一些和网络相关的命令。在之前的Linux版本中,用户已经习惯使用ifconfig命令,但是,在2020.1版本的Kali Linux 2中删除了ifconfig命令。这是因为ifconfig是net-tools中被废弃的一个命令,已经许多年没有维护了。目前Kali Linux 2的2020.1版本中使用的iproute2套件里提供了许多功能更强的命令,ip命令是其中之一。
要查看设备的网络连接信息,可以使用“ip addr”,这只是ip命令的一个功能。图2-20给出了ip命令的参数格式。
图2-20 ip命令的参数格式
ip命令常用的方法如下。
□ ip addr show:显示网络信息。
□ ip route show:显示路由。
□ ip neigh show:显示arp表(相当于arp命令)。