Linux 基础
声明
引用黑马的学习资料
简介
组成
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
orls -la
orls -al
orls -la /
默认设置工作目录在用户的HOME目录
查看根目录(/)下的文件和文件夹
1 | cd / |
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 | mv test.txt Desktop/ //不加/相当于改名 |
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 | 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 | find / -size -10k //查找小于 10KB 的文件 |
通配符
rm 命令支持通配符 * ,用来做模糊匹配
- 符号 * 表示通配符,即匹配任意内容(包含空),示例:
- test* ,表示匹配任何以 test 开头的内容
- *test ,表示匹配任何以 test 结尾的内容
- test ,表示匹配任何包含 test 的内容
echo,tail和重定向符
echo
echo 输出的内容
- 无需选项,只有一个参数,表示要输出的内容,复杂内容可以用””包围
演示
类似于printf反引号
1 | echo pwd //本意是想,输出当前的工作路径,但是 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并对文件夹内全部内容应用同样规则