简介
Linux内核官网www.kernel.org
- 内核版本2.6.18 3.16等等
- 发行版本 redhat==conterOS ubuntu debian等等
- 使用的自由
- 绝大多数开源软件免费
- 研究的自由
- 可以获得软件源代码
- 散步及改良的自由
- 可以自由传播、改良甚至销售
应用
- 基于Linux服务器
- 嵌入式应用 手机,接顶盒等等
Linux和Windows的不同
- Linux严格区分大小写
- Linux中所有内容以文件形式保存,包括硬件
- 以前内容皆文件
- Linux不靠扩展名区分文件类型 (->权限)
- 压缩包 .gz .bz2 .tar.bz2 .tgz登
- 二进制软件包:.rpm
- 网页文件: *.html .php
- 脚本文件: *.sh
- 配置文件: *.conf
字符界面
- 占用系统资源更少
- 减少出错、被攻击的可能性越少
挂载 给每个分区分配挂载点
安装
- 服务器最小化安装
安装日志
- /root/install.log: 储存了安装在系统中的软件包及其版本信息
- /root/install.log.syslog: 储存了安装过程中留下的事件记录
- /root/anaconda-ks.cfg: 以Kickstart配置文件的格式记录安装过程中设置的选项信息
常用的目录的作用
- /根目录
- /bin 命令保存目录(普通用户就可以读取的命令)
- /sbin 超级权限才能读取的命令
- /boot 启动目录,启动相关文件
- /dev 设备文件保存目录
- /etc 配置文件
- /home 普通用户家目录
- /lib 系统库保存目录
- /mnt 系统挂载目录
- /media 挂载目录
- /proc和/sys 目录不能直接操作,保存的是内存的过载点
- /usr 系统软件资源目录
- /usr/bin/ 系统命令(普通用户)
- /usr/sbin/ 系统命令(超级用户)
- /var 系统相关文档内容
常用命令(文件处理命令)
命令的基本格式
- ~代表当前所在位置 家目录,初始目录
- #代表超级用户
- $代表普通用户
命令 [选项] [参数]
-a -all简化
文件格式
- rw- r– r– 分为三组,三组的权限
- -文件类型(- 文件, d 目录, | 软连接文件)
- rw- r– r–
- 所有者 g所属着 o其他人
- r读 w写 x执行
- .文件为隐藏文件
pwd 显示当前所在路径 print working dictionary
mkdir -p [目录名]
- -p 递归创建 /s/p 这样的
cd 进入目录
- ~进入当前用户目录,家目录
- ..上一级目录
- .当前目录
rmdir [目录] remove empty dir
- 只能删除空白目录
rm -rf 不询问是否删除
- -r 删除目录
- -f 强制
cp [选项] [源文件] [目标目录]
- -r 复制目录
- -p 连带文件属性复制
- -d 若源文件是链接文件,则复制链接属性
- -a 相当于 -pdr
mv 剪切或者改名命令
- 源文件或者目录和目标文件目录 在一起,就是改名
链接命令
- ln -s [源文件] [目标文件]
- 命令英文愿意: link
- 功能描述:生成链接文件
- 选项: -s 创建软链接
- 硬链接特征 (i 文件索引点)
- 拥有相同的i节点和储存block块,可以看作是同一个文件
- 可通过i节点识别
- 不能跨分区
- 不能准对目录使用
- 引用计数加1,同一个文件
- 软链接特征
- 类似于windows快捷方式
- 拥有自己的i节点和block块,但是数据块中只保存源文件的文件名和i节点号,并没有实际的文件数据
- Irwxrwxrwx I 软连接
- 软连接文件的权限都为rwxrwxrwx
- 修改任意文件,另一个都改变
- 删除源文件,软连接不能使用
文件搜索命令
- 文件搜索命令locate
- 命令搜索命令whereis与which
- 文件搜索命令find
- 字符串搜索命令grep
- find命令与grep命令的区别
locate (速度相对较快)
- locate 文件名。 在后台数据库中按照文件名搜索,搜索速度更快
- /var/lib/mlocate #locate命令所搜索的后台数据库
- updatedb 更新数据库, 可能是一天更新一次,开机更新一次
whereis与which 搜索命令的命令
- where 只能搜索
系统的命令
- -b 只查看命令所在位置
- -m 只差看帮助文档
- which 只能搜索
系统的命令
- 看命令所在位置,还能查到看别名
find命令
find [搜索范围] [搜索条件]
find / -name install.log
- 避免大范围搜索,会非常耗费系统资源
- find是在系统当中搜索符合条件的文件名。如果需要匹配,通常使用通配符匹配,
通配符
是完全匹配
*
匹配任意字符?
匹配任意一个字符[]
匹配任意一个中括号内的字符 find -name ab[cd]find /root -inname 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
查找文件大小是25k的文件
- -25k 小于25KB的文件 注意是小写的
k
,兆字节用大写的M
- 25k 等于25KB的文件
- +25k 大于25KB的文件
- find . -size 25 不加单位就是扇区搜索
- -25k 小于25KB的文件 注意是小写的
find /root -inum 262422
查找i节点是262422
的文件find /etc -size +20k -a -size -50k
查找/etc/目录下,大于20kb小于50kb的文件
- -a and 逻辑与,两个条件都满足
- -0 or 逻辑或,两个条件满足一个即可
find /etc -size +20k -a -size -50k -exec ls -lh {} ;
查找/etc/目录下,大于20KB并且小于50KB的文件,并显示详细信息
-exec/-ok 命令{} \; 对搜索结果执行操作,"{} \;"为标准格式,只要有-exec就要写它
grep命令
- grep [选项] 字符串 文件名
- 在文件档中匹配符合条件的字符串
- -i 忽略大小写
- -v 排除指定字符串
find 与 grep区别
- find命令,在当前系统中搜索符合条件的文件名,如果需要匹配。使用通配符匹配,通配符是完全匹配
- grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配
帮助命令
man帮助等级
- 查看命令的帮助
- 查看可被内核调用的函数的帮助
- 查看函数和函数库的帮助
- 查看特殊文件的帮助(主要是/dev目录下的文件)
- 查看配置文件的帮助
- 查看游戏的帮助
- 查看其他杂项的帮助
- 查看系统管理员可用命令的帮助
- 查看和内核相关文件的帮助
man 命令 -> 获取指定命令的帮助 man ls
man -f 相当于 whatis 命令
man -k 相当于 apropos命令 eg: apropos passwd
shell内部命令帮助
- help 只能获取shell内部命令的帮助 eg: whereis cd. help cd
- 是安装的软件,就有路径,比如 /bin/ls ,如果 没有比如cd 就是shell内部命令。『whereis cd』
info 命令
- 回车 进入子帮助页面 (带有*号标记)
- u 上层
- n 下一帮助小节
- p 上一帮助小节
- q 退出
压缩与解压缩命令
.zip
.7z .rar.gz
.bz2
.tar.gz .tar.bz2等等
.zip格式
- zip 压缩文件名 源文件名 eg:
zip xxx.zip xxx
- zip -r 压缩目录 源文件
- unzip 解压缩文件
.gz格式
- gzip 源文件
压缩为.gz格式的压缩文件,源文件会消失
- gzip -c 源文件 > 压缩文件
- 压缩为.gz 格式,源文件保留
- eg: gzip -c cangls > cangls.gz
- gzip -r 目录
压缩目录下所有的子文件,但是不能压缩目录
- gzip -d 解压缩
- gunzip 解压缩
.bz2格式
- bzip2 源文件 不保留源文件
- bzip2 -k 源文件
- 压缩之后保留源文件
注意:bzip2命令不能压缩目录
- 压缩之后保留源文件
- bzip2 -d 解压缩
-k保留源文件
- bunzip2
-k保留源文件
.tar.gz .tar.bz2
先压缩成.tar 再压缩成.gz / .bz2
tar -cvf 打包文件名 源文件
-c 打包
-v 显示过程
-f 指定打包后的文件名
-x 解压缩 eg -xvf
-t 只查看
.tar.gz (z)
-z 压缩为.tar.gz格式
tar -zcvf xx.tar.gz 源文件-x 解压缩为.tar.gz格式
tar -zxvf xx.tar.gz
.tar.bz2 (j)
-j 压缩为.tar.bz2格式
tar -jcvf xx.tar.bz2 源文件-x 解压缩为.tar.bz2格式
tar -jxvf xx.tar.bz2
-C 位置
关机和重启命令
shutdown [选项] 时间
- -c 取消前一个关机命令
- -h 关机
- -r 重启
其他关机命令 (非安全,建议shutdown)
- halt (非安全,建议shutdown)
- poweroff (非安全,建议shutdown)
- init 0 (非安全,建议shutdown)
其他重启命令
- reboot 相对安全
- init 6 非安全
系统运行级别
查看系统运行级别
cat /etc/inittab 默认级别
runlevel
- 0 关机
- 1 单用户
- 2 不完全多用户,不包含NFS服务
- 3 完全多用户
- 4 未分配
- 5 图形界面
- 6 重启
其他命令
挂载命令
用户登录查看和用户交互命令
- mount 查询系统中已经挂载的设备
- mount -a 依据配置文件/etc/fstab的内容,自动挂载
挂载命令格式
mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
- -t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统
- -0 特殊选项:可以指定挂载的额外选项
- #!/bin/bash 最好必须写
- 默认是可执行 exec.
- mount -0 remount, noexec /home 重新挂载/boot分区, 并使用noexec权限
- remount 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限
挂载光盘
- mkdir /mnt/cdrom/ 建立挂载点
- mount -t iso9660 /dev/cdrom /mnt/cdrom 挂载光盘
- mount /dev/sr0 /mnt/cdrom
- umount /mnt/cdrom 必须卸载
挂载U盘
- fdisk -i 查看U盘设备文件
- mount -t vfat /dev/sdb1 /mnt/usb/
注意:Linux默认不支持NTFS文件系统
用户登录查看命令
- w 用户名 命令输出如下
- USER: 登录的用户名
- TTY: 登录终端
- FROM: 从哪个IP地址登录
- LOGIN@: 登录时间
- IDLE: 用户闲置时间
- JCPU: 指的是和该终端廉洁的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间
- PCUP:是指当前进程所占用的时间
- WHAT: 当前正在运行的命令
- who 用户名
- last 默认是读取 /var/log/wtmp文件数据,输出如下
- 用户名
- 登录终端
- 登录IP
- 登录时间
- 退出时间(在线时间)
- lastlog 默认是读取/var/log/lastlog文件内容
- 用户名
- 登录终端
- 登录ip
- 最后一次登录时间
Shell部分
Shell概况
- 命令行解释器,计算机可不认识命令,只认识0101. 为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启东、挂起、挺直甚至是编写一个程序
- SHell还是一个功能相当强大的编译语言,易变写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Sjell中可以直接调用Linux系统命令
Shell的分类
- Bourne Shell: 从1979起Unix就开始使用Bourne Shell, 主文件名为sh。
- C Shell: 主要在BSD版的Unix系统中使用,其语言和C语言像相似而得名
- Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要有sh、ksh、Bash、psh、zsh; C家族主要包括csh、tcsh
脚本执行方式
- echo
- vi hello.sh (#!/bin/bash) 可以调用系统命令
- 赋予执行权限,直接运行
- chmod 755 hello.sh
- ./hello.sh
- 通过Bash调用执行脚本
- bash hello.sh
别名与快捷键
- alias cp = ‘cp -i’, mv = ‘mv -i’, rm = ‘rm -i’等等,提示,是否xxx?
- unalias 删除别名
- vi ~/.bashrc 写入环境变量配置文件
- source ~/.bashrc 可以让配置重新生效
命令生效顺序
- 用绝对路径或相对路径执行的命令
- 执行别名
- 执行Bash的内部命令
- 执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
快捷键
- ctrl+c 强制终止当前命令
- ctrl+l 清屏
- ctrl+a 光标移动到命令行首
- ctrl+e 光标移动到命令行尾
- ctrl+u 从光标所在位置删除到行首
- ctrl+z 把命令放入后台
- ctrl+r 在历史命令中搜索
历史命令
- history [选项] [历史命令保存文件]
- -c 清空历史命令
- -w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
- vim /etc/profile
- 上下剪头调用以前的历史命令
- !n 重复执行第n条历史命令
- !! 重复执行上一条命令
- !字符串 重复执行最后一条以该字符串开头的命令
Bash命令补全
- tab键
输出重定向
把命令输出保存到文件, > 代表覆盖的形式写入, >>代表追加的方式写入
- ‘>’覆盖,>> 追加
- 命令 > 文件 2>&1
- 命令 >> 文件 2>&1
- 命令 &> 文件
- 命令 &>> 文件
- 命令>>文件1 2>>文件2
把正确的输出追加到文件1,把错误的输出追加到文件2中
ls &>/dev/null
相当于既不显示到屏幕上,也不保存
输入重定向
wc [选项] [文件名]
- -c 统计字节数
- -w 统计单词数
- -l 统计行数
管道符
多命令顺序执行
- ; 命令1:命令2 多个命令顺序执行,命令之间没有任何联系
- && cmd1 && cmd2 只有当cmd1正确执行 命令cmd2才会执行
- || cmd1 || cmd2 当命令cmd1不正确的时候,命令2才会执行,正确则不执行
管道符
命令1 | 命令2
,命令1的正确输出作为命令2的操作对象
- ll -a /etc/ | more
- netstat -an | grep xxx
通配符
- ? 匹配
一个
任意字符 - * 匹配0个或
任意多个
任意字符,也就是可以匹配任何内容 - [] 匹配中括号中
任意一个
字符,例如:[abc]代表一定匹配一个字符串,或者是a,或者b,或者c。 - [-] 匹配中括号中
任意一个
字符, -代表一个范围
。例如[a-z]代表匹配一个小写字母 - [^] 逻辑非,代表匹配
不是
中括号内的一个字符
。例如:[^0-9]代表匹配不是一个数字的字符
Bash中其他特殊字符
符号 |
作用 |
---|---|
‘’ | 单引号。在单引号中所有的特殊符号 ,如”$”和”`“(反引号)都 没有特殊含义 。 |
“” | 双引号。在双引号中特殊字符都没有特殊含义,但是”$”、”`”、和”"是例外,拥有”调用变量的值”、”引用命令”、”转义符”的特殊含义。 |
`` | 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,补货推荐使用$(),因为反引号非常容易看错 |
$() | 和反引号作用一样,用来引用系统命令 |
# | 在Shell脚本中,#开头的行代表注释。 |
$ | 用于调用变量的值,如需要调用变量name的值得时候,需要用$name的方式得到变量的值 |
\ | 转义符,跟在\之后的特殊字符将失去特殊含义,变为普通字符。如$ 将输出”$”符号 |