我的博客

实用的 Linux 命令

目录
  1. 常用操作
    1. 管道
    2. 输出重定向到文件
    3. 后台执行命令
  2. 文件系统
    1. ls 列目录内容
    2. cd 切换目录
    3. rm 删除
    4. mv 移动
    5. cp 复制
    6. ln 创建文件链接
    7. which / whereis 查找一个命令的位置
    8. find 搜索目录树
    9. zip 压缩
    10. unzip 解压缩
    11. pwd 查看当前目录
  3. 文本处理
    1. vi / vim 文本编辑器
    2. cat
    3. grep 过滤文本
    4. more 分页显示
    5. awk 流编辑器
    6. wc 统计文本文件
    7. sort 排序
    8. uniq 去重
    9. chmod 修改权限
  4. 网络
    1. ICMP
      1. ping
      2. traceroute
    2. 网络配置
      1. ifconfig (deprecated)
      2. ip
    3. Socket
      1. netstat (deprecated)
      2. ss
  5. 系统资源查看
    1. free 查看内存使用
    2. df 查看磁盘使用
    3. ps 查看任务
    4. kill 杀进程
    5. htop (CPU/内存占用查看,进程管理)
    6. 不常用命令
  6. 其他
    1. history 查看历史命令
    2. nohup 帮助程序忽略 hang up 信号

常用操作

管道

| 符号,用于连接两个命令,把第一个命令的标准输出作为第二个命令的标准输入

输出重定向到文件

> 符号可以把命令的标准输出写入文件

&> 可合并标注错误输出,或者使用 2&>1 把标准错误输出合入标准输出

后台执行命令

& 放在命令末尾使命令在后台执行,一般需要重定向输出到文件,否则标准输出依然输出到terminal。另外如果需要在terminal结束后仍然运行,常需要配合 nohup命令,否则需要自行处理 hang up 信号。

文件系统

ls 列目录内容

-l 详细信息列表

-h 自动选择易于阅读的文件大小单位

-t 按时间排序(从新到旧)

-S 按大小排序(从大到小)

cd 切换目录

cd - 后退到上次 cd 之前的目录

cd 无参数,回到家目录

rm 删除

rm -r 递归删除(用于删除目录)

rm -f 强制删除

mv 移动

mv <source> <target>

cp 复制

cp <source> <target>

-r 递归复制,用于复制目录

ln 创建文件链接

ln <source> <target>

-s 符号连接(或者叫软连接)

which / whereis 查找一个命令的位置

which python

可显示 python 安装的位置,查到的可能是一个符号链接,可以再用 ls -l 查看链接的实际位置。

find 搜索目录树

find <path> <condition>

在 path 指定的路径内搜索。

-name 指定匹配的文件名(可使用通配符,如 *.txt 匹配所有的 txt 文件)

-empty 查找空文件或文件夹

zip 压缩

zip <要生成的压缩文件名> <文件列表>

-r 递归压缩,用于处理目录

unzip 解压缩

zip <要解压的文件名>

pwd 查看当前目录

文本处理

vi / vim 文本编辑器

退出方法是输入冒号,回到命令模式下(按 esc 键回到命令模式),输入 :q (即冒号和q)然后按回车执行。:!q 是不保存直接退出(如果修改了内容而为保存可以用该方法放弃修改直接退出)。

vi - 表示从标准输入读取内容。

vimtutor 命令可以启动 vim 教程。

cat

打印文本文件全部内容。

grep 过滤文本

grep <pattern> <file>

如果没有输入文件则从标准输入接收输入

-E 扩展的正则表达式

-i 忽略大小写

-n 输出行号

-H 输出文件名

-h 不输出文件名

-v 输出不匹配的内容

more 分页显示

空格显示下一页,回车显示下一行,q 退出

如分页显示一个文本文件 a.txtmore a.txt 或者 cat a.txt | more

如分页显示一个文本文件 a.txt中包含 hello 的行, grep hello a.txt | more

awk 流编辑器

awk 通过解析执行一种脚本语言完成对文本的处理。

-F 指定分隔符

awk 可以用于多种场景,高效的实现各种功能。

一些例子:

awk 随机抽样文件 | 我的博客 (es2q.com)

awk输出两个文件不同的行 | 我的博客 (es2q.com)

wc 统计文本文件

wc -l 统计行数

sort 排序

-n 作为数字排序 (默认作为字符串)

-r 逆序

-t 指定列分隔符,如果需要指定 tab 键(即'\t')为分隔符,需要使用 sort -t $’\t’ 或者 sort -t’\<ctrl>+v \<tab>‘ (即先输入 ctrl + v 再按 tab)

-k 选择按哪一列排序

-u 排序后去重

uniq 去重

只能去掉相邻的重复,一般需要先 sort 再 uniq

如要去掉文本文件 a.txt 中的重复内容,结果写入 b.txt,可以 sort a.txt | uniq > b.txt

chmod 修改权限

chmod <权限> <文件/目录>

权限指定方式有:

  1. 三位数字,每个数字在 0 到 7 之间,第一位表示文件主的访问权限,第二个表示同组用户,第三个表示其他用户。0到7实际上三个二进制位,最高位代表读,第二位是写,第三位是执行(对文件夹是进入)
  2. +r 增加读权限,+w 增加写权限,+x 增加执行权限。+ 换成 - 就是去掉。

网络

ICMP

ping

ping <目标主机>

可以使用 IP 地址、主机名或域名指定 目标主机

-4使用 IPv4

-6 使用 IPv6

traceroute

路由追踪

Windows 系统的对应命令是 tracert

网络配置

ifconfig (deprecated)

查看网卡配置,已经过时,较老版本的Linux系统可能自带该命令,但有的版本已经使用ip命令代替。

ip

ip addr 查看网卡配置

Socket

netstat 是常用的查看本机TCP和UDP连接信息的工具,但已经过时,较老版本的Linux系统可能自带该命令,但有的版本已经使用ss命令代替netstat。

netstat (deprecated)

-a 查看所有 sockets (默认只显示 connected)

-l 显示 Listen 的 sockets

-p 显示对应的进程

-n 显示 IP 地址而不是主机名

ss

ss -t 查看 TCP 连接

ss -u 查看 UDP 连接

-p 参数查看连接对应的进程信息

系统资源查看

free 查看内存使用

查看内存占用,常使用 free -m 或者 -g 参数按 MB 或 GB 为单位显示。其中 available 是剩余的可使用内存,used 是被占用的内存。free 是没被占用的内存。

df 查看磁盘使用

常使用 df -h 自动使用合适的单位显示。

df -i 查看 inode 使用率。

ps 查看任务

-e 显示全部进程 (默认只显示当前 终端内运行的进程)

kill 杀进程

kill <进程号>

htop (CPU/内存占用查看,进程管理)

官网 https://htop.dev/

增强的 top,用于任务管理和系统CPU,内存等资源查看。与 top 一样按 q 键退出。

按F1可查看帮助。CPU占用有四种颜色,其中红色是 kernal CPU 占用。内存有三种颜色,绿色是被占用的内存,蓝色是 buffers 占用的内存,黄色是 cache 的内存。

image.png

不常用命令

lsblk 列出系统块设备 (如硬盘,U盘,SD卡等)

lsusb 列出 USB 设备

lspci 列出 PCI 设备(如独立显卡等)

lscpu 列出 CPU 信息

其他

history 查看历史命令

nohup 帮助程序忽略 hang up 信号

用于在 terminal 关闭后保护进程不因 hang up 退出

评论无需登录,可以匿名,欢迎评论!