1. 文件和目录操作
1.1 cd 命令
用于切换当前工作目录,参数可以是绝对路径或相对路径。
cd /home 进入 /home 目录。
cd .. 返回上一级目录。
cd ../.. 返回上两级目录。
cd / 返回根目录。
cd - 返回上次所在的目录。
1.2 目录创建与删除
mkdir <目录名> 创建目录。
mkdir dir1 dir2 同时创建两个目录。
mkdir -p /tmp/dir1/dir2 递归创建目录树。
rm -f file1 删除 ‘file1’ 文件。
rmdir dir1 删除 ‘dir1’ 目录(目录需为空)。
rm -rf dir1 递归删除 ‘dir1’ 目录及其所有内容。
rm -rf dir1 dir2 同时删除两个目录及其内容。
1.3 pwd 命令
1.4 ls 命令
用于列出目录内容。
ls 查看目录中的文件。
ls -l 以长格式显示文件和目录的详细信息。
ls -a 列出全部文件,包括隐藏文件(以 . 开头)。
ls -lh 查看详情列表,文件大小以易读单位(K, M, G)显示。
ls -lSR 按文件大小升序查看详情列表。
tree 以树形结构查看文件和目录(若未安装,可使用 yum install tree 安装)。
ls -R 递归列出子目录的内容。
ls -al /proc/pid/exe 通过进程 PID 查询其可执行文件路径。
1.5 cp 命令
用于复制文件或目录。
-a 保持文件所有特性,等同于 -dR --preserve=all。
-p 保持文件属性(如时间戳、权限),常用于备份。
-i 覆盖前进行确认提示。
-r 递归复制,用于目录复制。
-u 仅在源文件比目标文件新或目标文件不存在时才复制。
cp dir/* . 复制某目录下的所有文件至当前目录。
cp -a dir1 dir2 复制目录及其所有属性。
cp -a /temp/dir1 . 复制一个目录至当前目录。
ln -s file1 link1 创建指向文件/目录的软链接。
ln file1 lnk1 创建指向文件/目录的硬链接。
touch -t 0712250000 file1 修改文件或目录的时间戳 (格式:YYMMDDhhmm)。
1.6 mv 命令
用于移动或重命名文件/目录。
-f 强制执行,覆盖时不提示。
-i 覆盖前进行确认提示。
-u 仅在源文件比目标文件新时才更新。
mv old_dir new_dir 重命名或移动目录。
1.7 rm 命令
用于删除文件或目录。
-f 强制删除,忽略不存在的文件,不提示。
-i 交互模式,删除前确认。
-r 递归删除,用于删除目录。此参数非常危险,需谨慎使用。
2. 查看文件内容
2.1 基础查看命令
cat file1 从首行开始正向查看文件全部内容。
cat -n file1 查看文件内容并显示行号。
tac file1 从最后一行开始反向查看文件内容。
more file1 分页查看长文件内容(可向下翻页)。
less file1 类似 more,但支持上下滚动、搜索等更多操作。
head -n 2 file1 查看文件前两行。
tail -n 2 file1 查看文件最后两行。
tail -f /log/msg 实时追踪文件新增内容(常用于查看日志)。
tail -n +1000 file1 从第1000行开始显示至文件末尾。
cat filename | head -n 3000 | tail -n +1000 显示文件的第1000行到第3000行。
cat filename | tail -n +3000 | head -n 1000 从第3000行开始,显示1000行(即3000~3999行)。
2.2 文本搜索与处理
高效的文本处理是Linux系统管理和Shell脚本编写的核心技能。
grep ss hello.txt 在文件 hello.txt 中查找包含关键词 ss 的行。
grep ^s hello.txt 查找以 s 开头的行。
grep [0-9] hello.txt 查找包含任意数字的行。
sed 's/ss/mm/g' hello.txt 将文件中所有的 ss 替换为 mm。
sed '/^$/d' hello.txt 删除文件中所有空白行。
sed '/ *#/d; /^$/d' hello.txt 删除所有注释(以 # 开头)和空白行。
sed -e ‘1d’ hello.txt 输出排除第一行后的内容。
sed -n ‘/s1/p’ hello.txt 仅打印包含关键词 s1 的行。
sed -e ‘s/ *$//‘ hello.txt 删除每行末尾的空格字符。
sed -e ‘s/s1//g’ hello.txt 删除所有 s1 词汇,保留其余部分。
sed -n ‘1,5p;5q’ hello.txt 查看第1行到第5行内容。
sed -n ‘5p;5q’ hello.txt 查看第5行内容。
2.3 文件比较与合并
paste file1 file2 合并两个文件的内容(默认以制表符分隔)。
paste -d ‘+’ file1 file2 合并内容,用 + 作为分隔符。
sort file1 file2 对两个文件内容合并后排序。
sort file1 file2 | uniq 取并集,重复行只保留一份。
sort file1 file2 | uniq -u 删除交集,保留只在一个文件中出现的行。
sort file1 file2 | uniq -d 取交集,保留同时出现在两个文件中的行。
comm -1 file1 file2 比较文件,不显示 file1 独有的内容。
comm -2 file1 file2 比较文件,不显示 file2 独有的内容。
comm -3 file1 file2 比较文件,不显示两个文件共有的内容。
3. 文件搜索
3.1 find 命令
功能强大的实时文件搜索工具。
find / -name file1 从根目录开始搜索名为 file1 的文件或目录。
find / -user user1 搜索属于用户 user1 的所有文件/目录。
find /dir -name *.bin 在 /dir 目录中搜索后缀为 .bin 的文件。
find /usr/bin -type f -atime +100 搜索过去100天内未被访问过的可执行文件。
find /usr/bin -type f -mtime -10 搜索10天内被创建或修改过的文件。
find . -regex ‘.*\(net\|comm\).*’ 使用正则表达式,匹配路径中包含 net 或 comm 的文件。
3.2 快速定位命令
locate *.mp4 利用数据库快速寻找 .mp4 结尾的文件(需先运行 updatedb)。
whereis <关键词> 定位二进制文件、源码和手册页的位置(如 whereis halt)。
which <关键词> 在 $PATH 环境变量指定的路径中,查找某个命令的完整路径(如 which halt)。
4. 文件权限管理
权限表示:r(读,4)、w(写,2)、x(执行,1)。使用 + 添加权限,- 移除权限。
4.1 chmod 命令
修改文件或目录的权限。
ls -lh 以易读格式显示当前目录文件的详细权限。
chmod ugo+rwx dir1 为所有者(u)、所属组(g)、其他人(o)添加读、写、执行权限。
chmod go-rwx dir1 移除所属组(g)和其他人(o)的读、写、执行权限。
chmod 777 filename 赋予最高权限(数字法)。
chmod u+s /bin/file1 设置 SUID:执行该文件的用户将拥有文件所有者的权限。
chmod g+s /home/public 设置 SGID:在此目录下创建的新文件将继承目录的所属组。
chmod o+t /home/public 设置 Sticky Bit:仅文件所有者或root可删除该目录下的文件。
chmod +x file_path 为所有用户添加执行权限。
chmod ug=wx file_path 为所有者和所属组设置写、执行权限,取消读权限。
4.2 chown 命令
改变文件的所有者和所属组。
chown user1 file1 将 file1 的所有者改为 user1。
chown -R user1 dir1 递归更改 dir1 目录及其下所有文件的所有者。
chown user1:group1 file1 同时更改所有者为 user1,所属组为 group1。
4.3 chgrp 命令
改变文件的所属组。
chgrp group1 file1 将 file1 的所属组改为 group1。
5. 打包与压缩
5.1 tar 命令
主流打包工具,可结合gzip或bzip2进行压缩。
-c:创建打包文件。
-x:解包/解压。
-t:查看包内文件列表。
-z:使用gzip压缩/解压(后缀 .tar.gz 或 .tgz)。
-j:使用bzip2压缩/解压(后缀 .tar.bz2)。
-v:显示详细过程。
-f:指定文件名。
-C:指定解压目录。
- 压缩:
tar -zcv -f filename.tar.gz file_to_compress
- 查看:
tar -ztv -f filename.tar.gz
- 解压:
tar -zxv -f filename.tar.gz -C /target_dir
5.2 其他压缩格式
gzip file1 / gunzip file1.gz:压缩/解压 .gz 文件。
bzip2 file1 / bunzip2 file1.bz2:压缩/解压 .bz2 文件。
zip file1.zip file1 / unzip file1.zip:创建/解压zip文件。
zip -r file1.zip file1 file2 dir1:将多个文件和目录打包为zip。
rar a file1.rar test_file / rar x file1.rar:创建/解压rar文件。
6. 进程管理
6.1 ps 命令
查看进程快照。
ps -ef 显示所有进程的完整信息。
ps aux 以BSD格式显示所有进程的详细信息(包括CPU、内存占用)。
ps -lA 以长格式显示所有进程。
pstree -aup 以树状图显示进程间关系,包含PID和用户。
netstat -lntp 或 ss -tnl 查看监听端口及对应进程。
6.2 kill 命令
终止进程。
kill -9 PID 强制终止指定PID的进程。
killall 程序名 / pkill 程序名 根据程序名终止进程。
6.3 Vim 常用操作
- 删除:
x(删光标后字符), X(删光标前字符), dd(删整行), ndd(删n行)。
- 复制粘贴:
yy(复制行), nyy(复制n行), p(粘贴到下一行), P(粘贴到上一行)。
- 撤销重做:
u(撤销), Ctrl + r(重做)。
- 显示行号:
:set number。
- 块操作:
:n1,n2 co n3 复制n1到n2行到n3行下;:n1,n2 d 删除n1到n2行。
7. 系统信息与性能
7.1 开关机与注销
shutdown -h now 立即关机。
shutdown -r +10 10分钟后重启。
reboot 重启。
poweroff / halt 关机。
logout 注销当前Shell会话。
7.2 系统信息查看
uname -a 查看内核/操作系统/CPU信息。
cat /proc/version 查看内核版本等详细信息。
hostname 查看主机名。
cat /proc/cpuinfo 查看CPU信息。
free -h 查看内存使用情况(易读格式)。
df -h 查看磁盘空间使用情况。
du -sh /dir 查看指定目录大小。
uptime 查看系统运行时间及平均负载。
top / htop 动态实时查看系统资源占用和进程信息。
vmstat 1 5 每1秒采样一次系统状态,共5次。
7.3 用户与组管理
useradd username 创建用户。
userdel -r username 删除用户及其主目录。
passwd username 修改用户密码。
usermod -aG groupname username 将用户添加到附加组。
groups username 查看用户所属组。
id username 查看用户UID、GID信息。
7.4 网络管理
ifconfig 或 ip addr 查看网络接口信息。
netstat -lntp 查看所有TCP监听端口及进程。
netstat -antp 查看所有TCP连接状态。
route -n 查看路由表。
nslookup www.example.com 查询域名解析。
ss -tnl 查看监听端口(netstat的现代替代)。
7.5 服务管理 (CentOS 7+)
systemctl list-unit-files --type=service | grep enabled 查看开机自启服务。
systemctl start/stop/restart/status service_name 启/停/重启/查看服务状态。
systemctl enable/disable service_name 设置/取消服务开机自启。
|