发布于 

Linux 基础入门 🐧

Linux 是一套免费使用和自由传播的类 Unix 操作系统。

它的内核是由芬兰人 Linus 编写的,后来经过世界各地程序员的共同努力,衍生了几百种发行版本。

参考阅读:

半人半神,Unix、C 语言和 Linux 诞生记

关于 Unix/Linux 的终端、伪终端、控制台和 Shell

2019 年最好的 Linux 发行版

部署学习环境

使用虚拟机

安装虚拟机软件

VirtualBox 是一款开源 虚拟机软件。VirtualBox 是由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox

在虚拟机上安装 linux

下载镜像:https://www.centos.org/download

创建虚拟机:

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

使用安卓设备

设备:华为平板 M6
  1. 安装使用 termux,参考 国光 的教程:

    Termux 高级终端安装使用配置教程

  2. 在 GNU/Linux 和 Android-Termux 上一键安装 GNU/Linux 容器,More

    https://gitee.com/mo2/linux

使用云服务器

使用 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 Resource
  • var 程序缓存

软件包

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 查看文件行数

moreless 分行显示(空格翻页,回车换行)

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 开头的文件到/tmp
cp file? /tmp 复制当前文件夹所有以 file 开头并且后面只有一个字符的的文件到/tmp

压缩和解压缩

  • 最早 Linux 备份介质是磁带,使用的命令是 tar
  • 可以对打包后的磁带文件进行压缩储存,压缩的命令是 gzipbzip2
  • 经常使用的拓展名是 .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
2
3
[root@aliyun ~]# mkdir test
[root@aliyun ~]# ls -ld test
drwxr-xr-x 2 root root 4096 Jan 4 17:07 test

修改属主与属组
chown user1 test 修改目录 test 的属主为 user1
chown :group1 test 修改目录 test 的属组为 group1
chown user1:group1 test 修改目属主为 user1 属组为 group1
chgrp 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

特殊权限不建议手动设置

网络管理

进程管理