1、Linux的目录结构
- 基本介绍
- Linux的系统文件是采用级层式的树状目录结构,在此结构中的最上层是根目录 / ,然后是此目录下再创建其他目录
- 在Linux世界里,一切皆为文件
- 具体的目录结构
- /bin (/user/bin、/user/local/bin) 是Binary的缩写,这个目录存放着最近常使用的命令
- /sbin (/user/sbin、/user/local/sbin) s是Super User的意思,这里存放的是管理员使用的系统管理程序
- /home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录以用户的账号命令的
- /root 该目录为系统管理员,也称作为超级权限者的用户主目录
- /lib 系统开机所需要的最基本的动态链接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库
- / lost+found 这个目录一般情况下是空的,当系统非法关机后,这里存放了一些文件
- /etc 所有系统管理所需要的配置文件和子目录
- /usr 这是一个非常中要的目录,用户的很多应用程序和文件都放在这个目录下,类似于Windos下的program files目录
- /boot 存放的是启动Linux时使用的一些核心文件,包括一些连接文字以及镜像文件
- /proc 这个目录时一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
- /srv service缩写,该目录存放一些服务启动时需要提取的数据
- /sys 这是linux2.6 内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs
- /tmp 这个目录用来存放一些临时文件
- /dev 类似于Windows的设备管理器,把所有硬件用文件的形式存储
- /mnt 系统提供该目录时为了让用户临时挂载别的文件系统,我们可以将外部的存储挂载在 /mnt/ 上,然后进入该目录就可以查看里面的内容了
- /opt 这是给主机额外安装软件所摆放的目录,默认为空
- /usr/local 这是另一个给主机安装软件的目录,一般是用编译源码方式安装的程序
- /var 这个目录中存放着在不断扩充的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
- /selinux SElinux是一个安全子系统,它能控制程序只访问此文件夹
2、vi和vim编辑器
- 基本介绍
- 所有的linux系统都会内建vi文本编辑器
- Vim具有程序编译能力,可以看做是vi的增强版本,可以主动的字体颜色辨别语法的正确性,方便程序设计。代码补充、编译及错误跳转等方便编程的功能特别丰富
- vi和vim的三种常见模式
- 正常模式
- 可以使用快捷键,vim打开一个档案就直接进入一般模式(这里默认的模式)。在这个模式中,你可以使用【上下左右】按键来移动光标,你可以使用【删除字符】或【删除整行】来处理文档内容,也可以使用【复制、粘贴】来处理文件数据
- 插入模式
- 可以输入内容,按下 i,I,o,O,a,A,r,R 等任何一个字母之后才会进入到编辑模式,一般来说按 i 即可
- 命令行模式
- 在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作则是在此模式中达成的
- vi和vim模式的相互切换
- vi和vim常用快捷键的使用
操作 | 命令 |
---|---|
拷贝当前行 | yy |
拷贝当前行 | yy |
拷贝当前行下的多行 | 行数+yy |
粘贴 | p |
删除当前行 | dd |
删除当前行下的多行 | 行数+dd |
到达文件最末行 | G |
到达文件首行 | gg |
撤销一个动作 | u |
将光标移动到指定行 | 行数+(shift+g) |
在文件查找字符串 | /关键字 + 回车,(n 查找下一个) |
设置文件行号 | set nu |
取消文件行号 | set nonu |
3、开机&重启
- shutdown
- shutdown -h now:表示立即关机
- shutdown -h 1 :表示一分钟后关机
- shutdown -r now:立即重启
- halt
- 直接使用,效果等价于关机
- reboot
- 重启系统
- sync
- 把内存的数据同步到磁盘
- 当我们关机或重启时,都应当执行一个sync指令,把内存中的数据写入磁盘,防止数据丢失
4、用户登录和注销
- 基本介绍
- 登录时尽量少使用root账号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用 su-用户名 命令切换系统管理员身份
- 在提示符下输入 logout 即可注销用户(远程登录)
- 使用细节
- logout 注销指令在图形运行级别无效,在运行级别3下有效
4、用户管理
- 基本介绍
- Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后这个账号的身份进入系统
- Linux的用户只要至少属于一个组
- 添加用户
- useradd 用户名
- 当创建用户成功后,会自动创建和用户名同名的家目录,也可以通过 【useradd -d 指定目录 新的用户名】 给新建的用户指定家目录
- 指定/修改用户密码
- password 用户名
- 删除用户
- userdel 用户名,删除用户但是会保留家目录
- userdel -r 用户名,删除用户以及用户家目录,在删除用户时我们一般不会将家目录删除掉
- 查询用户信息
- id 用户名
- uid 用户id号
- gid 用户组的id号
- groups 组名
- id 用户名
- 切换用户
- 在Linux系统中,如果当前用户的权限不够,可以用过 su - 指令切换到高权限用户
- su -用户名
- exit 返回切换前的用户
- 从权限高的用户切换到权限低的用户,不需要输入密码,从权限低的用户切换到权限高的用户需要密码
- 查看当前用户
- whoami
- who am i
- 用户组
- 类似于角色,系统可以对其有共性的多个用户进行统一的管理
- 新增组:groupadd 组名
- 删除组:groupdel 组名
- 新增用户时直接加上组:useradd -g 用户组 用户名
- 修改用户组:usermod -g 用户组 用户名
- **用户和组的相关文件
- /etc/passwd文件
- 用户(user)的配置文件,记录用户的各种信息
- 用户名:口令:用户标识号:注释性描述:主目录:登录Shell
- /etc/shadow文件
- 口令配置文件
- 登录名:加密口令:最后一次修改的时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
- /etc/group文件
- 组(group)的配置文件,记录Linux包含组的信息
- 组名:口令:组标识符:组内用户列表
- /etc/passwd文件
5、实用指令
5.1、帮助指令
- man 获得帮助指令
- man [命令或配置文件] (功能描述,获取帮助信息)
- help 指令
- help [命令] (功能描述,获得shell内置命令的帮助信息)
5.2、文件目录类
- pwd 指令
- pwd (功能描述,显示当前工作目录的绝对路径)
- ls 指令
- ls [选项] 目录或文件
- -a 显示当前文件目录所有文件和目录,包括隐藏的
- -l 以列表的方式显示信息
- cd 指令
- cd [参数] (功能描述,切换到指定目录)
- cd ~ 或 cd (回到自己的加目录)
- cd.. (回到上级目录)
- mkdir 指令
- mkdir [选项] 要创建的目录
- -p 创建多级目录
- rmdir 指令
- rmdir [选项] 要删除的目录
- touch 指令
- touch 文件名称
- 可以一次性创建多个文件
- cp 指令
- cp [文件] [目录]
- cp -r [目录] [目录] (递归遍历整个文件夹,发现相同的文件会提示你是否覆盖)
- \cp -r [目录] [目录] (发现相同的文件直接覆盖)
- rm 指令
- rm [选项] 要删除的文件或目录
- -r 递归删除整个文件夹
- -f 强制删除不提示
- mv 指令
- mv [oldNamefile] [newNamefile] (重命名)
- mv [目录] [目录] (移动文件)
- cat 指令
- cat [选项] 要查看的文件
- -n 显示行号
- cat 只能浏览文件而不能修改文件,为了浏览方便,一般会带上管通道 |more
- more 指令
- more指令是一个基于vi编辑器的文件过滤器,它以屏幕的方式显示文本文件内容。more指令中内置了若干个快捷键,详见操作说明
- more [选项] 要查看的文件
操作 | 功能说明 |
---|---|
空格键 | 代表向下翻一页 |
Enter | 代表向下翻一页 |
q | 代表立即离开more,不再显示该文件的内容 |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 向上滚动一屏 |
= | 输出当前行号 |
:f | 输出文件名和当前的行号 |
- less 指令
- less指令用来分层查看文件内容,它的功能和more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是将整个文件加载之后才显示,而是根据显示需要加载的内容,对于显示大型文件就有较高的效率
- less [选项] 要查看的文件
操作 | 功能说明 |
---|---|
空格键 | 向下翻动一页 |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页 |
/子串 | 向下搜寻[子串]的功能 n: 向下查找 N:向上查找 |
?子串 | 向上都寻[子串]的功能 n: 向上查找 N: 想下查找 |
q | 离开less这个程序 |
- > 指令和 >> 指令
- > 输出重定向(覆盖) >> 追加
- 基本语法
- ls -l > 文件 (列表的内容写入到文件中(覆盖写))
- ls -l >> 文件 (列表的内容追加到文件的末尾)
- cat 文件1 > 文件2 (将文件1的内容覆盖到文件2)
- echo “内容” >> 文件
- echo 指令
- 输出内容到控制台
- echo [选项] 输出内容
- head 指令
- head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
- head 文件 (查看文件头10行内容)
- head -n 5 文件 (查看文件头5行内容)
- tail 指令
- tail用于输出文件尾部的内容,默认情况下tail指令显示文件的后10行内容
- tail 文件 (查看文件后10行内容)
- tail -n 5 文件 (查看文件后5行的内容)
- tail -f 文件 (实时追踪文档的所有更新)
- ln 指令
- 软链接也叫符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
- ln -s [原文件或目录] [软链接名] (给原文件创建一个软链接)
- 当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录
- history 指令
- 查看已经执行过的历史命令,也可以执行历史指令
- histroy (查看已经执行过的历史命令)
- history [数量] (查询指定数量的历史命令)
- ![数量] (指令指定编号的历史命令)
5.3、时间日期类
- data 指令
- 显示当前日期
- data (显示当前日期)
- date “+%Y” (显示当前年份)
- date “+%m” (显示当前月份)
- date “+%d” (显示当前是哪一天)
- date “+%Y-%m-%d %H:%M:%S” (显示年月日时分秒)
- 设置当前时间
- data -s [字符串时间] (date -s “2020-10-18 14:46:00”)
- cal 指令
- 查看日历指令
- cal [选项] (不加选项显示本月日历,选项可加年份,显示一年的日历)
5.4、搜索查找类
- find 指令
- find 指令将从指定目录下递归地遍历各个子目录,将满足条件的文件或目录显示到终端
- find [搜索范围] [查询的文件名]
选项 | 功能 |
---|---|
-name | 按指定的文件名查找模式查找文件 |
-user | 查询属于指定用户名所有文件 |
-size | 按照指定的文件大小查找文件 |
- locate 指令
- locate 指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件,locate指令无需遍历整个文件系统,查询速度较快,为了保证查询结果的准确性,管理员必须定期更新locate时刻
- locate [搜索文件]
- 由于locate指令基于数据库进行查询,所有第一次运行前,必须使用updatedb指令创建locate数据库
- grep 指令和管道符号 |
- grep 过滤查询,管道符 | ,表示将前一个命令的处理结果输出传递给后面的命令处理
- grep [选项] 查找文件的内容
选项 | 功能 |
---|---|
-n | 显示匹配行及行号 |
-i | 忽略字母大小写 |
5.5、压缩和解压类
-
gzip/gunzip 指令
- gzip 用于压缩文件,gunzip 用于解压文件
- gzip 文件 (压缩文件,只能将文件压缩为 *.gz 文件)
- gunzip 文件.gz (解压文件)
- 压缩文件后不会保留原先文件
-
zip/unzip 指令
- zip 用于压缩文件,unzip用于解压文件
- zip [选项] 压缩后文件名.zip 将要压缩的文件名
- unzip [选项] 解压的文件名.zip
-
tar 指令
- tar 指令是打包指令,最后打包后的文件是 .tar.gz 的文件
- tar [选项] 打包后文件名.tar.gz 打包文件名
选项 | 功能 |
---|---|
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解压.tar文件 |
6、组管理和权限管理
- 在linux中的每个用户必须属于一个组,不能独立于组外,在linux中每个文件有所有者、所在组、其他组的概念
6.1、文件/目录 所有者、所在组
- 查看文件所有者、所在组
- ls -ahl
- ok.txt所有者tom,所在组police
- 默认情况下文件所在组就是该文件所有者所在组
-
修改文件的所有者
- chown 用户名 文件名
- chown [选项] newowner:newgroup file 改变文件的所有者和所在组
- -R 如果是目录,则其下所有子文件或目录递归生效
-
修改文件所在组
- chgrp 组名 文件名
- chgrp -R 组名 路径/ (改变路径下所有文件的所在组)
-
其他组
- 除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
-
改变用户所在组
- 在添加用户时,可以指定将用户添加到那个组中,同样的用root的管理权限可以改变某个用户所在的组
- usermod -g 组名 用户名
- usermod -d 目录名 用户名 改变该用户登录的初始目录