由于最近接了一个笔试,发现笔试可能涉及到Linux,我准备临时抱佛脚一下赶紧复习一下Linux的用法哈哈。Linux 的基础用法包含文件系统操作、权限管理、网络配置、进程管理等基本命令;进阶操作包括网络调试、包管理、服务管理和用户管理等;高级操作则涵盖 Shell 脚本编程、计划任务设置、文件系统管理以及日志分析等功能。
一、基础命令
# 文件和目录操作
cd <directory> # 进入指定目录
cd .. # 返回上一级目录
cd ~ # 返回 home 目录
pwd # 显示当前目录路径
ls # 列出当前目录下的文件和目录
ls -l # 列出详细信息(权限、拥有者、大小、修改时间等)
ls -a # 列出所有文件,包括隐藏文件
touch <filename> # 创建一个空文件
cp <source> <dest> # 复制文件
mv <source> <dest> # 移动或重命名文件
rm <filename> # 删除文件
rm -r <directory> # 递归删除目录
cat <filename> # 查看文件内容
chmod 755 <file> # 修改文件权限,rwx(读写执行)权限
chown <user>:<group> <file> # 修改文件所属用户和用户组
# 系统状态查看
uname -a # 查看内核版本及系统信息
df -h # 查看磁盘使用情况
free -h # 查看内存使用情况
uptime # 查看系统运行时间及负载
# 查看进程
ps aux # 查看所有运行的进程
top # 实时显示系统资源占用情况
kill <PID> # 结束指定进程(PID为进程号)
# 压缩与解压缩
tar -cvf archive.tar file1 file2 # 创建tar压缩包
gzip file # 压缩为.gz文件
tar -czvf archive.tar.gz directory # 创建.tar.gz压缩包
tar -xvf archive.tar # 解压tar包
tar -xzvf archive.tar.gz # 解压tar.gz包
unzip file.zip # 解压.zip文件
cd:改变目录。cd <目录>进入某个目录,cd ..返回上一级目录,cd ~返回用户的 home 目录。
pwd:打印当前工作目录的路径。
二、进阶操作
# 网络配置与工具使用
ifconfig # 查看网络接口配置(常用命令)
ip addr show # 查看网络接口信息(推荐新版本)
ping <host> # 测试与目标主机的连通性
netstat -tuln # 查看当前监听的端口
ssh user@hostname # 使用 SSH 远程登录到指定主机
scp <file> user@hostname:/path # 使用 SCP 复制文件到远程主机
# 包管理器使用(以 Ubuntu/Debian 为例)
sudo apt update # 更新软件包列表
sudo apt upgrade # 升级系统中的软件
sudo apt install <package_name> # 安装软件包
sudo apt remove <package_name> # 移除软件包
sudo apt autoremove # 自动清除无用的软件包
# 权限与用户管理
sudo adduser <username> # 添加用户
sudo passwd <username> # 设置或修改用户密码
sudo usermod -aG <group> <user> # 添加用户到组
sudo deluser <username> # 删除用户
su <username> # 切换到指定用户(需要该用户的密码)
sudo -i # 以root用户身份登录
exit # 退出当前用户会话
# 服务与进程管理
systemctl status <service> # 查看某个服务的状态
systemctl start <service> # 启动服务
systemctl stop <service> # 停止服务
systemctl restart <service> # 重启服务
ps aux # 查看所有进程
kill -9 <PID> # 强制结束某个进程
top # 实时查看系统资源占用
htop # 交互式查看进程状态(需要先安装)
三、高级操作
# Shell 编程与脚本
nano script.sh # 使用nano编辑器创建脚本文件
#!/bin/bash # 脚本头,指定脚本解释器
echo "Hello, Linux" # 脚本内容
chmod +x script.sh # 赋予执行权限
./script.sh # 运行脚本
# 变量与控制结构
name="John"
echo "Hello, $name"
if [ $name == "John" ]; then
echo "It's John"
fi
for i in {1..5}; do
echo "Iteration $i"
done
# 定时任务与计划任务(Cron Jobs)
crontab -e # 编辑当前用户的定时任务列表
# Cron表达式格式
# 分 时 日 月 周 命令
# 示例:每天上午6点执行脚本
0 6 * * * /path/to/script.sh
# 文件系统管理
sudo mount /dev/sda1 /mnt # 将/dev/sda1分区挂载到/mnt目录
sudo fdisk -l # 列出所有磁盘的分区信息
df -h # 查看已挂载文件系统的使用情况
# 日志管理与分析
cat /var/log/syslog # 查看系统日志
tail -f /var/log/syslog # 动态查看日志的最新变化
分类总结!
touch filename.txt # 创建空文件
mkdir dirname # 创建新目录
---------------------------------------
# 1.2 查看文件和目录
ls -l # 列出详细信息
ls -a # 包括隐藏文件
cat filename.txt # 查看文件内容
less filename.txt # 分页查看文件内容
#输出示例
$ ls -l
total 0
-rw-r--r-- 1 user user 0 Oct 11 10:00 filename.txt
$ ls -a
. .. filename.txt
$ cat filename.txt
# (假设文件为空)
# (没有输出)
$ less filename.txt
# (文件内容分页显示)
--------------------------------
1.3 复制、移动和删除
cp source.txt destination.txt # 复制文件
cp -r sourcedir/ destdir/ # 递归复制目录
mv oldname.txt newname.txt # 移动或重命名文件
mv file.txt /path/to/newdir/ # 移动文件
rm filename.txt # 删除文件
rm -r dirname/ # 递归删除目录
chmod 755 filename.txt # 更改文件权限
chown user:group filename.txt # 更改文件所有者
grep "search_term" filename.txt # 搜索文本
find /path/to/search -name "filename.txt" # 查找文件
wc filename.txt # 计算行数、字数和字节数
du -sh dirname/ # 查看目录大小
sort filename.txt # 对文件内容进行排序
awk '{print $1}' filename.txt # 打印第一列
sed 's/old/new/g' filename.txt # 替换文本
#输出示例
$ grep "search_term" filename.txt
# (匹配行内容,假设没有匹配)
# (没有输出)
$ find /path/to/search -name "filename.txt"
# 输出文件路径,比如:
/path/to/search/filename.txt
$ wc filename.txt
# 输出
0 0 0 filename.txt # 行数、字数、字节数
$ du -sh dirname/
# 输出
12K dirname/
$ sort filename.txt
# (文件内容按行排序输出)
$ awk '{print $1}' filename.txt
# (打印文件第一列内容)
$ sed 's/old/new/g' filename.txt
# (输出替换后的内容)
#4 系统管理
uname -a # 显示系统信息
top # 实时查看系统进程
htop # 增强版的 top(需额外安装)
df -h # 查看磁盘空间使用情况
du -sh dirname/ # 查看目录大小
free -h # 查看内存使用情况
----------------------------------------------
$ uname -a
Linux hostname 5.4.0-58-generic #64-Ubuntu SMP Tue Oct 13 12:59:19 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 30G 12G 17G 43% /
$ free -h
total used free shared buff/cache available
Mem: 7.7Gi 1.5Gi 4.3Gi 211Mi 1.8Gi 5.7Gi
Swap: 2.0Gi 0B 2.0Gi
ifconfig # 查看网络接口(较老命令)
ip addr show # 现代网络管理命令
ping google.com # 检查网络连通性
traceroute google.com # 跟踪数据包路径
nslookup google.com # 查询 DNS 记录
curl -O http://example.com/file.txt # 下载文件
---------------------------------------
$ ifconfig
# 输出网络接口信息,比如:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255
...
$ ip addr show
# 输出网络接口信息,类似于 ifconfig,但更详细
$ ping google.com
PING google.com (172.217.0.46) 56(84) bytes of data.
64 bytes from lga34s12-in-f14.1e100.net: icmp_seq=1 ttl=116 time=9.80 ms
$ traceroute google.com
traceroute to google.com (172.217.0.46), 30 hops max, 60 byte packets
1 192.168.0.1 1.154 ms 1.382 ms 1.479 ms
2 10.0.0.1 2.689 ms 2.710 ms 2.799 ms
3 ...
$ nslookup google.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: google.com
Address: 172.217.0.46
$ curl -O http://example.com/file.txt
# (下载文件,假设文件下载成功)
sudo useradd username # 添加新用户
passwd username # 更改用户密码
sudo groupadd groupname # 添加新组
usermod -aG groupname username # 将用户添加到组
tar -cvf archive.tar dirname/ # 创建 tar 归档
tar -xvf archive.tar # 解压 tar 归档
gzip filename.txt # 压缩文件
gunzip filename.txt.gz # 解压缩文件
----------------------------------
$ tar -cvf archive.tar dirname/
dirname/
dirname/file1
dirname/file2
$ tar -xvf archive.tar
# 输出解压缩的文件
dirname/
dirname/file1
dirname/file2
$ gzip filename.txt
# (压缩成功,filename.txt.gz 被创建)
$ gunzip filename.txt.gz
# (解压缩成功,filename.txt 被恢复)