Linux
- 概念
Linux是基于Unix的开源免费,多用户,用任务的操作系统,由于系统的稳定性和安全性几乎成为程序代码运行的最佳系统环境。
注意:与windows系统不一样,为了安全,软件安装在Linux系统上是不能直接使用外网的。 - 分类
2.1 根据市场需求分类
(1) 图形界面版:注重用户体验。安卓手机系统底层使用linux系统
(2) 服务器版:字符界面。在控制台窗口上输入命令来操作系统,类似于DOS界面
2.2 根据发行(对核心版本进行二次开发并重新发行)版本的不同,可以分为
(1) ubuntu,擅长图形界面
(2) redhat,企业版的收费版本,基础已有功能不收费,但是系统维护升级和定制版本需要收费
(3) centos,由redhat源码编译过来的,免费 - 安装
在电脑上安装linux系统有两种方式
第一种:直接使用主机安装两个系统,但是这样很不安全,容易误删系统文件导致系统不稳定
第二种:使用虚拟机,虚拟机的本质是软件。虚拟机可以模拟一台电脑,可以在虚拟机中安装linux操作系统 - Linux的目录结构
介绍:
(1) root目录:超级管理员所在的注目录,用~表示
(2) home目录:普通用户所在目录
(3) usr(user share resource)目录:用户共享目录,只要将软件安装到共享目录,所有用户可以共享使用软件
(4) etc目录:Linux系统管理和配置文件所在的目录
Linux语法
1. 目录操作
(1) 切换目录
语法:cd
命令 | 说明 |
---|---|
cd / | 定位到根目录 |
cd - | 返回上一次所在的目录位置 |
cd .. | 返回到上一级目录 |
cd 空格 | 返回到当前用户目录 |
cd /etc | 切换到根目录下的etc目录 |
cd ../etc | 进入上一层目录下的etc目录 |
(2) 创建目录
语法: mkdir 目录名称
命令 | 说明 |
---|---|
mkdir a | 在当前目录下创建a目录,相对路径 |
mkdir ./b | 在当前目录下创建b目录,其中./表示当前目录,相对路径 |
mkdir /c | 在根路径下创建c目录,绝对路径 |
(3) 查看
语法:ls[参数]
命令 | 说明 |
---|---|
ls | 以平铺的形式查询当前目录下的内容 |
ls -l(简写ll) | 以详细形式查询当前目录下的内容,d表示目录,-表示文件 |
ls -a | 以平铺的形式查询当前目录下的所以文件,包括隐藏文件 |
ls -la/al 或ll -a | 以详细形式查询当前目录下的所以文件 |
另外:pwd可以查看用户当前所在的目录
(4) 搜索
语法:find 目录 -name ‘条件’
命令 | 说明 |
---|---|
find / name ‘a’ | 查询根目录下(包括子目录),名称为b的目录和文件 |
find / -name ‘b*’ | 查询根目录下(包括子目录),名以b开头的目录和文件 |
find / -name ‘c’ | 查询根目录下(包括子目录),名包含c的目录和文件 |
(5) 修改
语法:mv 旧目录 新目录
对目录重命名
命令 | 说明 |
---|---|
mv aa bb | 将当前目录下的aa目录修改成bb目录 |
(6) 剪切
语法:mv 原目录位置 新目录位置
移动目录位置
参数: -f或–force,若目标文件或目录与现有文件或目录重名,则直接覆盖现有的文件或目录
命令 | 说明 |
---|---|
mv -f aa bb | 将aa目录强制覆盖剪切到bb目录下 |
mv /aa /bb | 将根目录下的aa目录移动在bb目录下(前提是根目录下存在aa目录和bb目录) |
mv aa usr/bb | 将当前目录下的aa目录移动到usr目录下,且修改名为bb(前提是usr目录下没有bb这个目录) |
可以发现修改和剪切使用的语法是一样的,两者的区别在于:mvn命令操作目标位置如果存在就是剪切,不存在就是重命名
(7) 拷贝
语法:cp[参数] 目录 目录的新位置
参数:-r 递归处理,将指定目录下的文件与子目录一并拷贝。如果需要拷贝的是目录,则必须需要加-r参数
命令 | 说明 |
---|---|
cp -r /aa /bb | 将根目录下的aa目录拷贝到根目录下的bb目录下 |
cp -r /aa /bb/aaa | 将根目录下的aa目录拷贝到根目录下的bb目录中,并改名为aaa(前提是bb目录下没有aaa目录) |
(8) 删除
语法:rm[参数] 目录
参数解释:
(1) -r 递归处理,将指定目录下的所有文件和子目录一起删除
(2) -f 强制删除文件,不询问直接删
命令 | 说明 |
---|---|
rm -r /aa | 删除根目录下的aa目录,y表示确认,n表示取消 |
rm -rf /bb | 强制删除根目录下的bb目录 |
2. 文件操作
(1) 增加
语法:touch 文件
作用:在指定的目录下创建文件
命令 | 说明 |
---|---|
touch a.java | 在当前目录下创建a.java文件 |
(2) 查看
语法:cat/more/head/tail/less 文件
作用:以只读的方式查看文件内容
命令 | 说明 |
---|---|
cat 文件名 | 查看文件的最后一页内容(文件内容较少时推荐使用) |
more 文件名 | 从文件的第一页开始查看,按回车键一行一行看,按空格键一页一页看,按Q则退出 |
head 文件 | 默认查看文件的头10行 |
head -n -数字(m) 文件 | 查看文件的前m行 |
tail 文件 | 默认查看文件的尾10行 |
tail -n -数字(m) 文件 | 查看文件的尾m行 |
less -mN 文件 | 按照分页和带有行号查看文件。参数:-m表示分页,-N表示带有行号;分页具体操作:空格:下一页,pgup:上一页,pgdn:下一页,q:退出 |
(3) 删除
语法:rm[参数] 文件
作用:从目录中删除文件
参数解释:
(1) -r:递归处理,如果删除文件夹则必须使用-r
(2) -f:强制删除文件
命令 | 说明 |
---|---|
rm -rf 文件 | 强行删除当前目录下指定的文件 |
rm -rf ./a* | 强行删除当前目录下以a开头的所有文件 |
rm -r-f ./* | 强行删除当前目录下的所有文件(危险,谨慎操作) |
(4) 修改
作用:修改已存在文件的内容
文件的修改需要用到vi或vim编译器,我们先来了解一下vi编辑器
介绍:
vi是linux下的一种文字编辑器,vim是vi的升级版,功能更强大。vi分为三种模式:一般模式(浏览模式),编辑模式(插入模式),命令模式
vim编辑器的使用:
语法:vim文件
命令 | 说明 |
---|---|
vim 文件 | 用vim编译器打开/创建文件,进入一般模式 |
i/a/o | 进入编辑模式,i表示在光标的左边插入内容;a表示在光标的右边插入内容;o表示在光标的下一行插入内容 |
esc | 退出编译模式,进入一般模式 |
shift + :(按下shift和冒号) | 进入命令模式 |
w + q + 回车(按下wq回车) | 存储后退出 |
q +!(按下q和感叹号) | 不存储直接退出 |
扩展命令(在一般模型下使用)
命令 | 说明 |
---|---|
/ 内容 | 从光标后查找指定内容 |
? 内容 | 从光标前查找指定内容 |
yy | 复制一行(默认向下复制) |
dd | 删除一行(默认删除光标所在行) |
p | 粘贴 |
(5) 压缩
linux和windows的压缩文件格式是有区别的
windows的压缩文件扩展名:.zip或.rar
linux中的打包文件扩展名:.tar
linux中的压缩文件扩展名:.gz
所以Linux中打包压缩的文件扩展名:.tar.gz
<1> 打包压缩包
压缩语法:tar [参数] 打包压缩后的文件名 要打包压缩的文件(支持通配符*,*表示当前文件夹的所有文件)
作用:将多个文件打包并压缩成一个特定的文件
参数解释:
(1) -c:创建新的文档打包文件,压缩的必选项
(2) -x:取出文件中的内容,解压的必选项
(3) -f:文件名由命令台设置,设置压缩或解压后的文件名,压缩和解压的必选项
(4) -v:显示执行详细信息的过程(会具体显示压缩的文件),这个是可选项
(5) -z:自动识别压缩或解压gz格式文件,这个是可选项
命令 | 说明 |
---|---|
tar -zcvf | 压缩文件名 要压缩的文件或目录(多个文件之间要使用空格隔开) |
(6) 解压压缩包
解压语法:tar [参数] 压缩文件
说明:解压后的文件在当前目录下
解压语法:tar [参数] 压缩文件 -C 解压到哪个目录
说明:将打包起来的文件解压到指定的目录中。
命令 | 说明 |
---|---|
tar -zxvf 解压的压缩文件名字 -C 解压到哪个目录 | 解压到指定目录下 |
- 其他命令
(1) 查看当前工作目录位置
语法:pwd
(2) 查看进程
语法:ps [参数]
参数解释:
<1> 不带参:显示当前用户通过终端启动的所有进程
<2> -a:显示所有用户通过终端启动的所有进程
<3> -u:显示所有用户通过终端启动的所有进程详细信息
<4> -x:显示所有用户通过终端和非终端启动的所有进程详细信息
<5> -e:显示进程使用的环境变量
<6> -f:列出全部进程信息
常用组合:
命令 | 说明 |
---|---|
ps -ef | 显示全部进程,不会显示cpu和内存耗用,会显示ppid父进程id |
ps -aux | 显示全部进程,会显示cpu和内存耗用,不会显示ppid父进程id |
(3) 杀死(结束)进程
语法:kill [参数] 进程号
注意:
<1> 最好只删除当前用户在终端上启动的进程,不要删除其他用户的进程,特别是root用户的进程。
<2> 先使用命令 ps -au来确认进程号,再使用kill 进程号来杀死指定进程
参数解释:
<1> 无:普通删除进程号对应的进程
<2> -9:强制式删除进程号对应的进程
(4) 搜索
语法:grep [参数] 搜索字符串 文件名
参数解释:
<1> -n:显示匹配行及行号,匹配的字符串大小写敏感
<2> -v:显示不匹配行及行号(与-n正好相反),匹配的字符串大小写敏感
<3> -i:指定匹配的字符串大小写不敏感
命令 | 说明 |
---|---|
grep as a.txt | 在a.txt文件上搜索as字符串,大小写敏感,显示行 |
grep -n as a.txt | 在a.txt文件上搜索as字符串,大小写敏感,显示行以及行号 |
grep -v as a.txt | 在a.txt文件上搜索所有不匹配as字符串的行,显示行 |
grep -i b a.txt | 在a.txt文件上搜索所有与b和B匹配的行,显示行 |
(5) 管道
语法:命令1 | 命令2
介绍:“|”表示管道,命令1的输出,作为命令2的输入
注意:至少要有两个命令参与执行
命令 | 说明 |
---|---|
ps -aux | more | 分屏显示Linux中的所以用户通过终端和非终端启动的所有进程的详细信息 |
ps -aux | grep -i a | 在ps -aux的结果中,搜索字符串a,大小写不敏感,显示对应的行 |
(6) 关机
语法:halt/(shutdown now)
注意:halt命令关机会出现卡机的情况,建议是用shutdown now
扩展:window系统关机
shutdown -s:直接关机
shutdown -s -t(单位秒) 按照指定秒后关机
(7) 重启
语法:reboot
(8) 文件权限
介绍:在Linux系统中,所有用户对每个文件和目录都权限要求,只有满足条件的用户才能对文件进行响应操作
第一个字符代表的是文件的类型
<1> d:目录
<2> -:普通文件
<3> l:连接文件
各种用户拥有权限介绍:
<1> 属主:资源目录或文件的拥有者的权限
<2> 属组:拥有者所属组内其他用户的权限
<3> 其他用户:其他组其他用户的权限
权限范围的表示法如下:
<1> u:User,表示文件或目录的拥有者
<2> g:Group,表示文件或目录所属组群
<3> o:Other,除了以上两种以外的其他用户
<4> a:All,全部用户,包含以上三种
符号:
<1> +:添加权限
<2> -:取消权限
权限以及其代号:
<1> r:读取权限,数字代号为4
<2> w:写入权限,数字代号为2
<3> x:执行或切换权限,数字代号为1
<4> -:不具任何权限,数字代号为0
权限操作
(1) 添加权限
语法:chmod [用户]+ [参数] 目录/文件
注意:不指名用户时,代表所有用户
命令 | 说明 |
---|---|
chmod a+x a.java | 增加所以用户对a.java的执行权限 |
chmod u+x a.java | 增加所属用户对a.java的执行权限 |
(2) 修改权限
语法:chmod [参数] 目录/文件
命令 | 说明 |
---|---|
chmod u=rwx,g=rx,o=x a.java | 修改a.java文件的权限,所以者具有rwx权限,组员具有rx权限,其他人具有x权限 |
chmod 777 a.java | 修改a.java文件的权限,所有者,组员,其他人具有全部的权限(7=4+2+1) |
(3) 删除权限
语法:chmod [用户]-[参数] 目录/文件
命令 | 说明 |
---|---|
chmod -x a.java | 删除所有用户对a.java文件的执行权限 |
扩展:
在linux中,ctrl +c 强制终止程序操作