文件和目录操作
ls 显示内容
ls #列出当前目录内容
ls -l #显示详细信息(权限、大小、修改时间..)
ls -a #显示隐藏文件(以"."开头的文件)
ls -al #(常用)
cd 切换目录
cd #切换到主目录 也可以写成 cd ~
cd /path #跳转到指定目录
cd .. #返回上一级
touch 创建文件
touch filename #创建一个名为 filename 的空文件
touch file1.txt file2.txt file3.txt # 同时创建多个文件
touch file{1..10}.txt # 创建 file1.txt 到 file10.txt
touch existingfile.txt # 如果文件已经存在,touch 会更新文件的访问时间和修改时间。
pwd 显示目录
pwd #显示当前工作目录
cp 复制
cp file1.txt file2.txt #如果file2不存在则创建,如果存在,则覆盖原内容
cp -ri dir1/ dir2/ #递归复制,-r表示递归,-i表示交互,如果出现重名文件则让用户选择是否覆盖。
mv 移动
mv clod.txt new.txtx #重命名文件
mv -i 1.txt /path/to/dir -i # 移动文件 -i交互
mv -ri dir1/ dir2/ #移动文件夹 -r递归 -i交互
rm 删除
rm file.txt #删除文件,不会提示确认,如果文件不存在会报错
rm -i file.txt # 删除文件+询问
rm -r dirextory/ #递归删除,谨慎使用
rm -f file.txt #强制删除文件,不会提示确认,如果文件不存在不会报错,会静默忽略。
mkdir 创建文件夹
mkdir new_directory # 创建新目录
rmdir empty_directory # 删除空目录
文件查看与编辑
cat
cat file.txt #显示文件内容 cat命令是整个文件的内容从上到下显示在屏幕上
cat file1.txt file2.txt # 拼接多个文件并显示
more 分页查看
more file.txt # 分页显示文件内容(适用于长文件)
less 分页查看
less file.txt # 分页显示文件内容(比more更强大,支持向前翻页等功能)
head
head file.txt # 默认显示文件前10行
head -n 20 file.txt # 显示文件前20行
tail
tail file.txt # 默认显示文件最后10行
tail -n 20 file.txt # 显示文件最后20行
tail -f file.txt # 实时查看文件内容(例如日志文件)
grep 搜索内容
grep "pattern" filename # 在文件 filename 中搜索包含字符串 pattern 的行,并输出这些行
grep "warning" file1.txt file2.txt file3.txt # 分别在 file1.txt、file2.txt 和 file3.txt 中搜索包含字符串 warning 的行
grep "[0-9]" filename # 这条命令会输出 data.txt 中所有包含数字的行
grep -r "pattern" directory/ # 在指定目录及其子目录中递归搜索匹配的行
grep -n "pattern" filename # 这条命令会输出 logfile.txt 中所有包含字符串 error 的行,并显示每行的行号
grep -v "pattern" filename # 输出不包含指定模式的行
vim 编辑文件
vim file.txt #使用vim编辑文件
vim基础操作
三种模式
- 命令模式:默认模式,输入命令。
- 插入模式:输入文本,按
i
进入,Esc
返回命令模式。 - 底行模式:执行特殊命令,按
:
进入。
保存和退出
- 保存并退出:
Esc
→:wq
→ 回车 - 不保存退出:
Esc
→:q!
→ 回车
重定向
( > 和 >> )输出重定向
>:将命令的输出重定向到文件中,如果文件已存在,则覆盖文件内容
command > file.txt # 将字符串 Hello, world! 写入到 output.txt 文件中,如果文件已存在,则覆盖原有内容
>>:将命令的输出追加到文件中,如果文件已存在,则在文件末尾添加内容
echo "Hello again!" >> output.txt # 将字符串 Hello again! 追加到 output.txt 文件的末尾,不会覆盖原有内容
( < )输入重定向
<:将文件的内容作为命令的输入
sort < input.txt # 将 input.txt 文件的内容作为 sort 命令的输入,并将排序结果输出到屏幕
( | ) 管道
虽然管道不是严格意义上的重定向,但它与重定向密切相关。管道的作用是将一个命令的输出作为另一个命令的输入
command1 | command2
ps aux | grep "ssh"
# 将 ps aux 命令的输出作为 grep 命令的输入,从而过滤出包含 ssh 的进程信息。
文件权限与所有权 3个
chmod 改变文件或目录的权限
chmod 755 file.txt #设置RWX(r读=4,w写=2,x执行=1)
chmod u+x file.txt #给文件所有者添加执行权限
chmod g-w file.txt #移除文件所在组的写权限
chown 改变文件或目录的所有者或用户组
一个文件只能有一个所有者、一个所有组
chown #改变文件或目录的所有者或用户组,一个文件只能有一个所有者、一个所有组
chown user file.txt #改变文件所有者
chown :group file.txt #改变文件所有组
chown user:group file.txt #改变文件所有者和用户组(这两个操作是独立的,不需要所有者必须是所属组的成员,但是一般会有从属关系)
chown -R user:group directory/ #递归改变目录及其内容的所有者
chgrp 改变文件或目录的用户组
chgrp group file.txt #改变文件的用户组
进程管理
ps 显示当前系统的进程
ps # 显示当前系统的进程
ps aux # 查看所有进程,包括其他用户的(适合快速查看进程的状态,输出格式更直观)
ps -ef # 查看所有进程,包括其他用户的(适合需要查看进程的完整命令行参数和父进程ID等详细信息的场景)
top 显示当前系统资源使用情况
top # 显示当前系统资源使用情况
kill 结束进程
kill PID # 结束指定进程 (ps、top等命令都可以展示出进程的PID)
kill -9 PID # 强制结束进程
系统信息与监控
df 查看磁盘空间
df # 查看磁盘空间
df -h # 以人类可读的格式显示(如GB)
du 显示当前目录的大小
du # 显示当前目录的大小
du -sh drectory # 显示指定目录的总大小
# -s:汇总指定目录的总大小,不显示子目录的详细信息;
# -h:以易读的格式显示大小(如 KB、MB、GB)。
free 查看内存使用情况
free # 查看内存使用情况
free -h
uptime 查看时间
uptime # 查看系统的运行时间、当前时间、系统负载等
hostname 主机名
hostname # 显示当前主机名
sudo hostname newhostname # 临时设置主机名
hostnamectl # 查看系统的主机名以及相关信息
sudo hostnamectl set-hostname newhostname # 修改主机名
sudo 是一个非常重要的命令,用于在 Linux 和 Unix 系统中以超级用户(root)或其他用户的身份执行命令。它的全称是 “superuser
do”,意思是“以超级用户的身份执行某个操作”。使用 sudo,普通用户可以执行需要管理员权限的命令,而无需切换到 root 用户。
网络管理与诊断 6个
ping
ping google.com # 向指定网站发送ping请求
### ip
```powershell
ip # 查看和配置网络接口,比ifconfig更强大
ip addr # 查看网络层配置
ip link # 查看链路层配置
ip route # 查看路由表
### curl
```powershell
curl #命令行工具,用于与URL交互
curl http://baidu.com #获取网页内容
curl -O http//xxxx.txt #下载文件
#-o:将输出保存到指定文件。
#-O:下载文件时,使用远程文件名保存。
#-d:发送 POST 数据。
#-F:发送表单数据。
#-H:添加自定义 HTTP 头。
#-u:提供用户名和密码,用于 HTTP 基本认证。
#-L:跟随重定向。
#-v:显示详细的请求和响应信息。
打包与压缩 3个
tar 打包
保留文件权限和属性
# tar:用于创建、提取归档文件
tar -cvf archive.tar file1.txt file2.txt directory/#创建归档
tar -xvf a.tar #解压归档到当前目录
tar -czvf a.tar dirctort/ #创建归档
tar -xzvf a.tar #解压归档到当前目录
#-c:创建一个新的归档文件
#-v:在归档过程中显示详细信息(verbose mode)
#-f:指定归档文件的名称
#-x:解压归档文件
#-z:使用 gzip 压缩归档文件
#-j:使用 bzip2 压缩归档文件
#-J:使用 xz 压缩归档文件
#-t:列出归档文件中的内容,不进行解压
#-C:指定解压到指定目录。
配合压缩算法
tar -czvf backup.tar.gz /home/user/documents # 使用 gzip 压缩
tar -cjvf backup.tar.bz2 /home/user/documents # 使用 bzip2 压缩
tar -cJvf backup.tar.xz /home/user/documents # 使用 xz 压缩
zip 压缩
不保留文件权限和属性
zip a.zip file1.txt fil2.txt #创建zip文件
unzip a.zip 解压zip文件
文件查找
find 查找文件或目录
find /path -name "file.txt" #从/path目录开始查找名为file.txt的文件
find . -type f -name "*.txt" #从当前目录及其所有子目录开始查找所有.txt的文件
# -type f 只查找文件
locate
#locate:快速查找文件(基于数据库,需要先更新数据库)
locate file.txt #查找file.txt文件
which
# which:查找命令的路径,需要该路径已经在环境变量中了
which python3
补充
通配符(* ?[] {})
* 多字符匹配 eg:rm file*.tmp #删除当前目录下所有以 file 开头,扩展名为 .tmp 的文件。
? 单字符匹配
[ ] 匹配括号内指定的任意单个字符 ls [a-z]*.log #列出当前目录下所有以小写字母开头,扩展名为 .log 的文件。
# [az]匹配a开头或者z开头,[a-z]匹配a-z之间的任意字符
[! ] 匹配不在方括号内的字符
{ } 用于生成多个指定的模式 eg:touch file{a,b,c}.txt #生成 filea.txt、fileb.txt 和 filec.txt
{ } 生成多个值,扩展文件名或字符串
[ ] 匹配单个字符,用于条件表达式
链接
ln 硬链接
硬链接是指向文件系统中 inode(索引节点) 的直接链接。它与原始文件共享同一个
inode,因此对硬链接的修改会直接反映到原始文件上。
硬链接和原始文件是平等的,删除原始文件后,硬链接仍然可以访问文件内容。只有当所有指向文件数据的硬链接都被删除后,文件数据才会被真正删除。
硬链接不能跨文件系统
ln [原始文件] [硬链接名]
ln file.txt link.txt # 在当前目录下创建一个名为 link.txt 的硬链接,指向 file.txt
ln file1.txt link1.txt link2.txt # 创建多个硬链接,link1.txt 和 link2.txt 都指向 file1.txt
ln -sf /path/to/newfile.txt existinglink.txt
ln -s 软链接
软链接类似于 Windows 中的快捷方式,它是一个独立的文件,指向另一个文件或目录
软链接可以跨文件系统
ln -s [目标文件或目录] [软链接名]
eg:ln -s /path/to/file.txt link.txt # 在当前目录下创建一个名为 link.txt 的软链接,指向 /path/to/file.txt
ls -l # 可以使用 ls -l 命令查看链接的类型
rm link.txt # 删除链接