目录
一、Linux简介
二、shell
三、SSH系统服务
四、vim编辑器
五、Linux常用命令
六、文本文件编辑命令
七、文件目录管理命令
八、打包压缩命令
九、搜索命令
十、文件管理权限命令
一、Linux简介
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux操作系统诞生于1991年10月5日(第一次正式向外公布时间)。Linux存在许多不同的版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备上,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。严格来讲,Linux 这个词本身只表示 Linux 内核,但人们已经习惯了使用 Linux 来形容整个基于 Linux 内核,并且使用GNU工程各种工具和数据库的操作系统。Linux 的发行版说简单点,就是将 Linux 内核与应用软件做一个打包。
二、shell
在计算机科学中,shell 俗称外壳(用来区别于内核),它类似于Windows的DOS,够接收用户的命令并翻译给操作系统执行,是用户与操作系统(内核)之间的桥梁(中间人)。shell开机自启,如果没有shell,我们无法使用Linux。查看正在使用的shell:echo $SHELL
,查看系统支持的shell:cat /etc/shells
。shell与终端的区别:终端接收用户的输入,并传递给shell程序,接收程序输出并展示到屏幕;shell接收并解析用户的命令给操作系统执行,将结果输出到终端。
三、SSH系统服务
SSH服务是目前比较可靠,专门为远程登录服务器和其他网络服务提供安全的协议,相当于Windows的远程桌面协议(mstsc)。SSH是标准的网络协议,可用于大多数UNIX操作系统,能够实现字符界面的远程登录管理,它默认使用22号端口,采用密文的形式在网络中传输数据,相对于通过明文传输的Telnet,具有较高的安全性。SSH提供了口令和密钥两种用户验证方式,这两者都是通过密文传输数据的。SSH对我们主要的作用是操作远程服务器系统。Kali配置SSH服务:1、安装leafpad apt-get install leafpad
;2、使用编辑器打开SSH配置 leafpad /etc/ssh/sshd_config
;(1)搜索PermitRootLogin,将其更改为允许root账户登录;(2)搜索PermitEmptyPasswords,更改为允许空密码登录;3、重启SSH服务 service ssh restart
。其他命令:使用命令行模式开启SSH服务:service ssh start
,查看服务开启状态:service ssh status
。登陆测试:使用xshell、MobaXterm、putty等工具测试;使用本机cmd远程连接:(1)查看虚拟机IP,在Kali终端运行命令 ip a
;(2)打开本机cmd,先查看能否与Kali远程连接 ping 192.16.2.3
;(3)在本机cmd运行以下命令 ssh root@192.16.2.3
,输入远程连接Kali账户的密码即可,注意密码是不可见的,输入回车即可;使用MobaXterm远程连接:一般使用MobaXterm,免费,且支持协议较多,安装简单,图形化界面较好,缺点是没有中文版。点击Session,选择SSH,填入远程连接地址、账户名,输入密码。连接好后,就可以将虚拟机挂起,直接通过MobaXterm使用虚拟机了。虚拟机挂起,IP一般不会改变,可以持续连接,但如果关机了,IP就会改变了。如果IP改变了,重新设置一边就可以了。如果出现乱码,设置一下字体即可,Sessions -> 右键IP -> Edit session。使用Xshell远程连接:rz:上传文件,sz:下载文件。
四、vim编辑器
Vim编辑器是Unix及Linux系统下标准的编辑器,相当于Windows系统中的记事本,它的强大不逊色于任何文本编辑器,是我们使用Linux系统不可缺少的工具。Vim具有程序编辑的能力,其会依据文件扩展名或者文件内的开头信息,判断该文件的内容,自动执行该程序的语法判断式,再以颜色显示程序代码与一般信息,可以辨别语法的正确性。Vim加入了许多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。这些功能可以帮助我们在Linux上进行一些配置文件的修改。Vim编辑器有命令模式(默认)、输入模式和末行模式。命令模式下可以复制行、删除行等操作;输入模式可以输入内容;模式转换可以使用i、I、Esc、a、A、o、O、s、x、dd、r、yy、p等命令。命令模式下,关闭、保存文件可以使用Shift + 冒号,w表示保存,q表示退出,wq表示保存退出,x表示保存退出,q!表示强制退出,w!表示强制保存(管理员权限)。查找可以使用/正则向后查找,?正则向前查找。
五、Linux常用命令
帮助命令:在Linux环境中,如果遇到困难,可以使用帮助命令来取得帮助。输出cat命令的帮助:cat --help
,输出date命令的帮助:date --help
。常用系统工作命令:系统状态检测命令、工作目录切换命令。Linux命令手册。echo命令用于在终端输出字符串或变量提取后的值,echo [字符串]
,echo [$变量]
。rm命令用于删除文件,rm 1.txt
。date命令用于显示及设置系统的日期或时间,date [选项] [指定的格式]
。poweroff命令用于关闭系统,reboot命令用于重启系统,init命令需要root权限,关机:init 0
,切换为命令行格式:init 3
,切换为图形化页面:init 5
,重启:init 6
。top命令显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率等,使用q键退出,top [参数]
。kill [进程号]命令用于杀死某个进程。ps命令用于查看进程。ifconfig命令用于获取网卡配置与网络状态等信息,ifconfig
,ifconfig [网络设备] [参数]
。ip a命令可以查看IP,ip add命令也可以查看IP。uname命令用于查看系统内核与系统版本等信息,查看版本:uname -a
,查看uname帮助文档:uname --help
。who命令用于查看当前登入主机的用户终端信息,id命令也可以查看当前登入主机的用户终端信息,whoami命令也可以查看当前登入主机的用户终端信息。history命令用于显示历史执行过的命令,执行历史号为32的命令:!32
。pwd命令用于显示用户当前所处的工作目录。cd命令用于切换工作路径,切换到root目录:cd ~
,切换到home目录(主目录):cd /
,回到上一级:cd ..
。ls命令用于显示目录中的文件信息,查看当前目录的状态(d开头代表路径,l开头代表目录,-开头代表文件):ls -l
,ll命令查看文件详情。
六、文本文件编辑命令
cat命令用于查看纯文本文件(内容较少的),打开a文件:cat a
,打开a文件,在有内容的行前添加行数:cat a -b
,读取用户信息:cat /etc/passwd
。more命令用于查看纯文本文件(内容较多的),回车键往下查看内容,Ctrl + b往上查看内容,等于号显示当前行数,等于号后输入数字,意味着在当前行数下添加该数字的行数,v可以调用vim编辑器,q退出。head命令用于查看纯文本文档的前N行,输出a文件的前10个字符:head a -c 10
,输出a文件的前5行:head a -n 5
,输出文件头:head a -q
。wc命令用于统计指定文本的行数、字数、字节数,统计字节数:wc a -c
。stat命令用于查看文件的具体存储信息和时间等信息,格式化输出123:stat -c 123 a
。
七、文件目录管理命令
touch命令用于创建空白文件或设置文件的时间,创建时间和最近改动时间无法更改。创建3个空白文件:touch 1.txt 2.txt 3.txt
,将1.txt文件的时间更改为1天前:touch -d "1 day ago" 1.txt
,设置时间格式:touch -t 2008080808.08 1.txt
。mkdir命令用于创建空白的目录,创建text目录:mkdir text
,创建多级目录:mkdir hello/test/ -p
,创建test2目录,设定权限为可读可写可执行:mkdir hello/test2 -m 777
。cp命令用于复制文件或目录,将a文件复制到a2:cp a a2
,将hello目录复制到hello2,r命令是递归,可以复制文件:cp hello/ hello2 -rp
,命令可以复制格式、权限:cp hello/ hello2 -r -pb
,命令可以产生备份文件:cp hello/ hello2 -r -b
。mv命令用于移动文件或将文件重命名,将1.txt文件移动到hello目录下:mv 1.txt hello/
,将hello2目录移动到hello目录下:mv hello2/ hello/
,将所有txt文件移动到hello目录下:mv *.txt hello/
。file命令用于查看文件的类型,查看1.txt文件的类型:file 1.txt
,不显示文件名称:file 1.txt -b
,版本信息:file 1.txt -v
。
八、打包压缩命令
tar命令用于对文件进行打包压缩或解压,压缩-cvf,解压-xvf(c为压缩,x为解压,v为路径,f为文件)。打包(没有压缩)当前目录下的所有txt文件,放到root目录下,命名为a.tar.gz:tar -cvf /root/a.tar.gz *.txt
。gzip命令一般与tar一起使用,tar只负责打包并未做压缩,使用-z选项可以调用gzip压缩,完成打包压缩。打包压缩:tar -zcvf /root/a2.tar.gz *.txt
,打包压缩:tar -zcvf abc.tar.gz a.txt b.txt c.txt
,解压到指定路径:tar -xvf a2.tar.gz -C /root/hello
。zip命令用于压缩文件,压缩效率比不上gzip。压缩所有txt文件为1.zip:zip 1.zip *.txt
,解压1.zip:unzip 1.zip
。
九、搜索命令
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。使用which命令,可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令,此命令会去搜索$PATH环境变量中的目录路径,可以使用echo $PATH
查看。查找id命令:which id
。whereis命令与which命令相似,whereis也可以查找到命令的绝对路径。两者不同的是,which会列出这个命令的别名记录,而whereis会显示出这个命令的帮助文档所在位置。whereis id。locate命令根据文件名来搜索文件的命令。区别于find命令,locate命令无需指定路径,直接搜索即可,运行速度较快,可以根据关键字列出所有文件。locate命令在mlocate.db数据库下搜索,这个数据库位于/var/lib/mlocate/mlocate.db,它包含了系统里所有文件的索引,并且会在每天早上由cron工具自动更新。但是locate命令有个弊端,它无法搜索当天所创建的文件,因为它的数据库一般只在早上更新一次,我们可以使用updatedb命令手动去更新它的数据库。updatedb,locate 1.txt。find命令用于在一个目录(及子目录)中搜索文件,可以指定一些匹配条件,如按文件名、文件类型、用户等条件查找文件。默认从当前路径开始检索,其搜索速度比locate慢。查找root目录下命名为hello的目录或文件:find /root/ -name hello
,不区分大小写:find /root/ -iname hello
,指定文件类型(f表示文件,d表示目录):find /root/ -name 1.txt -type f
,指定权限查找:find /root/ -name hello.txt -perm 777 -exec command {} ;
或-ok command {} ;
将查找到的文件执行command操作,-ok是交互的,需要用户确认,-exec不用,{}和;之间有空格,固定格式,{}表示命令的参数,即为所找到的文件,是转义,;表示命令结束。列举hello路径下的文件:find /root/ -name hello -exec ls {} ;
,列举hello所在的路径:find /root/ -name hello -exec pwd {} ;
,直接执行指令:find /root/ -name hello -exec whoami ;
。grep命令用于在文本中搜索指定的模式,可以与find结合使用。列出a目录下的所有文件,通过grep匹配出hello:find /a | grep hello
。
十、文件管理权限命令
chmod命令用于进行文件的权限修改,Linux中文件和目录的权限有所不同。文件的权限:r表示可以读文件(数值为4),w表示可以写文件(数值为2),x表示可以执行文件(数值为1)。赋予可读可写可执行权限:chmod 777 文件名
。目录的权限:xr表示可以复制(cp)和查看(ls)目录的内容(即文件和目录),同时还需要可执行权限x;rw表示可以在目录里创建文件(touch)和目录(mkdir)和删除文件(rm)和目录(rmdir),同时需要可执行权限x;xx表示可以进入目录(cd)和执行文件。Linux用户及权限管理。
grep可以与find结合使用。列出a目录下的所有文件,通过grep匹配出hello(|是管道符,作用是将左边的输出当右边的输入,即将find /a命令的输出结果当作grep hello命令的输入进行过滤):find /a | grep hello
。