目录结构
目录 | 简介 |
---|---|
/bin | Binary的缩写,存放最经常使用的命令 |
/sbin | s代表Super user,存放系统管理员使用的系统管理程序 |
/home | 存放普通用户的主目录,每个用户都有专属的目录且一般以用户名命名 |
/root | 为系统管理员所有,也称作超级权限者的用户主目录 |
/lib | 系统开机所需最基本的动态连接共享库,其作用类似于Windows里的DLL文件 |
/lost+found | 此目录一般情况下是空的,当系统非法关机后,才存放一些文件 |
/etc | 所有系统管理所需的配置文件和子目录,例如安装mysql数据库-my.conf |
/usr | 非常重要的目录,存放用户的应用程序和文件,类似于Windows的program files |
/boot | 存放启动Linux时使用的核心文件,包括链接、镜像文件等 |
/proc | 虚拟的目录,系统内存的映射,通过访问此目录以获取系统信息 |
/srv | service的缩写,存放一些服务启动之后需要提取的数据 |
/sys | Linux2.6内核的一大改动,该目录安装了2.6内核中一个新文件系统 sysfs |
/tmp | 存放临时文件 |
/dev | 类似于windows的设配管理器,只不过Linux将所有的硬件都用文件的方式存储 |
/media | Linux系统会自动识别一些设备,如U盘、光驱等,识别后将其挂在于此目录 |
/mnt | 系统提供此目录用以临时挂载别的文件系统,用户可以将外部的存储挂载于/mnt |
/opt | 系统提供用以安装其他软件,如安装ORACLE数据库等,默认为空 |
/usr/local | 系统提供用以使用编译源码方式安装程序的目录 |
/var | 该目录存放经常被修改的文件及目录,例如各种日志文件 |
/selinux | 系统的一种安全子系统,控制程序只能访问特定文件,有三种可设置的工作模式 |
关机&重启
指令 | 简介 |
---|---|
shutdown -h now | 立刻进行关机 |
shutdown -h 1 | 1分钟后进行关机 |
shutdown -r now | 立即进行重启 |
halt | 关机 |
reboot | 现在重新启动计算机 |
sync | 将内存数据同步到磁盘上 |
注意:不论是重启系统或者关闭系统,都应先手动运行sync命令进行内存数据同步
即使目前的shutdown/reboot/halt等命令均在关机前进行了sync命令,但应谨慎为上
用户管理
用户登录和注销
尽量少使用root账户登录,因为它是系统管理员,拥有最大的权限。为了避免误操作,一般使用普通账户登录,如若需要相应的权限,可以使用su - root命令临时切换为系统管理员身份。
在提示符下输入logout即可注销账户
添加用户
基本介绍:Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账户,然后用这个账号的身份进入系统
基本语法
useradd 用户名
当创建用户成功以后,会自动的创建和用户名同名的家目录
也可以通过useradd -d 指定目录 新的用户名,给新创建的用户指定家目录
指定/修改密码
passwd 用户名
删除用户
基本语法
userdel 用户名
默认保留home目录,仅删除用户
user -r 用户名 ,删除用户以及用户home目录
查询用户
基本语法
id 用户名 ,即可显示用户信息
说明,当用户不存在时,返回无此用户
切换用户
基本介绍
在Linux系统中,如果当前用户的权限不够,可以通过su - 更高权限用户,切换用户执行
基本语法
su - 切换用户名
细节说明
从高权限用户切换到低权限用户,不需要输入密码,反之需要
当需要返回原来用户时,使用exit/logout指令
查看当前用户
基本语法
whoami/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 : 系统重启
说明: 常用运行级别是3和5, 也可以指定默认运行级别
命令: init[0123456]
通过init来切换不同的运行级别
CentOS7运行级别说明
在/ect/inittab文件中进行了简化, 如下:
multi-user.target: analogous to runlevel 3
graphical.target: analogous to runlevel 5
-# To view current default target, run:
systemctl get-default
-# To set a default target, run:
systemctl set-default TARGET.target
重置root密码
重启系统, 进入开机界面, 按"e"进入编辑界面
进入编辑界面, 使用键盘上下键移动光标, 找到以"Linux16"开头内容所在的行数, 将ro改为rw,并在行末输入: init=/bin/sh
输入完成后,直接按快捷键: Ctrl+x, 进入单用户模式
输入: "passwd root", 回车, 接着输入密码与确认密码, 显示passwd.....,说明密码修改成功
在鼠标闪烁位置输入: touch /.autorelabel, 按下回车
输入: exec /sbin/init
帮助指令
man获得帮助信息
man [命令或配置文件] (功能描述: 获得帮助信息)
例如: 查看ls命令的帮助信息 man ls (在Linux系统中, 隐藏文件是以"."开头)
help指令
help 命令 (功能描述: 获得shell内置命令的帮助信息)
例如: 查看cd命令的帮助信息 help cd
文件目录
pwd
pwd ,显示当前工作目录的绝对路径
ls
ls [选项] [目录或是文件]
常用选项
-a : 显示当前目录所有的文件和目录, 包括隐藏文件
-l : 以列表的方式显示信息
cd
cd [参数] (功能描述: 切换到指定目录, 绝对路径,相对路径皆可)
cd ~ 或者 cd : 回到自己的家目录, 例如当前用户为root, 则cd ~ 切换到/root
cd.. 回到当前目录的上一级目录
mkdir
mkdir [选项] 创建的目录
mkdir -p 创建多级目录
例如(下例中仅/home/目录存在):
mkdir /home/dog 创建/home/dog目录
mkdir -p /home/animal/cat 创建/home/animal/cat目录
rmdir
mkdir的反向操作, 用于删除目录
rmdir [选项] 要删除的目录
rmdir /home/dog 删除/home/dog目录
上例仅能删除空目录, rm -rf 要删除的非空目录
rm指令能够删除文件和目录
选项r表示递归删除目录
f表示强制删除, 不会显示删除确定提示
rmdir -p 要删除的目录, 是当子目录被删除后使它也成为空目录的话,则顺便一并删除
touch
创建空文件
touch 文件名称
cp
拷贝文件
cp [选项] source dest
source: 源文件
dest: 目标目录
常用选项: -r, 用于递归复制整个文件夹
rm
删除文件或目录
rm [选项] 要删除的文件或目录
常用选项:
-r : 递归删除整个文件夹
-f : 强制删除不提醒
应用实例:
rm /home/HelloWorld.java : 删除/home/HelloWorld.java
rm -rf /home/dir_java : 递归删除/home/dir_java目录
提示: 删除的目录有多个文件或目录时, 加上-f选项, 避免不必要的删除确认提示
mv
移动文件与目录或者重命名
mv oldFileName newFileName (当前目录下, 执行重命名操作)
mv /temp/sourceFile /opt/destFile (移动文件)
cat
查看文件内容
cat [选项] 要查看的文件
常用选项: -n, 显示行号
more
其是基于vi编辑器的文本过滤器, 以全屏幕的方式按页显示文本文件的内容
more 要查看的文件
详细操作:
操作 功能说明 空格键(space) 表示向下翻页 回车键(Enter) 表示向下一行 q 退出more指令 Ctrl + F 向下滚动一屏 Ctrl + B 返回上一屏 = 输出当前行号 :f 输出文件名和当前行号 less
less指令用来分屏查看文件内容, 功能与more指令类似, 但比more指令更加强大, 支持各种显示终端.
使用less指令查看文件内容时, 并不是一次性将整个文件加载到内存, 而是按需动态加载内容, 使用查看较大的文件
less 要查看的文件
详细操作
操作 功能说明 空格键 向下翻动一页 [pagedown] 向下翻动一页 [pageup] 向上翻动一页 /字符 向下查找[字符], n : 下一个匹配字符, N : 上一个匹配字符 ?字符 向上查找[字符], n : 上一个匹配字符, N : 下一个匹配字符 q 退出less echo
输出内容到控制台
echo [选项] [输出内容]
echo $PATH : 输出环境变量
echo hello, world! : 输出hello, world!
head
用于显示文件开头部分的内容
head 文件 : 查看文件前10行内容(默认为10行)
head -n 5 文件 : 查看文件前5行内容
tail
用于输出文件尾部内容, 默认情况下显示文件的后10行内容
tail 文件 : 查看文件后10行内容
tail -n 5 文件 : 查看文件后5行内容
tail -f 文件 : 实时追踪该文档的所有更新
>和>>
.> : 输出重定向, >> : 追加
ls -l > ls.txt : 将列表的内容写入文件ls.txt中(覆盖写)
ls -al >> lsa.txt : 将列表的内容追加到文件lsa.txt的末尾
cat 文件1 > 文件2 : 将文件一的内容覆盖写到文件2中
ln
软连接也称为符号连接, 类似于Windows里的快捷方式, 用于链接其它文件
ln -s [原文件或目录] [软链接名] : 给原文件创建一个软链接
说明: 使用pwd指令查看目录时, 仍然是软链接所在的目录
history
查看已经历史命令, 也可以再次执行历史命令
应用实例:
history : 显示所有的历史命令
history 10 : 显示最近使用过的10个命令
!5 : 执行历史编号为5的命令
时间日期
date
显示当前日期
指令 功能说明 date 显示当前时间 date +%Y 显示当前年份 date +%m 显示当前月份 date +%d 显示当前是哪一天 date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒
设置日期
date -s 字符串时间
cal
查看日历指令
cal [选项] : 不加选项, 显示本月日历
搜索查找
find
find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或目录显示在终端
基本语法
find [搜索范围] [选项]
选项 功能 -name<查询方式> 按照指定的文件名查找模式查找文件 -user<用户名> 查找属于指定用户名所有文件 -size<文件大小> 按照指定的文件大小查找文件 应用实例
案例一: 按文件名,根据名称查找/home/目录下的hello.txt文件
find /home -name hello.txt
案例二:按拥有者:查找/opt目录下,用户名称为noboby的文件
find /opt -user nobody
案例三:查找整个linux系统下大于200M的文件(+n大于 -n小于 n等于,单位有k, M, G)
find / -size +200M
locate
locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确性,管理员必须定期更新locate数据库
基本语法:
locate 搜索文件
特别说明:由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
which指令,可以查看某个指令在哪个目录下,比如ls指令在那个目录
grep和|
grep过滤查找,管道符 |,表示将前一个命令的处理结果输出传递给后面的命令处理
基本语法
grep [选项] 查找内容 源文件
常用选项
选项 功能 -n 显示匹配行及行号 -i 忽略字母大小写 应用实例
请在hello.txt文件中,查找“yes"所在行,并且显示行号
cat /home/hello.txt | grep "yes"
grep -n "yes" /home/hello.txt
解压缩
gzip/gunzip
gzip用于压缩文件, gunzip用于解压
基本语法
gzip 文件 (只能将文件压缩为*.gz文件)
gunzip 文件.gz (解压gz文件)
应用实例
案例一:gzip压缩,将/home/hello.txt文件进行压缩
gzip /home/hello.txt
案例二:gunzip解压,将/home/hello.txt.gz文件进行解压
gunzip /home/hello.txt.gz
zip/unzip
zip用于压缩文件,unzip用于解压文件,这个在项目打包发布中很有用
基本语法
zip [选项] xxx.zip 要压缩的内容 (压缩文件和目录)
unzip [选项] xxx.zip (解压文件)
常用选项
-r,递归压缩,及压缩目录
-d<目录> 指定解压后文件的存放目录
应用实例
案例一:将/home/目录及其所有子文件,子文件目录进行压缩为myhome.zip
zip -r myhome.zip /home/
案例二:将myhome.zip解压到/opt/tmp目录下
mkdir /opt/tmp
unzip -d /opt/tmp /home/myhome.zip
tar
tar指令是打包指令,最有打包后的文件类型是.tar.gz
基本语法
tar [选项] xxx.tar.gz 打包的内容
选项 功能 -c 产生.tat打包文件 -v 显示详细信息 -f 指定压缩后的文件名 -z 打包同时压缩 -x 解压.tar文件 应用实例
案例一:压缩多个文件,将/home/pig.txt和/home/cat.txt压缩成 pc.tar.gz
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
案例二:将/home文件夹压缩成myhome.tar.gz
tar -zcvf myhome.tar.gz /home/
案例三:将pc.tar.gz解压到当前目录
tar -zxvf pc.tar.gz
组、权限管理
组
在Linux中的每个用户都必须属于某一个组
Linux中文件也有组的概念,且不局限于一个组
所在组
其它组
文件/目录所有者
一般为文件/目录的创建者,谁创建了该文件/目录,就为其所有者
查看所有者
ls -lah
修改所有者
chown 用户名 文件名
文件/目录所在组
当某个用户创建了一个文件后,该用户所在组就是文件所在组
查看文件/目录所在组
ls -lah
修改文件所在组
chgrp 组名 文件名
其它组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其它组
改变用户所在组
usermod -g 新组名 用户名
usermod -d 目录名 用户名 改变该用户登录的初始目录。
特别说明,用户需要有进入新目录的权限
权限
通常,ls -l显示内容如下:
-rwxrw-r-- 1 root root 121 Feb 2 12:12 hello.txt
说明(0~9):
第0位:文件类型(d, -, l, c, b)
-:普通文件
d:目录,也就是文件夹
c:字符设备文件,鼠标,键盘
b:块设备,例如,硬盘
第1~3位:所有者权限,---User
第4~6位:所属组权限,---Group
第7~9位:其它用户权限,---Other
rwx权限说明
对于文件
r:表示可读(read),可以读取、查看
w:表示可写( write),可以修改,但是并不代表可以删除该文件,删除需要有对该文件所在目录具有写权限
x:表示可执行(execute),可以被执行
对于目录
r:表示可读(read),可以读取、ls查看目录内容
w:表示可写( write),可以修改,对目录内创建、删除、重命名目录/文件
x:表示可执行(execute),可以进入该目录
数字表示权限
r=4,w=2,x=1,因此rwx=4+2+1=7
其它说明
-rwxrw-r-- 1 root root 121 Feb 2 12:12 hello.txt
1:文件:硬连接数,目录:子目录数
root:用户
root:组
121:文件大小(字节),如果是文件夹,显示4096字节
Feb 2 12:12:最后修改时间
hello.txt:文件名
修改权限
通过chmod指令,可以修改文件或者目录的权限
chmod u=rwx,g=rx,o=x 文件/目录名
chmod o+x 文件/目录名
chmod a-x 文件/目录名
说明:u:所有者,g:所有组,o:其他人,a:所有人(u,g,o的总和)
+:增加权限,-:减少权限,=赋予权限
案例演示
设置hello.txt文件的所有者读写执行权限,所在组读执行,其它组读执行
chmod u=rwx,g=rx,o=rx hello.txt
设置hello.txt文件所有者除去执行权限,增加所在组写权限
chmod u-x,g+w hello.txt
设置hello.txt文件所有用户添加读权限
chmod a+r hello.txt
使用数字方式变更权限
r=4,w=2,x=1
数字 相应权限 0 --- 1 x 2 w 3 wx 4 r 5 rx 6 rw 7 rwx
例如:chmod u=rwx,g=rx,o=x hello.txt == chmod 751 hello.tx
修改文件所有者
基本用法
chown newowner 文件/目录 改变所有者
chown newowner:newgroup 文件/目录 改变所有者和所在组
-R,如果是目录,则是其下所有子文件或目录递归生效
案例演示
将/home/abc.txt文件的所有者修改为tom
chown tom /home/abc.txt
将/home/test目录下所有的文件和目录的所有者都修改为tom
chown -R tom /home/test
修改文件/目录所在组
基本用法
chgrp newgroup 文件/目录
案例演示
将/home/abc.txt文件的所在组修改成sh
groupadd sh
chgrp sh /home/abc.txt
将/home/kkk目录下的所有文件和目录所在的组都修改成sh