linux基础
一.常见命令(含解释及补充)
1.ls:列出文件目录
选项 | 作用 | 示例 |
---|---|---|
-a |
列出所有文件(包括隐藏文件) | ls -a |
-l |
列出文件及属性,注意大部分操作系统以ll来代替ls -l | ls -l |
-la |
列出所有文件及属性(包括隐藏文件) | ls -la |
-h |
以易读单位显示文件大小(如 KB、MB,需与 -l 连用) |
ls -lh |
-t |
按最后修改时间排序(最新文件在前) | ls -lt |
-r |
反向排序(配合 -t 或 -S 使用) |
ls -ltr |
-S |
按文件大小排序(从大到小) | ls -lS |
-R |
递归列出子目录内容(显示目录树结构) | ls -R |
--color |
彩色输出(默认启用,不同文件类型颜色不同) | ls --color=auto |
-i |
显示文件的 inode 编号 | ls -i |
-d |
仅显示目录本身(不列出目录内容) | ls -d */ |
/ |
显示根目录下文件 | ls / |
对于目录中各参数解释
- 第一列:文件类型及权限
第1个字母:d表示为目录,-表示为普通文件
2-4个字母:rwx表示read,write,执行,表示文件所有者权限
5-7个字母:表示该组内其他用户权限
8-10个字母:表示除该组其他用户权限
- 第二列:硬链接数
对文件:通常是1(除非手动创建硬链接)
对目录:至少为2(默认包含.和..的链接)
第三列:所有者
第四列:所属组
第五列:文件大小
默认单位:字节,可用ls -lh以易读单位(KB,MB)表示
- 第六列:最后修改时间
- 第七列:文件/目录名称
2.cd:进入目录
命令 | 作用 | 示例 |
---|---|---|
cd [目录路径] |
切换到指定目录 | cd /var/log |
cd 或 cd ~ |
返回当前用户的家目录 | cd |
cd - |
返回上一次所在的目录(常用!) | cd - |
cd .. |
返回上级目录 | cd .. |
cd ../../ |
返回上两级目录 | cd ../../ |
cd / |
切换到根目录 | cd / |
3.pwd:当前路径
4.cat:查看文件内容
命令/选项 | 作用 | 示例 |
---|---|---|
cat [文件] |
显示文件内容(适合小文件) | cat file.txt |
cat > file |
创建新文件并输入内容(按 Ctrl+D 保存) |
cat > newfile.txt |
cat file1 file2 > merged |
合并多个文件 | cat a.txt b.txt > combined.txt |
cat -n |
显示行号 | cat -n log.txt |
cat -s |
压缩连续空行为单行 | cat -s data.txt |
cat -e |
显示行尾符 $ (用于调试换行符) |
cat -e script.sh |
类似命令
1.tac
(反向显示文件内容)
作用:从最后一行到第一行反向输出文件内容
tac log.txt # 逆序查看日志(最新内容在前)
2. more
和 less
(分页查看文件)
more
逐页显示文件内容(仅支持向下翻页,按q退出)。
more large_file.log
less
(推荐)支持上下翻页、搜索、跳转等高级功能。
less large_file.log
常用操作:
/keyword
:向前搜索关键词?keyword
:向后搜索关键词G
:跳转到文件末尾gg
:跳转到文件开头
3. head
和 tail
(查看文件首尾内容)
head
:显示文件开头部分(默认前10行)。head -n 20 access.log # 显示前20行
tail
:显示文件末尾部分(默认后10行)。tail -n 15 error.log # 显示后15行
tail -f /var/log/syslog # 实时追踪文件更新(监控日志)
4. nl
(显示行号)
显示文件内容并添加行号(比cat -n更灵活,支持格式控制)。
nl -b a data.txt # 显示所有行号(包括空行)
tips:对目录中名字唯一的文件,如flag,输入f后按Tab键自动补齐
5.mv:移动或重命名文件
基础用法:mv [选项] 源文件/目录 目标路径
选项 | 作用 | 示例 |
---|---|---|
-i |
覆盖前提示确认 | mv -i file.txt existing.txt |
-v |
显示操作详情 | mv -v *.txt backup/ |
-f |
强制覆盖,不提示 | mv -f file.txt /tmp/ |
-n |
禁止覆盖已存在文件 | mv -n file.txt existing.txt |
-u |
仅当源文件较新时覆盖 | mv -u new.txt old.txt |
6.cp:复制文件/目录
基础用法:cp [选项] 源文件/目录 目标路径
选项 | 作用 | 示例 |
---|---|---|
-i |
覆盖前提示确认 | cp -i file.txt existing.txt |
-v |
显示操作详情 | cp -v *.txt backup/ |
-f |
强制覆盖,不提示 | cp -f file.txt /tmp/ |
-n |
禁止覆盖已存在文件 | cp -n file.txt existing.txt |
-u |
仅当源文件较新时覆盖 | cp -u new.txt old.txt |
-a |
归档模式(保留权限、时间戳等) | cp -a dir1/ dir_backup/ |
-p |
保留文件属性(权限、时间戳) | cp -p file.txt backup/ |
-l |
创建硬链接(替代复制) | cp -l large_file.iso backup/ |
-s |
创建符号链接(快捷方式) | cp -s file.txt shortcut.txt |
7.su:切换用户身份
基本用法
切换到root用户:su
(需要密码,密码在输入时不显示)
切换到普通用户:su username
8.vim:文本编辑器
基础用法
vim 文件名:进入文本编辑器
vim有三种核心模式,输入命令方式不同
- 命令模式(默认)
- 特征:左下角无提示,可直接输入命令
- 进入方式:按
Esc
键退出其他模式- 支持命令:
:wq
、dd
、yy
等- 插入模式(编辑文本)
- 特征:左下角显示
-- INSERT --
- 进入方式:按
i
、a
、o
等键- 不支持命令:只能输入文本内容
- 可视模式(选择文本)
- 特征:左下角显示
-- VISUAL --
- 进入方式:按
v
(字符选择)或V
(行选择)- 支持命令:配合
y
(复制)、d
(删除)使用
在命令模式中输入:
进入命令输入状态(光标跳转左下角),输入命令后按回车执行
常见命令
一、模式切换
命令 | 作用 | 备注 |
---|---|---|
i |
进入插入模式(光标前) | 最常用 |
a |
进入插入模式(光标后) | Append |
o |
在当前行下方插入新行 | 进入插入模式 |
Esc 或 Ctrl+[ |
返回命令模式 | 所有操作的基础 |
v |
进入可视模式(字符选择) | 配合 y (复制)、d (删除) |
V |
可视模式(行选择) | Shift + V |
二、导航与编辑
光标移动
命令 | 作用 | 等效方向键 |
---|---|---|
h |
左移 | ← |
j |
下移 | ↓ |
k |
上移 | ↑ |
l |
右移 | → |
gg |
跳转到文件开头 | |
G |
跳转到文件末尾 | Shift + G |
0 |
跳转到行首 | |
$ |
跳转到行尾 | Shift + 4 |
Ctrl+f |
向下翻页 | Page Down |
Ctrl+b |
向上翻页 | Page Up |
文本编辑
命令 | 作用 |
---|---|
dd |
删除当前行 |
dw |
删除一个单词(从光标位置起) |
x |
删除光标所在字符 |
u |
撤销操作 |
Ctrl+r |
重做(恢复撤销) |
yy |
复制当前行 |
p |
粘贴到光标后 |
P |
粘贴到光标前 |
三、搜索与替换
命令 | 作用 |
---|---|
/关键词 |
向前搜索(按 n 跳下一个,N 上一个) |
?关键词 |
向后搜索 |
:%s/旧内容/新内容/g |
全局替换(加 c 可确认每次替换) |
:s/旧内容/新内容/g |
替换当前行内容 |
四、文件操作
命令 | 作用 |
---|---|
:w |
保存文件 |
:wq 或 ZZ |
保存并退出 |
:q! |
强制退出不保存 |
:e 文件名 |
打开新文件 |
:sp 文件名 |
横向分屏打开文件 |
:vsp 文件名 |
纵向分屏打开文件 |
Ctrl+w +方向键 |
切换分屏窗口 |
以下关于网络的命令暂时不做补充,先了解,之后用上了再来学习
9.ps:查看进程状态
10.kill:终止进程
11.curl:网络请求工具
12.ssh:远程连接服务器
13.ping:测试网络连通性
14.netstat:查看网络连接
15.ipconfig:查看/配置网络接口
16.apt:软件包管理工具
二.linux常见命令(AI分类)
一、文件与目录操作
命令 | 作用 | 常用选项/示例 |
---|---|---|
ls |
列出目录内容 | ls -l (详细列表)、ls -a (显示隐藏文件)、ls -h (人类可读大小) |
cp |
复制文件/目录 | cp -r dir1 dir2 (递归复制目录) |
mv |
移动或重命名文件 | mv old.txt new.txt (重命名)、mv file ../ (移动文件) |
rm |
删除文件/目录 | rm -rf dir (强制递归删除,慎用!) |
mkdir |
创建目录 | mkdir -p dir1/dir2 (自动创建父目录) |
touch |
创建空文件或更新文件时间戳 | touch file.txt |
find |
搜索文件/目录 | find /home -name "*.log" (按名称搜索)、find . -type d (查找目录) |
tar |
压缩/解压文件 | tar -czvf archive.tar.gz dir (压缩)、tar -xzvf archive.tar.gz (解压) |
二、文本处理与查看
命令 | 作用 | 常用选项/示例 |
---|---|---|
cat |
查看/合并文件 | cat file.txt 、cat file1 file2 > merged |
less |
分页查看文件(支持搜索) | less large.log ,按 /keyword 搜索 |
grep |
文本搜索工具 | grep "error" log.txt 、grep -r "pattern" /dir (递归搜索) |
sed |
流编辑器(文本替换/处理) | sed 's/old/new/g' file.txt (全局替换) |
awk |
文本分析工具 | awk '{print $1}' data.txt (提取第一列) |
head |
查看文件开头部分 | head -n 20 file.log (显示前20行) |
tail |
查看文件末尾部分 | tail -f log.txt (实时跟踪日志更新) |
三、系统信息与监控
命令 | 作用 | 常用选项/示例 |
---|---|---|
top |
实时进程监控(类似任务管理器) | 按 P (CPU排序)、M (内存排序) |
htop |
增强版 top (需安装) |
htop (支持鼠标操作) |
df |
查看磁盘空间 | df -h (人类可读格式) |
du |
查看目录/文件大小 | du -sh dir (汇总目录大小) |
free |
查看内存使用 | free -h (显示内存和Swap) |
ps |
查看进程状态 | ps aux (显示所有进程)、`ps -ef |
kill |
终止进程 | kill -9 PID (强制终止) |
四、网络相关
命令 | 作用 | 常用选项/示例 |
---|---|---|
curl |
网络请求工具 | curl -O http://example.com/file (下载文件) |
wget |
下载文件 | wget -c http://example.com/file.zip (断点续传) |
ssh |
远程连接服务器 | ssh user@192.168.1.100 |
scp |
安全复制文件(基于SSH) | scp file.txt user@host:/path (上传)、scp user@host:/file ./ (下载) |
ping |
测试网络连通性 | ping google.com |
netstat |
查看网络连接 | netstat -tulnp (列出所有监听端口) |
ifconfig /ip |
查看/配置网络接口 | ip addr show (显示IP地址) |
五、权限与用户管理
命令 | 作用 | 常用选项/示例 |
---|---|---|
chmod |
修改文件权限 | chmod 755 script.sh 、chmod +x file (添加执行权限) |
chown |
修改文件所有者 | chown user:group file.txt |
sudo |
以管理员权限执行命令 | sudo apt update |
passwd |
修改用户密码 | passwd username |
useradd /userdel |
添加/删除用户 | useradd -m newuser (创建用户并生成家目录) |
六、包管理(Debian/Ubuntu为例)
命令 | 作用 | 常用选项/示例 |
---|---|---|
apt |
软件包管理工具 | apt update (更新源)、apt install package (安装软件)、apt remove package (卸载) |
dpkg |
手动安装 .deb 包 |
dpkg -i package.deb |
三.linux内置变量
在 Linux 中,环境变量(Environment Variables)是操作系统和应用程序用来存储配置信息或运行时参数的动态值。它们可以被当前 Shell 及其子进程访问,常用于控制程序行为、定义路径或传递数据。用
$变量名
表示,注意变量名大小写后表示不同的变量名
1.BASH
用途:显示bash的完整路径名。通常是:/bin/bash或/usr/local/bin/bash
用例:echo $BASH
2.BASH_VERSION
用途:bash的版本
用例:echo $BASH_VERSION
3.HOME
用途:设定用户的家目录位置。通常,root的家目录在/root,一般用户家目录在/home/账号。替换~的结果,就是HOME变量值
用例:echo $HOME
4.HOSTNAME
用途:显示主机名
用例:echo $HOSTNAME
5.IFS
用途:定义字段分割字符。默认值为:空格符、换行符、制表符(tab符)
用例:echo 1${IFS}2
注意:不能写成echo 1$IFS2,这样会让shell将$ISF2作为一个变量名
6.PATH
用途:定义可执行文件的搜索路径
用例:echo $PATH
7.USER/LOGNAME
用途:当前登录用户的用户名
用例:echo $USER
8.SHELL
用途:当前用户默认的shell程序路径
用例:echo $SHELL
9.PWD
用途:当前工作目录的路径
用例:echo $PWD
10.RANDOM
用途:随机函数,调用此变量值时随机出现整数,范围为0-32767。不过却不是真正的随机,因为每次得到的随机数一样。因此,在使用该变量前,需要随便设定一个数给RANDOM作为随机数种子,这样才不会每次产生随机数顺序一样
用例:
RANDOM=$$ |
11.PPID
用途:父进程的进程编号
用例:echo $PPID
12.REPLY
用途:select和read没有设定读取变量时,默认的变量名称称为REPLY
用例:echo $REPLY
13.SHLVL
用途:子shell的层级数
14.$1~$n
用途:位置参数,传入程序或函数的参数,第一个参数为$1,第二个参数为$2,以此类推。注意,如果位置参数n超过9以上,要用${n}来表示。$0表示执行程序的名称
用例(将下列代码存为test.sh后执行chmod +x myscript.sh
添加权限后,用./运行,下面同理)
|
./test.sh one two three |
15.$*与 “$*“
用途:代表所有的位置参数,但是 $* 与 “$*“ 的表现是不一样的
$*提供分隔后的参数,和$@的表现是一样的
|
./test.sh a b c |
“$*”把所有参数看作一个字符串
|
./test.sh a b c |
16.$@ 与 “$@”
用途:代表所有位置参数,$@
和$*
的表现是一样的,”$@” 能够提供看上去比较合理的结果
|
./test.sh a b c |
17.$#
用途:位置参数的个数
18.$?
用途:上一条命令执行结束后的传回值,通常0表示执行成功,非0代表执行有误
19.$$
用途:目前bash shell的进程编号
20.$_
用途
a.script执行时,bash的绝对路径
b.上一个命令执行时,最后的一个位置参数,比如上一个命令为test.sh 123 abc,则$_的值为abc
c.检查邮件时,值为邮件文件名
|
./test.sh one two three |
如果只是以下命令
|
./test.sh |
21.$!
用途:运行在后台的最后一个作业的 PID
22.$EUID与$UID
用途
$EUID 表示 “有效” 用户 ID。
$UID 表示 用户ID号,是当前用户的用户标识号, 记录在 /etc/passwd 文件中。这是当前用户的真实 id, 即使只是通过使用 su 命令来临时改变为另一个用户标识, 这个 id 也不会被改变。$UID 是一个只读变量,不能在命令行或者脚本中修改它。
四.做题积累的一点知识点
${PATH:~A}
表示取PATH变量值的最后一个字母/的绕过方法:进程第一次打开shell时
${SHLVL}=1
,然后在此shell中再打开一个shell时$SHLVL=2
。只需要${PWD::${SHLVL}}
,结果就是/数字的常见绕过方法
1.`$=$