1. 目录和文件共用
1.1 目录和文件操作
# 删除目录/文件 remove
rm [-rf] 文件或目录名
rm -rf test # 递归(recursive)、强制(force)地删除文件或目录(一般都会加-rf)
# 复制目录/文件 copy
cp [-r...] 源文件/目录 目标文件/目录
cp file.txt /home/file.txt
cp -r source destination # 复制目录必须使用-r表示递归复制
# 剪切/移动目录/文件 move
mv [options] 源文件/目录 目标文件/目录
mv file.txt /home/file.txt
1.2 权限管理
(1)权限介绍
通过ll可以查看当前目录下文件和子目录的详细信息,其中第一列就是权限:
第1位:文件类型
- d:目录文件
- -:普通文件
- l:软链接文件
- b:块设备文件(如分区文件)
- c:字符设备文件(如鼠标、键盘等)
- p:管道符文件
- s:套接字文件
第2~4位:文件所属用户 (u) 的权限
第5~7位:文件所属组 (g) 的权限
第8~10位:其他组 (o) 的权限
- r:代表权限是可读,r 也可以用数字 4 表示
- w:代表权限是可写,w 也可以用数字 2 表示
- x:代表权限是可执行,x 也可以用数字 1 表示
对于文件和目录rwx表示的意义不同:
对于文件:
- r:可以用cat查看文件内容
- w:可以用vim修改文件内容
- x:可以将其运行为二进制文件
对于目录:
- r:可以查看目录下的列表
- w:可以创建和删除文件下的目录
- x:可以使用cd进入目录
(2)权限命令
# 修改文件/目录的权限 change mode(下面两个意义相同)
chmod u=rwx,g=rw,o=r test.txt
chmod 764 test.txt
# 修改文件/目录的的所有者和所属组 change owner&group
chown [选项] user[:group] 文件/目录
# 修改文件/目录的所属组 change group
chgrp [选项] group 文件/目录
2. 目录
2.1 目录切换
# 切换到上一层目录
cd ..
# 切换到系统根目录
cd /
# 切换到当前用户主(家)目录
# 如果是root用户就相当于 cd /root
# 如果是普通用户就相当于 cd /home/jundong.yao
cd ~
# 切换到上一个操作所在目录
cd -
# 进入当前目录下的子目录(usr)
cd usr
# 进入当前目录下的子目录(usr)
cd /usr
2.2 目录操作
# 显示当前工作目录的路径
pwd
# 显示目录下的文件和子目录 list
ls # 显示当前目录下的文件和子目录
ls /home # 显示指定目录下的文件和子目录
ll # (即ls -l) 显示详细信息
# 创建目录 make directory
mkdir [-mp] 目录名
mkdir -p test1/test2/test3 # 递归地创建目录(一次性创建多层目录)
mkdir -m 711 test # 创建目录及其权限(drwx--x--x)
# 删除空目录 remove directory
rmdir [-p] 目录名
rmdir -p test1/test2/test3 # 递归地删除空目录,直到遇到非空目录或根目录
# 在指定目录及其子目录中搜索文件或目录
find [-name/iname/inum] [表达式]
# 搜索当前目录及子目录下所有文件和文件夹
find .
# 搜索home目录下的以.txt结尾的文件
find /home -name "*.txt"
# 在上述基础上忽略大小写
find /home -iname "*.txt"
3. 文件
3.1 文件操作
# 创建新文件或更新已存在文件
touch [选项] 文件名
touch file1.txt file2.txt file3.txt # 创建3个文件
# 创建硬链接/软链接
ln [选项] <源文件> <硬链接/软链接文件>
ln file.txt /tmp/file.txt # 创建名为file_link的硬链接
ln -s file.txt file_link # 创建名为file_link的软/符号链接(symbolic)
# 查看文件
cat/more/less/tail 文件名
tail -f/tailf 文件名 # 对某个文件进行动态监控(如日志文件)
# 编辑文件
vim 文件名
vim 编辑器是 Linux 中的强大组件,是 vi 编辑器的加强版。包含三种模式:
- 命令/普通模式(Normal mode):用户刚启动 vi/vim 进入的模式,另外两种模式必须通过普通模式进行切换。
- 插入模式(insert mode):编辑本文。
- 底行模式:有很多命令,一般用来保存并退出(wq)。
一般流程:vim 文件名 ------> 进入文件 -----> 命令模式 ------> 按i进入插入模式 ----->编辑文件 ------->按Esc进入命令模式 -----> 按 shift + ; 进入底行模式 -----> 输入wq或者q!退出(wq表示保存并退出,q!表示强制退出不保存)
3.2 文件压缩
Linux 中的打包文件一般是以 .tar 结尾的,压缩的命令一般是以 .gz 结尾的。而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般 .tar.gz。
# 打包并压缩文件
tar -zcvf 打包压缩后的文件名 要打包压缩的文件
# test 目录下有三个文件分别是:aaa.txt、 bbb.txt、ccc.txt
tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt # 压缩包创建在test 目录下
tar -zcvf test.tar.gz test # 压缩包创建在test父目录下
# 解压压缩包
tar -xvf 压缩文件
tar -xvf test.tar.gz # 解压到当前目录
tar -xvf test.tar.gz -C /usr # 解压到指定目录
3.3 文件传输
4. 用户及用户组
4.1 用户管理
# 创建用户账号
useradd [选项] 用户名 # 保存在 /etc/passwd 文本文件中
# 删除用户帐号
userdel [选项] 用户名
# 修改用户账号的属性和配置比如用户名、用户 ID、家目录
usermod [选项] 用户名
# 设置用户的认证信息(用户密码、密码过期时间)
passwd -S 用户名 # 显示用户账号密码信息
passwd -d 用户名 # 清除用户密码,会导致用户无法登录
passwd 用户名 # 修改用户密码,随后系统会提示输入新密码并确认密码
# 切换用户 Switch User
su [选项] 用户名
4.2 用户组管理
# 增加一个新用户组
groupadd [选项] 用户组
# 删除一个已有用户组
groupdel 用户组
# 修改用户组的属性
groupmod [选项] 用户组
5. 系统状态
# 监控系统状况(类似于任务管理器)
top [选项] # 实时查看系统的CPU使用率、内存使用率、进程信息等
htop [选项] # 提供了更加交互式和友好的界面
sudo apt install htop # htop需要安装
# 监控虚拟内存数据统计 Virtual Memory Statistics
vmstat [间隔时间] [重复次数]
vmstat 5 10 # 每隔5秒统计一次虚拟内存数据,一共统计10次
监控关于进程、内存、swap、I/O 、CPU等系统整体运行状态。
# 显示系统总共运行了多长时间和系统的平均负载
uptime [选项]
# 用于查看系统中的进程信息,包括进程的ID、状态、资源使用情况等
ps [选项]
# 这两个命令都是查看当前系统正在运行进程,区别是展示格式不同
ps -ef
ps -aux
# 查看特定的进程
ps aux|grep redis
6. 网络通信
# 测试与目标主机的网络连接
ping [选项] 目标主机
# 显示了几个网络接口及其属性,如网络接口的 IP 地址、MAC 地址、状态等
ifconfig
# 用于查看系统的网络连接状态和网络统计信息,如网络协议、监听端口等
netstat [选项]
# 比 netstat 更好用,提供了更快速、更详细的网络连接信息
ss [选项]
7. 其他
7.1 以管理员身份执行指令
# 等同于root亲自执行
sudo 任何命令
# 切换到root用户
sudo su
7.2 杀死进程
ps # 先查找进程
kill -9 进程的pid # 然后kill杀掉
7.3 文本搜索工具
# Global search REgular expression and Print out the line
# 全面搜索正则表达式并把行打印出来
# 根据用户指定的“过滤条件”对文本进行逐行的匹配检查
grep [options] [pattern] [file ...] # pattern可以是字符串也可以是正则
grep 要搜索的字符串 要搜索的文件 --color # 搜索命令,--color 代表高亮显示
8. 环境变量
在Linux系统中,环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的主目录(HOME)。
8.1 常用的环境变量
- PATH:操作系统在哪些目录中查找可执行文件
- HOME:当前用户的主目录的路径
- HISTSIZE:历史记录长度数
- LOGNAME:当前用户的登录名
- HOSTNAME:指主机的名称
- SHELL:当前用户所使用的 Shell 的路径,即 Shell 类型
- LANGUAGE:语言相关的环境变量,用于多语言环境设置
- MAIL:当前用户的邮件存放目录
- PS1:Shell 提示符的格式,对于 root 用户是#,对于普通用户是$
8.2 显示所有环境变量和值
# 显示当前环境变量
env
# 将变量导出为环境变量
export
# 显示已导出的环境变量
export -p
8.3 显示某个变量的值
# 输出当前的PATH环境变量的值
echo $PATH
# 输出当前的HOME环境变量的值
echo $HOME