一、与Linux相关的基础知识
1.1 Linux历史
- 1984年,自由软件之父 Richard M.Stallman 发起了GNU组织
- 1991年,Linux之父 Linux Torvalds开发了Linux内核
1.2 Linux发行版
- Redhat 企业级操作系统
- CentOS 社区企业级操作系统,开源
- Ubuntu 社区维护,主要作为手机系统或电脑桌面
- Debian 金融,银行
二、Bash shell
- 功能介绍
- 文件管理
- 权限管理
- 用户管理
- 磁盘管理
- 网络管理
- 软件管理
- 服务管理
2.1 Bash shell 提示符及语法
-
提示符
-
语法
命令 | 选项 | 参数 |
---|---|---|
command | options | parameters |
[root@web01~]#ls #命令
[root@web01~]#ls -a #命令+选项
[root@web01~]#ls -a /home/ #命令+选项+参数
2.2 Bash shell的基本特性
(1)tabs补全功能
- 命令补全
- 目录补全
(2)常用快捷键
- Ctrl + a :光标跳转至正在输入的命令行首部
- Ctrl + e :光标跳转至正在输入的命令行尾部
- Ctrl + c :终止前台运行的程序
- Ctrl + d :退出当前shell
- Ctrl + z :暂停任务,挂到后台
- Ctrl + l :清屏
- Ctrl + k :删除从光标到行末的所有字符
- Ctrl + u :删除从光标道行首的所有字符
- Ctrl + r :搜索历史命令,利用关键字
(3)History历史命令
- !!(2个感叹号):查看所有执行过的历史命令
- !数字(1个感叹号+一个数字n):执行历史中第n行命令
#01、查看所有的历史命令
[root@web01~]#ll
[root@web01~]#ls
anaconda-ks.cfg ceshi
![root@web01~]#history
167 ls
168 history
#02、执行某条历史命令
[root@web01~]#!167 #执行历史命令中第167条命令
ls #显示那条历史命令
anaconda-ks.cfg ceshi #执行后的输出
#03、使用!cat,调用最近执行过的cat命令
[root@web01~]#cat 1.txt
I
[root@web01~]#!cat
cat 1.txt
I
(4)alias别名
- 定义别名
[root@web01~]#hostname
web01
[root@web01~]#alias wk='hostname'
[root@web01~]#wk
web01
- 取消别名
[root@web01~]#unalias wk
[root@web01~]#wk
-bash: wk: command not found
- 永久生效方法
echo "alias wk='hostname'" >> /etc/bashrc
(5)帮助手册
- –help
[root@web01~]#ls --help
Usage: ls [OPTION]... [FILE]...
- man手册
[root@web01~]#man ls
三、Linux文件系统
3.1 Linux目录结构
- 存储命令相关的目录
- /bin 普通用户使用的命令
- /sbin 管理员使用的命令
- 用户家相关目录
- home 普通用户家目录,默认为/home/username
- root 超级管理员root的家目录,普通用户无操作权限
- 系统文件目录
- /usr 相当于/Windows
- /usr/local 软件安装目录
- /usr/bin 普通用户使用的应用程序
- /usr/sbin 管理员用户使用的应用程序
- /usr/lib 32位库文件
- /usr/lib64 64位库文件
- 系统启动目录
- /boot 存放系统启动相关文件
- 配置文件相关目录
- /etc 存放配置文件
- /etc/sysconfig/network-script/ifcfg- 网卡配置文件
- /etc/hostname 主机名配置文件
- 设备相关目录
- /dev/null #黑洞设备,只进不出,类似垃圾回收站
- /dev/random #生成随机数
- /dev/zero #能源源不断的产生数据
- 可变的目录
- /var 存放系统一直在变化的文件
- /var/tmp 进程产生的临时文件
- /var/log 日志文件
- /tmp 系统临时目录
- 虚拟系统目录
- /proc 进程状态文件
3.2 绝对路径与相对路径
- 绝对路径:从/开始的路径
- 相对路径:从当前目录开始的路径
- .和…的含义
- 一个点:代表当前目录
- 二个点:代表当前目录的上层目录
- 路径切换命令cd
- cd 目录:进入到某个目录
- cd - :返回到上一次所在目录
- cd ~:返回到当前用户的家目录
- cd …:切换到当前目录上级目录
#01、进入某个目录(cd 目录)
[root@web01~]#ll
total 8
-rw-r--r-- 1 root root 2 Apr 20 12:27 1.txt
-rw-------. 1 root root 1696 Jan 1 11:54 anaconda-ks.cfg
drwxr-xr-x 2 root root 19 Apr 9 10:30 ceshi
[root@web01~]#cd ceshi
[root@web01ceshi]#pwd
/root/ceshi
#02、返回到上一次所在目录
[root@web01~]#cd test1
[root@web01test1]#pwd
/root/test1
[root@web01test1]#cd /root/test2
[root@web01test2]#pwd
/root/test2
[root@web01test2]#cd -
/root/test1
[root@web01test1]#pwd
/root/test1
#03、返回到当前目录所在家目录
[root@web01sysconfig]#pwd
/etc/sysconfig
[root@web01sysconfig]#cd ~
[root@web01~]#pwd
/root
四、Linux常用命令
4.1 文件操作命令
- touch
- touch file
- touch 文件集合
命令含义:创建文件
#01、创建单个文件
[root@web01test1]#touch 1.txt
[root@web01test1]#ll
total 0
-rw-r--r-- 1 root root 0 Apr 21 10:30 1.txt
#02、创建多个文件
[root@web01test1]#touch 1.txt 2.txt
[root@web01test1]#ll
total 0
-rw-r--r-- 1 root root 0 Apr 21 10:31 1.txt
-rw-r--r-- 1 root root 0 Apr 21 10:31 2.txt
#03、集合创建不连续的文件
[root@web01test1]#touch {a,b,c}
[root@web01test1]#ll
total 0
-rw-r--r-- 1 root root 0 Apr 21 10:34 a
-rw-r--r-- 1 root root 0 Apr 21 10:34 b
-rw-r--r-- 1 root root 0 Apr 21 10:34 c
#04、集合创建连续的文件
[root@web01test1]#touch {1..4}
[root@web01test1]#ll
total 0
-rw-r--r-- 1 root root 0 Apr 21 10:35 1
-rw-r--r-- 1 root root 0 Apr 21 10:35 2
-rw-r--r-- 1 root root 0 Apr 21 10:35 3
-rw-r--r-- 1 root root 0 Apr 21 10:35 4
- mkdir
命令含义:创建目录
-v #显示详细信息
-p #递归创建按目录
#01、创建单个目录
[root@web01test1]#mkdir test
[root@web01test1]#ll
total 0
drwxr-xr-x 2 root root 6 Apr 21 10:41 test
#02、递归创建目录
[root@web01test1]#mkdir -pv /root/test1/test/test1/test2
[root@web01test1]#tree
.
└── test
└── test1
└── test2
- tree
命令含义:查看该目录下面的所有目录或文件
[root@web01test1]#tree
.
└── test
└── test1
└── test2
- cp
命令含义:拷贝目录文件
参数
-v 显示命令执行的操作过程
-r 递归处理目录及子目录
-p 保留源文件或目录的属性
#01、拷贝单个文件
[root@web01test1]#cp 1.txt /root/test2/1.txt
[root@web01test1]#cd /root/test2
[root@web01test2]#ll
total 0
-rw-r--r-- 1 root root 0 Apr 21 10:52 1.txt
#02、递归复制复制目录
cp -r /etc/ /tmp/
- mv
命令含义:移动目录或文件
#01、原地改名
[root@web01test2]#ll
total 0
-rw-r--r-- 1 root root 0 Apr 21 10:52 1.txt
[root@web01test2]#mv 1.txt 2.txt
[root@web01test2]#ll
total 0
-rw-r--r-- 1 root root 0 Apr 21 10:52 2.txt
#02、移动目录到目录
[root@web01test1]#ll
total 0
drwxr-xr-x 2 root root 6 Apr 21 10:58 li
[root@web01test1]#mv li /root/test2/
[root@web01test1]#cd /root/test2/
[root@web01test2]#ll
total 0
drwxr-xr-x 2 root root 6 Apr 21 10:58 li
- rm
命令含义:删除文件或目录
参数
-r 递归删除
-f 强制删除,不提醒
-v 显示删除的详细过程
#01、删除文件
rm -f test01.txt
#02、删除目录
rm -rf /test01
#03、删除某个目录下所有的内容
rm -rf /test//*
#04、删除包含某些字符的文件
rm -rf test*
4.2 文件查看命令
- cat
命令含义:查看文件内容
参数:
-n 指定查看文件的行数
-A 查看文件中的特殊符号
tac pass 倒序查看文件
#01、查看原文件
[root@web01test2]#cat 1.txt
I love you
wuhan
英雄的城市
#02、查看文件,显示行号
[root@web01test2]#cat -n 1.txt
1 I love you
2 wuhan
3 英雄的城市
#03、查看文件显示特殊符号(判断文件中是否有空格)
[root@web01test2]#cat -A 1.txt
I love you$
wuhan$
M-hM-^KM-1M-iM-^[M-^DM-gM-^ZM-^DM-eM-^_M-^NM-eM-8M-^B$
#04、倒叙查看文件
[root@web01test2]#tac pass 1.txt
tac: failed to open ‘pass’ for reading: No such file or directory
英雄的城市
wuhan
I love you
- less/more
命令含义:查看文件内容
less/more 1.txt #上下键为移动,空格为翻页
- head
命令含义:显示文件内容前多少行
参数:
-n 显示文件前n行
默认显示前十行
[root@web01test2]#head -2 1.txt
I love you
wuhan
[root@web01test2]#cat 1.txt
I love you
wuhan
英雄的城市
- tail
命令含义:显示文件内容后多少行
参数:
-n 显示文件后n行
-f 查看文件尾部的变化也可携程tailf
默认显示后十行
[root@web01test2]#cat 1.txt
I love you
wuhan
英雄的城市
[root@web01test2]#tail -1 1.txt
英雄的城市
4.3 文件下载命令
- wget
从网上下载文件
参数:
-O 将链接中的内容下载到指定位置并修改参数
安装方法:
yum install -y wget
- curl
命令作用:从网上拉取文件
参数:
-o 将链接中的内容下载到指定位置并修改参数
安装方法:
yum install -y wget
#01、查看网络上文件的内容,如阿里源
curl http://mirrors.aliyun.com/repo/Centos-7.repo
#02、下载阿里云centos7文件到/etc/yum.repos.d/并改名为CentOS-Base.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7
- rz/sz
命令作用:上传/下载文件
安装:
yum install -y lrzsz
说明:
rz:只能上传文件,必须小于4G,也不支持断点续传
sz:只能下载
rz #然后选择windows中的文件进行下载
sz 1.txt #然后选择windows的文件夹进行保存
4.4 字符处理类命令
- sort
命令用途:按照指定方式进行排序
参数:
-t 指定分隔符
-n 根据字符串数值进行比较
-k 指定那一列开始排序
测试环境:
[root@web01test1]#cat file.txt
b:3
c:2
a:4
e:5
d:1
f:11
#01、按照第一排进行排序
[root@web01test1]#sort file.txt
a:4
b:3
c:2
d:1
e:5
f:11
#02、按照第二排进行排序
[root@web01test1]#sort -t ":" -n -k2 file.txt
d:1
c:2
b:3
a:4
e:5
f:11
- uniq
命令作用:去除文件中重复的内容
参数:
-c #计算重复的数量,显示在第一行
测试环境:
[root@web01test1]#cat file.txt
123
abc
123
abc
#01、去重并统计重复的数量
[root@web01test1]#cat file.txt | sort |uniq
123
abc
[root@web01test1]#cat file.txt | sort |uniq -c
2 123
2 abc
- wc
五、Linux文件属性
5.1 文件属性
[root@web01~]#ls -l 1.txt
-rw-r--r-- 1 root root 2 Apr 20 12:27 1.txt
#-rw-r--r-- 第一个字符是文件类型,其他的是权限
#1 硬链接的次数
#root 文件属于哪个用户
#root 文件属于哪个组
#2 文件大小
#apr 20 12:27 日期+时间
#1.txt 文件名
5.2 文件类型
文件类型字母 | 含义 |
---|---|
- | 普通文件(文本,二进制,压缩文件,图片,日志等) |
d | 目录文件 |
b | 设备文件(块设备) |
c | 设备文件(字符设备) |
s | 套接字文件 |
l | 链接文件 |
5.3 Linux链接文件
(1)Inode和Block
- Inode:用于记录文件按大小、创建时间、所有者等信息
- Block:用于记录文件真实的内容
(2)软链接
- windows的快捷方式
- 实战
#01、java1.1版本发布
[root@web01~]#mkdir /data/java-v1.1 -p
[root@web01~]#echo "123" > /data/java-v1.1/index.html
[root@web01~]#ln -s /data/java-v1.1 /data/java
[root@web01~]#cd /data/
[root@web01data]#ll
total 2240
lrwxrwxrwx 1 root root 15 Apr 20 14:45 java -> /data/java-v1.1
drwxr-xr-x 2 root root 24 Apr 20 14:44 java-v1.1
#02、发布后网站查看的内容
[root@web01data]#cat /data/java/index.html
123
#03、更新版本java1.2
[root@web01data]#mkdir /data/java-v1.2
[root@web01data]#echo "456" > /data/java-v1.2/index.html
[root@web01data]#rm -f /data/java
[root@web01data]#ln -s /data/java-v1.2 /data/java
#04、查看更新后网站查看的内容
[root@web01data]#cat /data/java/index.html
456
#05、回退版本后查看
[root@web01data]#rm -f /data/java && ln -s /data/java-v1.1 /data/java
[root@web01data]#cat /data/java/index.html
123
(3)硬链接
- 多开一扇门
- 使用ln创建
六、vim编辑工具的使用
说明:
vim分为普通模式、编辑模式、末行模式、视图模式及扩展知识
安装:
yum install -y vim
6.1 普通模式
- 主要用与光标移动复制、粘贴、删除、替换
#01、命令光标跳转
G 光标跳转到文本结尾
gg 光标移动到文本开头
ngg 滚啊表跳转到当前文件内第n行
$ 光标跳转到行尾
0或^ 光标跳转到行首
#02、翻页
ctrl+f 往下翻页
ctrl+b 往上翻页
#03、复制粘贴
yy 复制光标所在单行
nyy 复制当前光标以及下面的n-1行
p 粘贴至当前光标的下一行
P 粘贴至当前光标的上一行
#04、删除、粘贴、撤销
dd 删除当前所在行
ndd 删除从当行开始的n行
dG 删除当前光标到行尾的内容
D 删除当前光标到行首的内容
x 向后删除一个字符
X 向前删除一个字符
u 撤销一次操作
#05、替换
r 替换当前光标标记的单个字符
R 进入REPLACE模式,连续替换,ESC结束
6.2 编辑模式
- 进入可编辑的状态
i #进入编辑模式
a #进入编辑模式,将当前光标往后一位
o #进入编辑模式,当前光标下添加一行
O #进入编辑模式,当前光标上添加一行
A #进入编辑模式,光标移动到本行行尾
I #进入编辑模式,光标移动到本行头部
6.3 末行模式
- 文件保存退出
:w 保持当前状态
:w! 强制保持当前状态
:q 退出不保存
:q! 强制退出
:wq 先保存再退出
:wq! 强制保存退出
:n 跳转到第n行
- 文件内容查找
/n #查找文件中含有n的内容
n #向下翻页
N #向上翻页
- 文件替换类
:1,5s#sbin#test#g 将1-5行中的sbin替换为test
:%s#sbin#test#g 将整个文档中的sbin替换为test
:%s#sbin#test#gc 将整个文档中的sbin替换为test,并提示我
- 文件另存
:w /root/test.txt 将所有内容另存为/root/test.txt中
- 文件内容读入
:r /etc/hosts #插入/etc/hosts的内容到当前光标下
:5r /etc/hosts #插入/etc/hosts的内容到当前文件中第五行下面
6.4 视图模式
#01、选中一个矩形内容进行操作
ctrl+v 进入可视块模式,选中需要注释的行
1.插入:按shift+i进入编辑模式,输入#结束ESC键
2.删除:选中内容后,按x或者d删除
3.替换:选中需要替换的内容,按下r键,然后输入替换后的内容
#02、选中整行内容进行操作
shift+v 进入可视化模式,选中整行内容
复制:选中行内容后按y键即可复制
删除:选中杭后按d键即可删除
6.5 VIM扩展知识
(1)环境变量
- 环境变量临时生效
#末行模式操作
:set nu 显示行号
:set ic 忽略大小写
:set ai 自动缩进
:set list 显示制表符
:set no[nu|ic|ai] 取消临时设定的变量
- 环境变量永久生效
vim ~/.vimrc #配置局部环境变量
set nu
set ic
#将内容写到里面可永久生效
(2)vimdiff文件对比
diff 文件对比
vimdiff vim模式打开两个文件进行对比
(3)vim异常退出解决方法
若异常退出文件test.sh,需要删除同文件名的.swp文件即可
rm -f test.sh.swp