linux学习
在linux世界里面, 一切皆为文件
linux的目录结构介绍
-
/bin 【常用】(/usr/bin、/usr/local/bin)
是Binary的缩写, 这个目录存放最经常使用的命令
-
/sbin (/usr/sbin、/usr/local/sbin)
s是Supre User的意思,存放的是系统管理员使用的系统管理程序
-
/home 【常用】
存放普通用户的主目录,在linux中每个用户都有一个自己的目录
-
/root 【常用】
该目录为系统管理员, 也成为超级权限者的用户主目录
-
/lib
系统开机所需要的最基本的动态连接共享库,其作用类似于windows里面的DLL文件。几乎所有的应用程序都需要用到这些共享库
-
/lost+found
该目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
-
/etc
所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库 mysql.conf
-
/usr 【常用】
这是一个非常重要的目录,用户的很多应用程序和文件都放在该目录下,类似于windows下的program files目录
-
/boot 【常用】
存放的是启动linux时使用的一些核心文件,包括一些连接文件和镜像文件
-
/proc
这个目录时一个虚拟目录,它是系统内存的映射,访问这个目录来获取系统的信息
-
/srv
service的缩写, 存放一些服务启动之后需要提取的数据
-
/sys
这是linux2.6内核的一个很大的变化,该目录安装了2.6内核中新出现的一个文件系统sysfs
-
/tmp
该目录存放一些临时文件
-
/dev
类似于windows的设备管理器,把所有的硬件用文件的形式存储
-
/media 【常用】
linux会自动识别一些设备,例如U盘、光驱等,当识别后,linux会把识别的设备挂载到这个目录下
-
/mnt 【常用】
系统提供该目录是为了让用户临时挂载其他系统文件的,例如我们可以将外部的存储挂载到/mnt/上,然后进入该目录就可以查看里面的内容了。
-
/opt
这是主机额外安装软件所存放的目录
-
/usr/local 【常用】
这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码的方式安装的目录
-
/var 【常用】
这个目录是存在不断扩充的东西,习惯将经常被修改的目录放在该目录下,包括各种日志文件
-
/selinux 【security-enhanced linux】
selinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以执行设置
vi和vim
-
三种模式切换
-
常用的快捷键
拷贝当前行 yy, 拷贝当前行向下的5行 5yy, 并粘贴(输入p)。
删除当前行 dd,删除当前行向下5行 5dd。
在文件中查找某个单词(/ 关键字, 回车查找, 输入n查找下一个)
设置文件的行号, 取消文件行号 【命令行下 : set nu 和 : set nonu】
使用快捷键到该文件的最末尾【G】和最首行【gg】
撤销操作【u】
将光标定位到具体行号 ,先输入具体行号, 在输入【shift + g】
更多的快捷键,请点击这里
linux关机和重启命令
-
基本介绍
shutdown -h now 立即进行关机(-h是一个选项, 英文是hot)
shutdown -h 1 "hello,1分钟后会关机了"
shutdown -r now 现在重新启动计算机
halt 关机, 作用和上面一样
reboot 现在重新启动计算机
sync 把 内存的数据同步到磁盘
注意:
- 不管是重启系统还是关闭系统, 首先要运行sync命令,把内存中的数据写磁盘中
- 目前的shutdown/reboot/halt等命令均在关机前进行了sync, 但是小心驶得万年船
实操
用户管理
添加用户
-
基本语法
useradd 用户名
-
应用案例
例如: 添加一个用户tom, 默认该用户的家目录在 /home/tom
-
细节说明
当创建用户成功后,会自动的创建和用户同名的家目录
也可以用过useradd -d 指定目录 新的用户名, 给新创建的用户指定目录
设置密码
-
基本语法
passwd 用户名
注意: 当不添加用户名时时给当前用户添加或修改密码
删除用户
-
基本语法
userdel 用户名
查看用户信息
-
基本语法
id 用户名
切换用户
-
基本语法
su - 用户名
-
细节说明
当从权限高得用户切换到用户低的用户, 不需要密码, 反之需要。
当需要返回之前的用户时, 使用exit/logout指令
查看登录用户
-
基本语法
who am i
用户组
-
介绍
类似于角色,系统可以对有共性/权限的多个用户进行统一的管理
-
新增组
指令: groupadd 组名
-
删除组
指令: groupdel 组名
-
添加用户直接加上组
指令: useradd -g 用户组 用户名
-
修改用户的组
指令: usermod -g 用户组 用户名
用户和组相关文件
-
/etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
-
/etc/shadow 文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次的修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间标志
-
/etc/group
组(group)的配置文件,记录linux包含组的信息
每行的含义:组名:口令:组标识号:组内用户列表
实用指令
运行级别
不同的运行级别
- 0: 关机
- 1: 单用户【找回丢失密码】
- 2: 多用户状态没有网络服务
- 3: 多用户状态有网络服务
- 4: 系统未使用保留给用户
- 5:图形界面
- 6:系统重启
命令: init [0123456]
使用单用户级别找回密码
- 启动系统, 开始画面按下e;
- 找到"Linux16"所造行数, 在最后面输入:init=/bin/sh
- 按下ctrl + x, 重启系统进入单用户模式
- 输入mount -o remount,rw / , 然后回车
- 输入pwsswd, 完成后回车, 输入密码, 然后再次输入确认密码,密码修改后会显示passwd....字样,说明密码修改成功
- 输入touch /.autorelabel, 回车
- 输入exec /sbin/init, 回车, 耐心等待下,完成后, 系统会自动重启,新的密码生效了
帮助指令
man 获得帮助信息
-
基本语法
man 【命令或配置文件】(功能描述:获得帮助信息)
help
-
基本语法
help 命令(功能描述:获得shell内置命令的帮助信息)
比如: help cd
文件目录指令
pwd
-
基本语法
pwd (功能描述:显示当前工作目录的绝对路径)
ls
-
基本语法
ls 【选项】 【目录获文件】
-
常用选项
- -a : 显示当前目录的所有文件和目录,包括隐藏的
- -l:以列的方式显示信息
cd
-
基本语法
cd 【参数】 (功能描述:切换到指定目录)
cd ~ 或者cd: 回到自己的家目录;
cd .. 回到当前目录的上一级目录
cd / 切换到根目录
mkdir
-
基本语法
mkdir 【选项】 要创建的目录
-
常用选项
-p:创建多级目录
rmdir
-
基本语法
rmdir 【选项】 要删除的目录 (功能描述:删除空目录)
提示: 如果需要删除非空目录库, 需要使用rm -rf 要删除的目录(r代表recursion, 中文表示递归,f代表forece, 中文表示强制)
touch
-
基本语法
touch 文件名 (功能描述:创建一个空文件)
cp
-
基本语法
cp 【选项】 source dest
-
常用选项
-r: 递归复制整个文件夹
-
强制覆盖
/cp 【选项】 source dest
rm
-
基本语法
rm 【选项】 要删除的文件或目录
-
常用选项
-r:递归删除整个文件夹
-f: 强制删除不提示
mv
-
基本语法
mv oldNameFile newNameFile (功能描述:重命名)
mv /temp/moveFile /targetFolder (功能描述:移动文件)
cat
-
基本语法
cat 【选项】 要查看的文件
-
常用选项
-n: 显示行号
-
使用细节
cat 只能浏览文件, 而不能修改文件,为了浏览方便,一般会带上 管道命令 | more
cat -n /etc/profile | more 【进行交互】
more
more指令是一个基于VI编辑器的文本编辑器,它以全屏幕的方式按页显示文本文件的内容,more指令中内置了若干快捷键(交互的指令),详情操作说明见下图:
-
基本语法
more 要查看的文件
less
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容, 对于显示大型文件具有较高的效率。详情操作见下图:
-
基本语法
less 要查看的文件
echo
-
基本语法
echo 【选项】 【输出内容】 (功能描述:输入内容到控制台)
head
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
-
基本语法
head 文件 (功能描述: 查看文件头10行内容)
head -n 5 文件 (功能描述:查看文件的头5行内容,5可以时任意行数)
tail
tail用于输出文件中尾部的内容,默认情况下tail指令显示文件后10行的内容
-
基本语法
tail 文件 (功能描述:查看文件的后10行内容)
tail -n 5 文件 (功能描述:查看文件的后5行内容, 5可以时任意行数)
tail -f 文件 (功能描述: 实时追踪该文档的所有更新)
>和>>指令
输入重定向和追加
-
基本语法
- ls -l > 文件 (功能描述: 列表的内容写入到文件中(覆盖写))
- ls -al >> 文件 (功能描述:列表的内容追加到文件中)
- cat 文件1 > 文件2 (功能描述:将文件1的内容覆盖到文件2)
- echo "内容" >> 文件 (追加内容到文件中)
ln 指令
软连接,也成为符号链接,类似于windows里面的快捷方式,主要存放了连接其他文件的路径
-
基本语法
ln -s 【原文件或目录】 【软链接名】 (功能描述:给原文件创建一个软链接)
-
细节说明
当我们使用pwd指令查看目录时,仍然看到的时软链接所在目录
history指令
曾今执行过的指令
-
基本语法
histoty 查看之前执行过的指令
history 10 查看最近执行过的10条指令
!5 执行之前的第5条执行
时间日期类
date
显示当前日期
-
基本语法
date (功能描述: 显示当前日期)
date “+%Y-%m-%d %H:%M:%S” (功能描述: 显示年月日 时分秒)
date -s "2020-12-17 10:18:20" (功能描述: 设置系统当前时间)
cal
查看当前日历
-
基本语法
cal [选项] 参数
cal (功能描述: 显示当前日期的日历)
cal 2020 (功能描述: 显示2020年的日历)
搜索查找类
find
find指令将从指定的目录向下递归遍历其各个子目录,将满足条件的文件或者目录显示在终端
-
基本语法
find 【搜索范围】 【选项】
find /home -name hello.txt (功能描述: 按照名字在/home目录下查找hello.txt文件)
find /opt -user root (功能描述: 查找/opt目录下,用户名称为root的文件)
find / -size +200M (功能描述: 查找大于200M的文件)
locate
locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻
-
基本语法
locate 搜索文件
-
特别说明
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
which
查看某个指令在哪个目录
which ls
grep指令和管道符号 |
grep 过滤查找 , 管道符“|”: 表示将前一个命令的输出传递给后面的命令处理。
-
基本语法
grep 【选项】 查找内容 源文件
-
常用选项
grep -n hello /home/bb/hello.txt
cat /home/bb/hello.txt | grep -n hello
压缩和解压类
gzip和gunzip指令
gzip用于压缩,gunzip用于解压
-
基本语法
gzip 文件 (功能描述:压缩文件, 只能将文件压缩为*.gz文件)
gunzip 文件.gz (功能描述:解压文件命令)
zip和unzip命令
zip用于压缩文件,unzip用于解压的,这个在项目打包发布中很有用。
-
基本语法
zip 【选项】 xxx.zip 将要压缩的内容 (功能描述:压缩文件和目录命令)
unzip 【选项】 xxx.zip (功能描述:解压缩文件)
-
zip常用选项
-r: 递归压缩, 即压缩目录
-
unzip常用选项
-d <目录>: 指定解压后文件的存放目录
tar指令
tar指令是打包指令,最后打包的文件是.tar.gz的文件
-
基本语法
tar 【选项】 xxx.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式是.tar.gz)
-
选项说明
-
应用实例
- 压缩多个文件, 将/home/pig.txt和/home/cat.txt压缩成pc.tar.gz
> tar -zvcf pc.tar.gz /home/pig.txt /home/cat.txt
- 将/home的文件夹压缩成myhone.tar.gz
> tar -zvcf myhone.tar.gz /home/
- 将pc.tar.gz解压到当前目录
> tar -zxvf pc.tar.gz
- 将myhome.tar.gz解压到/opt/tmp2目录下
> * mkdir /opt/tmp2 > > > * tar -zxvf /home/myhome.tar.gz -C /opt/tmp2 (-C表示输出到哪个目录)
组管理和权限管理
在Linux中每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其他组的概念。
文件/目录 所有者
一般为文件的创建者,谁创建了文件,就自然的成为了文件的所有者
-
查看文件的所有者
指令: ls -alh
-
修改文件所有者
指令: chown 用户名 文件名
文件/目录 组
当某个用户创建一个文件, 这个文件所在的组就是用户所在的组
-
查看文件/目录所在组
指令: ls -ahl
-
修改文件所在的组
指令: chgrp 组名 文件名
文件/目录 其他组
除文件的所有者和所在组外,系统的其他用户都是文件的其他组
改变用户所在组
-
改变用户所在组
usermod -g 组名 用户名
usermod -d 目录命 用户名 改变该用户登录的初始目录( 特别说明: 用户需要有进入该新目录的权限)
权限的基本介绍
ll 中显示的内容如下:
0-9位说明:
- 第0位确定的是文件的类型(d,-,l,c,b)
l表示链接,相当于windows的快捷方式
d是目录,相当于windows的文件夹
c是字符设备文件, 例如鼠标、键盘
d是块设备,比如硬盘
-表示是一个普通文件
- 第1~3位确定所有者(该文件的所有者)拥有该文件的权限 ----- User
- 第4~6位确定所在组(同用户组)拥有该文件的权限 ------ Group
- 第7~9位确定其他组用户拥有该文件的权限 ------ Other
rwx权限详解
-
rwx作用到文件
- 【r】 代表可读(read):可以读取、查看
- 【w】:代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
- 【x】:代表可执行(execute):可以被执行
-
rwx作用到目录‘
- 【r】:代表可读:可以读取,ls可以查看目录内容
- 【w】:代表可写:可以修改,对目录内创建+删除+重命名目录
- 【x】: 代表可执行:可以进入该目录
修改权限 - chmod
chmod可以修改文件或目录的权限
-
第一种方式:+、-、=变更权限
u:所有者 g:所有组 o:其他人 a:所有人
chmod u=rwx,g=rx,o=x 文件/目录 (功能描述:给所有者赋予读写执行权限,给所有组赋予读写权限,给其他人赋予执行权限)
chmod o+w 文件/目录 (功能描述:给其他人赋予写的权限)
chmod a-x 文件/目录i (功能描述: 给所有人移除执行权限)
-
第二种方式:通过数字变更权限
r = 4 , w = 2, x = 1 通过设置数字来修改权限
修改文件所有者 - chown
-
基本介绍
chown newOwner 文件/目录 改变所有者
chowner newOwner:newgroup 文件/目录 改变所有者和所在组
-
常用选项
-R 如果是目录,则使其所有的子文件或目录递归生效
修改文件/目录所在组 - chgrp
-
基本介绍
chgrp newgroup 文件/目录 改变所在组
-
常用选项
-R 如果是目录,则使其所有的子文件或目录递归生效