声明

引用黑马的学习资料

简介

组成

Linux 系统的组成如下:

  • Linux 系统内核
    (内核提供系统最核心的功能,如:调度 CPU 、调度内存、调度文件系统、调度网络通讯、调度 IO 等)
  • 系统级应用程序
    (可以理解为出厂自带程序,可供用户快速上手操作系统,如:文件管理器、任务管理器、图片查看、音乐播放等)

Linux发行版

提供了内核 + 系统级程序的完整封装,称之为 Linux 发行版
任何人都可以封装 Linux

说明

不同的发行版:

  • 基础命令 100% 是相同的
  • 部分操作不同(如软件安装)

目录结构

Linux 的目录结构是一个树型结构
Linux 没有盘符这个概念 , 只有一个根目录 /, 所有文件都在它下面

基础命令

格式

无论是什么命令,用于什么用途,在 Linux 中,命令有其通用的格式:
command [-options] [parameter]

  • command : 命令本身
  • -options : [ 可选,非必填 ] 命令的一些选项,可以通过选项控制命令的行为细节
  • parameter : [ 可选,非必填 ] 命令的参数,多数用于命令的指向目标等
    语法中的 [] ,表示可选的意思

ls命令

ls [-a -l -h] [Linux路径]

  • -a(列出全部文件,包括隐藏的文件)
  • -l(以列表形式展示目录,展示更多)
  • -h(-h 表示以易于阅读的形式,列出文件大小,如 K 、 M 、 G.必须搭配-l一起使用)
  • 可以混合使用,如ls -l -a or ls -la or ls -al or ls -la /
    默认设置工作目录在用户的HOME目录
    查看根目录(/)下的文件和文件夹
1
2
cd /
ls

cd/pwd命令

cd

cd [Linux路径]

  • cd 命令无需选项,只有参数,表示要切换到哪个目录下
  • cd 命令直接执行,不写参数,表示回到用户的 HOME 目录

pwd

查看当前所在的工作目录
直接输入即可

相对路径、绝对路径和特殊路径符

相对路径、绝对路径

例如(其中/home/itheima为工作目录)

  • cd /home/itheima/Desktop
  • cd Desktop
    绝对路径:以根目录为起点,路径描述以 / 开头
    相对路径:以当前目录为起点,路径描述无需以 / 开头

特殊路径符

  • . 表示当前目录,比如 cd ./Desktop 表示切换到当前目录下的 Desktop 目录内,和 cd Desktop 效果一致
  • .. 表示上一级目录,比如: cd .. 即可切换到上一级目录, cd ../.. 切换到上二级的目录
  • ~ 表示 HOME 目录,比如: cd ~ 即可切换到 HOME 目录或 cd ~/Desktop ,切换到 HOME 内的 Desktop
    目录

mkdir命令

通过 mkdir 命令可以创建新的目录(文件夹)
mkdir [-p] [Linux路径]

  • 参数必填,表示 Linux 路径,即要创建的文件夹的路径,相对路径或绝对路径均可
  • -p 选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录

文件操作命令

touch 创建文件

touch [Linux路径]

cat 查看文件内容

cat [Linux路径]

more 查看文件内容

more [Linux路径]
与cat不同的是

  • cat 是直接将内容全部显示出来
  • more 支持翻页,如果文件内容过多,可以一页页的展示
    例如
    more /etc/services
  • 在查看的过程中,通过空格翻页
  • 通过 q 退出查看

cp 命令可以用于复制文件 \ 文件夹

cp [-r] [路径1] [路径2]

  • -r 选项,可选,用于复制文件夹使用,表示递归
  • 路径 1 , Linux 路径,表示被复制的文件或文件夹
  • 路径 2 , Linux 路径,表示要复制去的地方

mv 移动文件或文件夹

mv [路径1] [路径2]
• 路径 1 , Linux 路径,表示被移动的文件或文件夹
• 路径 2 , Linux 路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在
例如

1
2
mv test.txt Desktop/    //不加/相当于改名
mv test2.txt test3.txt //相当于改名

rm 删除文件、文件夹

rm [-r -f] 路径1 路径2 ··· 路径N

  • -r 选项用于删除文件夹
  • -f 表示 force ,强制删除(不会弹出提示确认信息)
    • 普通用户删除内容不会弹出提示,只有 root 管理员用户删除内容会有提示
    • 所以一般普通用户用不到 -f 选项
  • 路径1 、路径2 、 …… 、路径N 表示要删除的文件或文件夹路径,按照空格隔开

通配符

rm 命令支持通配符 * ,用来做模糊匹配

  • 符号 * 表示通配符,即匹配任意内容(包含空),示例:
  • test* ,表示匹配任何以 test 开头的内容
  • *test ,表示匹配任何以 test 结尾的内容
  • test ,表示匹配任何包含 test 的内容

警告

rm 是一个危险的命令,特别是在处于 root (超级管理员)用户的时候。
请谨慎使用。
如下命令,请千万千万不要在 root 管理员用户下执行:

1
2
rm -rf /
rm -rf /*

效果等同于在 Windows 上执行 C 盘格式化。(删库跑路???)

查找命令

which

Linux 命令,其实本体就是一个个的二进制可执行程序
通过 which 命令,可以查看所使用的一系列命令的程序文件存放在哪里
例如

1
which pwd

find 按文件名/文件大小查找文件

find 起始路径 -name “被查找文件名”
例如

1
find / -name "test"

find 起始路径 -size +|-n[kMG]

    • 、 - 表示大于和小于
  • n 表示大小数字
  • kMG 表示大小单位, k( 小写字母 ) 表示 kb , M 表示 MB , G 表示 GB
    例如
1
2
3
find / -size -10k     //查找小于 10KB 的文件
find / -size +100M //查找大于 100MB 的文件
find / -size +1G //查找大于 1GB 的文件

通配符

rm 命令支持通配符 * ,用来做模糊匹配

  • 符号 * 表示通配符,即匹配任意内容(包含空),示例:
  • test* ,表示匹配任何以 test 开头的内容
  • *test ,表示匹配任何以 test 结尾的内容
  • test ,表示匹配任何包含 test 的内容

echo,tail和重定向符

echo

echo 输出的内容

  • 无需选项,只有一个参数,表示要输出的内容,复杂内容可以用””包围
    演示
    类似于printf
    反引号
1
2
echo pwd  //本意是想,输出当前的工作路径,但是 pwd 被作为普通字符输出了
echo `pwd` //我们可以通过将命令用反引号将其包围,被 ` 包围的内容,会被作为命令执行,而非普通字符

重定向符

重定向符: > 和 >>

  • 将左侧命令的结果,覆盖写入到符号右侧指定的文件中
  • 将左侧命令的结果,追加写入到符号右侧指定的文件中

tail

可以查看文件尾部内容,跟踪文件的最新更改
tail [-f -num] Linux路径

  • 参数, Linux 路径,表示被跟踪的文件路径
  • 选项, -f ,表示持续跟踪
  • 选项 , -num ,表示,查看尾部多少行,不填默认 10 行num填具体的数字

grep,wc和管道符

grep

从文件中通过关键字过滤文件行(找出需要的)
grep [-n]关键字 文件路径

  • 选项 -n ,可选,表示在结果中显示匹配的行的行号。
  • 参数,关键字,必填,表示过滤的关键字,带有空格或其它特殊符号,建议使用””将关键字包围起来
  • 参数,文件路径,必填,表示要过滤内容的文件路径,可作为内容输入端口

wc

做数量统计
wc [-c -m -l -w] 文件路径

  • 选项, -c ,统计 bytes 数量
  • 选项, -m ,统计字符数量
  • 选项, -l ,统计行数
  • 选项, -w ,统计单词数量
  • 参数,文件路径,被统计的文件,可作为内容输入端口

管道符 |

将管道符左边命令的结果,作为右边命令的输入
例如

  • cat itheima.txt 的输出结果(文件内容)
  • 作为右边 grep 命令的输入(被过滤文件)

vi/vim编辑器

介绍

vi\vim 是 visual interface 的简称 , 是 Linux 中最经典的文本编辑器
同图形化界面中的 文本编辑器一样, vi 是命令行下对文本文件进行编辑的绝佳选择。
vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。

vi\vim 编辑器的三种工作模式

安装vim sudo apt install vim yum install vim

  • 命令模式( Command mode )
    命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。
    此模型下,不能自由进行文本编辑。
  • 输入模式( Insert mode )
    也就是所谓的编辑模式、插入模式。
    此模式下,可以对文件内容进行自由编辑。
  • 底线命令模式( Last line mode )
    以:开始,通常用于文件的保存、退出。

进入 vi 编辑器会进入命令模式
通过命令模式输入键盘指令,可以进入输入模式
输入模式需要退回到命令模式,然后通过命令可以进入底线命令模式

命令

命令模式快捷键

底线命令模式

要退出编辑模式,可通过 esc ,可以退回到命令模式中即可。

linux用户和权限

root用户(超级管理员)

  • 普通用户的权限,一般在其 HOME 目录内是不受限的
  • 一旦出了 HOME 目录,大多数地方,普通用户仅有只读和执行权限,无修改权限

su命令(用于账户切换)

su [-] [用户名]

    • 符号是可选的,表示是否在切换用户后加载环境变量,建议带上
  • 参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到 root
  • 切换用户后,可以通过 exit 命令退回上一个用户,也可以使用快捷键: ctrl + d
  • 使用普通用户,切换到其它用户需要输入密码,如切换到 root 用户
  • 使用 root 用户切换到其它用户,无需密码,可以直接切换

sudo命令(赋予root权限)

sudo 其它命令

  • 可为这一条命令临时赋予root权限

为普通用户配置 sudo 认证

  • 切换到 root 用户,执行 visudo 命令,会自动通过 vi 编辑器打开: /etc/sudoers
  • 在文件的最后添加用户名 ALL=(ALL) NOPASSWD: ALL
  • 保存
  • 切换回普通用户

用户,用户组管理

Linux中可以配置多个用户,配置多个用户组,用户可以加入多个用户组中
Linux 中关于权限的管控级别有 2 个级别,即针对用户的权限管理,针对用户组的权限管理

用户管理

创建用户
useradd [-g -d] 用户名

  • -g 指定用户的组,不指定 -g ,会创建同名组并自动加入,指定 -g 需要组已经存在,如已存在同名组,必须使用 -g
  • -d 指定用户 HOME 路径,不指定, HOME 目录默认在: /home/ 用户名

删除用户
userdel [-r] 用户名

  • -r ,删除用户的 HOME 目录,不使用 -r ,删除用户时, HOME 目录保留

查看用户所属组
id [用户名]

  • 用户名,被查看的用户,如果不提供则查看自身

修改用户所属组
usermod -aG 用户组 用户名

用户组管理

创建用户组
groupadd 用户组名

删除用户组
groupdel 用户组名

getent(查看系统中有哪些用户)

getent passwd
信息说明:用户名 : 密码 (x): 用户 ID: 组 ID: 描述信息 ( 无用 ):HOME 目录 : 执行终端 (默认bash)
getent group
信息说明:组名称 : 组认证(x) : 组ID

查看权限控制

认知

ls -l

  • 序号 1 ,表示文件、文件夹的权限控制信息
  • 序号 2 ,表示文件、文件夹所属用户
  • 序号 3 ,表示文件、文件夹所属用户组

解析序号1

举例drwxr-xr-x

  • 这是一个文件夹,首字母 d 表示
  • 所属用户 ( 右上角图序号 2) 的权限是:有 r 有 w 有 x , rwx
  • 所属用户组 ( 右上角图序号 3) 的权限是:有 r 无 w 有 x , r-x ( - 表示无此权限)
  • 其它用户的权限是:有 r 无 w 有 x , r-x

rwx

  • r 表示读权限
  • w 表示写权限
  • x 表示执行权限

针对文件,文件夹有不同
• r ,针对文件可以查看文件内容
• 针对文件夹,可以查看文件夹内容,如 ls 命令
• w ,针对文件表示可以修改此文件
• 针对文件夹,可以在文件夹内:创建、删除、改名等操作
• x ,针对文件表示可以将文件作为程序执行
• 针对文件夹,表示可以更改工作目录到此文件夹,即 cd 进入

修改权限控制

chmod命令

chmod [-R] 权限 文件或文件夹

  • -R,对文件夹内的全部内容应用同样的操作

示例

  • chmod u=rwx,g=rx,o=x hello.txt ,将文件权限修改为: rwxr-x–x
    • 其中: u 表示 user 所属用户权限, g 表示 group 组权限, o 表示 other 其它用户权限
  • chmod -R u=rwx,g=rx,o=x test ,将文件夹 test 以及文件夹内全部内容权限设置为: rwxr-x–x
    除此之外,还有快捷写法: chmod 751 hello.txt

权限的数字序号
权限可以用 3 位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限

  • 0:无任何权限 即 —
  • 1:仅有x权限 即 –x
  • 2:仅有w权限 即 -w-
  • 3:有w和x权限 即 -wx
  • 4:仅有r权限 即 r–
  • 5:有r和x权限 即 r-x
  • 6:有r和w权限 即 rw-
  • 7:有全部权限 即 rwx

使用chown命令,可以修改文件、文件夹的所属用户和用户组(只适用于root用户)
chown [-R] [用户][:][用户组] 文件或文件夹

  • -R,同chmod,对文件夹内全部内容应用相同规则
  • 用户,修改所属用户
  • 用户组,修改所属用户组
  • :用于分隔用户和用户组
    例如:
  • chown root hello.txt,将hello.txt所属用户修改为root
  • chown :root hello.txt,将hello.txt所属用户组修改为root
  • chown root:itheima hello.txt,将hello.txt所属用户修改为root,用户组修改为itheima
  • chown -R root test,将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则