Linux 基础入门 🐧
Linux 是一套免费使用和自由传播的类 Unix 操作系统。
它的内核是由芬兰人 Linus 编写的,后来经过世界各地程序员的共同努力,衍生了几百种发行版本。
参考阅读:
关于 Unix/Linux 的终端、伪终端、控制台和 Shell
部署学习环境
使用虚拟机
安装虚拟机软件
VirtualBox 是一款开源 虚拟机软件。VirtualBox 是由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox

在虚拟机上安装 linux
下载镜像:https://www.centos.org/download
创建虚拟机:

设置 - 存储 - 分配光盘 - 加载 ISO 文件 ,启动虚拟机进行 CentOS 安装
使用安卓设备

安装使用 termux,参考 国光 的教程:
在 GNU/Linux 和 Android-Termux 上一键安装 GNU/Linux 容器,More :
使用云服务器

使用 SSH 远程连接:

快速入门
终端
三种 linux 终端的使用方式:
- 图像终端(桌面环境)
- 命令行终端(命令行模式)
- 远程终端(SSH、VNC)
普通用户的命令提示符:**$**
Root 用户的命令提示符:**#**
目录结构
现在大多数 Linux 的文件系统是 EXT4( Fourth extended filesystem 第四代扩展文件系统)
所有文件都在 /
根目录下:
root
root 用户的家目录home/username
普通用户的家目录etc
系统配置文件目录bin
可执行文件(程序)目录boot
系统启动相关dev
硬件(一切皆文件,以文件的形式表现出来)mnt
挂载(U 盘、光盘…)opt
第三方程序目录proc
进程文件夹srv
服务文件夹sys
系统文件夹( 更改屏幕亮度…)tmp
存放临时文件usr
Unix Software Resourcevar
程序缓存
软件包
deb
deb 是 Debian 软件包格式的文件扩展名,在 Debian 系 linux 中,双击 deb 包即可进入自动安装进程
rpm
RPM(Redhat Linux Packet Manager) 是 Red Hat 公司随 Redhat Linux 推出了一个软件包管理器,通过它能够更加轻松容易地实现软件的安装
tar.gz
是一种压缩文件,在所有的 Linux 版本中都能使用,但安装过程麻烦一点点
帮助命令
- man
- help
- info
man ls
查看 ls 命令的功能及使用方法
man man
查看 man 命令的功能及使用方法(共有 9 个章节的帮助)
man 1 passwd
查看命令 passwd 的帮助
man 5 passwd
查看文件 passwd 的帮助
man -a passwd
查看关键字 passwd 的帮助
shell(命令解释器)自带的命令称为内部命令,其他的是外部命令
type cd
查看 cd 是内部还是外部命令
查看内部命令 cd 的帮助:help cd
man cd
查看的是命令解释器的帮助
查看外部命令 ls 的帮助:ls --help
Info 帮助比 help 更详细,比 man page 编写得要更友好、更容易理解,但全是英文版的
文件管理
Linux 中所有内容都是以文件的形式保存和管理的,即 一切皆文件
普通文件是文件,目录(文件夹)是文件,硬件设备(键盘、硬盘、打印机…)是文件,就连套接字(socket)、网络通信等资源也都是文件
文件查看
su - root
切换为 root 用户
exit
退出当前用户( Ctrl + d )
pwd
显示当前目录名称(类似资源管理器的地址栏)
clear
清除页面内容( Ctrl + l )
ls 命令
ls [选项,选项…] [参数…(目录对象)]
不同颜色的目录代表不同的权限
ls /root /
显示 root 用户目录 及 根目录(目录之间用至少用一个空格间隔开)
ls -l
以长格式显示当前目录(第一个字符 -
表示普通文件 d
表示是一个目录)
类型 数量 创建者 创建者所属的用户组 大小 最后修改时间 名称
ls -a
显示隐藏文件(隐藏文件为了避免误操作)
ls -r
逆序显示文件(默认以文件名排序)
ls -lh
人性化显示文件大小
ls -ltr
按时间顺序逆向显示文件
ls -R
递归显示文件
cd 命令
更改当前的操作目录,按 Tab 键进行目录补全
cd ~
切换到当前用户的家目录
cd -
回到上一目录
cd ..
回到上一级目录
cd /path/to/...
绝对路经(/
表示根目录)
cd ./path/to/...
相对路经(./
表示当前目录)
cd ./path/to/...
相对路经(../
表示上一级目录)
文本内容查看
cat 查看文件所有内容,显示到终端
head 查看文件开头
head -3 filename
查看文本前 3 行
tail 查看文件结尾
-f 文件内容更新后,显示信息同步更新(ctrl+c 停止命令)
wc 统计文件内容信息
-l 查看文件行数
more、less 分行显示(空格翻页,回车换行)
less 不必读整个文件,加载速度会比 more 更快
less 退出后不会留下刚显示的内容,more 会
less 可以按键盘上下方向键显示上下内容,more 不能
创建
touch filea
在当前位置创建文件 a
mkdir a
在当前位置新建目录 a
mkdir b c d
新建多个目录 b c d
mkdir /a/b/c
在目录 a/b/下新建目录 c
mkdir -p /a/b/c
新建多级目录 /a/b/c
删除
rm filea
删除文件 a
rmdir a
删除空目录 a
rm -r a
删除目录 a(包括目录内的所有文件)
rm -rf a
删除目录 a(不进行提示)
sudo rm -rf /
机毁人亡
复制
cp -r /root/a /tmp
复制 root 下的目录 a 到/tmp
cp filea /tmp
复制文件 filea 到/tmp
-v 显示复制信息 -p 保留源文件时间
-a 保留权限、属组、时间
移动
mv dira /tmp
移动目录 dira 到/tmp
mv filea fileb
重命名 filea 为 fileb
mv fileb /tmp/filea
移动 fileb 到/tmp 并重命名为 filea
通配符
*
匹配任意字符?
匹配一个字符cp file* /tmp
复制当前文件夹所有以 file 开头的文件到/tmpcp file? /tmp
复制当前文件夹所有以 file 开头并且后面只有一个字符的的文件到/tmp
压缩和解压缩
- 最早 Linux 备份介质是磁带,使用的命令是 tar
- 可以对打包后的磁带文件进行压缩储存,压缩的命令是 gzip 和 bzip2
- 经常使用的拓展名是
.tar.gz
.tar.bz2
.tar
(.tgz
.tbz2
)
tar cf /tmp/etc-backup.tar /etc
将/etc 目录打包到/tmp 下的 etc-backup.tar
-c:建立一个压缩文件 (create)
-f :使用档名
-v : 显示解压信息
tar czf /tmp/etc-backuo.tar.gz /etc
打包并 压缩
yum install -y bzip2
安装 bzip2
tar cjf /tmp/etc-backuo.tar.bz2 /etc
压缩比率更高,速度比 gzip 慢

tar xf etc-backup.tar -C /root
解压 etc-backup.tar 到 root 目录
用户与权限管理
useradd
新建用户
userdel
删除用户
passwd
修改用户密码
usermod
修改用户属性
chage
修改用户属性
新建
useradd hcj
新建用户 hcj
id hcj
查看用户 hcj 是否存在
用户会被记录到 /etc/passwd 和 /etc/shadow
没有指定用户组的时候会自动创建一个同名的用户组
root 用户才有创建普通用户的权限
passwd hcj
为用户 hcj 创建密码
删除
userdel hcj
删除用户 hcj,但是保留相关数据
userdel -r hcj
删除用户及其相关文件数据
修改
`useradd h``
``usermod -d /home/h1 h` 修改用户 h 的家目录为 h1
用户组
groupadd group1
新建用户组 group1
suermod -g group1 h
将用户 h 的用户组改为 group1
useradd -g group1 user2
新建用户 user2 并加入 group1 中
用户切换
su - user1
切换到用户 user1( -
改变当前工作目录以及 HOME,SHELL,USER,LOGNAME,切换为新用户的工作环境)
switch user 切换用户
sudo 是一种权限管理机制,依赖于/etc/sudoers,其定义了授权给哪个用户可以以管理员的身份能够执行什么样的管理命令
用户和用户组的配置文件
用户配置文件: /etc/passwd用户名称
: x 需要密码验证
: uid
: gid
: 注释
: 家目录位置
: 登入后使用的命令解释器
/sbin/nologin
不允许登入终端
用户密码相关:/etc/shadow用户名
: 加密后的密码
用户组相关:/etc/group用户组名称
: x 需要密码验证
: gid
: 同时属于其他组
文件权限
权限的表示
前十个字符(- — — —):
第一个:文件类型
前三个:当前用户对该文件有什么权限
中三个:当前用户组对该文件有什么权限
后三个:其他人对该文件有什么权限
文件类型
-
普通文件
字符:r 读 w 写 x 执行
数字:r = 4 w = 2 x = 1
d
目录文件
r 查看目录内文件 w 删除目录内文件 x 进入目录
b
块特殊文件(插入的设备)
c
字符特殊文件(终端)
l
符号链接(快捷方式)
f
命名管道
s
套接字文件
修改权限
1 | [root@aliyun ~]# mkdir test |
修改属主与属组chown user1 test
修改目录 test 的属主为 user1chown :group1 test
修改目录 test 的属组为 group1chown user1:group1 test
修改目属主为 user1 属组为 group1chgrp group1 test
修改目录 test 的属组为 group1
ctrl + r 搜索命令历史记录
u
属主
g
属组
o
其他
a
所有
+
增加权限
-
减少权限
=
设置权限
字符chmod u+x testfile
添加文件 testfile 的属主对它的执行权限
数字chmod 446 testfile
只读 只读 读写chmod 777 testfile
赋予所有用户最大权限
特殊权限
SUID 用于 二进制可执行文件,执行命令时取得文件属主权限
如 /usr/bin/passwd
执行 passwd 命令时候,会自动获取 root 用户的身份,让每个用户都有修改自己密码的权限(/etc/shadow 的权限为 000 )
SGID 用于 目录,在该目录下创建新的文件和目录,权限自动更改为该目录的属组
文件共享的情况会使用到
SBIT 用于 目录,该目录下新建的文件和目录,仅 root 和自己可以删除
如 /tmp
特殊权限不建议手动设置