为什么选择 Linux?本篇从 Linux 的核心概念与整体认知切入,探讨其多用户多任务优势,以及常见发行版与命令行操作初步。
一、Linux 核心概念与整体认知
¶1. 为什么选择 Linux
- 高可定制:开源、可免费使用,所有组件都能根据需要进行修改或定制。
- 稳定可靠:Linux 在服务器、嵌入式等场合使用广泛,拥有较强的稳定性和容错能力。
- 强大生态:内置强大的包管理器,丰富的开源软件资源,如常见的
yum(RHEL/CentOS)、apt(Debian/Ubuntu)等。 - 一切皆文件:文件系统抽象了各种设备,可以统一方式访问硬盘、网络设备、外设。
¶2. 常见发行版简要对比
- Ubuntu/Debian 系:软件包管理器为
apt,社区活跃,适合初学者和开发者。 - CentOS/RHEL 系:软件包管理器为
yum或dnf,适合生产环境,稳定性好。 - SUSE 系:使用
zypper,在企业级环境及 SAP 相关部署中常见。 - Arch Linux:滚动更新模型,软件版本最新,但对运维人员要求更高。
¶3. 基本理念
- 多用户、多任务:同一时间允许多个用户同时登录,每个用户可并行运行多个任务。
- 权限机制:以文件(含目录)为核心,通过读、写、执行(rwx)三种权限和所有者/用户组/其他的组合来管理访问控制。
- 命令行优先:大量操作更习惯于 CLI(Command Line Interface)完成,也有许多发行版提供图形化桌面,但服务器环境多以命令行为主。
二、文件与目录操作
¶1. 创建与删除
-
mkdir <目录名>:创建目录。可以加
-p参数递归创建多级目录。例如:1
mkdir -p /home/test/subdir
若没有上级目录时自动帮助创建。
注意:Linux 的文件夹和文件名不得重复,因为一切皆文件
-
rmdir <目录名>:只删除空目录。若需删除非空目录,一般使用
rm -r <目录>。但要注意:
rm命令其实没有彻底删除,现在的文件系统都是日志型,操作其实都被系统监控、录制了,做了备份,删除文件都是可以恢复的,借助磁盘恢复数据手段即可,shred 文件名能够彻底粉碎文件,具体操作是随机写入一堆二进制数据导致源文件无法使用。比较危险,不推荐使用。
-
touch <文件>:最常用的用途在于快速创建新文件或修改现有文件的访问时间/修改时间。
-
如果文件不存在,则新建空文件;
-
如果文件已存在,则仅更新文件时间戳(默认更新 atime、mtime)。
-
创建多个文件的方式是用花括号扩起来,逗号分隔不同文件名,逗号之间不要加空格(
mkdir同理)
-
批量操作方式为:

注意:
- 创建文件时文件名除了不能包含斜线(
/)都可以,但如果包含其他特殊字符(? * > <)需要使用单引号扩起来,双引号中的特殊符号是会发挥作用的,例如!!代表取得上一次执行的命令。当文件名出现特殊符号,系统会用反斜线进行转义 vi、vim和echo也能创建文件,echo需要结合重定向符号输出内容到创建的文件中
-
-
stat 文件名这个方法可以查看用户创建改变文件等的时间戳,是ls的详细版-
修改文件名、权限这些信息会导致 change 属性发生时间更新
-
内容数据被修改时 modify 属性会发生时间更新

-
-
cp <源文件> <目标>:复制文件或目录(如果复制目录需
cp -r)。-
复制文件夹到目标路径某文件夹时,如果目标路径不存在该文件夹,将给原文件夹改名复制过去;若存在该文件夹,则将原文件夹复制到目标路径文件夹下

-
-
mv <源> <目标>:移动/重命名文件或目录;相当于 Windows 的剪切粘贴。
-
zip:在两个硬盘之间拷贝大量数据会时快时慢,是因为有很多零散文件,打包压缩能将这些文件进行整合在一起再去传输。
¶2. 查看目录与文件详情
-
ls -l:列出权限、所有者、大小、修改时间等详细信息,可以简写为
ll。-
组合参数:
-
-h:人性化显示大小,如1K,2M -
-a:包括隐藏文件(以.开头)。 -
-d:仅显示文件夹本身的信息,而非其他内部资料。 -
-t:按修改时间排序;-r:反向排序1
ls -lha /var/log
-
-
权限列:如
drwxr-xr-x:d表示目录;若是-则是普通文件;l则表示软链接等- 后面 9 位分三组(owner / group / others),分别对应 rwx 的权限位
-
-
ls --help / man ls:查看更多可用参数和说明。
-
head -n 文件路径:查看前 $n$ 行,可以加入多个路径

-
tree:
tree -NF 文件夹显示中文的文件类型树,-N是显示中文。
¶3. 重定向与文件写入
-
echo “content”:将字符串输出到终端,可以使用
>、>>重定向到文件。>:覆盖写入,若文件存在则会被清空后写入新内容。>>:追加写入,在文件末尾追加一行。
-
重定向符也可用于将命令输出保存:如
ls -l > list.txt可将ls -l的结果保存到list.txt文件里。注意:Linux 下的单引号表示不做特殊符号转义,只是一个纯字符串;但双引号除了定义字符串还能识别特殊符号
¶4. 更多常见操作
-
rm <文件/目录>:删除文件或目录,若删除目录需加
-r。谨慎使用rm -rf /之类的命令(危险操作)。 -
cat / tac:输出文件内容到屏幕;
tac为反序输出(从尾到头,注意是单词级别的)。-
cat可以结合重定向符号使用,合并若干文件后输出到指定文件 -
cat -n filename可以输出行号(使用-b对有内容的行显示行号,空行不显示) -
cat -E filename可以在行后加$代表结束 -
可以结合
EOF及重定向符使用
-
-
du:显示文件或文件夹的大小

-
wc:统计文件字数

-
head / tail:查看文件开头/结尾几行,常用
tail -f实时查看日志滚动输出。-
tail -f:跟踪文件内容变化,但需要文件正常退出后才可见; -
tail -F:跟踪文件内容变化,实时的,即使文件不存在也可以
-
-
alias:起别名,例如
rm = 'rm -i',简化繁琐的命令+路径。
-
md5sum:文件校验。
-
读取文件:
-
more:同
cat,一次读取所有内容,不方便查看,占内存资源。分屏显示文本内容,可以用空格、回车、翻页查看,但是也很占内存 -
less:如果文本内容过多的话,不会一次性显示读取完,显示界面有多大就先显示多少。空格翻页,回车下一行
-
-
tar:打包压缩与解压缩。打包默认是没有压缩功能的,组合之后才能节省磁盘空间,命令为:
tar [选项] [归档文件名] [文件或目录]-
功能性选项
-
-c:创建归档文件。
-
-x:从归档文件中提取内容。
-
-t:列出归档文件的内容。
-
-r:向现有归档文件中追加文件。
-
-u:只追加比现有归档文件更新的文件。
-
-
压缩相关选项
-
-z:通过 gzip 压缩或解压缩(生成 .tar.gz 文件)。
-
-j:通过 bzip2 压缩或解压缩(生成 .tar.bz2 文件)。
-
-J:通过 xz 压缩或解压缩(生成 .tar.xz 文件)。
-
–lzma:通过 lzma 压缩或解压缩。
-
-
其他选项
-
-v:显示详细操作过程。
-
-f:指定归档文件名(要放在最后一个参数)。
-
-C:切换到目标目录进行操作。
-
–exclude=PATTERN:在操作时排除符合特定模式的文件。
-
-
命名规范
- *.tar:仅仅打包了
- *.tar.gz:打包+压缩
- *.tgz:打包+压缩


-
使用 file 命令可以查看真实文件类型:

三、远程连接与协议
¶1. SSH 与常见客户端
- SSH(Secure Shell):通过加密的方式远程登录与传输文件,是服务器管理的常见手段。默认端口
22。 - 语法:
ssh [-p PORT] user@host-p PORT:指定非默认端口。user@host:登录名 + 服务器 IP 或域名。
- 密钥登录:可使用
ssh-keygen生成公私钥,配置到服务器的~/.ssh/authorized_keys中,免密码登录。 - 常见 SSH 客户端工具:Xshell, SecureCRT, PuTTY, 或直接在 Linux 终端使用
ssh命令。
¶2. 退出连接
- exit / logout:退出当前会话。
- 当使用 Xshell 或其他 SSH 工具时,关闭窗口或
exit即可断开。
¶3. 协议概念扩充
- 协议本质上是一套约定,用于在两端之间确立通信规范;包括数据格式、握手流程、加密方式等。
- 常见协议:
- HTTP/HTTPS:浏览器与网站交互;
- FTP/SFTP:文件传输协议(SFTP 基于 SSH 加密);
- SMTP/POP3/IMAP:邮件相关协议;
- TCP/UDP:传输层协议,TCP 面向连接,UDP 面向无连接。
¶4. 修改 SSH 端口与安全性
- 可编辑
/etc/ssh/sshd_config中的Port字段;修改后systemctl restart sshd生效。 - 改端口能减少被恶意扫描的概率,但并非绝对安全;结合防火墙、fail2ban、密钥登录等措施才能增强安全性。
四、Linux 与 Windows 命令对比
¶1. 基本差异
- 命令行 vs. GUI:Windows 常以图形界面操作为主;Linux 多在终端里敲命令。
- 驱动方式:Windows 驱动需厂商签名或驱动管理器更新;Linux 下多内置模块或通过发行版仓库安装。
- 软件安装方式:Windows 通常为
.exe安装包;Linux 主要通过包管理器(apt,yum,dnf,pacman等)进行统一管理,更加集中。
¶2. 文件路径与大小写
- Windows 用
C:\等盘符,反斜杠\作为路径分隔符;Linux 根目录为/,斜杠/作为路径分隔,并且严格区分大小写。
¶3. 网段、桥接与 NAT
在使用虚拟化(VMware、VirtualBox 等)时:
- 桥接模式:虚拟机与宿主机在同一物理网络,可被同网段设备访问;
- NAT 模式:虚拟机通过宿主机 IP 转发网络请求,一般从外部无法直接访问到 VM unless 做端口映射。
¶4. 文件类型与后缀
- 在 Windows 中,
.exe、.doc、.mp4等后缀通常决定文件所能做的事情; - 在 Linux 中,文件权限(如
-rwxr-xr-x)才决定是否可执行,与后缀并无强制关系。.sh只是约定俗成的脚本标识,而不影响其可执行性。
¶5. 命令使用
- Windows 上 ssh 连接方式为
ssh 用户名@ip地址 端口号 - Linux 上 ssh 连接方式为
ssh -p 端口号 用户名@ip地址
五、文件扩展名与权限控制
¶1. 权限位详解(rwx)
- r(read)可读,w(write)可写,x(execute)可执行。
- 三组权限:
- Owner(文件所有者)
- Group(同一用户组)
- Others(其他用户)
- 可用
chmod修改权限,比如:chmod 755 script.sh;其中7=rwx, 5=rx, 5=rx。
¶2. RPM 软件包与 DEB 软件包
- RPM:RedHat 系软件包,如
.rpm,可用yum install xxx.rpm或rpm -ivh xxx.rpm安装; - DEB:Debian/Ubuntu 系软件包,如
.deb,可用dpkg -i xxx.deb或apt install ./xxx.deb。
¶3. 一切皆文件的扩展
- 设备文件:如
/dev/sda表示第一块 SCSI/SATA 硬盘设备;/dev/tty表示终端设备; - 管道文件:
mkfifo创建 FIFO;在进程间通信中可使用管道文件做数据传递; - 套接字文件:某些进程可使用 Unix Domain Socket (UDS) 在
/var/run/*.sock中通信。
六、网络与服务管理
¶1. systemctl 与传统 System V
- systemctl:主要用于管理 Systemd 服务,如
systemctl start/stop/restart/status <service>。 - 传统 SysV 使用
service <service> start或/etc/init.d/<service> start等,现代发行版多已切换到 Systemd。
¶2. network 服务
- systemctl status network:查看网络服务状态;
start、stop、restart分别用于启动、停止、重启。 - 如果在 SSH 会话中停止
network服务,则会断开连接,需要本地登录或其他网络路径访问才能恢复。
¶3. 网卡配置与 ifcfg
- 在 RHEL/CentOS 等常见路径
/etc/sysconfig/network-scripts/ifcfg-ens33(具体名称以实际网卡命名为准)。 例如:
1 | TYPE=Ethernet |
- BOOTPROTO 可选
static,dhcp。 - 修改完成后
systemctl restart network生效。
¶4. 其他常见网络命令
- ip addr show:替代
ifconfig,显示网卡 IP、MAC、子网掩码等; - ip route show:查看路由表;
- ping:测试网络连通性;
ping -c 4 8.8.8.8发送 4 个 ICMP 包; - netstat / ss:查看端口占用、网络连接状态。
¶5. 域名解析入门
Linux 能正确进行互联网 DNS 解析的文件是 /etc/resolov.conf,在里面写入域名服务器地址即可。解析就是将域名解析到 IP 的一个操作,直接使用 ping 命令即可完成,但 Linux 也提供了更专业化的域名查找和解析的命令:
-
dig:可以指定域名服务器,后面加对应的域名,具体的指令可以通过-h获取:
一个简单的示例是:

-
nslookup(name server look up)-
交互式操作,直接输入命令即可
-
非交互式操作,
nslookup 域名
-
七、硬盘与挂载
¶1. 基础流程
- 分区:
fdisk /dev/sdb或parted /dev/sdb建立主分区、扩展分区等; - 格式化:
mkfs.ext4 /dev/sdb1,把分区写入 ext4 文件系统(也可能是 xfs、btrfs 等); - 挂载:
mount /dev/sdb1 /mnt/mydisk,将该分区挂载到/mnt/mydisk目录。
¶2. 挂载与自动挂载
- 临时挂载:只在当前会话或重启前有效;
- 永久挂载:在
/etc/fstab写入配置:
1 | /dev/sdb1 /mnt/mydisk ext4 defaults 0 2 |
重启后自动挂载。
¶3. 磁盘管理命令扩充
- lsblk:列出块设备的层次结构,包括挂载点;
- df -h:查看分区的已用/可用空间;
-h让显示更友好; - du -sh <目录>:查看目录所占用的实际容量。
八、用户与主机名
¶1. 命令提示符与身份
- root@hostname ~ #:root 用户标识符为
#; - 普通用户@hostname ~ $:普通用户以
$结尾提示符; - 可在
~/.bashrc或/etc/bashrc中自定义 PS1 以改变提示符样式,如在提示符中显示当前时间、Git 分支等信息(以点开头的文件表示隐藏文件,可以通过ls -a查看)。
¶2. 切换用户与管理
-
su
- su
:切换到其他用户,不完全登录,只能用 exit退出,不加载用户的配置文件,可以再次输入bash命令加载用户环境变量等信息,等同于下面的加杠; - su -
:(加杠)切换到其他用户,会进入该用户的环境(包含 PATH、工作目录等),涉及到用户的配置文件的加载,即 ~/.bash_profile。
- su
-
useradd
:添加新用户;passwd :设置或修改密码。 -
usermod:修改用户属性,如
usermod -aG wheel <user>将该用户加入wheel组(sudo 权限组)。 -
userdel:删除用户,可加
-r同时删除家目录。 -
id -
:查看系统中的用户信息或者验证该用户名是否存在。
¶3. 修改主机名
- hostnamectl set-hostname
:Systemd 时代标准方式,更改后需要重新登录或重启 shell 会话才能看到最新效果。 - 也可直接修改
/etc/hostname、/etc/hosts(旧方式,但在新版本中hostnamectl更简洁)。
九、常用目录与命令
¶1. 常见目录
- /etc:系统配置文件主目录。很多服务(如
sshd,network,cron)的配置都在此处。 - /var/log:存放系统及服务运行日志,如
messages,secure,cron等文件;分析故障常见在此查看。 - /home:普通用户的家目录存放位置,每个用户对应
/home/username。 - /root:root 用户家目录(非
/home/root)。 - /opt:可安装第三方软件包或自主编译安装的非系统默认软件。
¶2. 系统文件

-
/etc:初始化系统的重要文件所在目录,包含各种系统配置文件和服务配置文件。
-
/etc/sysconfig/network-scripts/ifcfg-eth0:网卡配置文件,用于配置以太网接口的网络参数,如IP地址、子网掩码、网关等。
-
/etc/resolv.conf:Linux系统的DNS客户端配置文件,用于域名解析,使机器能够识别和访问如www.taobao.com等域名。
注意:
- 将 nameserver 行注释掉就 ping 不通其他网址了,可以写入多个 nameserver,防止一个挂掉就无法做域名解析了
- DNS 劫持:修改了 nameserver 地址,并关闭了本地的公网 DNS 服务器设置传送到恶意的 DNS 服务器地址,返回一个恶意的 IP 地址。要解决只需要修改客户端正确的 DNS 服务器即可(本地机器会有 DNS 解析缓存,可以使用命令强制刷新)
-
/etc/hostname (CentOS 7) / /etc/sysconfig/network (CentOS 6):主机名配置文件,用于设置系统的主机名。例如,可以设置一个测试用的假域名如www.yejinyang0224.cd。
-
/etc/hosts:系统本地的DNS解析文件,包含本机的IP地址与域名对应关系,如
192.168.0.150 www.yejinyang0224.cc,使本机能够解析指定的域名。该文件必须在客户端机器上配置,决定了本机对特定域名的解析。 -
/etc/fstab:配置开机时自动挂载设备的文件,定义了设备与挂载点的对应关系。
-
/etc/rc.local:存放开机自启动程序命令的文件,可以在系统启动时自动执行指定的脚本或命令。
-
/etc/inittab:系统启动时设定运行级别等配置的文件(主要用于旧版系统)。
-
/etc/profile 和 /etc/bashrc:配置系统的环境变量和别名等文件,影响所有用户的登录环境。
-
/etc/profile.d:用户登录后执行的脚本所在目录,可以在此设置个人快捷命令或别名,每次开机自动加载。
-
/etc/issue 和 /etc/issue.net:配置用户登录终端前显示的信息文件,如欢迎信息或系统标识。
-
/etc/init.d:软件启动程序所在目录(适用于 CentOS 6),存放各种服务的启动脚本。
-
/usr/lib/systemd/system/:软件启动程序所在目录(适用于 CentOS 7),存放 Systemd 服务单元文件。
-
/etc/motd:配置用户登录系统后显示的提示内容文件(Message of the Day)。
-
/etc/redhat-release:声明 RedHat 系统的版本号和名称信息的文件。
-
/etc/sysctl.conf:Linux内核参数设置文件,用于配置内核的运行参数,如网络设置、文件系统性能参数等。
-
-
/proc:重要的虚拟文件系统,提供系统底层的各种信息,如硬件设备、文件系统等,体现了 Linux 的“一切皆文件”理念。
- /proc/meminfo:系统内存信息,提供详细的内存使用情况,虽然对普通用户来说较为底层,但许多程序依赖于此获取内存数据。
- /proc/cpuinfo:处理器信息文件,包含关于CPU的详细信息,如型号、核心数、频率等。
-
/dev:设备文件目录,包含系统中所有的设备文件,如
/dev/sda(第一块SCSI/SATA硬盘设备)、/dev/tty(终端设备)。 -
/var/log:存放系统和服务的日志文件,如
messages、secure、cron等,帮助运维人员进行系统监控与故障排除。 -
/home:普通用户的家目录所在位置,每个用户对应
/home/username。 -
/root:超级用户(root)的家目录。
-
/opt:用于安装大型或第三方软件包,通常不属于系统默认软件的一部分。
-
/lib:存放系统软件运行必须调用的
.so文件,如同 Windows 软件运行依赖的.dll文件。 -
/mnt:就是一个普通文件夹,一般用做光驱、U 盘、硬盘等挂载,访问该文件夹即等于读取 U 盘的数据。
-
/usr:存放系统应用程序、库文件和共享资源,类似于 Windows 的
C:\Windows目录。- /usr/lib:存放系统库文件和动态链接库,类似于 Windows 的
C:\Windows\System32,包含大量系统级别的库和模块。 - /usr/local:用于安装用户自己编译的程序和手动安装的软件,类似于 Windows 的
C:\Program Files。这个目录下的程序通常不由包管理器管理,便于用户自定义和维护。
- /usr/lib:存放系统库文件和动态链接库,类似于 Windows 的
¶3. 系统信息查看
- uname -a:查看内核版本、主机名、硬件架构等;
- cat /etc/os-release:查看操作系统发行版信息;
- hostnamectl:查看/设置主机名、OS 类型、内核等;
- w:可以显示系统登录用户(w = who + uptime)。
¶4. 帮助与历史
-
man <命令>:查看 Linux 内置手册,更多参数与示例;
-
–help:大多数命令提供简要帮助;
-
info <命令>:另一种详细文档格式(GNU info page);
-
history:查看输入过的命令记录,可配合
!<编号>快速执行某条历史命令。 -
find:查找文件

-
-type f:找到文本类型的数据(可以被cat的文件) -
-type d:找到文件夹类型的数据 -
-o:或者,比如要找到所有的压缩文件1
find / -type f -name "*.tar" -o -name "*.tgz" -o -name "*.zip" -o -name "*.tar.gz"
-
-a:并且
-
找出系统上超过 20 M 的
tar压缩包(大于为+20M,等于为 20M,小于为-20M)1
find / -type f -size +20M -name "*.tar"
-
十、变量与环境变量
¶1. 定义与读取
-
自定义变量:不加
export仅在当前 shell 有效:1
2name="hello"
echo $name -
导出为环境变量:使其在子进程也可见:
1
export name="hello"
-
删除变量:
unset name
¶2. PATH 环境变量
-
决定在终端输入某个命令时,系统依次在这些目录里查找可执行文件。例如
PATH=/usr/local/bin:/usr/bin:/bin. -
which <命令>:显示该命令对应的绝对路径,比如:
1
2which ls
# /usr/bin/ls -
若某个目录不在 PATH 中,需要全路径调用或修改 PATH。
十一、更多扩充与常见实用技巧
¶1. 软件安装相关
- yum search <关键字> / apt search <关键字>:查找可安装的软件包;
- yum update / apt update:更新软件源信息,再用
upgrade或dist-upgrade升级已安装的包; - yum remove <包名> / apt remove <包名>:卸载不用的包。
¶2. 查找与过滤命令
- find <路径> -name
:递归查找匹配特定文件名;可加 -type f/d限制类型; - grep <关键词>:在文本中搜索关键字;
grep -r递归搜索目录;egrep / fgrep为扩展/固定正则版本; - awk / sed:文本处理的强大工具,常搭配管道组合复杂过滤或替换操作。
¶3. 进程管理
- ps aux / top / hto:查看当前进程列表、CPU/内存占用;
- kill
/ kill -9 :结束进程;kill -9为强制结束; - jobs / bg / fg:管理后台/前台进程;常用场景:一时想把长时间任务放后台执行。
¶4. 安全强化基础
- sudo 机制:普通用户临时以 root 身份执行管理命令,减少安全隐患;
- 防火墙:
firewalld或iptables;控制端口开放与否;firewall-cmd或iptables命令进行规则配置; - 日志审计:查看
/var/log/secure、/var/log/audit等,以了解系统登录和关键安全事件。
¶5. Shell 脚本入门
- 首行常用
#!/bin/bash指明解释器; - 赋予脚本可执行权限
chmod +x script.sh; - 通过
./script.sh或bash script.sh运行; - 脚本中可使用变量、流程控制语句(if/for/while)等实现自动化运维。
¶6. 虚拟机快照
相当于游戏存档,例如软件升级时有很多相关软件也都跟着升级导致某个出问题了,可以回到之前的位置
- 本文标题:Linux 使用基础
- 本文作者:Chen Kai
- 创建时间:2025-01-10 00:00:00
- 本文链接:https://www.chenk.top/Linux 使用基础/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!