Linux基础系列(一)
Linux基础系列一
应用领域
1, 基于Linux的企业服务器
查看应用数据https://www.netcraft.com/
2, 嵌入式应用
如何学习Linux
1, 碰到任何问题先要尝试自己解决
- 查看Linux帮助文档
- 查看相关实例2, 提问的智慧
- 问题详尽, 即问题的背景要清楚,问的是什么要明确, 问题要小,有针对性
- 要把报错截图,贴图
Linux与window的不同
- Linux严格区分大小写
- Linux中所有内容以文件形式保存,包括硬件
- Linux不靠扩展名区分文件类型, 它是靠权限来区分的,而一些常见的后缀名只是帮助管理员便于区分,如:
1,压缩包: "*.gz", "*.bz2", "*.tar.bz2", "*.tgz"等2,二进制软件包: ".rpm"
3,脚本文件: ".sh"
4,配置文件: ".conf"
Linux不区分扩展名,这些扩展名的作用是便于管理员管理, 这些扩展名是约定俗成的用法,可以不写, 但推荐写上
系统分区
分区类型:
- 主分区: 最多只能有4个(由硬盘结构决定)
- 扩展分区:
1,最多只能有1个
2,主分区加扩展分区最多有4个
3,不能写入数据,只能包含逻辑分区
- 逻辑分区
1, 格式化
`格式化的根本目的是写入文件系统`
格式化(高级格式化)又称逻辑格式化,它是根据用户选定的文件系统(如FAT16, FAT32, NTFS, EXT2, EXT3, EXT4等),在磁盘特定区域写入特定数据, 在分区中划出一片用于存放文件分配表, 目录表等用于文件管理的磁盘空间
`NTFS是Windows中最先进的文件系统, 它支持更大的分区, 支持更大的单个文件`
`对磁盘来说,格式化是为了更好的查找数据, 它将整个分区分为等大小的数据块(block), 每一个数据块默认是4kb(1kb/2kb), 文件存放的数据块不是不一定是连续的, 并做一个分区列表,包括:文件ID号(I节点),文件修改时间, 文件权限, 数据块号等`
2,硬件设备名

`/dev目录保存所有的硬件设备文件名`
- /dev/hda1 (IDE硬盘接口)
- /dev/sda1 (SCSI硬盘接口, SATA硬盘接口(目前,标准的,最新式的接口, SATA3代,理论传输速率达到500M/s, 但相对CPU来说依旧很慢, 这也是需要内存的原因))
3,挂载(挂载点理解为盘符)
必须分区:
- / : 根分区
- swap : (交换分区(虚拟内存), 推荐: 如果内存小于4GB,分配为内存的2倍, 大于4GB,则为内存一样大即可)
推荐分区:
- /boot (启动分区, 200M)
常见命令(经过统计: Linux中能识别的命令超过3000多个)
命令提示符:
命令格式
1, 查询目录中内容: ls
ls [选项] [文件或目录]
-a 显示所有文件, 包括隐藏文件
-l 显示详细信息
-d 查看目录属性
-h 人性化显示文件大小
-i 显示inode
2, 文件类型
`-rw-r--r--(10位)为例:`
- -(第一位) : 表示文件类型(- 文件, d 目录, l 软链接文件)
- rw- u所有者 r-- g所属组 r-- o其他人
`r读权限 w写权限 x执行权限`
`在Linux中.开头的文件是隐藏文件`
其它文件类型: 块设备文件, 字符设备文件, 套接字文件和管道文件
文件命令
目录处理
1, 建立目录: mkdir
mkdir -p [目录名] : 命令英文原意: make directories
-p 递归创建
2, cd [目录] : 命令英文原意: change directory
简化操作:
cd ~ 进入当前用户的家目录
cd 进入初始目录
cd - 进入上次目录
cd .. 进入上一级目录
cd . 进入当前目录
3, 删除空目录: rmdir(及其少见)
rmdir [目录名] 命令英文原意: remove empty directories
4, 删除文件或目录: rm
rm -rf [文件或目录]
选项:
-r 删除目录
-f 强制
`使用该命令时,一定要十分小心, 误删掉文件就删掉了`
5, 复制命令: cp
cp [选项] [原文件或目录] [目标目录] 命令英文原意: copy
选项:
-r 复制目录
-p 连带文件属性复制
-d 若源文件是链接文件, 则复制链接属性
-a 相当与 -pdr
`加-a 复制文件与原文件一模一样, 所有属性`
6, 剪切或改名命令: mv
常见目录的作用
根目录下的bin和sbin, usr目录下的bin和sbin目录, 这四个目录都是用来保存系统命令的
`/etc保存配置文件目录`
`硬盘挂载推荐使用 /mnt(/media, /misc也可以)`
- /root 超级用户的家目录
- /tmp 临时目录
- /sbin 命令保存目录(超级用户才能使用的目录)
- /proc 直接写入内存的
- /sys
- /usr 系统软件资源目录
/usr/bin/ 系统命令(普通用户)
/usr/sbin/ 系统命令(超级用户)
- /var 系统相关文档内容
`proc和sys目录不能直接操作, 这两个目录保存的是内存的过载点`
`可以在家目录root或home, 以及tmp目录下随便放内容`
文件搜索命令
1, 文件搜索命令locate
local 文件名
`在后台数据库中按文件名搜索, 搜索速度更快, 缺点是:只能按文件名来搜索`
- /var/lib/mlocate locate命令所搜索的后台数据库
`updatedb 更新数据库`
数据库的配置文件: /etc/updated.conf
2, 搜索命令的命令whereis与which
whereis 命令名 : 只能搜索命令
- 搜索命令所在路径及帮助文档所在位置
`想知道一条命令是干嘛的: whatis ls`
选项:
-b: 只查找可执行文件
-m: 只查找帮助文件
which [文件名] : 搜索命令所在路径及别名
`PATH环境变量: 定义的是系统搜索命令的路径`
3, 文件搜索命令find
- find [搜索范围] [搜索条件]
`避免大范围搜索, 会非常耗费系统资源`
`find是在系统中搜索符合条件的文件名。如果需要匹配,使用通配符匹配, 通配符是完全匹配`
Linux中的通配符
* 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
- find [搜索目录] -iname [文件名] : 不区分大小写
- find [搜索目录] -user [用户名] : 按所有者搜索
- find [搜索目录] -nouser : 查找没有所有者的文件
`一个是内核产生,一个是外来数据, 剩下的在Linux中所有文件都应该有所有者, 如果找到没有所有者的文件则为垃圾文件`
- find /var/log/ -mtime +10 : 查找10天前修改的文件
-n n天内修改文件
n n天当天修改的文件
+n n天前修改的文件
atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容
- find [查找目录] -size [文件大小]
-size 小于size的文件
size 等于size的文件
+size 大于size的文件
- find [查找目录] -inum [i节点号]
- 复杂命令

`-exec [第二条命令] {} \; : 标准格式`
4, 字符串搜索命令grep
grep [选项] 字符串 文件名 : 在文件当中匹配符合条件的字符串
选项:
-i 忽略大小写
-v 排除指定字符串
5, find命令与grep命令的区别
- find命令: 在系统中搜索符合条件的文件名。如果需要匹配,使用通配符匹配, 通配符是完全匹配
- grep命令: 在文件当中搜索符合条件的字符串, 如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配
关机和重启
1, shutdown命令
shutdown [选项] 时间
选项:
-c: 取消前一个命令
-h: 关机
-r: 重启
2, 其它关机命令
- halt
- poweroff
- init 0
`不太安全, 不推荐使用`
3, 其它重启命令
- reboot (可以使用)
- init 6 (尽量不要使用)
系统运行级别:
查看系统运行级别: runlevel
修改系统默认运行级别: cat /etc/inittab
4, logout : 正常登出
其它命令
1, echo
`echo 输出的字符串中不能加感叹符`
`加 -e参数`
> 输出颜色
`sh为bash的软链接,大多数情况下,脚本的开头使用“#!/bin/bash”和“#!/bin/sh”是没有区别的,但更规范的写法是在脚本的开头使用“#!/bin/bash`
- #30m=黑色, 31m=红色, 32m=绿色, 33m=黄色
- #34m=蓝色, 35m=洋红, 36m=青色, 37m=白色
`在脚本中第一行的: '#!/bin/bash' 不能省略`
2, sh[bash]
- sh/bash [options] [file]
选项:
-c string : 命令从-c后的字符串读取
-i : 实现脚本交互
-n : 进行shell脚本的语法检查
-x : 实现shell脚本逐条语句的跟踪
## 链接命令: ln(link 简写)
- ln -s [源文件] [目标文件]
- 功能描述: 生成链接文件, 选项: -s 创建软链接
### 硬链接特征:
- 拥有相同的i节点和存储block块,可以看做是同一个文件
- 可以通过i节点识别
- 不能跨分区
- 不能针对目录使用
`硬链接不加 -s`
1,ls -i [文件]查看文件的i节点号
### 软链接特征
- 类似window快捷方式
- 软链接拥有自己的I节点和block块,但是数据块中只保存原文件的文件名和I节点号,并没有实际的文件数据
- 软链接的文件权限都为rwxrwxrwx
- 修改任意一个文件,另一个都改变
- 删除原文件,软链接不能使用
## vim(Visual Interface: 可视化接口)
### 打开文件
vim + [文件] :打开文件定位到末行
vim +n [文件] :打开文件定位到n行
vim +/[文字] [文件] : 打开文件第一次出现"文字"的哪一行
`按住n可以在文件中出现'文字'的行切换`
vim abc xyz def : 一次性创建多个文件
`在底行输入: n 进行下一个文件文件切换, prev/N切换到上一个文件`
操作模式
- Command Mode - 命令模式
1, 点击2次d,删除一行
2, h 光标左移
3, j 光标下移
4, k 光标上移
5, l 光标右移
6, ctrl + f 向下翻页(front)
7, ctrl + b 向上翻页(back)
8, ctrl + d 向下翻半页(down)
9, ctrl + u 向上翻半页(up)
10, dd 删除光标所在行
11, o 在光标所在行的下方插入一行并切换到输入模式
12, yy 复制光标所在行的内容
13, p 在光标所在行的下方粘贴
14, P 在光标的上方粘贴
- Insert Mode - 输入模式
- Last Line Mode - 底行模式(尾行,末行)
1, :w - 写入内存
2, :q - 退出编辑器
3, :! - 强制执行
4, :ls - 列出编辑器当前打开的所有文件
5, :n - 切换到下一个文件
6, :num - 光标快速定位到num行
7, /xxx - 从当前光标开始向后搜索内容'xxx'
8, ?xxx - 从当前光标开始向前搜索内容'xxx'
磁盘管理
1, df命令
- df -lhT -t ext4(以1024为单位,查看类型为ext4的文件系统)
2, du命令