LinuxOS
Last updated on December 8, 2024 pm
Linux操作命令
Linux是一种自由和开放源码的类UNIX操作系统。Linux遵循GNU通用公共许可证(GPL),任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。
目前主流的Linux版本有:
Debian(及其派生版本Ubuntu、Linux
Mint)
Fedora(及其相关版本CentOS、Red Hat Enterprise Linux)
openSUSE...
由于Linux网上各种教程很多,因此本节只对我(现阶段)在日常工作和学习中最常用的命令(文件相关)进行总结。
远程登录
Linux系统启用了sshd服务后,可以进行远程操作。该服务监听22号端口。
vi/vim
Linux系统会内建vi文本编辑器,vim是vi的增强版本。
vi和vim的三种常见模式:
正常模式:一般模式,默认打开进入的模式,通过 vim xxx 加回车就会直接进入该模式。
插入模式:编辑模式,在正常模式下键入:i(或者a、o)加回车(Enter)会进入此模式,可以对文本进行编辑,按 ESC 退出至正常模式。
命令模式:键入冒号 : 后(或者/)就进入了该模式,然后可以接着键入一些表示命令的字符进行实现相关的命令,按 ESC 退出至正常模式。
进入插入模式的几种方式:
i 从当前光标位置开始输入
a 从光标后面一位开始输入
o 在光标下面创建一个空行开始输入
正常模式下进入命令模式并进行相应操作的命令:
:wq 写入(保存)并退出
:q! 不保存,只退出
:q 仅退出,适用于查看但未作修改的情形
:set nu 显示行号
:set nonu 取消行号
:100 跳转到第100行
正常模式下的一些命令:
x 删除光标所在字符
s 删除字符并进入插入模式
S 删除整行并进入插入模式
r 替换光标所在字符(单个替换)
R 替换模式,逐个替换光标所在字符
>> 缩进(相当于1个Tab)
<< 反缩进(相当于Shift + Tab)
ZZ 保存并退出(作用与 :wq 一致)
ZQ 不保存,退出编辑(Q强调退出,与 :q! 一样)
vim快捷键(正常模式下):
yy 复制当前光标所在的这一行
p 粘贴
dd 删除当前光标所在的这一行(但会复制,可配合p实现剪切)
/key 查找key
x 实现单个字符的删除(剪切)
u 撤销上一步动作
q 进入/退出记录,对想重复自动执行(如累加)的语句进行记录
q用法示例: [对 test 0 = 1 重复8次,且数值每次自增1]
键入:q -> 输入标记符(例如:f) -> yy+p复制语句 -> Ctrl A 自增1
-> 键入:q(退出记录) -> 输入:8@f
编辑文件文本时(正常模式下):
G 定位至最后一行
gg 定位至第一行
H 左移
J 下移(J小)
K 上移(K大)
L 右移
关机
shutdown -h now 立即关机
shutdown -h 5 5min后关机
shutdown -r now / reboot 立即重启
sync 将内存数据存入磁盘防止丢失
用户管理
su - user_name 切换用户所在账号
su - root 切换管理员用户登录
whoami / who am i 查看当前登录的是哪个用户
ps -ef 查看所有进程信息
top 实时显示进程状态用户
w 查看当前活动用户
last 查看用户登录日志
设备
uname -a 查看当前Linux操作系统的所有信息(包括系统名称、内核版本、硬件架构等)
uname -s 显示操作系统的名称(Linux or Windows?)
uname -m 显示机器的硬件架构(如:x86_64)
cat /etc/issue 查看当前操作系统发行版信息
cat /proc/version 查看当前操作系统的版本信息
hostname 查看服务器的名称
df -lh 查看磁盘空间
free -m 以兆字节(MB)显示内存信息
lsblk 查看磁盘信息,列出所有可用块设备的信息及其依赖关系
nvidia-smi 查看显卡、驱动等相关信息
fuser -v /dev/nvidia* 显示更全的进程(包括一些“隐藏”进程)
watch -n 1 nvidia-smi 实时追踪显卡使用情况(每隔1秒自动刷新)
gpustat 高亮显示GPU信息
gpustat -i 高亮显示GPU信息·实时版(每秒刷新1次)
nvitop [-m full] 彩色 [完整] 显示GPU信息
kill PID 杀掉ID为PID的进程
kill -15 PID 同上,kill命令默认发送SIGTERM(信号15)请求进程终止
kill -9 PID 立即(强制)结束进程,不能被忽略或捕获
网络
ping ip_address 检测当前主机/服务器是否可以连接ip_address所在的主机/服务器/网址(检查网络连接)
ifconfig 查看当前网络信息
注:ipconfig 是Windows CMD下的命令
文件系统
pwd 显示当前工作目录(即文件夹)的绝对路径。
ls [Ops] 目录/文件名 显示目录或文件的内容。
Ops(Options,选项):-a 显示所有;-l 以列表形式显示
ls -l ${link_name}$ 查看符号链接(也叫软链接)所指向的实际文件路径
realpath ${link_name}$ 查看名为link_name的软链接所指向文件的绝对路径
cd addr 切换到指定路径。
cd 或 cd ~ 回主(家)目录;cd / 回根目录;cd .. 回上级目录
mkdir [Ops] directory_name 创建新的目录,不带选项只能创建单级空目录。
Ops:-p 创建多级目录;-v 显示单次创建信息
touch file_name 创建新的文件,可以一次性创建多个空文件(当前目录):touch A.txt B.md
rmdir [Ops] 空目录名 删除空目录,不带任何选项时只删除该空目录。
Ops:-p 删除该空目录,删除后若其父目录也为空,则一并删去
rm [Ops] f/d_name 删除文件或目录,不带任何选项时只能删除文件。
Ops:-r (递归)删除整个文件夹;-f 强制删除不提示;-i 提醒用户确认
Tips:rm -rf 相当于rm -r -f,强制删除所有文件/文件夹!
cp [Ops] f/d_name New_d_name 拷贝文件f或文件夹d至指定的目录New_d中,不带任何选项只能复制文件。
Ops:-r (递归)拷贝整个文件夹;-f 覆盖目标同名文件或目录时不提醒(强制覆盖);
-i 覆盖目标同名文件或目录时提醒用户确认;不提示也可写为:\cp f/d New_d
mv 原名 新名 为文件/目录重新起名或移动。若路径不变则是重命名,路径不一致将不保留原文件/目录(剪切)。
> 输出重定向:写入并覆盖(替换)原本内容。
>> 追加:将内容加在末尾,不会覆盖原内容。
tree 以树状格式展示文件的目录结构。
Ops: -a 显示所有文件(包括隐藏文件);-d 只显示目录;-f 显示完整路径;-h 人性化显示文件大小;
-L 限制目录层次深度,后跟显示深度,如:tree -L 3,表示只显示到3级目录
head filename 显示该文件前 10 行(默认行数)的内容。
head -n 5 filename 显示文件前 5 行内容。
tail filename 显示该文件后 10 行(默认行数)的内容。
tail -n 5 filename 显示文件后 5 行内容。
tail -f filename 实时追踪该文件的所有更新信息。
tar 打包命令,打包后的文件格式为 .tar,也可以解包,由选项控制。
Ops:-c 打包;-x 解包;-v 显示详细信息;-f 指定压缩后的文件名;-z 打包的同时压缩
-z 压缩时使用gzip压缩为.tar.gz(.tgz)格式,解压时指示tar使用gzip来处理.tar.gz文件的压缩部分。
tar -zcvf UFO.tar.gz a.txt b.txt 将a、b用一套组合拳打包成UFO并压缩后存入当前路径
tar -zxvf UFO.tar.gz [-C /*directory*/] 解包和解压缩UFO文件,-C 指定解包后文件的存储路径
tar -xvf UFO.tar 解包纯粹的打包文件UFO.tar
zip destination_file.zip source_file.txt 将.txt压缩为.zip文件后存入当前路径。
Ops:-r 递归压缩整个文件夹
unzip *.zip 解压.zip文件
unzip *.zip -d /*path*/ 解压后存入指定路径
history 查看所有已经执行过的命令。
history n 查看最近使用过的 n 条命令。
!x 执行编号为 x 的历史命令(所有历史命令都有编号)。
终端
clear 清空屏幕,相当于翻页
reset 重置/初始化终端
简化命令
命令的缩写:
vim ~/.bashrc
alias ns='nvidia-smi'
使之生效:
source ~/.bashrc
. ~/.bashrc
命令与指令
“命令”和“指令”这两个词在日常使用中有时可以互换,但在计算机科学领域,它们通常有特定的含义。
命令(Command)
在计算机科学中,“命令”通常指的是用户或程序向操作系统发出的一个具体请求,用于执行一个操作或一系列操作。一般在命令行窗口输入的就叫命令。
指令(Instruction)
“指令”是更接近计算机底层的概念,它指计算机硬件能够直接识别和执行的基本操作。指令集是CPU所支持的所有基本指令的集合,这些指令由机器语言表示,用来控制处理器的行为。
命令行界面
与计算机操作系统中的命令行界面(Command Line Interface, CLI)相关的几个概念:
Shell
Shell 是一个用于执行用户命令的程序,是用户与操作系统之间的接口。Shell 接收用户的命令并将其传递给操作系统内核,然后将结果返回给用户。它可以是一个命令行解释器或者一个图形化的用户界面。Shell有多种不同的类型,每种 Shell 都有自己的语法、特性和功能。
示例: 在 Unix 和类 Unix 操作系统(如 Linux 和 macOS)中,常用的 shell 有 Bash (Bourne-Again Shell)、Zsh (Z Shell)、csh (C Shell) 等。
终端(Terminal)
在 Unix / Linux 上,终端指的是用于访问 Shell 的图形界面程序,你可以通过终端来运行各种命令和脚本。终端是一种用户界面,它允许用户通过命令行与操作系统进行交互。终端本身不执行命令,而是作为一个界面,用户可以在其中启动 Shell 或其他命令行程序。
作用: 提供一个图形化的窗口或文本模式下的界面,用于输入和显示命令行文本;启动和运行 Shell 或其他命令行程序,并提供与之交互的环境。
示例: 在 macOS 和 Linux 中,终端应用通常被称为 Terminal 或者 GNOME Terminal、xterm、Konsole 等。
Shell与Terminal的关系
当你在终端中键入命令时,实际上是向 Shell 发送指令,Shell 则负责解析这些指令并执行相应的操作。多数情况下,当你打开一个终端窗口时,会自动启动一个默认的 Shell(例如 Bash),你就可以开始输入命令了。
DOS窗口
DOS 窗口通常指的是在 Windows 操作系统中运行 MS-DOS 命令的窗口。DOS 是早期的 Windows 操作系统,全称为 Disk Operating System,它是一个基于命令行的系统,使用纯文本命令行界面,主要用于 IBM PC 及其兼容机。MS-DOS 是由微软公司开发的一个版本,被广泛使用。
使用:在现代 Windows 中,可以通过“开始”菜单搜索“cmd”或“命令提示符”来打开一个 DOS 窗口。
CMD(Command Prompt)
CMD 是 Windows 操作系统内置的一个命令行解释器,是 Windows 上用于访问命令行界面的程序。它是在 Windows 环境下模拟 DOS 命令行界面的工具,它在 Windows 系统中提供一种类似 DOS 的命令行界面,允许用户执行各种命令来控制和管理计算机。它继承了许多 DOS 命令,并且在某些方面仍然与 DOS 兼容,而且还拥有一些新功能。
使用: 用户可以在 CMD 中输入命令来执行文件操作、网络配置、系统管理等任务。
PowerShell
PowerShell 是在 Windows 上,Microsoft 开发的增强型 Shell,提供跨平台管理功能。