一、基础知识
1.1 Linux系统的文件结构
/bin 二进制文件,系统常规命令
/boot 系统启动分区,系统启动时读取的文件
/dev 设备文件
/etc 大多数配置文件
/home 普通用户的家目录
/lib 32位函数库
/lib64 64位库
/media 手动临时挂载点
/mnt 手动临时挂载点
/opt 第三方软件安装位置
/proc 进程信息及硬件信息
/root 临时设备的默认挂载点
/sbin 系统管理命令
/srv 数据
/var 数据
/sys 内核相关信息
/tmp 临时文件
/usr 用户相关设定
1.2 Linux系统命令行的含义
示例:root@app00:~#
root //用户名,root为超级用户
@ //分隔符
app00 //主机名称
~ //当前所在目录,默认用户目录为~,会随着目录切换而变化,例如:(root@app00:/bin# ,当前位置在bin目录下)
# //表示当前用户是超级用户,普通用户为$,例如:("yao@app00:/root$" ,表示使用用户"yao"访问/root文件夹)
1.3 命令的组成
示例:命令 参数名 参数值
二、基础操作
2.1 重启系统
(1)立刻关机
shutdown -h now 或者 poweroff
(2)两分钟后关机
shutdown -h 2
2.2 关闭系统
(1)立刻重启
shutdown -r now 或者 reboot
(2)两分钟后重启
shutdown -r 2
2.3 帮助命令(help)
ifconfig --help //查看 ifconfig 命令的用法
2.4 命令说明书(man)
man shutdown //打开命令说明后,可按"q"键退出
2.5 切换用户(su)
su yao //切换为用户"yao",输入后回车需要输入该用户的密码
exit //退出当前用户
三、目录操作
3.1 切换目录(cd)
cd / //切换到根目录
cd /bin //切换到根目录下的bin目录
cd ../ //切换到上一级目录 或者使用命令:cd ..
cd ~ //切换到home目录
cd - //切换到上次访问的目录
cd xx(文件夹名) //切换到本目录下的名为xx的文件目录,如果目录不存在报错
cd /xxx/xx/x //可以输入完整的路径,直接切换到目标目录,输入过程中可以使用tab键快速补全
3.2 查看目录(ls)
ls //查看当前目录下的所有目录和文件
ls -a //查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -l //列表查看当前目录下的所有目录和文件(列表查看,显示更多信息),与命令"ll"效果相同
ls /bin //查看指定目录下的所有目录和文件
3.3 创建目录(mkdir)
mkdir tools //在当前目录下创建一个名为tools的目录
mkdir /bin/tools //在指定目录下创建一个名为tools的目录
3.3 删除目录与文件(rm)
rm 文件名 //删除当前目录下的文件
rm -f 文件名 //删除当前目录的的文件(不询问)
rm -r 文件夹名 //递归删除当前目录下此名的目录
rm -rf 文件夹名 //递归删除当前目录下此名的目录(不询问)
rm -rf * //将当前目录下的所有目录和文件全部删除
rm -rf /* //将根目录下的所有文件全部删除【慎用!相当于格式化系统】
3.4 修改目录(mv)
mv 当前目录名 新目录名 //修改目录名,同样适用与文件操作
mv /usr/tmp/tool /opt //将/usr/tmp目录下的tool目录剪切到 /opt目录下面
mv -r /usr/tmp/tool /opt //递归剪切目录中所有文件和文件夹
3.5 拷贝目录(cp)
cp /usr/tmp/tool /opt //将/usr/tmp目录下的tool目录复制到 /opt目录下面
cp -r /usr/tmp/tool /opt //递归剪复制目录中所有文件和文件夹
3.6 搜索目录(find)
find /bin -name 'a*' //查找/bin目录下的所有以a开头的文件或者目录
3.7 查看当前目录(pwd)
pwd //显示当前位置路径
四、文件操作
4.1 新增文件(touch)
touch a.txt
//在当前目录下创建名为a的txt文件(文件不存在),如果文件存在,将文件时间属性修改为当前系统时间
4.2 删除文件(rm)
rm 文件名 //删除当前目录下的文件
rm -f 文件名 //删除当前目录的的文件(不询问)
4.3 编辑文件(vi、vim)
模式的切换
在刚进入Vim时,便进入了普通模式,在普通模式中可以按i(插入)或者a(附加)进入插入模式,在普通模式中按:进入命令行模式;在命令行模式中和插入模式中按ESC返回到普通模式。如图:
普通模式的命令
按Esc进入普通模式
命令 说明
h 左移
l 右移
j 下移
k 上移
w 移动到下一个单词的开头
e 移动到当前单词的结尾
b 移动到上一个单词的开头
ge 移动到前一个单词的结尾
^ 移动到行头
$ 移动到行尾
f<字母> 向后搜索<字母>并跳转到第一个匹配的位置
F<字母> 向前搜索<字母>并跳转到第一个匹配的位置
t<字母> 向后搜索<字母>并跳转到第一个匹配位置之前的字母
T<字母> 向前搜索<字母>并跳转到第一个匹配位置之后的字母
shift+zz 退出vim
x 删除游标所在的字符
3x 删除3个连续字符,以此类推
X 删除游标所在的前一个字符
Delete 同x
dd 删除整行
2dd 向下删除2行,以此类推
dw 删除一个单词(不适用中文)
daw(delete a word) 删除一个单词
dnw(n替换为相应数字) 删除n个单词
d$或D 删除至行尾
d^ 删除至行首
dG 删除到文档结尾处
d1G 删除至文档首部
.(小数点) 重复上一次的命令操作
gg 游标移动到第一行
G 游标移动到最后一行
nG 游标移动到第n行(如果默认没有显示行号,请先进入命令行模式,输入:set nu以显示行号)
Ctrl+o 快速回到上一次(跳转前)光标所在位置
yy 复制游标所在的整行
3yy 向下复制3行,以此类推
y^ 复制至行首,不含光标所在处字符
yw 复制一个单词
y2w 复制两个单词
yG 复制至文本末
y1G 复制至文本开头
p 粘贴至光标后
P 粘贴至光标前
ddp 剪切并粘贴
r+<待替换字母> 将游标所在字母替换为指定字母
R 连续替换,直到按下Esc
cc 替换整行,即删除游标所在行,并进入插入模式
cw 替换一个单词。即删除一个单词,并进入插入模式
C(大写) 替换游标以后至行末
~ 反转游标所在字母大小写
u(n) 撤销一次或n次操作
U(大写) 撤销当前行的所有修改
Ctrl+r redo,即撤销undo的操作
>> 整行向右缩进
<< 整行向左回退
/+<需要查找的字符串>+回车 向下查找(进入查找之后,输入n和N可以继续查找,n是查找下一个内容,N查找上一个内容,命令行模式下输入noh回车可取消搜索)
?+<需要查找的字符串>+回车 向上查找(进入查找之后,输入n和N可以继续查找,n是查找下一个内容,N查找上一个内容,命令行模式下输入noh回车可取消搜索)
\* 寻找游标所在处的单词
插入模式的命令
在普通模式下使用下面的键将进入插入模式,并可以从相应的位置开始输入。注意每次要先回到普通模式才能切换成以不同的方式进入插入模式。
命令 说明
i 在当前光标处进行编辑
I 在行首插入
A 在行末插入
a 在光标后插入编辑
o 在当前行后插入一个新行
O 在当前行前插入一个新行
cw 替换从光标所在位置到一个单词的结尾字符
命令行模式的命令
命令 说明
:q! 强制退出vim,不保存
:q 退出vim
:wq! 强制保存并退出vim
:w <文件路径> 另存为
:saveas <文件路径> 另存为
:x 保存并退出vim
:wq 保存并退出vim
:set nu 显示行号
:set shiftwidth=10 设置缩进为10个字符,以此类推(输入Esc回到普通模式,再次尝试>>看缩进是否变化)
:ce(center) 本行内容居中
:ri(right) 本行内容居右
:le(left) 本行内容居左
4.4 查看文件
cat a.txt //查看文件最后一屏内容
less a.txt //PgUp向上翻页,PgDn向下翻页,"q"退出查看
more a.txt //显示百分比,回车查看下一行,空格查看下一页,"q"退出查看
tail -100 a.txt //查看文件的后100行,"Ctrl+C"退出查看
五、文件权限
5.1 权限说明
文件权限简介:'r' 代表可读(4),'w' 代表可写(2),'x' 代表执行权限(1),括号内代表"8421法"
##文件权限信息示例:-rwxrw-r--
-第一位:'-'就代表是文件,'d'代表是文件夹
-第一组三位:拥有者的权限
-第二组三位:拥有者所在的组,组员的权限
-第三组三位:代表的是其他用户的权限
5.2 文件权限
普通授权 chmod +x a.txt
8421法 chmod 777 a.txt //1+2+4=7,"7"说明授予所有权限
六、打包与解压
6.1打包文件
1、".zip" 格式
".zip" 是 Windows 中最常用的压缩格式,Linux 也可正确识别 ".zip" 格式,这可以方便的和 Windows 系统通用压缩文件
".zip" 格式压缩命令:
zip [选项] 压缩包名 源文件或源目录
选项: -r:压缩目录
zip mytxt.zip abc.txt abd.txt bcd.txt
# 把三个 txt 文件压缩成一个 zip 文件
".zip" 格式解压缩命令:
unzip [选项] 压缩包名
选项:-d:指定解压缩位置
unzip -d /home/hepingfly/abc/ mytxt.zip
# 如果不指定 -d 参数,默认解压到当前目录下
2、".gz" 格式(不能打包)
".gz" 格式压缩命令:
gzip [选项] 源文件
选项:
-c:将压缩数据输出到标准输出中,可以用于保留源文件
-d:解压缩
-r:压缩目录
gzip 压缩文件后会把源文件删除掉,它是不支持保留源文件的
[root@hepingfly hepingfly]# gzip abc.txt
[root@hepingfly hepingfly]# ll
总用量 12
-rw-rw-r--. 1 hepingfly hepingfly 60 2月 22 01:33 abc.txt.gz
# 压缩完之后源文件也会被删除掉
----------------------------------------------------------------------------
[root@hepingfly hepingfly]# gzip -c bcd.txt > bcd.txt.gz
[root@hepingfly hepingfly]# ll
总用量 16
-rw-------. 1 hepingfly hepingfly 0 2月 21 00:37 bcd.txt
-rw-r--r--. 1 root root 28 2月 25 00:55 bcd.txt.gz
# 你使用 gzip -c bcd.txt 命令,会把压缩数据输出到屏幕上,现在我不让它输出到屏幕上,而是重定向到一个压缩文件中,这样就实现了在压缩你文件的同时不删除源文件
----------------------------------------------------------------------------
[root@hepingfly hepingfly]# gzip -r aaaa/
[root@hepingfly hepingfly]# ll aaaa/
总用量 8
-rw-r--r--. 1 root root 26 2月 25 01:02 a.txt.gz
-rw-r--r--. 1 root root 26 2月 25 01:02 b.txt.gz
# 你使用 gzip -r 命令,它是把这个目录下的所有文件都压缩,而不会把这个目录压缩(不能打包)
".gz" 格式解压缩命令:
gzip -d 压缩包名
gunzip 压缩包名
上面两个命令都可以
3、".bz2 格式(不能压缩目录)"
".bz2" 格式,是 Linux 的另一种压缩格式,从理论上来讲,".bz2" 格式的算法更先进、压缩比更好;而 ".gz" 格式相对来讲压缩时间更快
".bz2" 格式压缩命令:
bzip2 [选项] 源文件
选项:
-d:解压缩
-k:压缩时保留源文件
-v:显示压缩的详细信息
[root@hepingfly hepingfly]# bzip2 -k bcd.txt
[root@hepingfly hepingfly]# ll
总用量 20
-rw-------. 1 hepingfly hepingfly 0 2月 21 00:37 bcd.txt
-rw-------. 1 hepingfly hepingfly 14 2月 21 00:37 bcd.txt.bz2
# 保留源文件压缩
注:
这条命令不能压缩目录,压缩目录就会报错。前面的 gzip 命令是不能打包,你用 gzip 命令压缩目录,它会把你目录下的文件进行压缩,不会把你这个目录进行压缩
".bz2" 格式解压缩命令:
bzip2 -d 压缩包
bunzip2 压缩包
上面两个命令都可以
4、".tar " 格式(打包不会压缩)
".tar" 格式的打包和解打包都使用 tar 命令,区别只是选项不同。
".tar" 格式打包命令:
tar [选项] [-f 压缩包名] 源文件或目录
选项:
-c:打包
-f:指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名。
-v:显示打包文件过程
[root@hepingfly hepingfly]# tar -cvf test.tar abd.txt bcd.txt
abd.txt
bcd.txt
".tar" 格式解打包命令:
tar [选项] 压缩包
选项:
-x:解打包
-f:指定压缩包的文件名
-v:显示解打包文件过程
[root@hepingfly hepingfly]# tar -xvf test.tar
abd.txt
bcd.txt
5、".tar.gz" 和 ".tar.bz2" 格式
使用 tar 命令直接打包压缩
tar [选项] 压缩包 源文件或目录
选项:
-z:压缩和解压缩 ".tar.gz" 格式
-j: 压缩和解压缩 ".tar.bz2" 格式
# 压缩
[root@hepingfly hepingfly]# tar -jcvf test.gz.bz2 abd.txt bcd.txt
abd.txt
bcd.txt
[root@hepingfly hepingfly]# ll
总用量 24
-rw-r--r--. 1 root root 160 2月 25 23:11 test.gz.bz2
---------------------------------------------------------------
# 解压缩
[root@hepingfly hepingfly]# tar -jxvf test.gz.bz2
abd.txt
bcd.txt
----------------------------------------------------------------
# 压缩
[root@hepingfly hepingfly]# tar -zcvf test.tar.gz abd.txt bcd.txt
abd.txt
bcd.txt
[root@hepingfly hepingfly]# ll
总用量 12
-rw-r--r--. 1 root root 0 2月 22 02:09 abd.txt
-rw-------. 1 hepingfly hepingfly 0 2月 21 00:37 bcd.txt
-rw-r--r--. 1 root root 154 2月 25 23:14 test.tar.gz
----------------------------------------------------------------
# 解压缩
[root@hepingfly hepingfly]# tar -zxvf test.tar.gz
abd.txt
bcd.txt
--------------------------------------------------------------
# 只查看不解压
[root@hepingfly hepingfly]# tar -ztvf test.tar.gz
-rw-r--r-- root/root 0 2019-02-22 02:09 abd.txt
-rw------- hepingfly/hepingfly 0 2019-02-21 00:37 bcd.txt
--------------------------------------------------------------
# 解压到指定目录(-C 一定要跟在压缩包后面)
[root@hepingfly hepingfly]# tar -zxvf test.tar.gz -C aaaa/
abd.txt
bcd.txt
--------------------------------------------------------------
# 解压指定文件
[root@hepingfly hepingfly]# tar -ztvf test.tar.gz # 我先查看这个压缩包里面有哪些文件
-rw-r--r-- root/root 0 2019-02-22 02:09 abd.txt
-rw------- hepingfly/hepingfly 0 2019-02-21 00:37 bcd.txt
[root@hepingfly hepingfly]# tar -zxvf test.tar.gz -C aaaa/ abd.txt
abd.txt
# 我只把 abd.txt 文件解压到 aaaa 目录下