第一章:Linux目录结构
第一节:基本介绍
linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。
在 Linux 世界里,一切皆文件。
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
第二节:Linux具体目录结构
● /lib
系统开机所需要最基本的动态链接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
● /lost+found
一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
● /etc(重要)
所有系统管理所需要的配置文件和子目录。my.conf
● /usr
用户的很多应用程序和文件都放在这个目录下。类似于Windows下的program.files目录
● /bin (usr/bin、/usr/local/bin) [usr:Unix System Resource,即Unix系统资源的缩写]
是Binary的缩写,这个目录存放着经常使用的命令
● /sbin (usr/sbin、/usr/local/sbin)
s就是per user的意思,这里存放的是系统管理员使用的系统管理程序
● /home [重点]
存放普通用户的主目录,在Linux中的每个用户都有一个自己的目录,一般该目录一用户的账号名命名
● /root [重点]
该目录为系统管理员,超级权限者的用户目录
● /boot
存放的启动Linux时使用的一些核心文件,包括一些链接文件和镜像文件
● /proc
虚拟目录,是系统内存的映射,访问这个目录来获取系统信息。
● /srv
service 的缩写,该目录是存放一些服务启动之后需要提取的数据
● /sys
Linux2.6内核的一个很大变化,该目录安装了2.6内核中新出现的一个文件系统
● /tmp
存放临时文件
● /dev
类似于 windows的设备管理器,把所有的硬件用文件的形式存储
● /media [重点]
Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
● /mnt [重点]
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。d:/ myshare
● /opt
这是给主机额外安装软件所摆放的目录。如安装 ORACLE数据库就可放到该目录下。默认为空。
● /usr/local [重点]
这是另个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序。
● /var [重点]
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。
● /selinux [security-enhanced linux] 类似 360
Selinux是一种安全子系统,它能控制程序只能访同特定文件。
第二章:Linux常用命令
第一节:目录处理命令
2.1.1 命令格式
命令格式 :命令 [-选项] [参数]
例 : ls -la /etc
说明:
个别命令使用不遵循此格式
当有多个选项时,可以写在一起
简化选项与完整选项-a 等于 --all
2.1.2 列出目录的内容:ls 命令
命令名称:ls
命令所在路径:/bin/ls
执行权限:所有用户
功能描述:显示目录文件
语法:ls 选项[-ald] [文件或目录]
-a 显示所有文件,包括隐藏文件
-l 详细信息显示
-d 查看目录属性
当使用ls -l会显示文件的详细信息,包含权限信息:
-rw-r--r--
- 文件类型(- 文件 d 目录 l 软链接文件)
rw- r-- r--
u g o
u所有者 g所属组 o其他人
r读 w写 x执行
2.1.3 创建目录:mkdir 命令
命令名称:mkdir
命令所在路径:/bin/mkdir
执行权限:所有用户
语法:mkdir -p [目录名]
功能描述:创建新目录-p 递归创建
范例: $ mkdir -p /tmp/zhang/test
$ mkdir /tmp/zhang/test1 /tmp/zhang/test2
2.1.4 切换工作目录:cd 命令
命令名称:cd
命令所在路径:shell内置
命令执行权限:所有用户
语法:cd [目录]
功能描述:切换目录
范例: $ cd /tmp/zhang/test1 切换到指定目录
$ cd .. 回到上一级目录
2.1.5 显示当前路径:pwd 命令
命令名称:pwd
命令所在路径:/bin/pwd
执行权限:所有用户
语法:pwd
功能描述:显示当前目录
范例:$ pwd
显示结果:/tmp/zhang
2.1.6 删除空目录:rmdir 命令
命令名称:rmdir
命令所在路径:/bin/rmdir
执行权限:所有用户
语法:rmdir [目录名]
功能描述: 删除空目录
范例: $ rmdir /tmp/zhang/test
2.1.7 拷贝文件:cp 命令
命令名称:cp
命令所在路径:/bin/cp
执行权限:所有用户
语法:cp -rp [原文件或目录] [目标目录]
-r 复制目录
-p 保留文件属性
功能描述:复制文件或目录
范例:$ cp -r /tmp/zhang/test1 /root
将目录/tmp/zhang/test1复制到目录/root下
$ cp -rp /tmp/zhang/test2 /tmp/zhang/test2 /root
将/tmp/zhang目录下的test1和test2目录复制到/root下,保持目录属性
2.1.8 删除文件:rm 命令
命令名称:rm
命令所在路径:/bin/rm
执行权限:所有用户
语法:rm -rf [文件或目录]
-r 删除目录
-f 强制执行
功能描述:删除文件
范例:$ rm /tmp/yum.log
删除文件/tmp/yum.log
$ rm -rf /tmp/zhang/test2
删除目录/tmp/zhang/test2
第二节:文件处理命令
2.2.1 创建文件:touch 命令
命令名称:touch
命令所在路径:/bin/touch
执行权限:所有用户
语法:touch [文件名]
功能描述:创建空文件
范例:
$ touch test
2.2.2 显示文件内容:cat 命令
命令所在路径:/bin/cat
执行权限:所有用户
语法:cat [文件名]
功能描述:显示文件内容
-n 显示行号
范例:
$ cat /etc/issue $ cat -n /etc/services
2.2.3 分屏显示:more 命令
命令名称:more
命令所在路径:/bin/more
执行权限:所有用户
语法:more [文件名]
(空格) 或f 翻页
(Enter) 换行
q或Q 退出
功能描述:分页显示文件内容
范例:
$ more /etc/services
2.2.4 分屏显示:less 命令
命令名称:less
命令所在路径:/usr/bin/less
执行权限:所有用户
语法:less [文件名]
功能描述:分页显示文件内容(可向上翻页)
范例:
$ less /etc/services
tips: 按下 / 后可以搜索 会反显高亮 按q退出(more也可以)
2.2.5 取首n行:head 命令
命令名称:head
命令所在路径:/usr/bin/head
执行权限:所有用户
语法:head [文件名]
功能描述:显示文件前面几行
-n 指定行数
范例:
$ head -n 20 /etc/services
2.2.6 取尾n行:tail 命令
命令名称:tail
命令所在路径:/usr/bin/tail
执行权限:所有用户
语法:tail [文件名]
功能描述:显示文件后面几行
-n 指定行数
-f 动态显示文件末尾内容
范例:
$ tail -n 18 /etc/services
第三节 链接命令
2.3.1 建立链接文件:ln 命令
命令名称:ln
命令所在路径:/bin/ln
执行权限:所有用户
语法:ln -s [原文件] [目标文件]
-s 创建软链接
功能描述:生成链接文件
范例:
$ ln -s /etc/issue /tmp/issue.soft
创建文件/etc/issue的软链接/tmp/issue.soft
$ ln /etc/issue /tmp/issue.hard
创建文件/etc/issue的硬链接/tmp/issue.hard
软链接特征:类似Windows快捷方式
1、lrwxrwxrwx l 软链接
软链接文件权限都为rwxrwxrwx
2、文件大小-只是符号链接
3、/tmp/issue.soft -> /etc/issue 箭头指向原文件
硬链接特征:
1、拷贝cp -p + 同步更新
2、可通过i节点识别
3、不能跨分区
4、不能针对目录使用
第四节 权限管理命令
2.4.1 修改文件权限:chmod 命令
命令名称:chmod
命令所在路径:/bin/chmod
执行权限:所有用户
语法:chmod [{ugoa}{+-=}{rwx}] [文件或目录]
[mode=421 ] [文件或目录]
-R 递归修改
功能描述:改变文件或目录权限
权限的数字表示
r ---- 4 w ---- 2 x ---- 1
rwxrw-r-- 7 6 4
范例:
$ chmod g+w testfile
赋予文件testfile所属组写权限
$ chmod -R 777 testdir
修改目录testfile及其目录下文件为所有用户具有全部权限
rwx权限的解释:
字符 权限 对文件的含义 对目录的含义
r 读权限
可以查看文件内容
可以列出目录中的内容
w
写权限
可以修改文件内容
可以在目录中创建、删除文件
x
执行权限
可以执行文件
可以进入目录
2.4.2 修改文件所有者:chown 命令
命令名称:chown
命令所在路径:/bin/chown
执行权限:所有用户
语法:chown [用户] [文件或目录]
功能描述:改变文件或目录的所有者
范例:
$ chown zhang test
改变文件test的所有者为zhang
2.4.3 修改文件所属组:chgrp 命令
命令名称:chgrp
命令所在路径:/bin/chgrp
执行权限:所有用户
语法:chgrp [用户组] [文件或目录]
功能描述:改变文件或目录的所属组
范例:
$ chgrp group01 text01
改变文件text01的所属组为group01
2.4.4 默认权限:umask 命令
命令名称:umask
命令所在路径:Shell内置命令
执行权限:所有用户
语法:umask [-S]
-S 以rwx形式显示新建文件缺省权限
功能描述:显示、设置文件的缺省权限
范例:
$ umask -S
tips: 新建文件是默认没有x权限(比如:防止木马病毒攻击)
第五节 文件搜索命令
2.5.1 查找文件:find 命令
命令名称:find
命令所在路径:/bin/find
执行权限:所有用户
语法:find [搜索范围] [匹配条件]
功能描述:文件搜索
范例:
$ find /etc -name init
在目录/etc中查找文件init
-iname 不区分大小写
$ find /etc -name *init*
在目录/etc中查找文件名包含init
$ find /etc -name init???
在目录/etc中查找文件名init开头并有3个字符的
$ find /etc -name init*
在目录/etc中查找文件名init开头的
tips:* 匹配任意字符,?匹配单个字符
$ find / -size +204800
在根目录下查找大于100MB的文件
+n 大于 -n 小于 n 等于
$ find /home -user shenchao
在根目录下查找所有者为shenchao的文件
-group 根据所属组查找
$ find /etc -cmin -5
在/etc下查找5分钟内被修改过属性的文件和目录
-amin 访问时间 access
-cmin 文件属性 change
-mmin 文件内容 modify
$ find /etc -size +163840 -a -size -204800
在/etc下查找大于80MB小于100MB的文件
-a 两个条件同时满足
-o 两个条件满足任意一个即可
$ find /etc -name inittab -exec ls -l {} ;
在/etc下查找inittab文件并显示其详细信息
-exec/-ok 命令 {} ; 对搜索结果执行操作
tips:-exec直接执行,ok会询问操作
-type 根据文件类型查找
f 文件 d 目录 l 软链
-inum 根据i节点查找
2.5.2 文件资料库查找:locate 命令
命令名称:locate
命令所在路径:/usr/bin/locate
执行权限:所有用户
语法:locate 文件名
功能描述:在文件资料库中查找文件
范例:
$ locate inittab
tips:新建文件locate不到,可以updatedb,更新文件资料库后查找[tmp不在文件资料库内]
$ locate -i text01 // -i 作用你不区分大小写类似 -iname
2.5.3 查看命令位置:which 命令
命令名称:which
命令所在路径:/usr/bin/which
执行权限:所有用户
语法:which 命令
功能描述:搜索命令所在目录及别名信息
范例:
$ which ls
2.5.4 查看命令位置:whereis 命令
命令名称:whereis
命令所在路径:/usr/bin/whereis
执行权限:所有用户
语法:whereis [命令名称]
功能描述:搜索命令所在目录及帮助文档路径
范例:
$ whereis ls
2.5.5 文本搜索:grep 命令
命令名称:grep
命令所在路径:/bin/grep
执行权限:所有用户
语法:grep -iv [指定字串] [文件]
功能描述:在文件中搜寻字串匹配的行并输出
-i 不区分大小写
-v 排除指定字串
范例:
# grep mysql /root/install.log
# grep -v ^# /etc/inittab 去除以#开头的所有行信息,^表示以XXX开头
第六节 帮助命令
2.6.1 帮助:man 命令
命令名称:man
命令所在路径:/usr/bin/man
执行权限:所有用户
语法:man [命令或配置文件]
(空格) 或f 翻页
(Enter) 换行
q或Q 退出
功能描述:获得帮助信息
范例:
$ man ls
查看ls命令的帮助信息
$ man services
查看配置文件services的帮助信息
2.6.2 获取简介:whatis 命令
命令:whatis
语法:whatis 命令
功能描述:获得命令的简单介绍信息
范例:whatis ls
2.6.3 获取帮助:help 命令
命令名称:help
命令所在路径:Shell内置命令
执行权限:所有用户
语法:help 命令
功能描述:获得Shell内置命令的帮助信息
范例:
$ help umask
查看umask命令的帮助信息
第七节 用户管理命令
2.7.1 添加用户:useradd 命令
命令名称:useradd
命令所在路径:/usr/sbin/useradd
执行权限:root
语法:useradd 用户名
功能描述:添加新用户
范例:
$ useradd zhangdapao
2.7.2 修改密码:passwd 命令
命令名称:passwd
命令所在路径:/usr/bin/passwd
执行权限:所有用户
语法:passwd 用户名
功能描述:设置用户
范例:
$ passwd zhangdapao
2.7.3 查看登录用户:who 命令
命令名称:who
命令所在路径:/usr/bin/who
执行权限:所有用户
语法:who
功能描述:查看登录用户信息
范例:
$ who
显示所有登录用户信息
2.7.4 w 命令
命令名称:w
命令所在路径:/usr/bin/w
执行权限:所有用户
语法:w
功能描述:查看登录用户详细信息
范例:
$ w
2.7.5 切换用户:su 命令
命令 含义
su 切换到root用户
su root 切换到root用户
su - 切换到root用户,同时切换目录到/root
su - root 切换到root用户,同时切换目录到/root
su 普通用户 切换到普通用户
su - 普通用户 切换到普通用户,同时切换普通用户所在的目录
第八节 压缩解压缩命令
2.8.1 压缩:gzip 命令
命令名称:gzip
命令所在路径:/bin/gzip
执行权限:所有用户
语法:gzip [文件]
功能描述:压缩文件
压缩后文件格式:.gz
范例:
gzip text01
2.8.2 解压缩:gunzip 命令
命令名称:gunzip [= gzip -d]
命令所在路径:/bin/gunzip
执行权限:所有用户
语法:gunzip [压缩文件]
功能描述:解压缩.gz的压缩文件
范例:
$ gunzip text01.gz
tips:只能压缩文件不能压缩目录
2.8.3 归档管理:tar 命令
tar与gzip命令结合使用实现文件打包、压缩。 tar只负责打包文件,但不压缩,用gzip压缩tar打包后的文件,其扩展名一般用xxxx.tar.gz。
命令名称:tar
命令所在路径:/bin/tar
执行权限:所有用户
语法:tar 选项[-zcf] [压缩后文件名] [目录]
-c 打包
-v 显示详细信息
-f 指定文件名
-z 打包同时压缩
功能描述:打包目录 压缩后文件格式:.tar.gz
范例:
$ tar -zcf Japan.tar.gz Japan
将目录Japan打包并压缩为.tar.gz文件
tar命令解压缩语法:
-x 解包
-v 显示详细信息
-f 指定解压文件
-z 解压缩
范例:$ tar -zxvf Japan.tar.gz
2.8.4 zip 命令
命令名称:zip
命令所在路径:/usr/bin/zip
执行权限:所有用户
语法:
zip 选项[-r] [压缩后文件名] [文件或目录]
-r 压缩目录
功能描述:压缩文件或目录
压缩后文件格式:.zip
范例:
$ zip text01.zip text01
压缩文件
$ zip -r zhang.zip zhang
压缩目录
tips:会保留原文件
2.8.5 unzip 命令
命令名称:unzip
命令所在路径:/usr/bin/unzip
执行权限:所有用户
语法:unzip [压缩文件]
功能描述:解压.zip的压缩文件
范例:$ unzip text01.zip
第九节 网络命令
2.9.1 write 命令
指令名称:write
指令所在路径:/usr/bin/write
执行权限:所有用户
语法:write <用户名>
功能描述:给用户发信息,以Ctrl+D保存结束
范例:
write zhang
2.9.2 wall 命令
指令名称:wall
命令英文原意:write all
指令所在路径:/usr/bin/wall
执行权限:所有用户
语法:wall [message]
功能描述:发广播信息
范例:
wall HelloWord
2.9.3 测试网络连通性:ping 命令
命令名称:ping
命令所在路径:/bin/ping
执行权限:所有用户
语法:ping 选项 IP地址
-c 指定发送次数
功能描述:测试网络连通性
范例:
ping 192.168.1.156
2.9.4 查看和设置网卡信息:ifconfig
命令名称:ifconfig
命令所在路径:/sbin/ifconfig
执行权限:root
语法:ifconfig 网卡名称 IP地址
功能描述:查看和设置网卡信息
范例:
ifconfig
2.9.5 查看发送电子邮件:mail 命令
命令名称:mail
命令所在路径:/bin/mail
执行权限:所有用户
语法:mail [用户名]
功能描述:查看发送电子邮件
范例:
mail root
2.9.6 查看登录用户历史信息:last 命令
命令名称:last
命令所在路径:/usr/bin/last
执行权限:所有用户
语法:last
功能描述:列出目前与过去登入系统的用户信息
范例:
last
2.9.7 显示网络相关信息:netstat 命令
命令名称:netstat
命令所在路径:/bin/netstat
执行权限:所有用户
语法:netstat [选项]
功能描述:显示网络相关信息
选项:
-t : TCP协议
-u : UDP协议
-l : 监听
-r : 路由
-n : 显示IP地址和端口号
范例:
netstat -tlun 查看本机监听的端口
netstat -an 查看本机所有的网络连接
netstat -rn 查看本机路由表
查看某一端口是否被占用:netstat -tunlp |grep 2181
2.9.8 配置网络:setup 命令
命令名称:setup
命令所在路径:/usr/bin/setup
执行权限:root
语法:setup
功能描述:配置网络
范例:
setup
2.9.9 挂载:mount 命令
命令名称:mount
命令位置:/bin/mount
执行权限:所有用户
命令语法:mount [-t 文件系统] 设备文件名 挂载点
范例:
mount -t iso9660 /dev/sr0 /mnt/cdrom
第十节 关机重启命令
2.10.1 关机:shutdown 命令
命令名称:shutdown
shutdown [选项] 时间
选项: -c: 取消前一个关机命令 -h: 关机 -r: 重启
2.10.2 退出登录:logout 命令
第三章 文本编辑器vim
第一节 Vim常用操作
Vim 简介:
Vim是一个功能强大的全屏幕文本编辑器, 是Linux/UNIX上最常用的文本编辑器, 它的作用是建立、编辑、显示文本文件。
Vim 没有菜单,只有命令。
3.1.1 插入命令
命令
作用
a
在光标所在字符后插入
A
在光标所在行尾插入
i
在光标所在字符前插入
I
在光标所在行行首插入
o
在光标下插入新行
O
在光标上插入新行
3.1.2 定位命令
命令
作用
:set nu 设置行号
:set nonu 取消行号
gg
到第一行
GG 到最后一行
nG 到第n行
:n 到第n行
$ 移至行尾
0 移至行首
3.1.3 删除命令
命令
作用
x
删除光标所在处字符
nx 删除光标所在处后n个字符
dd 删除光标所在行,ndd删除n行
dG 删除光标所在行到文件末尾内容
D 删除光标所在处到行尾内容
:n1,n2d 删除指定范围的行
3.1.4 复制和剪切命令
命令
作用
yy
复制当前行
nyy
复制当前行以下n行
dd
剪切当前行
ndd
剪切当前行以下n行
p、P 粘贴在当前光标所在行下或者行上
3.1.5 保存和退出命令
命令 作用
:w 保存修改
:w 文件名 另存为指定文件
:wq 保存修改并退出
ZZ 快捷键,保存修改并退出
:q! 不保存修改退出
:wq! 保存修改退出(文件所有者和root均可忽略只读权限强制写入)
第四章 软件安装
第一节 软件包管理简介
4.1.1 软件分类
源码包:脚本安装
二进制包:RPM包
源码包
源码包的优点是:
开源,如果有足够的能力,可以修改源代码
可以自由选择所需的功能
软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高
卸载方便
源码包的缺点
安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误
编译过程时间较长,安装比二进制安装时间长
因为是编译安装,安装过程中一旦报错新手很难解决
RPM包
二进制包的优点
包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
安装速度比源码包安装快的多
二进制包缺点:
经过编译,不再可以看到源代码
功能选择不如源码包灵活
依赖性
第二节 rpm命令管理
4.2.1 包命名与依赖性
RPM包依赖性
树形依赖: a→b→c
环形依赖: a→b→c→a
模块依赖: 模块依赖查询网站:www.rpmfind.net
4.2.2 安装升级与卸载
RPM安装
rpm –ivh 包全名
选项:
-i(install) 安装
-v(verbose) 显示详细信息
-h(hash) 显示进度
--nodeps 不检测依赖性
RPM包升级
rpm -Uvh 包全名
选项:
-U(upgrade) 升级
卸载
rpm -e 包名
选项:
-e(erase) 卸载
--nodeps 不检查依赖性
第三节 yum在线管理
4.3.1 yum 命令
查询
yum list
查询所有可用软件包列表
yum search 关键字
搜索服务器上所有和关键字相关的包
安装
yum –y install 包名
选项:
install 安装
-y 自动回答yes
升级
yum -y update 包名
选项:
update 升级
-y 自动回答yes
卸载
yum -y remove 包名
选项:
remove 卸载
-y 自动回答yes
4.3.2 yum软件组管理命令
yum grouplist
列出所有可用的软件组列表
yum groupinstall 软件组名
安装指定软件组,组名可以由grouplist查询出来
yum groupremove 软件组名
卸载指定软件组
第五章 shell 基础
第一节 shell 概述
5.1.1 shell 是什么
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
5.1.2 shell 的分类
Bourne Shell:从1979起Unix就开始使用Bourne Shell,Bourne Shell的主文件名为sh。
C Shell: C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名
Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh
Bash: Bash与sh兼容,现在使用的Linux 就是使用Bash作为用户的基本Shell。
第二节 shell 脚本的执行方式
5.2.1 echo 输出命令
命令名称:echo
echo [选项] [输出内容]
选项: -e: 支持反斜线控制的字符转换
控制字符 作用
输出
a 输出警告音
b 退格键,向左删除键
c 取消输出行末的换行符,和“-n”选项一致
e
ESCAPE键
f 换页符
换行符
r 回车键
制表符,Tab键
v 垂直制表符