Linux达人养成计划I
标签(空格分隔): IT 渗透技术
[TOC]
格式不好的请看这里:https://www.zybuluo.com/Guristas/note/188265
1 Linux安装
系统分区
主分区:最多只能有4个
-
扩展分区
最多只能有1个
主分区加扩展分区最多有4个
不能写入数据,只能包含逻辑分区
逻辑分区
在Linux中,任何东西都是文件
常见硬件设备文件名
IDE硬盘:
/dev/hd[a-d]
SCSI/SATA/USB硬盘:
/dev/sd[a-p]
光驱:
/dev/cdrom
或dev/hdc
软盘:
dev/fd[0-1]
鼠标:
/dev/mouse
分区设备文件名
/dev/hda1
IDE硬盘接口dev/sda1
SCSI硬盘接口、SATA硬盘接口
挂载
-
必须分区
/ (根分区)
sqap分区(交换分区,4G以下,内存两倍,4G以上,内存一样)
-
推荐分区
/boot 启动分区,200MB
2 Linux常用命令
2.1 命令基本格式
命令提示符[root@localhost ~]#
其中:
root:当前登陆用户
localhost:主机名
~:当前所在目录(家目录)
\#:超级用户提示符
$:普通用户提示符
命令格式
命令 [选项] [参数]
文件权限-rw-r--r--
-
文件类型(-
文件d
目录l
软链接文件)rw-
u所有者r--
g所属组r--
o其他人
2.2 目录处理命令
查询目录中内容:ls
ls [选项] [文件或目录]
选项:
-a:显示所有文件,包括隐藏文件
-l:显示详细信息
-d:查看目录属性
-h:人性化显示文件大小
-i:显示iNode
建立目录:mkdir
mkdir -p [目录名]
-p 递归创建
切换所在目录:cdcd ~
:进入当前用户的家目录cd
cd -
:进入上次目录cd ..
:进入上一级目录
删除空目录:rmdir
只能删除空目录
删除文件或目录:rm
rm -rf [文件或目录]
-r 删除目录
-f 强制
复制:cp
cp
[选项] [原文件或目录] [目标目录]
-r 复制目录
-p 连带文件属性复制
-d 若原文件是链接文件,则复制链接属性
-a 相当于 -pdr 包括时间完全一样
剪切或改名命令:mv
mv [原文件或目录] [目标目录]
2.3 常见目录作用
/
根目录/bin/
命令保存目录(普通用户就可以读取的命令)/boot/
启动目录,启动相关文件/dev/
设备文件保存目录/etc/
配置文件保存/home/
普通用户的家目录/lib/
系统库/mnt/
系统挂载/media/
挂载目录/root/
超级用户的家目录/tmp/
临时目录/sbin/
命令保存目录(超级用户才能使用的目录)/proc/
直接写入内存的/sys/
/usr/
系统软件资源目录/usr/bin/
系统命令(普通用户)/usr/sbin/
系统命令(超级用户)/var
系统相关文档内容
2.4 链接命令
ln -s [原文件] [目标文件]
-s 创建软链接
硬链接特征:
拥有相同的iNode和存储block块,可以看做是同一个文件
可通过iNode识别
不能跨分区
不能针对目录使用
软链接特征:
类似windows快捷方式
软链接拥有自己的iNode和block块,但是数据块中只保存原文件的文件名和iNode,并没有实际的文件数据
lrwxrwxrwx
l软链接,文件权限都为全rwx修改任意文件,另一个都改变
删除原文件,软链接不能使用
2.5 文件搜索命令
2.5.1 locate
命令
locate
命令格式locate 文件名
在后台数据块中按文件名搜索,搜索速度更快
/var/lib/mlocate/
locate命令所搜索的后台数据块
updatedb
更新数据库
/etc/updatedb.conf
配置文件
PRUNE_BIND_MOUNTS = "yes"
开启搜索限制PRUNEFS =
搜索时,不搜索的文件系统PRUNENAMES =
搜索时,不搜索的文件类型PRUNEPATHS =
不搜索的路径
2.5.2 命令搜索命令whereis
which
whereis 命令名
搜索命令所在路径及帮助文档所在位置
选项:
-b:只查找可执行文件
-m:只查找帮助文件
PATH环境变量
命令:echo $PATH
2.5.3 find
命令
find [搜索范围] [搜索条件]
避免大范围搜索,耗费系统资源,find是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配。
通配符:
匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
find /root -iname install.log
不区分大小写
find /root -user root
按照使用者搜索
find /root -nouser
查找没有所有者的文件
find /var/log/ -mtime +10
查找10天前修改的文件
-10 10天内修改的文件
10 10天前当天修改的文件
+10 10天前修改的文件
atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容
find . -size 25k
查找文件大小是25KB的文件
-25k 小于25KB
-25M 小于25MB 注意大小写
find . -inum 262422
查找iNode,与命令ls -i [文件名]
搭配使用
find /etc -size +20k -a size -50k
查找etc目录下,大于20K且小于50K的文件
-a 逻辑与
-o 逻辑或
find /etc -size -a size -50k -exec ls -lh {} \;
查找目录下文件,并显示详细信息
-exec 命令 {}\; 对搜索结果执行操作
2.5.4 grep
命令
grep [选项] 字符串 文件名
-i 忽略大小写
-v 排除指定字符串
find
命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。grep
命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配。
2.6 帮助命令
2.6.1 帮助命令man
man 命令
获取指定命令的帮助
man
的级别
1:查看命令的帮助
2:查看可被内核调用的函数的帮助
3:查看函数和函数库的帮助
4:查看特殊文件的帮助(主要是/dev
目录下的文件)
5:查看配置文件的帮助
6:查看游戏的帮助
7:查看其它杂项的帮助
8:查看系统管理员可用命令的帮助
9:查看和内核相关文件的帮助
查看命令拥有哪个级别的帮助man -f 命令
相当于whatis 命令
man -5 passwd
man -k 命令
相当于apropos 命令
2.6.2 其他帮助命令
命令 --help
获取命令选项的帮助
shell内部命令帮助help shell内部命令
whereis cd
确定是否是shell内部命令help cd
获取内部命令帮助
详细命令帮助infoinfo 命令
-回车:进入子帮助页面(带有*号标记)
-u:进入上层页面
-n:进入下一个帮助小节
-p:进入上一个帮助小节
-q:退出
2.7 压缩命令
常见压缩格式:.zip .gz .bz2 .tar.gz .tar.bz2
-
zip格式压缩
`zip 压缩文件名 源文件` 压缩文件 `zip -r 压缩文件名 源目录` 压缩目录 `unzip 压缩文件` 解压缩
-
gz格式压缩
`gzip 源文件` 压缩为.gz格式,源文件消失 `gzip -c 源文件 > 压缩文件` 压缩为.gz格式,源文件保留 `gzip -r 目录` 压缩目录下所有的子文件,但是不能压缩目录 `gzip -d 压缩文件` `gunzip 压缩文件` 解压缩文件
-
bz2格式压缩
`bzip2 源文件` 压缩为bz2格式,不保留源文件 `bzip2 -k 源文件` 压缩之后保留源文件 `bzip2`命令不能压缩目录
-
打包命令tar
`tar -cvf 打包文件名 源文件` -c:打包 -v:显示过程 -f:指示打包后的文件名
-
解打包命令
`tar -xvf 打包文件名`
-
.tar.gz格式压缩
`tar -zcvf 压缩包名.tar.gz 源文件` `tar -zxvf 压缩包吗.tar.gz`
-
.tar.bz2压缩格式
`tar -jcvf 压缩包名.tar.bz2 源文件` `tar -jxvf 压缩包名.tar.bz2`
2.8 关机与重启命令
2.8.1 shutdown
命令
shutdown [选项] 时间
-c:取消前一个关机命令
-h:关机
-r:重启
2.8.2 其他关机命令
halt
poweroff
init 0
2.8.3 其他重启命令
reboot
init 6
2.8.4 系统运行级别
0:关机
1:单用户
2:不完全多用户,不含NFS服务
3:完全多用户
4:未分配
5:图形界面
6:重启
2.8.5 退出登录
logout
2.9 挂载命令
-
查询与自动挂载
`mount` 查询系统中已经挂载的设备 `mount -a` 依据配置文件`/etc/fstab/`的内容,自动挂载
-
挂载命令格式
`mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点` -t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统 -o 特殊选项:可以指定挂载的额外选项 `mount -o remount,noexec /home` 重新挂载`/boot`分区,并使用noexec权限(不可执行)
-
挂载光盘
`mkdir /mnt/cdrom/` 建立挂载点,也可以是其他,如`/media` `mount -t iso9660 /dev/cdrom /mnt/cdrom/` `dev/sr0`与`/dev/cdrom`一样
-
卸载命令
`umount 设备文件名或挂载点`
-
挂载U盘
`fdisk -l` 查看U盘设备文件名 `mount -t vfat /dev/sdb1 /mnt/usb/` Linux默认是不支持NTFS文件系统的
2.10 用户登录查看
查看登录用户信息w 用户名
命令输出:
USER:登录的用户名
TTY:登录终端
FROM:从哪个IP地址登录
LOGIN@:登录时间
IDLE:用户登录时间
JCPU:指的是和该终端连接的所有进程占用的时间。这个时间里不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间。
PCPU:指当前进程所占用的时间
WHAT:当前正在运行的命令
查询当前登陆和过去登陆的用户信息last
last命令默认是读取/var/log/wtmp
文件数据
命令输出:
-用户名
-登陆终端
-登陆IP
-登陆时间
-退出时间(在线时间)
查看所有用户的最后一次登陆时间lastlog
lastlog命令默认是读取/var/log/lastlog
文件内容
-用户名
-登陆终端
-登陆IP
-最后一次登陆时间
3 shell
基础
3.1 shell
概述
shell是一个命令行解释器
bourne shell:1979年起Unix就开始使用bourne shell,包括sh、ksh、bash、psh、zsh
C shell:主要是在BSD版的Unix系统中使用,其语法与c语言类似,包括csh、tcsh
BASH:bash与sh兼容,现在的Linux使用bash作为用户的基本shell
echo $SHELL
Linux支持的shell/etc/shells
该文件中可以查看支持的shell
3.2 脚本执行方式
echo
输出命令echo [选项] [输出内容]
-e:支持反斜线控制的字符转换,支持输出十六进制echo -e "\e[1;31m 嫁人就要嫁凤姐 \e[0m"
输出颜色:30m 黑色,31m 红色,32m 绿色,33m 黄色,34m 蓝色,35m 洋红,36m 青色,37m 白色第一个脚本
vi hello.sh
#!/bin/bash
#The first program
echo -e "\e[1;34m 天上掉下个林妹妹!\e[0m"
脚本执行
赋予执行权限,直接运行
chmod 755 hello.sh
./hello.sh
通过bash调用执行脚本
bash hello.sh
3.3 bash的基本功能
3.3.1 命令的别名
命令别名 == 人的小名
查看与设定别名
alias
:查看系统中所有的命令别名alias 别名 = '原命令'
:设定命令别名(临时生效)别名永久生效与删除别名
vi ~/.bashrc
:写入环境变量配置文件(重新登录后生效)source ~/.bashrc
:重载文件,使别名立即生效unalias 别名
:删除别名(写入文件的还需要在文件里删除)命令生效顺序
执行用绝对路径或相对路径执行的命令
执行别名
执行bash的内部命令
执行按照$PATH环节变量定义的目录查找顺序找到的第一个命令
-
常用快捷键
ctrl+c:中止命令
ctrl+l:清屏
ctrl+a:光标移到命令行首
ctrl+e:光标移到命令行尾
ctrl+u:从光标位置删除到行首
ctrl+z:命令放入后台
ctrl+r:在历史命令中搜索
3.3.2 历史命令
history [选项] [历史命令保存文件]
-c:清空历史命令
-w:把缓存中的历史命令写入历史命令保存文件~/.bash_history
历史命令默认保存1000条,可以再环境变量配置文件/etc/profile
中进行修改
历史命令的调用
使用上下箭头
使用
!n
重复执行第n条历史命令使用
!!
重复执行上一条命令使用
!字符串
重复执行最后一条以该字符串开头的命令
命令与文件的补全:按tab键
3.3.3 输出重定向
标准输出重定向
命令 > 文件
以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中命令 >> 文件
以追加的方式
标准错误输出重定向(注意空格)
错误命令 2>文件
覆盖错误命令 2>>文件
追加
同时保存
命令 > 文件 2>&1
覆盖命令 >> 文件 2>&1
追加命令 &>文件
覆盖命令 &>>文件
追加命令>>文件1 2>>文件2
正确输出追加到文件1中,错误输出追加到文件2中
输入重定向
wc [选项] [文件名]
-c:统计字节数
-w:统计单词数
-l:统计行数
3.3.4 管道符
多命令顺序执行
命令1 ; 命令2
多个命令顺序执行,无逻辑关系命令1&&命令2
命令1正确执行,命令2才执行命令1||命令2
命令1不正确,命令2才执行ls && echo yes || echo no
ls || echo no && echo yes
有问题
管道符
命令1 | 命令2
命令1的正确输出作为命令2的操作对象ll -a /etc/ | more
netstat -an | grep "EXTABLISHED"
3.3.5 通配符
常用通配符
?
:匹配一个任意字符*
:匹配0个或任意多个任意字符,即匹配任意内容[]
:匹配括号中任意一个字符[-]
:匹配括号中任意一个字符,-表示范围,如[a-z][^]
:^表示非,如1表示匹配一个不是数字的字符
bash中其他特殊符号
''
单引号,在单引号中的所有特殊符号,都没有特殊含义""
双引号,在双引号中特殊符号都没有特殊含义,但是"$"
、"`"、"\"是例外,拥有,调用变量的值,引用命令,转义符含义`` 反引号,反引号括起来的内容是系统命令,在bash中会先执行它,和\$()的作用一样,但推荐使用\$()
$()
与反引号意义相同#
#开头表示注释$
调用变量的值\
转义符
- 0-9 ↩