常见的Linux命令
1. 文件和目录操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| `ls`: 列出目录内容。 `cd`: 切换当前工作目录。 `pwd`: 显示当前工作目录的路径。 `mkdir`: 创建新目录。 `rmdir`: 删除空目录。 `rm`: 删除文件或目录(`rm -r`递归删除目录及其内容)。 `cp`: 复制文件或目录。 `mv`: 移动或重命名文件或目录。 `touch`: 创建一个新的空文件或更新文件的时间戳。 `cat`: 显示文件内容。 `more` / `less`: 分页显示文件内容。 `head`: 显示文件的前几行。 `tail`: 显示文件的最后几行。 `find`: 搜索文件和目录。 `chmod`: 修改文件或目录的权限。 `chown`: 改变文件或目录的所有者。
|
ls
- 描述: 列出目录内容。
- 示例:
1 2 3 4
| ls ls -l ls -a ls -lh
|
cd
- 描述: 切换当前工作目录。
- 示例:
1 2 3
| cd /home/user/Documents cd .. cd ~
|
pwd
mkdir
- 描述: 创建新目录。
- 示例:
1 2
| mkdir new_folder mkdir -p dir1/dir2/dir3
|
rmdir
rm
- 描述: 删除文件或目录。
- 示例:
1 2 3
| rm file.txt rm -r directory rm -rf directory
|
cp
- 描述: 复制文件或目录。
- 示例:
1 2
| cp file1.txt file2.txt cp -r directory1 directory2
|
mv
- 描述: 移动或重命名文件或目录。
- 示例:
1 2
| mv old_name.txt new_name.txt mv file.txt /path/to/directory
|
touch
- 描述: 创建一个新的空文件或更新文件的时间戳。
- 示例:
1 2
| touch newfile.txt touch existingfile.txt
|
cat
- 描述: 显示文件内容,通常用于查看文本文件的内容。
- 示例:
1 2
| cat file.txt cat file1.txt file2.txt
|
more
/ less
- 描述: 分页显示文件内容,便于逐屏阅读。
- 示例:
1 2
| more file.txt less file.txt
|
head
- 描述: 显示文件的前几行。
- 示例:
1 2
| head file.txt head -n 20 file.txt
|
tail
- 描述: 显示文件的最后几行。
- 示例:
1 2 3
| tail file.txt tail -n 20 file.txt tail -f log.txt
|
find
- 描述: 搜索文件和目录。
- 示例:
1 2
| find /path -name "*.txt" find /path -type d -name "backup"
|
chmod
- 描述: 修改文件或目录的权限。
- 示例:
1 2
| chmod 755 script.sh chmod u+x script.sh
|
chown
- 描述: 改变文件或目录的所有者。
- 示例:
1 2
| chown user:group file.txt chown -R user:group directory/
|
2. 文件查看和编辑
1 2 3 4 5
| `nano`: 一个简单的文本编辑器。 `vi` / `vim`: 功能强大的文本编辑器。 `grep`: 在文件中搜索文本模式。 `awk`: 文本处理工具,适用于处理和分析文本数据。 `sed`: 流编辑器,用于文本的查找和替换。
|
nano
vi
/ vim
- 描述: 功能强大的文本编辑器,支持模式编辑。
- 示例:
1 2
| vi file.txt vim file.txt
|
- 基本操作:
i
: 切换到插入模式以编辑文本。
:wq
: 保存并退出。
:q!
: 不保存退出。
grep
- 描述: 在文件中搜索指定的文本模式。
- 示例:
1 2 3
| grep "hello" file.txt grep -r "function" /path/to/dir grep -i "pattern" file.txt
|
awk
- 描述: 文本处理工具,适用于从文本文件或命令输出中提取和操作数据。
- 示例:
1
| awk '{print $1, $3}' file.txt
|
sed
- 描述: 流编辑器,用于文本的查找和替换。
- 示例:
1 2
| sed 's/oldtext/newtext/g' file.txt sed -n '1,5p' file.txt
|
3. 系统管理
1 2 3 4 5 6 7 8 9
| `sudo`: 以超级用户(root)权限运行命令。 `ps`: 显示当前运行的进程。 `top`: 动态显示系统的运行情况,包括CPU、内存使用情况。 `kill`: 终止进程(`kill -9`强制终止)。 `df`: 显示磁盘空间使用情况。 `du`: 显示目录或文件的磁盘使用情况。 `free`: 显示内存使用情况。 `uptime`: 显示系统的运行时间和负载平均值。 `shutdown`: 关闭或重启系统。
|
sudo
- 描述: 以超级用户(root)权限运行命令。
- 示例:
1 2
| sudo apt-get update sudo rm -r /var/log
|
ps
top
- 描述: 动态显示系统的运行情况,包括CPU、内存使用情况。
- 示例:
kill
df
du
- 描述: 显示目录或文件的磁盘使用情况。
- 示例:
1 2 3 4
| du -sh /home/user du -h --max-depth=1
显示当前目录下每个子目录的大小
|
free
4. 网络操作
1 2 3 4 5 6 7 8
| `ping`: 检查网络连接是否正常。 `ifconfig`: 显示或配置网络接口。 `curl`: 命令行工具,用于发送HTTP请求。 `wget`: 用于从网络下载文件。 `ssh`: 通过网络远程登录到另一台计算机。 `scp`: 在本地和远程计算机之间复制文件。 `ftp`: 文件传输协议客户端。 `netstat`: 显示网络连接、路由表和网络接口统计信息。
|
ping
- 描述: 测试与主机的网络连通性。
- 示例:
1 2
| ping google.com ping -c 4 192.168.1.1
|
ifconfig
- 描述: 显示或配置网络接口(现代系统使用
ip
命令替代)。
- 示例:
1 2 3
| ifconfig ifconfig eth0 down ifconfig eth0 up
|
ssh
- 描述: 使用SSH协议连接到远程主机。
- 示例:
1 2
| ssh user@remote_host ssh -p 2222 user@host
|
scp
- 描述: 通过SSH在本地和远程主机之间安全地复制文件。
- 示例:
1 2
| scp file.txt user@remote_host:/path/to/destination scp -r directory user@remote_host:/path/to/destination
|
wget
- 描述: 从网络下载文件。
- 示例:
1 2
| wget http://example.com/file.txt wget -c http://example.com/file.txt
|
5. 软件包管理
1 2 3 4
| `apt-get`: Debian/Ubuntu系统的包管理工具,用于安装、更新、删除软件包。 `yum`: RedHat/CentOS系统的包管理工具,用于管理软件包。 `dnf`: Fedora系统的包管理工具,是`yum`的继任者。 `pacman`: Arch Linux系统的包管理工具。
|
apt
(适用于基于Debian的系统,例如Ubuntu)
apt update
apt upgrade
apt install
- 描述: 安装新的软件包。
- 示例:
1
| sudo apt install package_name
|
apt remove
- 描述: 删除已安装的软件包。
- 示例:
1
| sudo apt remove package_name
|
apt autoremove
- 描述: 删除系统中不再需要的孤立软件包(通常是依赖项)。
- 示例:
yum
(适用于基于Red Hat的系统,例如CentOS)
yum update
yum install
- 描述: 安装新的软件包。
- 示例:
1
| sudo yum install package_name
|
yum remove
- 描述: 删除已安装的软件包。
- 示例:
1
| sudo yum remove package_name
|
yum search
dnf
(适用于较新版本的基于Red Hat的系统,例如Fedora)
dnf update
dnf install
- 描述: 安装新的软件包。
- 示例:
1
| sudo dnf install package_name
|
dnf remove
- 描述: 删除已安装的软件包。
- 示例:
1
| sudo dnf remove package_name
|
dnf search
pacman
(适用于Arch Linux)
pacman -Syu
pacman -S
- 描述: 安装新的软件包。
- 示例:
1
| sudo pacman -S package_name
|
pacman -R
- 描述: 删除已安装的软件包。
- 示例:
1
| sudo pacman -R package_name
|
pacman -Ss
6. 压缩与解压
1 2 3
| `tar`: 用于创建、解压或查看压缩包(如`tar -czvf`创建一个压缩文件,`tar -xzvf`解压文件)。 `gzip` / `gunzip`: 压缩和解压文件。 `zip` / `unzip`: 用于压缩和解压zip格式的文件。
|
tar
- 描述: 打包和解包文件。
- 示例:
1 2 3 4
| tar -cvf archive.tar directory/ tar -xvf archive.tar tar -zcvf archive.tar.gz directory/ tar -zxvf archive.tar.gz
|
zip
/ unzip
- 描述: 压缩和解压缩ZIP文件。
- 示例:
1 2
| zip archive.zip file1 file2 unzip archive.zip
|
7. 系统信息
1 2 3 4 5 6
| `uname`: 显示系统信息。 `hostname`: 显示或设置系统的主机名。 `whoami`: 显示当前用户的用户名。 `id`: 显示当前用户的ID信息。 `dmesg`: 显示系统引导日志信息。 `lsb_release`: 显示Linux发行版信息。
|
uname
- 描述: 显示系统的基本信息,如操作系统名称、内核版本等。
- 示例:
1 2 3
| uname uname -a uname -r
|
hostname
- 描述: 显示或设置系统的主机名。
- 示例:
1 2
| hostname sudo hostname new_hostname
|
whoami
id
- 描述: 显示当前用户的用户ID (UID)、组ID (GID) 及所属组的信息。
- 示例:
dmesg
- 描述: 显示内核启动时产生的消息(也称为启动日志),通常用于诊断启动问题或硬件故障。
- 示例:
1 2
| dmesg dmesg | grep error
|
lsb_release
- 描述: 显示Linux发行版的相关信息,例如发行版名称、版本号、代号等。
- 示例:
1 2
| lsb_release -a lsb_release -d
|
uptime
- 描述: 显示系统的启动时间、运行时间、当前用户数、平均负载等信息。
- 示例:
df
free
- 描述: 显示系统的内存使用情况,包括物理内存和交换内存。
- 示例:
top
- 描述: 实时显示系统的任务和进程信息,包括CPU和内存的使用情况。
- 示例:
ps
这些命令可以帮助你获取关于Linux系统的各种信息,从基本的系统信息到详细的内存和进程状态。
以下是一些常用的进程管理命令的详细描述和示例:
8. 进程管理
1 2 3
| `bg`: 将进程放到后台运行。 `fg`: 将后台进程带到前台运行。 `jobs`: 显示当前用户的作业列表。
|
bg
- 描述: 将一个挂起的进程放到后台继续运行。通常用于将暂停的前台作业转为后台作业。
- 示例:
fg
- 描述: 将后台的某个作业带到前台运行。可以用来恢复在后台运行的作业到前台继续执行。
- 示例:
jobs
- 描述: 显示当前用户的作业列表,列出所有在当前shell会话中启动的作业,包括后台运行和暂停的作业。
- 示例:
kill
- 描述: 向指定进程发送信号。默认信号是SIGTERM (15),用来终止进程。
- 示例:
killall
- 描述: 向指定名称的所有进程发送信号。常用于终止所有匹配指定名称的进程。
- 示例:
pkill
- 描述: 根据进程名称或其他属性(如用户、会话)发送信号,与
killall
类似但更灵活。
- 示例:
1 2
| pkill firefox pkill -u user1
|
ps
top
- 描述: 实时显示系统中所有进程的资源使用情况(CPU、内存等),按资源占用排序,方便监控和管理进程。
- 示例:
htop
- 描述: 类似于
top
,但有更友好的界面,支持交互操作,如直接终止进程。
- 示例:
nice
- 描述: 启动一个进程并设置其优先级(影响其CPU使用比例),较低的优先级意味着进程会更少地占用CPU时间。
- 示例:
renice
nohup
- 描述: 让命令在退出终端后继续运行,通常用于长时间运行的任务。输出默认保存到
nohup.out
文件中。
- 示例:
strace
- 描述: 跟踪系统调用和信号,用于调试和分析进程的行为。
- 示例:
9. 常用的 VI 编辑器操作命令
VI命令 |
功能 |
区域 |
vi filename |
打开filename文件 |
文本编辑 |
gvim filename |
在另一个窗口打开filename文件 |
|
:w |
保存文件 |
|
:w vpset.net |
保存至vpset.net 文件 |
|
:q |
退出编辑器 |
|
:q! |
退出编辑器,且不保存 |
|
:wq |
退出编辑器,且保存文件 |
|
a |
在当前光标位置的右边添加文本 |
插入文本 |
i |
在当前光标位置的左边添加文本 |
|
A |
在当前行的末尾位置添加文本 |
|
J |
合并光标所在行及下一行为一行 |
|
I |
在当前行的开始处添加文本 |
|
O |
在当前行的上面新建一行 |
|
o |
在当前行的下面新建一行 |
|
r |
替换光标所在处的字符 |
替换 |
R |
替换光标所到之处的字符,直到按下ESC键为止 |
|
:s/old/new |
用new替换行中首次出现的old |
|
:s/old/new/g |
用new替换行中所有的old |
|
:n,m s/old/new/g |
用new替换从n到m行中所有的old |
|
:%s/old/new/g |
用new替换当前文件里所有的old |
|
h |
向左 |
移动光标 |
j |
向下 |
|
k |
向上 |
|
l |
向右 |
|
空格键 |
向右 |
|
Backspace |
向左 |
|
Enter |
移动到下一行首 |
|
横线- |
移动到上一行首 |
|
ctrl+b |
屏幕往”后”移动一页 |
|
ctrl+f |
屏幕往”前”移动一页 |
|
ctrl+u |
屏幕往”后”移动半页 |
|
ctrl+d |
屏幕往”前”移动半页 |
|
数字0 |
移到文章的开头(暂不可用) |
|
$ |
移动到光标所在行的”行尾” |
|
^ |
移动到光标所在行的”行首” |
|
w |
光标跳到下个字的开头 |
|
e |
光标跳到下个字的字尾 |
|
b |
光标回到上个字的开头 |
|
#l |
光标移到该行的第#个位置,如:5l,56l |
|
x |
每按一次,删除光标所在位置的”后面”一个字符 |
删除文本 |
#x |
例如,「6x」表示删除光标所在位置的”后面”6个字符 |
|
X |
大写的X,每按一次,删除光标所在位置的”前面”一个字符 |
|
#X |
例如,「20X」表示删除光标所在位置的”前面”20个字符 |
|
dd |
删除光标所在行 |
|
#dd |
从光标所在行开始删除#行 |
|
u |
撤销上一步操作 |
恢复 |
U |
撤销对当前行的所有操作 |
|
yw |
将光标所在之处到字尾的字符复制到缓冲区中 |
复制粘贴 |
#yw |
复制#个字到缓冲区 |
|
yy |
复制光标所在行到缓冲区 |
|
#yy |
例如,「6yy」表示拷贝从光标所在的该行”往下数”6行文字 |
|
y^ |
复制从光标到行首的内容 |
|
y$ |
复制从光标到行尾的内容 |
|
p |
将缓冲区内的字符贴到光标所在位置后 |
|
P |
将缓冲区内的字符贴到光标所在位置前 |
|
n+ |
向下跳转n行 |
跳到指定行 |
n- |
向上跳转n行 |
|
nG |
跳到行号为n的行 |
|
G |
调至文件的底部 |
|
ctrl+g |
列出光标所在行的行号 |
|
/vpser |
向光标下搜索vpser字符串 |
搜索 |
?vpser |
向光标上搜索vpser字符串 |
|
n |
向下搜索前一个搜索动作 |
|
N |
向上搜索前一个搜索动作 |
|
:set nu |
显示行号 |
设置行号 |
:set nonu |
取消显示行号 |
|
1. 文件操作
vi filename
:w
:w filename
:q
:q!
- 描述: 强制退出 VI 编辑器,不保存更改。
- 示例:
:wq
2. 文本插入操作
a
- 描述: 在当前光标位置的右边开始插入文本。
- 示例:
i
- 描述: 在当前光标位置的左边开始插入文本。
- 示例:
A
O
- 描述: 在当前行的上面新建一行,并进入插入模式。
- 示例:
o
- 描述: 在当前行的下面新建一行,并进入插入模式。
- 示例:
3. 文本删除操作
x
dd
#dd
d$
4. 文本复制与粘贴操作
yy
p
P
5. 搜索与替换操作
/pattern
?pattern
n
N
:s/old/new
- 描述: 将当前行中首次出现的
old
替换为new
。
- 示例:
:%s/old/new/g
- 描述: 将整个文件中所有的
old
替换为new
。
- 示例:
6. 移动光标操作
h
j
k
l
^
$
w
e
- 描述: 将光标移动到当前或下一个单词的结尾。
- 示例:
b
G
gg