Linux 介绍
- Linux是一套免费使用的类Unix操作系统,在服务器端领域和嵌入式领域有非常广泛的应用
Linux 版本
-
内核版本: kernel
-
各个厂商会制作自己的发行版本
- redhat
- CentOS
- ubuntu
Linux与 Windows的不同
-
Linux 严格区分大小写
-
Linux更多使用字符界面, widows 是图形界面,操作难度低,不安全。
- 占用的系统资源更少
- 减少了出错和被攻击的可能性,会让系统更稳定
Linux常用命令
常见目录
| 目录 | 用途 |
|---|---|
| / | Linux 根目录 |
| /boot | Linux 启动目录,启动相关文件 |
| /dev | Linux 设备文件 |
| /etc | Linux 配置文件 |
| /home | Linux 普通用户的家目录,可以操作 |
| /lib | Linux 系统库保存目录 |
| /root | Linux 超级用户的家目录,可以操作 |
| /tmp | Linux 临时目录,可以操作 |
| /var | Linux 变量 |
| /bin | Linux 普通的基本命令 |
| /sbin | Linux 基本的系统命令 只有管理员才可以运行 |
| /usr/bin | Linux 是你在后期安装的一些软件的运行脚本 |
| /usr/sbin | Linux 放置一些用户安装的系统管理的必备程序 |
命令基本格式
命令提示符
- root 当前登录用户
- localhost/VM-12-10 主机名
- ~ 当前工作目录,默认是当前用户的家目录,root(管理员) 就是** /root**,普通用户(用户组的某一个用户)是 /home/用户名
- 提示符 超级用户是 #,普通用户是$
ls
-
查询目录中的内容
-
ls [选项] [文件或者目录]
-
选项
- -a 显示所有文件,包括隐藏文件
- -l 显示详细信息
- -d 查看目录本身的属性而非子文件 ls /etc/
- -h 人性化的方式显示文件大小
-l
显示详细信息
drwxr-xr-x root root 800 Sep 16 00:19 logs
| drwxr-xr-x | root | root | 800 | Sep 16 00:19 | logs |
|---|---|---|---|---|---|
| 文件类型和权限 | 所有者 | 所属组 | 文件大小 | 最后修改时间 | 文件名 |
文件处理命令
mkdir
-
建立目录 make directory
-
mkdir -p [目录名]
- -p 递归创建
cd
-
切换所在目录 change directory
-
cd [目录]
- ~ 家目录
- . 当前目录
- .. 上级目录
-
相对路径是参照当前所在目录
-
绝对路径是从根目录开始
-
按TAB键可以补全命令和目录
pwd
- 显示当前目录 pwd
rmdir
- 删除目录 remove empty directory
- rmdir [目录名]
rm
-
删除文件或者目录 remove
-
rm [文件或者目录]
- -r 删除目录
- -f 强制删除
-
rm -rf 文件或者目录] 递归强制删除所有目录
cp
-
copy 复制命令
-
copy [源文件或者目录] [目标文件]
- -r 复制目录,默认是复制文件
- -i 会在复制文件的时候给提示,如果复制的目标文件存在,会给你提示是否要覆盖
mkdir a
mkdir b
cd a/
touch 1.txt
cp 1.txt ~/b/
mv
- 移动文件或者改名 move
- mv [源文件或者目录] [目标文件]
mv 1.txt 11.txt
ln
-
链接命令,生成链接文件
link -
ln -s [源文件] [目标文件]
- -s 创建软链接
-
类似Windows快捷方式
-
修改任意一个文件,另一个都会改变
-
删除源文件,软链接不能使用
-
软链接源文件必须写绝对路径
# ln -s /root/b/1.txt 2.txt
文件搜索命令
locate
- 在后台数据库中按文件名搜索,速度比较快
- 数据保存在
/var/lib/mlocate/mlocate.db后台数据库,每天更新一次 - 可以
updatedb命令立刻更新数据库 - 只能搜索文件名
yum -y install mlocate
whereis
-
搜索命令所在路径以及帮助文档所在位置
-
whereis 命令名
whereis ls- -b 只查找可执行文件
- -m 只查找帮助文件
-
可以查看Shell自带的命令,如
whereis cd
which
- 可以看到别名
which ls - 能看到的都是外部安装的命令
- 无法查看Shell自带的命令,如
which cd
环境变量
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
- 定义的是系统搜索命令的路径
- echo $PATH
find
- 文件搜索命令
- find [搜索范围] [搜索条件]
按名称搜索
-
避免大范围的搜索,会非常消耗系统资源
find / -name 11.txt
通配符
-
find是在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
-
通配符
*匹配任意内容?匹配任意一个字符[]匹配任意一个中括号内的字符
# touch abc.txt
# find . -name "ab[cdef].txt"
-i
- 不区分大小写
find . -iname "Ab[cdef].txt"
-user
- 按所有者进行搜索
find /root -user root
find /root -nouser
按时间搜索
find . -mtime +5
| 参数 | 含义 |
|---|---|
| atime | 文件访问时间 |
| ctime | 改变文件属性 |
| mtime | 修改文件内容 |
| 参数 | 含义 |
|---|---|
| -5 | 5天内修改的文件 |
| 5 | 5天前当前修改的文件 |
| +5 | 5天前修改的文件 |
按大小搜索
- k小写,M大写
find . -size +0k
| 参数 | 含义 |
|---|---|
| -8k | 小于8K |
| 8k | 等于8K |
| +8k | 大于8K |
| +8M | 小于8M |
综合应用
find /tmp -size +10k -a -size -20k
- 查找/etc目录下,大于10KB并且小于20KB的文件
- -a and 逻辑与,两个条件都满足
- -o or 逻辑或,两个条件满足一个就可以
find /tmp -size +10k -a -size -20k -exec ls -lh {} ;
- exec 对上个命令的结果进行操作
grep
-
在文件当中匹配符合条件的字符串
-i忽略大小写-v排除指定字符串
-
find命令,在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
-
grep命令 在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式时包含匹配
vi a.txt
grep b a.txt
grep -v b a.txt
grep -i f a.txt
压缩与解压缩命令
zip格式
- 压缩文件或目录,是一种压缩格式, 源文件不会消失,会新增一个压缩包
| 功能 | 命令 |
|---|---|
| 压缩文件 | zip 压缩文件名.zip 源文件 |
| 压缩目录 | zip -r 压缩目录名.zip 源目录 |
| 解压 | unzip 压缩目录名.zip |
mkdir book
touch book/1.txt
touch book/2.txt
zip -r book.zip book
rm -rf book/ rmdir book
unzip book.zip
gzip
- gzip为高压,可以把文件压缩得更小
- gzip命令不支持目录
| 命令 | 示例 | 含义 |
|---|---|---|
| gzip 源文件 | gzip book.txt | 压缩为.gz格式的压缩文件,源文件会消失 |
| gzip -c 源文件 > 压缩文件 | gzip -c book.txt > book.txt.gz | 压缩为.gz格式的压缩文件,源文件不会消失 |
| gzip -r 目录 | gzip -r book | 把目录下的每个子文件都变成压缩包,并删除原文件,当前目录无变化 |
| gzip -d 压缩文件名 | gzip -d 1.txt.gz | 解压缩文件,不保留压缩包 |
| gunzip 压缩文件 | gunzip 2.txt.gz | 解压缩文件,也不保留压缩包 |
- 压缩是压缩目录下的文件
touch book.txt
mkdir book
touch book/1.txt
touch book/2.txt
gzip book.txt //源文件会消失
gzip -c 1.txt > 1.txt.gz //源文件不消失
gzip book.txt //压缩为.gz格式文件,源文件会消失
gzip -r book //把目录下的每个子文件都变成压缩包
cd book
gzip -d 1.txt.gz //解压缩文件,不保留压缩包
gunzip 2.txt.gz
tar
-
打包命令,只打包并不压缩,既可以打包文件目录又可以是文件
-
tar -cvf打包文件名 源文件- -c 打包
- -v 显示过程
- -f 指定打包后的文件名
tar -cvf book.tar book //会打包出一个book.tar文件
-
x 解开包
tar -xvf book.tar
5.5.4 tar.gz压缩格式
zip可以压缩目录但压缩效率不高,gzip压缩效率高但不支持目录- 可以先打包为
.tar格式,再压缩为.gz格式 -c 压缩为.tar.gz格式 -x 解压缩.tar.gz格式
| 命令 | 示例 | 含义 |
|---|---|---|
tar -zcvf 压缩包名 .tar.gz源文件 | tar -zcvf b.tar.gz book | 可以先打包为.tar格式,再压缩为.gz格式,将 b 目录打包并压缩为 b.tar.gz |
| tar -zxvf 压缩包名.tar.gz | tar -zxvf b.tar.gz | 解压tar.gz压缩包 |
tar -zcvf b.tar.gz book
tar -zxvf b.tar.gz
关机和重启命令
shutdown
-
shutdown 关机命令
- -c 取消前一个关机命令
- -h 关机
- -r 重启
shutdown -r 06:00 在早晨六点重启
shutdown -c
init
关机
init 0
重启
init 6
logout
退出登录
logout
查看登录用户信息
w
查看登录用户信息
- USER 登录的用户名
- TTY 登录的终端 tty1 本地终端 pts/0远程终端
- FROM 登录的IP
- LOGIN 登录时间
- IDLE 用户闲置时间
- JCPU 该终端所有进程占用的时间
- PCPU 当前进程所占用的时间
- WHAT 正在执行的命令
who
-
查看登录用户信息
- USER 登录的用户名
- TTY 登录的终端 tty1 本地终端 pts/0远程终端
- LOGIN 登录时间(登录的IP)
last
-
查看当前登录和过去登录的用户信息
-
默认读取
/var/log/wtmp文件- 用户名
- 登录终端
- 登录IP
- 登录时间
- 退出时间(在线时间)
lastlog
-
查看所有用户的最后一次登录时间
- 用户名
- 登录终端
- 登录IP
- 最后一次登录时间
文件查看命令
cat
-
cat 命令用于连接文件并打印到标准输出设备上。
-
cat [-AbeEnstTuv] [--help] [--version] fileName
-
参数
-
-n 或 --number:由 1 开始对所有输出的行数编号。
cat -n textfile1
-
more
- Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
- more fileName
more a.txt
head
- 用来显示开头某个数量的文字区块
head -5 readme.txt //展示该文件当中前 5 行的内容
tail
-
tail命令可用于查看文件的内容
-
有一个常用的参数 -f 常用于查阅正在改变的日志文件。
-
tail [参数] [文件]
-
参数
-
-f 循环读取
-
-n<行数> 显示文件的尾部 n 行内容
tail -5 mail.txt tail -f access.log
-
vi编辑器
操作模式
模式的切换和模式含义:
| 模式名 | 含义 |
|---|---|
| 命令模式 | 等待输入的模式 |
| 输入模式 | 编辑模式,用于输入文本 |
| 底行(尾行、末行)模式 | 可以输入指令,搜索,保存 |
a 在光标后 append , i 在当前光标下插入,o 换行插入,s 删除当前光标的字符并插入
打开文件
- 输入
vi 文件名可以进入这个模式, 打开文件定位到第一行
底行模式
| 命令 | 含义 |
|---|---|
| :w | 把写入保存到硬盘中 |
| :q | 退出当前VI编辑器打开的文件 |
| :wq! | 强制保存 |
命令模式
光标
| 命令 | 含义 |
|---|---|
| h | 光标左移 |
| j | 光标下移 |
| k | 光标上移 |
| l | 光标右移 |
插入
| 命令 | 含义 |
|---|---|
| i | 在当前位置插入 |
| a | 在当前光标右边插入 |
| A | 在当前光标右的行末插入文件 |
| o | 在光标所在行的下方插入一行并切换到输入模式 |
| O | 在光标所在行的上方插入一行并切换到输入模式 |
| s | 删除当前光标位置并插入 |
删除
| 命令 | 含义 |
|---|---|
| x | 删除当前字符 |
| dd | 删除光标所在行 |
撤销
| 命令 | 含义 |
|---|---|
| u | 撤消最后执行的一次命令 |
剪切类
| 命令 | 含义 |
|---|---|
| dd | 删除光标所在行 |
| yy | 复制光标所在的行 |
| p | 在光标所在行的下方粘贴 |
| P | 在光标所在行的上方粘贴 |
替换类
| 命令 | 含义 |
|---|---|
| r | 替换当前位置字符 |
搜索
| 命令 | 含义 |
|---|---|
| / | 输入/可以在当前的文件中查找该字符串 |
| n | 查找下一个 |
| Shift-N | 查找上一个 |
修正错误
| 命令 | 含义 |
|---|---|
| :s/old/new | 把光标所在行的old替换成new |
| :s/old/new/g | 把所有行的old替换成new |