LINUX基础篇(Ubuntu):

基础篇:

常见接口:

SATA硬盘-->/dev/sda

SAS硬盘--> /dev/sda

U 盘 / 移动硬盘 (USB)→ /dev/sda
VirtIO 虚拟硬盘 (虚拟机专用)→ /dev/vda

centos ubuntu区别:

安装软件命令:
CentOS:yum install
Uhuntu:apt install

更新软件源: sudo apt update

更新已安装软件: sudo apt upgrade -y

安装核心工具 :sudo apt install -y vim htop net-tools curl wget git tree

清空文件内容:

方法1:esc + :%d

方法2:esc + gg+dG

方法3(如果文件未打开):sudo > /etc/netplan/00-installer-config.yaml

查看文件内容:

cat

less(支持大文件) ↑ ↓ 翻页 q退出查看

head (查看前10行) tail(查看后10行)

ping baidu.com -c 3 (向百度主机发送3次探测包)

ping baidu.com -w 5( 等待回应时间超过5,就判定超时)

linux:一切皆文件

FHS标准目录结构:

/:跟目录,万物之源

/bin:存放二进制可执行命令,所有用户都可以执行

/sbin:存放系统管理命令,只有root用户能执行

/etc:配置文件目录

/var:变化文件目录,日志文件,数据库数据通常都在里面

/home:普通用户的家目录

/root:root用户的家目录

/dev:设备文件目录

/proc:内核参数与进程信息

绝对路径vs相对路径:

/:开始是绝对路径,完整路径

.:代码当前目录

..:代表上级目录

~:代表当前用户家用目录

cd与目录切换:

cd -:回到上一次所在目录

cd ~:回到当前用户的家目录

cd是shell内置命令,不是外部程序,无法改变父shell的目录

ls -l 查询文件和目录的权限

-rw-r--w-- 1 root root 1002 Mar 8 14:00 text.text

  • 指文件(d 指目录,b块设备文件-硬盘,c字符设备文件)

rw- 文件所有者读写权限

r-- 文件所有组读权限

w-- 其他用户写权限

1 硬链接数(普通文件默认1,目录文件默认2)

root 所有者

root 所有组

1002 文件大小(单位字节)

Mar 8 14:00 时间

text.txt 文件名

chmod 修改权限:

只修改目录权限:chmod 755 目录名

修改目录包括下面文件的权限: chmod -R 755 目录名

修改目录包括下面某些文件的权限:chmod 755 目录名 目录名/文件名 目录名/文件名

x:执行权限,执行命令成勋

r: 读权限

w: 写权限

权限值:r=4 w=2 x=1

chmod u+x 脚本 给文件所有者加执行权限

chmod a=r text.txt 所有人都只有只读权限

chmod g-w text.txt 去掉组的写权限
目录必须有 x 才能进去! 只给 r 没用,进不去。

chown 修改所有者和组

chown user1 text.txt

chown user1:group1 text.txt

chown -R user1:group documents

Umask是什么?他是怎么影响和修改新建文件和目录的权限的?

umask是通过掩码的方式从默认权限中去掉指定的权限,文件默认最大权限是666,目录默认最大权限是777,减去umask就是实际的权限值,比如,umask设置成002,那新建文件的权限值就是664,新建的目录权限就是775,那组权限就有写权限了。

特殊权限:

suid(u+s)

chmod u+s 命令 :当任何用户执行这个命令时,就会临时变成这个命令的所有者

sticky(o+t)

chmod o+t 目录:只能删除自己的文件,不能删除别人的文件

常用 644 作为文件权限,安全只读;755 作为目录权限,可进入不可修改。

echo 内部命令+外部命令

type -a echo 显示系统里所有叫 echo 的命令(全部版本)

free 查看内存

lsblk 查看硬盘大小

arch 查看系统架构

uname -r 查看内核CPU版本

cat /etc/os-release 查看系统版本信息

lsb_release -a 查看系统版本信息

cat /etc/redhat-release 查看文件里面的centos版本

lab_release is 返回系统类型 是ubuntu还是centos

时间:

date:

系统时间

clock:

硬件时间:主板芯片

修改系统时间 date -s 'yesterday'

将系统时间按照硬件时间校正:clock -s

将硬件时间按照系统时间校正:clock -w

查看时间时区相关信息: timedatectl status

查看所有时区:timedatectl list-timezones

修改时区: timedatectl set-timezone +时区名

查看当前时区:ll /etc/localtime

/etc/localtime 软链接 指向/user/share/zoneinfo/下面的是时区文件

显示2026 4月日历 :cal 4 2026

显示公元4年日历: cal 4 没有公元0年,最小为1

关机重启:

关机:shut down halt/poweroff +[time]

重启:shut down reboot+[time]

time: +3 表示三分钟之后 还可以指定hh:mm

unix2dos 将unix文件转换成dos文件

hexdump 查看文件二进制内容

保存加退出 ctrl+o 回车,ctrl+x

无法输入命令:ctrl+x

输出字符串加命令结果:echo "my name iss `hostname`"

mv 给文件目录修改姓名//移动

cp -av test.txt test.txt.bak 显示拷贝过程,同时拷贝过去属性。

rename txt txt.bak *.txt 将t*.txt 文件 有txt改为txt.bak后缀 批量修改

rm 删除文件 可以用mv 代替rm

rm -rf :-r是递归 -f是不用询问yes or no

无法删除的文件: rm -- -f 或者rm ./-f

lsof |grep delete

shred 安全删除文件。删的彻底

目录操作:

tree /目录

mkdir /data/dir1/{test1,test2,test3} -pv :创建三个目录,存在不保存,不存在创建,且显示过程

inode表

节点编号,每个文件或目录都有自己唯一的节点编号 命令+-i 可以查看节点编号,每个分区各自分配自己的节点编号,相同的节点编号 允许有多个名字

df 磁盘查看命令,显示分区多少,磁盘多少。

echo file{1..50580} | xargs touch ✅ 能创建大量文件,echo 将文件打印出来,并通过管道| 传输给touch新建。

touch file{1..50580} ❌ 超过系统命令长度限制,失败。

touch 一个文件,提示no space left on device,但是df 可以看到还有很多控空间,为什么?节点被用完了,可以用df -i 查看剩余节点个数

ll !* : ll 上一个命令的所有参数

ln 创建文件硬链接,文件夹不能创建硬链接,但是他有硬链接(和原文件的inode字节编码一样),目录的硬链接=2+子目录数量,不支持跨设备,跨分区,删除原文件,硬链接文件还可以访问

ln -s 软连接,当原始文件被删除之后,软连接文件无法找到原文件,但本身的软连接依旧存在,当重新新建一个源文件,就又可以了,软连接不关心原文件内容,只是一个指向名字相同路径相同的文件,软连接文件和源文件的inode 节点编号不一样。

软链接即支持跨设备,又支持文件夹,原文件的路径一定要相对于软连接文件的路径,不是当前路径

  • 同一个挂载点(同一个 /dev/xxx) → 可以硬链接
  • 不同挂载点(不同 /dev/xxx) → 跨设备 / 跨分区 → 不能硬链接
  • / 下的普通子目录不是跨设备,只是目录结构

问题:如何在软件版本更新之后,不改变路径的情况下,能一直访问最新版本的文件?

答案:删除原本软链接,新建一个新的软连接指向新版本。rm -f app(软连接)

问题:硬链接和软链接区别?

答案:硬链接本质是同一个文件,软链接不是。硬链接支持跨设备,软链接不是。硬链接inode 相同,软连接不同。创建新的硬链接,链接数会增加,删除硬链接,链接数会减少,软链接都不会变化。硬链接不支持文件夹,软链接支持。硬链接的原始文件路径是相对于当前工作目录,软链接的原始文件是相对于链接文件的相对路径。删除原文件,硬链接数减一,但链接文件不受影响,删除原文件,软连接文件将无法访问。硬链接的文件类型和原文件一致,软连接文件和原文件无关。硬链接文件大小和原文件一致,软连接文件文件大小是原始文件的路径长度。

tty 输出当前所在终端设备文件

who 和ls /dev/tty*ls /dev/pts可以查看所有终端设备,linux 的所有终端文件都放在/dev ,名字固定

w可以查看正在被使用 的终端

IO重定向:

重定向就是将键盘输入,屏幕正常输出,屏幕错误输出,这个三个流改道,走向别的文件或着别的屏幕地方。

标准输出重定向stdout:> 或者 1>

ls 1> file.txt 把正常消息输出到文件,或者ls > /dev/tty1 把消息输出到另一个终端设备上

>> 追加输出,不覆盖,往后加

错误输出重定向stderr:2> 或者2>>

ls 不存在的目录 2>> error.log 将错误信息输出到error.log 文件中,不覆盖

输入重定向stdin:cat < file.txt 或者cat 0< file.txt 或者 cat <<EOF 多行数据内容 EOF 会将eof之间多行的内容输入

> file.txt 2>&1 或者 &> file.txt 正确错误一起覆盖输入file.txt

  • > file.txt:标准输出到 file.txt
  • 2>&1错误输出 定向到 标准输出的位置

输入重定向,可以将内容写到文件里,输入命命令就可以执行文件里面的内容。

实现邮件通信:

yum -y install postfix mailx

systemctl enable --now postfix

mail -s hello wang <mail.txt :给wang发个hello的邮件,内容为mail.txt文件的内容

cat >file.txt <<EOF

line1

line2

EOF

file.txt的内容是line1line2 ,EOF是结束标识

vim /etc/mail.rc 编辑mail.rc文件

cat 即使输入也是输出

重定向可以将输出的信息正确或者错误信息放在一个文件内,用来隐藏输出信息

tr 'a-z' 'A-Z' 将输入的含有abc......的小写换成大写ABC......

tr -d 'abc' 将输入内容中的abc字符删除之后,再输出

| 管道左边的正常输出作为管道右边的正常输入

tee 既能存文件,又能屏幕输出,将命令结果一边输出到屏幕,一遍输出到文件

用法1: 命令 | tee 文件名 将命令结果输入到文件,同时又输出到屏幕

用法2: 命令 |tee -a 文件名 非覆盖,将命令结果追加到文件

wget -o - http://www.baidu.com/hello.sh :把日志输出到屏幕,而不是文件

-o = log file把 wget 的日志信息输出到哪里

- = 标准输出(屏幕)

大写 -O = 输出文件(Output file);-o (小写)日志输出

相关推荐
艾莉丝努力练剑2 小时前
System V IPC底层原理详解
linux·运维·服务器·网络·c++·人工智能·学习
顶点多余2 小时前
使用C/C++实现简易版xshell命令行
linux·运维·windows
落羽的落羽2 小时前
【Linux系统】信号机制拆解,透过内核三张表深入本质
android·java·linux·服务器·c++·spring·机器学习
ricky_fan2 小时前
(最新版)Cluade code安装、部署教程-Mac
linux·编辑器·vim
weixin_457341892 小时前
2026年阿里云ECS服务器全攻略:从基础认知和价格体系到购买以及部署流程
服务器·阿里云·云计算
十八画圣2 小时前
企业级AI Agent落地:我们用Openclaw实现了哪些自动化?
运维·人工智能·自动化
十年编程老舅2 小时前
Linux 内存爆满?分清泄漏与正常占用
linux·c++·内存·内存管理·内存泄漏·内存溢出
艾莉丝努力练剑2 小时前
【Linux:文件 + 进程】进程间通信进阶(2)
linux·运维·服务器·开发语言·网络·c++·ubuntu
飞飞传输2 小时前
服务器文件自动同步软件:医疗行业数据管理的安全高效之选
大数据·运维·安全