Linux 命令概览
1. 文件和目录操作
-
列出目录内容
ls
:列出当前目录内容ls -l
:以长格式列出ls -a
:显示隐藏文件ls -lh
:以长格式和人类可读方式显示大小ls -R
:递归列出子目录ls -d */
:仅列出目录ls -t
:按修改时间排序ls -S
:按文件大小排序
-
改变当前目录
cd /path/to/directory
:切换到指定目录cd ..
:切换到上级目录cd ~
:切换到用户主目录cd -
:切换到上一个目录cd ~username
:切换到指定用户的主目录
-
显示当前目录
pwd
:显示当前工作目录的完整路径
-
创建目录
mkdir newdir
:创建新目录mkdir -p path/to/newdir
:创建多级目录
-
删除空目录
rmdir emptydir
:删除空目录
-
删除文件或目录
rm file.txt
:删除文件rm -r directory
:递归删除目录rm -rf directory
:强制递归删除rm -i file.txt
:删除前提示确认
-
复制文件或目录
cp file1.txt file2.txt
:复制文件cp -r dir1 dir2
:递归复制目录cp -u file1.txt /path/to/destination
:仅当目标文件较旧时复制
-
移动或重命名文件
mv file.txt newfile.txt
:重命名文件mv file.txt /path/to/destination
:移动文件mv -i file.txt /path/to/destination
:移动前提示确认
-
创建空文件或更新文件时间戳
touch newfile.txt
:创建空文件touch -m file.txt
:更新修改时间戳touch -a file.txt
:更新访问时间戳
2. 文件查看和编辑
-
显示文件内容
cat file.txt
:显示文件内容cat file1.txt file2.txt > combined.txt
:合并文件内容cat -n file.txt
:显示带行号的内容cat -E file.txt
:显示行尾的换行符
-
分页显示文件内容
less file.txt
:分页显示文件内容q
:退出 less/pattern
:搜索n
:重复搜索N
:反向搜索g
:跳转到开头G
:跳转到末尾
-
显示文件前几行
head file.txt
:显示前10行head -n 5 file.txt
:显示前5行head -c 100 file.txt
:显示前100个字节
-
显示文件最后几行
tail file.txt
:显示最后10行tail -n 5 file.txt
:显示最后5行tail -f log.txt
:实时显示新增内容tail -c 100 file.txt
:显示最后100个字节
-
简单的文本编辑器
nano file.txt
:打开文件进行编辑Ctrl + O
:保存文件Ctrl + X
:退出编辑器Ctrl + K
:剪切整行Ctrl + U
:粘贴剪切的行Ctrl + W
:搜索文本Alt + R
:替换文本
-
强大的文本编辑器
vim file.txt
:打开文件进行编辑
3. 系统信息
-
显示系统中正在运行的进程
top
:显示系统资源使用情况和运行中的进程q
:退出 topP
:按 CPU 使用率排序M
:按内存使用率排序
-
显示当前进程
ps
:显示当前用户的进程ps aux
:显示所有用户的进程ps -ef
:显示所有进程的详细信息ps -C processname
:显示指定进程的信息
-
终止进程
kill PID
:终止指定进程kill -9 PID
:强制终止指定进程killall processname
:终止所有指定进程
-
显示磁盘空间使用情况
df
:显示所有文件系统的磁盘使用情况df -h
:以人类可读方式显示df -T
:显示文件系统的类型
-
显示目录或文件的磁盘使用情况
du -sh /path/to/directory
:显示目录总大小du -ah /path/to/directory
:显示所有文件和子目录的大小du -a | sort -n -r | head -n 10
:显示最大的10个文件
-
显示系统信息
uname
:显示内核名称uname -a
:显示所有系统信息uname -m
:显示机器硬件架构uname -r
:显示内核版本
-
显示网络接口配置
ifconfig
:显示网络接口配置(某些系统可能需要安装 net-tools)ip addr
:显示网络接口配置ip link
:显示网络接口状态
4. 用户和权限
-
显示当前用户名
whoami
:显示当前登录的用户名
-
切换用户身份
su
:切换到超级用户su username
:切换到指定用户su -
:切换到超级用户并加载环境变量su - username
:切换到指定用户并加载环境变量
-
以超级用户或其他用户的身份执行命令
sudo command
:以超级用户身份执行命令sudo -u username command
:以指定用户身份执行命令sudo -i
:以超级用户身份打开一个 shellsudo -l
:列出当前用户可以执行的 sudo 命令
-
更改文件或目录的权限
chmod 755 file.txt
:设置权限为 rwxr-xr-xchmod +x script.sh
:添加可执行权限chmod -R 755 /path/to/directory
:递归设置权限
-
更改文件或目录的所有者
chown user:group file.txt
:更改所有者和组chown -R user:group /path/to/directory
:递归更改所有者和组chown :group file.txt
:仅更改文件的组
5. 压缩和解压
-
打包或解包文件
tar -cvf archive.tar file1 file2
:创建 tar 文件tar -xvf archive.tar
:解包 tar 文件tar -czvf archive.tar.gz file1 file2
:创建 gzip 压缩 tar 文件tar -xzvf archive.tar.gz
:解压 gzip 压缩 tar 文件tar -cjvf archive.tar.bz2 file1 file2
:创建 bzip2 压缩 tar 文件tar -xjvf archive.tar.bz2
:解压 bzip2 压缩 tar 文件
-
压缩或解压缩文件
gzip file.txt
:压缩文件gunzip file.txt.gz
:解压缩文件gzip -d file.txt.gz
:解压缩文件zip archive.zip file1 file2
:创建 zip 文件unzip archive.zip
:解压 zip 文件zip -r archive.zip /path/to/directory
:递归压缩目录unzip -l archive.zip
:列出 zip 文件的内容
6. 网络
-
测试网络连接
ping google.com
:测试与 google.com 的连接ping -c 4 google.com
:发送4次 ICMP 请求ping -s 1024 google.com
:发送1024字节的数据包
-
显示网络状态
netstat -an
:显示所有网络连接netstat -tuln
:显示监听的 TCP 和 UDP 端口netstat -r
:显示路由表netstat -i
:显示网络接口统计信息
-
安全地登录远程计算机
ssh user@hostname
:以 user 身份登录到 hostnamessh -p 2222 user@hostname
:指定端口登录ssh -i keyfile user@hostname
:使用指定的私钥文件登录
-
安全复制文件到远程计算机或从远程计算机复制文件
scp file.txt user@hostname:/path/to/destination
:将本地文件复制到远程主机scp user@hostname:/path/to/file.txt /local/path
:从远程主机复制文件到本地scp -r /local/dir user@hostname:/remote/dir
:递归复制目录
7. 软件管理
-
Debian/Ubuntu 包管理工具
sudo apt-get update
:更新包列表sudo apt-get upgrade
:升级已安装的包sudo apt-get install package
:安装包sudo apt-get remove package
:卸载包sudo apt-get autoremove
:自动卸载不再需要的依赖包sudo apt-get clean
:清理下载的包文件sudo apt-get autoclean
:清理不再需要的包文件
-
Red Hat/CentOS 包管理工具
sudo yum update
:更新所有包sudo yum install package
:安装包sudo yum remove package
:卸载包sudo yum list installed
:列出已安装的包sudo yum search keyword
:搜索包
-
Fedora 包管理工具
sudo dnf update
:更新所有包sudo dnf install package
:安装包sudo dnf remove package
:卸载包sudo dnf list installed
:列出已安装的包sudo dnf search keyword
:搜索包
-
跨发行版的包管理系统
sudo snap install package
:安装包sudo snap remove package
:卸载包sudo snap list
:列出已安装的 snap 包sudo snap refresh
:更新所有 snap 包
8. 其他
-
显示命令的手册页
man ls
:显示 ls 命令的手册页man 1 ls
:显示 ls 命令的手册页(第1部分)man 5 crontab
:显示 crontab 文件格式的手册页(第5部分)
-
显示命令的简短描述
whatis ls
:显示 ls 命令的简短描述
-
查找程序文件的位置
whereis ls
:查找 ls 命令的二进制文件、源代码和手册页
-
查找可执行文件的位置
which ls
:查找 ls 命令的可执行文件位置
-
查看或执行历史命令
history
:显示命令历史!command
:重新执行最近的 command!123
:重新执行命令历史中的第123条命令history | grep command
:搜索命令历史
-
创建命令别名
alias ll='ls -l'
:创建 ll 别名,等同于ls -l
unalias ll
:删除 ll 别名alias
:显示所有别名
-
输出文本
echo "Hello, World!"
:输出 Hello, World!echo $PATH
:输出 PATH 环境变量的值echo -e "line1\nline2"
:输出多行文本
-
显示或设置系统日期和时间
date
:显示当前日期和时间date +%Y-%m-%d
:显示当前日期,格式为 YYYY-MM-DDsudo date --set="2024-10-10 12:00:00"
:设置系统日期和时间为 2024-10-10 12:00:00
-
查找文件
find /path/to/search -name "filename"
:在指定目录中查找名为 filename 的文件find /path/to/search -type d
:查找目录find /path/to/search -type f
:查找文件find /path/to/search -mtime -7
:查找过去7天内修改过的文件find /path/to/search -size +100M
:查找大于100MB的文件
-
搜索文本
grep pattern file.txt
:在 file.txt 中搜索 patterngrep -i pattern file.txt
:忽略大小写搜索grep -r pattern /path/to/search
:递归搜索目录grep -v pattern file.txt
:反向搜索,显示不包含 pattern 的行grep -n pattern file.txt
:显示行号
-
排序
sort file.txt
:按字母顺序排序sort -r file.txt
:按字母顺序逆序排序sort -n file.txt
:按数字排序sort -k 2 file.txt
:按第二列排序
-
去重
uniq file.txt
:去除连续重复的行sort file.txt | uniq
:去除所有重复的行
-
提取字段
cut -d ',' -f 1,3 file.csv
:以逗号为分隔符,提取第1列和第3列cut -c 1-10 file.txt
:提取前10个字符
-
流编辑器
sed 's/old/new/' file.txt
:替换文件中的 old 为 newsed -i 's/old/new/' file.txt
:直接修改文件内容sed '1,5d' file.txt
:删除前5行sed '/pattern/d' file.txt
:删除包含 pattern 的行sed -n '1,5p' file.txt
:打印第1行到第5行
-
文本处理
awk '{print $1}' file.txt
:打印每行的第一个字段awk -F ',' '{print $1, $3}' file.csv
:以逗号为分隔符,打印第1列和第3列awk 'NR==1,NR==5' file.txt
:打印第1行到第5行awk '/pattern/ {print $0}' file.txt
:打印包含 pattern 的行
Vi/Vim 命令
1. Vi/Vim 的三种主要模式
- 普通模式(Normal Mode):启动
vi
/vim
后默认进入的模式,在此模式下可以使用键盘快捷键进行文件浏览和编辑操作。 - 插入模式(Insert Mode):在此模式下可以输入文本。可以通过在普通模式下按下
i
键(insert)、a
键(append)等进入。 - 命令行模式(Command-line Mode):在此模式下可以执行命令,如保存文件、退出编辑器等。通常通过在普通模式下按下
:
键进入。
2. 基本操作
普通模式下的命令
-
移动光标
h
:左移一格j
:下移一行k
:上移一行l
:右移一格0
:移动到行首$
:移动到行尾w
:向前移动到下一个单词的开始b
:向后移动到上一个单词的开始G
:移动到文件的最后一行gg
:移动到文件的第一行10G
:移动到文件的第10行Ctrl + f
:向下翻一页Ctrl + b
:向上翻一页Ctrl + d
:向下翻半页Ctrl + u
:向上翻半页
-
编辑操作
dd
:删除当前行x
:删除光标所在位置的字符u
:撤销上一步操作Ctrl + r
:重做上一步撤销的操作p
:在光标后粘贴文本P
:在光标前粘贴文本y
:复制(yank)光标所在位置的文本yy
:复制当前行d$
:删除从光标到行尾的文本d0
:删除从光标到行首的文本D
:删除从光标到行尾的文本C
:删除从光标到行尾的文本并进入插入模式S
:删除当前行并进入插入模式J
:合并当前行和下一行
-
搜索和替换
/pattern
:向前搜索pattern
?pattern
:向后搜索pattern
n
:重复上次搜索N
:反向重复上次搜索:s/old/new/
:替换单个匹配项:%s/old/new/g
:替换所有匹配项:%s/old/new/gc
:替换所有匹配项,并提示确认*
:搜索光标所在单词#
:反向搜索光标所在单词
-
文件操作
:w
:保存文件:q
:退出编辑器:wq
或ZZ
:保存并退出:q!
:不保存并强制退出:e!
:放弃更改并重新加载文件:set nu
:显示行号:set nonu
:隐藏行号:set hlsearch
:开启搜索高亮:set nohlsearch
:关闭搜索高亮:set wrap
:开启自动换行:set nowrap
:关闭自动换行:set tabstop=4
:设置制表位为4个空格:set shiftwidth=4
:设置缩进宽度为4个空格:set expandtab
:将制表符转换为空格:set noexpandtab
:不将制表符转换为空格
插入模式
-
进入插入模式
i
:在当前光标前插入文本a
:在当前光标后插入文本I
:在当前行首插入文本A
:在当前行尾插入文本o
:在当前行之下新建一行并进入插入模式O
:在当前行之上新建一行并进入插入模式R
:进入替换模式Ctrl + t
:增加一个缩进Ctrl + d
:减少一个缩进Ctrl + y
:向上复制一行Ctrl + e
:向下复制一行
-
退出插入模式
-
Esc
:从插入模式返回到普通模式
-
命令行模式
-
文件操作
:w filename
:将当前缓冲区内容写入指定文件:r filename
:读取文件内容到当前缓冲区:w !sudo tee %
:保存需要管理员权限的文件:w !command
:将当前缓冲区内容作为命令的标准输入
-
窗口操作
:sp filename
:水平分割窗口并打开文件:vsp filename
:垂直分割窗口并打开文件Ctrl + w h
:左移窗口Ctrl + w j
:下移窗口Ctrl + w k
:上移窗口Ctrl + w l
:右移窗口:qall
:关闭所有窗口:only
:只保留当前窗口:tabnew filename
:在新标签页中打开文件gt
:切换到下一个标签页gT
:切换到上一个标签页
-
宏录制
qa
:开始录制宏,存储在寄存器a
中q
:停止录制宏@a
:执行寄存器a
中的宏@@
:重复执行上次的宏
-
多文件编辑
:e filename
:打开另一个文件:n
:切换到下一个文件:N
:切换到上一个文件:args
:显示当前编辑的文件列表:bufdo command
:在所有缓冲区中执行命令:tabdo command
:在所有标签页中执行命令
3. 实用技巧
-
可视选择模式
v
:进入字符选择模式V
:进入行选择模式Ctrl + v
:进入列选择模式y
:复制选中的文本d
:删除选中的文本:
:在选中的行上执行命令>
:向右缩进选中的行<
:向左缩进选中的行
-
多文件编辑
:args file1 file2
:打开多个文件:next
:切换到下一个文件:prev
:切换到上一个文件:first
:切换到第一个文件:last
:切换到最后一个文件
-
快速跳转
Ctrl + o
:跳转到上一个位置Ctrl + i
:跳转到下一个位置Ctrl + p
:向上搜索历史命令Ctrl + n
:向下搜索历史命令
-
自定义配置
- 编辑
~/.vimrc
文件来定制 Vim 行为 - 常见配置:
set nu " 显示行号 set tabstop=4 " 设置制表位为4个空格 set shiftwidth=4 " 设置缩进宽度为4个空格 set expandtab " 将制表符转换为空格 set autoindent " 自动缩进 set smartindent " 智能缩进 set hlsearch " 开启搜索高亮 set incsearch " 增量搜索 set ignorecase " 忽略大小写 set smartcase " 智能大小写
- 编辑