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  替换模式,逐个替换光标所在字符

>>  缩进(相当于1Tab)
<<  反缩进(相当于Shift + TabZZ  保存并退出(作用与 :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,提供跨平台管理功能。


LinuxOS
https://afly36-swordsman.github.io/2024/07/28/Linux/
Author
Zenitsu
Posted on
July 28, 2024
Updated on
December 8, 2024