1. 用户管理相关
1.1 添加用户
- 基本语法:
useradd [新用户名]
- 应用案例:添加一个用户 jason,默认该用户的家目录在 /home/jason
- 细节说明:
- 当创建用户成功后,会自动创建和用户名同名的家目录
- 也可以通过
useradd -d [指定目录] [新用户名]
的方式给新用户指定家目录 useradd -g [用户组] [用户名]
可以在新建用户的时候指定用户组
1.2 指定/修改 密码
- 基础语法:
passwd [待修改的用户名]
,如果不指定用户名,则是修改当前用户的密码 - 应用案例:
1.3 删除用户
-
基本语法:
userdel [待删除的用户名]
-
应用案例:
- 删除用户,但是保留家目录:
userdel jason
- 删除用户及其家目录:
userdel -r king
该操作要谨慎!
- 删除用户,但是保留家目录:
-
细节说明:一般删除也是需要保留家目录的
1.4 查询用户
- 基本语法:
id [待查询的用户名]
- 应用案例:
id jason
- 细节说明:当用户不存在时,返回无此用户
1.5 切换用户
- 基本语法:
su - [待切换的用户名]
- 应用案例:
su - jason
- 细节说明:
- 从权限较高的用户切换到低权限的用户时,不需要输入密码,反之则需要
- 当需要返回原来的用户时,使用 exit/logout 指令
1.6 用户组
1.6.1 新增用户组
- 基本语法:
groupadd [组名]
1.6.2 删除用户组
- 基本语法:
groupdel [组名]
1.6.3 增加用户时直接加上组
- 基本语法:
useradd -g [用户组] [用户名]
- 细节说明:当创建用户时未指定组,会默认给这个用户创建同用户名的组
1.6.4 修改用户组
-
基本语法:
usermod -g [用户组] [用户名]
-
细节说明:当创建用户时未指定组,会默认给这个用户创建同用户名的组
-
查看用户信息:
cat /etc/passwd
-
查看组信息:
cat /etc/group
2. 文件目录相关
2.1 cd
切换目录
- 回到家目录:
cd ~
- 回到上一级目录:
cd ..
2.2 mkdir
创建(一级)目录
创建多级目录:mkdir -p /home/tom/hello
, -p, --parents no error if existing, make parent directories as needed
2.3 rmdir
删除目录
递归删除目录:rmdir -p [目标目录]
,-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
2.4 touch
创建空文件:touch test.txt
2.5 cp
-
基本语法:
cp [选项] source dest
-
常用选项:-r 递归复制整个文件夹
-
案例1:将 /home/hello.txt 文件拷贝到 /home/bbb 目录下
cp /home/hello.txt /home/bbb
-
案例2:递归复制整个文件夹,比如将 /home/bbb 整个目录拷贝到 /opt
cp -r /home/bbb /opt/
-
案例3:强制覆盖不提示:
\cp -r /home/bbb /opt
2.6 rm
-
基本语法:
rm [选项] [待移除文件或目录]
-
常用选项:
- -r:递归删除整个文件夹
- -f:强制删除不提示
-
案例1:将 home/hello.txt 文件删除
rm /home/hello.txt
-
案例2:递归删除整个文件夹 /home/bbb
rm -rf /home/bbb
2.7 mv
移动(重命名)文件
- 基本语法:
rm [原地址] [新地址]
如果在同一个目录下,是重命名文件;如果不在同一个目录,则是移动文件。
2.8 cat
查看文件内容
- 基本语法:
cat [选项] [要查看的文件]
- 常用参数:-n 显示行号
less 动态加载,对于显示大型文件有较高的效率。
2.9 echo
echo 输出内容到控制台
- 基本语法:
echo [选项] [输出内容]
2.10 head
head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容
- 基本语法:
head [文件]
(默认显示前 10 行)head -n 5 [文件]
(查看文件前 5 行)
2.11 tail
tail 用于输出文件尾部的内容,默认情况下下显示文件的最后 10 行
- 基本语法:
tail 文件
(查看文件的尾 10 行的内容)tail -n 5 文件
(查看文件的尾部 5 行的内容)tail -f 文件
(实时追踪文件的更新)
2.12 > 和 >>
> 输出重定向
>> 追加
2.13 ln
ln 可以给文件/目录创建软连接,类似于 Windows 里的快捷方式
- 基本语法:ln -s [原文件/目录] [连接名]
- 案例1:在 /home 目录下创建软连接 myroot,连接到 /root 目录
ln -s /root /home/myroot
- 案例2:删除软连接 myroot
rm /home/myroot
2.14 history
2.15 wc
-
Linux wc命令用于计算字数。利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
-
查看某个文件行数
wc -l test.txt
-
查看某个文件的单词数
wc -w test.txt
-
查看某个文件的字符数
wc -c test.txt
-
查看某个目录下的文件个数
# 查看根目录下的文件个数 ls / | wc -l # 查看当前目录下的文件个数 ls . | wc -l
2.16 du
-
du 命令,全称是 disk usage,用来展示磁盘使用量的统计信息。
-
查看某个目录的磁盘使用情况
du -sh 路径 # -s选项,是 --summarize 的缩写形式,其作用是对 du 的每一个给定参数计算其磁盘使用量 # -h选项是 --human-readable 的缩写形式,表示以人类可读的形式展示磁盘使用量的单位名称(K/M/G)
-
排序某个目录下的磁盘使用情况
du -sh 目录/* | sort -hr
ref: Linux du命令
3 查找指令
3.1 find
find 指令将从指定目录向下递归遍历各个子目录,将满足条件的文件或者目录显示在终端。
-
基本语法:
find [搜索范围] [选项]
-
选项说明
- -name:按照文件名查找文件,可以模糊匹配
- -user:查找属于指定用户的所有文件
- -size:按照指定大小查找文件
-
案例1:找 /opt 目录下的 hello.txt 文件:
find /home -name heelo.txt
-
案例2:查找 /opt 目录下,用户名未 nobody 的文件:
find /opt -user nobody
-
案例3:查找整个 linux 系统下大于 200M 的文件(单位还有 k, M, G):
find / -size +200M # 大于 200M find / -size 200M # 等于 200M find / -size -200M # 小于 200 M
3.2 locate
locate 指令可以快速定位文件路径。locate 指令利用事先建立的系统中的所有文件名及路径的 locate 数据库实现快速定位给定文件的路径。locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新 locate 时刻。
- 基本语法:
locate [待搜索的文件]
- 特别说明:由于 locate 指令给予数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库
locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。
locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:updatedb
3.3 which
which 指令可以查找某个指令在哪个目录下
- 查询 ls 指令在哪个目录下:
which ls
3.4 grep
grep 过滤查找
- 基本语法:grep [选项] 查找内容 源文件
- 常用选项:
- -n:显示匹配及行号
- -i:忽略字母大小写
- 案例:请在 a.txt 文件中查找 “hello” 所在行,并且显示行号
1. 第一种写法: cat /home/a.txt | grep -n "hello"
2. 第二种写法: grep -n "hello" a.txt
4. 压缩和解压
4.1 gzip / gunzip
gzip 用于压缩文件,gunzip 用于解压文件
- 基本语法:gzip 文件(只能将文件压缩为 *.gz 文件)
- 基本语法:gunzip 文件.gz
4.2 zip / unzip
zip 用于压缩文件(文件夹),unzip 用于解压,这两个命令在打包发布中很有用
-
基本语法:
- zip [选项] XXX.zip [文件/文件夹],选项 -r 递归压缩
- unzip [选项] XXX.zip,选项 -d 指定解压后文件存放路径
-
案例1:将 /home 下的所有文件/文件夹压缩成 myhome.zip:
zip -r myhome.zip /home/*
-
案例2:将 myhome.zip 解压到 /opt/tmp 路径:
unzip -d /opt/tmp/ myhome.zip
如果 tmp 文件夹不存在,则会自动创建
4.3 tar
tar 既可以打包压缩也可以进行解压
-
基本语法:tar [选项] XXX.tar.gz [待压缩的内容]
-
选项说明:
- -c:生成 .tar 打包文件
- -v:显示详细信息
- -f:指定压缩后的文件名
- -z:打包同时压缩
- -x:解包 .tar 文件
-
案例1:压缩多个文件,将 /home/pig.txt 和 /home/cat.txt 压缩成 pc.tar.gz:
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
-
案例2:将 /home 的文件夹压缩成 myhome.tar.gz:
tar -zcvf myhome.tar.gz /home/*
-
案例3:将 pc.tar.gz 解压到当前目录:
tar -zxvf pc.tar.gz
-
案例4: 将 myhome.tar.gz 解压到 /opt/tmp2 目录下:
tar -zxvf /home/myhome.tar.gz -C /opt/tmp2
-C 不要忘记
5. 文件权限
5.1 chown
一般文件是谁创建的,文件的所有者就是谁。
- 查看文件所有者:ls -ahl
- 修改文件/目录所有者:
chown 新用户名 文件/目录
- 修改文件/目录所有者和所在组:
chown 新用户名:新组名 文件/目录
- -R 可以递归修改目录下的所有子文件或子目录
- 案例1:使用 root 创建一个文件 apple.txt,然后将其所有者修改为 tom
su root # 切换用户 touch apple.txt # 创建 apple.txt chown apple.txt tom # 更换文件所有者
- 案例2:将 /home/kkk 目录下的所有文件和目录的所有者修改成 tom
chown -R tom /home/kkk
5.2 文件/目录 所在组
-
创建一个组,monster
groupadd monster
-
创建一个用户 fox ,并将 fox 添加到 monster 组内
useradd -g monster fox
-
修改文件 / 目录所属组:
chgrp 新组名 文件/目录
-
使用 root 创建 orange.txt 文件,查看这个文件的归属组,然后修改到 fruit 组
su root # 切换到 root 用户 touch orange.txt # 创建 orange.txt 文件 ll # 查看文件所在组 groupadd fruit # 新增 fruit 组 chgrp fruit orange.txt # 修改文件所在组
-
递归修改所属组:
chgrp -R 新组名 文件/目录
5.3 其它组
除了文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
5.4 改变用户所在组
-
改变用户所在组:
usermod -g 新组名 用户名
-
案例1 :将 zwj 用户更改到 wudang 组
usermod -g wudang zwj # 修改 id zwj # 查看
5.5 权限的基本介绍
-
第 0 位确定文件类型(d, -, l, c, b)
l 是链接,相当于 Windows 的快捷方式
d 是目录,相当于 Windows 的文件夹
c 是字符设备文件,鼠标、键盘等
b 是块设备,比如硬盘
‘-’ 是文件 -
第 1-3 位是所有者(该文件的所有者)拥有该文件的权限
-
第 4-6 位确定所属组(同用户组的)拥有该文件的权限
-
第 7-9 位是其它用户拥有该文件的权限
-
其它说明
1 如果是文件,则代表硬连接数;如果是目录,则表示子目录数 admin 文件所有者 admin 文件所在组 4096 文件大小 Apr 19 11:16 最后修改日期 admin 文件名/目录名
rwx 权限详解
rwx 作用到文件
- [r] 代表可读:可以读取、查看
- [w] 代表可写:可以修改,但是不代表可以删除,能删除一个文件的前提是拥有该文件所在目录的写权限
- [x]代表可执行:文件可以被运行,前提该文件是可执行文件
rwx 作用到目录
- [r] 代表可读:可以读取,可以利用 ls 命令查看目录
- [w] 代表可写:可以修改,可以在目录内创建 +删除 + 重命名
- [x]代表可执行:可以进入该目录 cd 进来
5.6 修改权限 chmod
5.6.1 + - = 变更权限
u:所有者
g:所有组
o:其它人
a:所有人(u、g、o 的总和)
-
chmod u=rwx,g=rx,o=x 文件/目录名
逗号 , 不能忘记!!! -
chmod o+w 文件/目录名
-
chmod a-x 文件/目录名
-
案例1:给 abc 文件的所有者读写执行的权限,所在组执行权限,给其它组读执行权限
chmod u+rwx,g+rx,o+x abc
-
案例2:给 abc 文件的所有者除去执行的权限,增加所属组写的权限
chmod u-x,g+w abc
-
案例3:给 abc 文件的所有用户增加读的权限
chmod a+r abc
5.6.2 通过数字变更权限
r = 4
w = 2
x = 1
-
chmod 751 文件/目录名
-
案例1:将 /home/abc.txt 文件的权限修改为 rwxr-xr-x,使用数字的方式实现:
chmod 755 /home/abc.txt
6 定时任务
6.1 crontab
-
编辑定时任务:crontab -e
# 每分钟执行 ls -l /etc/ > /tmp/to.txt 命令 crontab -e */1 * * * * ls -l /etc/ > /tmp/to.txt
-
列出定时任务:crontab -l
-
案例1:每隔1分钟,将当前日期和日历都追加到 /home/mycal 文件中
# 先写 shell 脚本 mycal.sh date >> /home/mycal.txt cal >> /home/mycal.txt # 增加执行权限 chmod u+x mycal.sh
# 再编写定时任务 crontab -e */1 * * * * /home/mycal.sh
@命令
7 Linux 分区
7.1 查看分区挂载情况
- 命令 lsblk 或者 lsblk -f
8 网络管理
8.1 网络状态查看命令
8.2 网络接口命名修改
8.3 mtr = ping + traceroute
Linux 链路测试工具 mtr 使用介绍
Linux mtr命令
8.4 查端口 - telnet
telnet www.baidu.com 80
如果端口是通的,显示如下图: