1. Linux介绍
1.1 切换图像化和字符界面
按CTRL+ALT+F3至F7,将kali切换至字符界面
按CTRL+ALT+F1至F2,kali将切换回图形化界面
1.2 远程连接
ssh + 目标主机的ip地址
2.Linux常用命令
2.1 mkdir命令
mkdir命令用于创建目录
用法:mkdir [选项] [目录名]
参数:-p
创建多级目录,如果目录名称不存在,就创建一个。
2.2 ls命令
ls 命令用于显示指定工作目录下之内容(列出指定目录所含之文件及子目录),ls 命令的输出信息可以进行色彩加亮显示,以区分不同类型的文件。
用法: ls [选项] [目录]
参数:
- a
显示所有文件及目录(. 开头的隐藏文件也会列出)
- l
除文件名外,也将文件型态、权限、、拥有者、文件大小等资讯详细列出
- h
以容易理解的格式列出文件大小
2.3 pwd命令
pwd 命令以绝对路径的方式显示对当前用户当前工作目录。命令将当前目录的全部路径名称(从根目录)写入标准输出。全部目录使用/分隔。第一个/表示根目录,最后一个目录是当前目录。执行pwd命令可立刻得知您目前所在的工作目录的绝对路径名称。
用法: pwd
2.4 cd命令
cd 命令用于切换当前工作目录。
用法:cd [目录]
用法:. 代表当前目录
, .. 代表上一级目录
,cd ~ 用于切换至登录用户家界面
,cd - 用于回到上一个工作的目录
。
2.5 touch命令
touch命令用于创建一个空白的新文件,如果同名文件已存在,则修改其时间属性。
用法: touch [选项] [文件名]
2.6 cp命令
cp命令主要用于复制文件或目录
用法: cp [选项] [源文件] [目录]
参数:
- r
:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。(递归)
- p
:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。(保持默认属性)
2.7 mv命令
mv 命令用来为文件或目录改名、或将文件或目录移入其他位置。
用法:mv [选项] [源文件/源目录] [目录]
参数:
- f
:如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件(直接覆盖不询问)
- n
:不要覆盖任何已存在的文件或目录。(不覆盖已存在的文件)
如果源文件/源目录的位置与目录位置相同,使用此命令其实就是修改当前源文件/源目录的文件名/目录名,可以利用mv达到修改文件名/目录名的效果,如下图:
2.8 rm命令
rm命令用于删除文件或者目录。
用法:rm [选项] [文件\目录]
-i
:删除前逐一询问确认
-f
:即使原档案属性设为只读,亦直接删除,无需逐一确认
-r
:将目录及以下之档案亦逐一删除
最常见的删除操作:rm -rf
注意:rm -rf
是一条非常危险的命令,代表递归删除某文件,如rm -rf /
是递归删除根目录下的所有目录和文件,该命令不会询问,一旦执行系统将崩溃。
3.Linux命令总结
3.1Linux的命令格式
Linux命令的格式表现为:命令+选项+对象
COMMAND options arguments
具体说明:
COMMAND:表示命令的名称,如ls,cp。
options:定义命令的执行特性,可以有长短两种选项:
长选项:用 -- 引导,后面跟完整的单词,如 -- help
短选项:用 - 引导,后面跟单个的字符,如 -a
多个短选项可以组合使用,例如:-h -l -a == -hla ,但是长选项不能组合使用,如 -- help后面就 不能再跟另外一个参数。
options也可以有自己的参数,注意:选项与选项之间、选项与参数之间、参数与参数之间必须 有空格。
arguments:表示命令的作用对象,如文件,目录
在Linux中严格区分大小写
3.2Linux获取命令帮助的方式
使用 -h ,- help 和 man 可以产看命令的帮助文件。
ping -h
cp --help
man cp
3.3绝对路径与相对路径
绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,Linux的绝对路径是指从根目录说起的,万物起源为 / 目录。
例如 :/etc/password、/usr/bin/
而相对路径则是从当前目录说起的,即./
。例如在当前目录为根目录的情况下 ./usr/bin
和usr/bin
是一个目录。
3.4Tab键的使用
tab键的两大作用:
tab补全:只需输入文件或目录名以及命令的前几个字符,然后按下TAB键,如果没有重复的,完整的文件名或者命令会自动补全;如果有相重复的,再按一次TAB键,系统会列出当前目录下所有以这几个字符开头的名字
tab键查看:在命令行下,只需输入例如m,再连续按两次TAB键,系统将列出所有以m开头的命令,(包括自定义的Bshell命令函数),对查找某些记不清楚的命令非常有用。熟练使用TAB可提高工作效率
4.文本查看相关命令
4.1 cat命令
cat命令用于打开文件查看文件内容。
用法:cat [选项] [文件]
比如:
cat /etc/passwd
4.2 echo命令
echo命令用于输出指定内容
用法:echo'[文本]'
echo '123'
利用>>和>也可以将输出内容写入到文件中(管道符)还有<,<<。
> #为覆盖
>> #为追加
利用>>和>可以将命令的输出结果保存于文件中
4.3more命令
more命令类似于cat,不过会一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是,按空格键Space就往下一页显示,按Enter键显示文本的下一行内容,按b键就会往回(back)一页显示,按q退出。
用法:more [选项] [文件]
4.4less命令
less 与more类似,用less命令显示文件时,用PageUp 键向上翻页,用PageDown键向下翻页。要退出less程序按q键。
用法:less [选项] [文件]
4.5head命令
head命令用于查看文件开头的内容。在默认情况下,head命令显示文件的头10行内容
用法:head [选项] [文件]
参数:-n<行数> 显示的行数
比如显示passwd文件的前两行
4.6tail命令
tail
文件中的尾部美容。tail
命令默认在屏幕上显示指定文件的末尾10行,如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题
用法:tail [选项] [文件]
参数:-n<行数> 显示的行数
比如查看passwd文件尾部5行的内容
参数:-f 循环读取
可以用来查看新增内容:/var/log/secure
是系统远程登录日志,我们可以通过 tail -f
命令监控日志变化情况。
如果有远程登录的操作,无论登录成功失败都会获取到日志
使用管道操作符 |
可以把一个命令的标准输出传送到另一个命令的标准输入中,连续的 |
意味着第一个命令的输出为第二个命令的输入,第二个命令的输入为第一个命令的输出,依次类推。
例如:显示 passwd 文本的10-15行:
4.7wc命令
wc
命令用来计算数字。利用 wc
指令我们可以计算文件的Byte数,字数或是列数
用法:wc [选项] [文件]
参数:
-l 显示行数
-c 显示Bytes数
-w 显示字数
例如查看passwd文件有多少行:
4.8du、df命令
du
命令可查看文件使用空间
用法:du [选项] [文件]
参数:-h 以K、M、G为单位,提高信息的可读性。
例如:查看passwd文件的使用空间
df
命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。利用该命令来获取磁盘被占用了多少空间,目前还剩下多少空间等信息
用法:df [选项]
参数:-h 根据大小更改显示为KB、MB、GB等
例如:查看磁盘占用情况
4.9diff命令
diff
命令用于比较文件的差异
diff
以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff
会比较目录中相同文件名的文件,但不会比较其中子目录。
用法:diff [文件1] [文件2]
diff
命令所参考的不是第一个文件,而是第二个文件,它的输出信息有以下几种字符:
c
:表示必须做一些修改才能使两个文件相同
a
:表示必须添加一些内容才能使两个文件相同
d
:表示必须删除一些内容才能使两个文件相同
5.输入/输出重定向
5.1重定向的含义
大多数系统命令从终端获取输入并将结果输出发送回终端,通常用于标准输出的命令的输出可以很容易地转移到文件中。此功能称为重定向。正如命令的输出可以重定向到文件一样,命令的输入也可以从文件重定向。
5.2输出重定向
当我们执行命令时,命令的输出回显示在终端上。但有时,我们需要命令的输出保存在文件中,这时就需要
>
和 >>
对命令输出进行重定向
>
符号,是将命令的输出存入文件,并覆盖文件原本的内容
5.3输入重定向
正如命令的输出可以重定向到文件,命令的输入也可以重定向到文件,一般使用 <
和 <<
,其中 <<
可以引入多行命令的输入。
6.Linux的文件结构
Linux中其实一切都是文件,这是UNIX哲学体系的一个体现,Linux是从UNIX而来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。
在Linux系统中文件后缀没有是没有作用的,后缀名只是为了更好的区别文件的作用。
Linux系统中的各类文件被Linux使用目录树进行管理,就是以根目录为主,向下呈现分枝状的一种文件结构。
这样做最明显的好处就是,开发者仅需要使用一套API和开发工具即可调取Linux系统的绝大部分资源,比如,Linux中几乎所有的读操作都可以用read函数来进行,几乎所有的更改操作都可以用write函数来进行。
不利之处在于,使用任何硬件设备都必须与根目录下的某一目录执行挂载操作,否则无法使用。我们知道,Linux具有一个以根目录为树根的文件目录结构,每个设备也同样如此,他们是相互独立的。如果我们想通过Linux上的根目录找到设备文件的目录结构,就必须将两个文件系统目录合二为一,这就是挂载的含义。
Linux根目录下的各个目录:
7.VI编辑器
vi编辑器:vi是Linux系统的一个全屏幕交互式编辑程序,从诞生到至今仍是我们主要使用的文本编辑工具,它可以执行输出、删除、查询、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。vi编辑器具有三种模式:一般模式、编辑模式、指令模式。可以观察vi界面的左下角判断当前处于什么模式
在命令执行 vi [文件名]
命令可进入vi编辑器并编辑文件,如果没有同名文件则创建。
7.1一般模式
执行vi test
新建一个文件,进入vi编辑器后就进入到了第一个模式,一般模式。
在一般模式下可使用的指令:
7.2编辑模式
这里新建一个test文件,执行 vi test
命令,进入vi编辑,输入键盘的字母 i
可以进入vi编辑器的编辑模式,可以进行文本编辑。
7.3命令模式
当文本编辑结束后可以通过指令对修改的内容进行保存,退出,按ESC
退回到一般模式再输入键盘上的:wq!
强制保存并退出。
命令模式下的常用指令: