1.Linux目录结构
有且只有一个顶级目录,使用
/表示,称之为根目录。
/user/local/hello.txt
// 开头的/表示根目录
// 后面的/表示层级关系
2.Linux命令入门
- 命令行:即Linux终端(Terminal)。
- 命令:即Linux程序,一个命令就是一个Linux的程序。
- 命令通用格式:
command [-options] [parameter]
// command:命令本身
// -options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
// parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等
- ls命令
// ls命令的作用是列出目录下的内容,语法细节如下:
ls [-a -l -h] [Linux路径]
// -a:列出全部文件,包括隐藏的文件和文件夹
// -l:以列表的形式展示内容,并展示更多信息
// -h:与-l配合使用,以易于阅读的形式列出文件的大小,例如K、M、G
// 选项还可以组合使用
ls -al
// 不输入路径默认路径是 /home/用户名
- cd命令
// 通过cd命令,更改当前所在的工作目录
cd [Linux路径]
pwd命令
// 帮助我们打印当前所在的工作目录
pwd
3.相对路径绝对路径和特殊路径符
- 绝对路径开头一定是/
- 相对路径直接写相对于当前路径下的目录就行了,不需要/
- 特殊路径符:
. 表示当前目录
// 比如cd ./Desktop就是切换到当前目录下的Desktop目录内,和cd Desktop效果一致
.. 表示上一级目录
// 比如cd ../..切换到上二级目录
~ 表示HOME目录
// 比如cd ~/Desktop切换到HOME目录中的Desktop目录
4.mkdir命令
- mkdir命令可以创建新的目录
mkdir [-p] Linux路径
// -p:表示自动创建不存在的父目录,适用于创建连续多层级的目录
- 注意:创建文件夹需要修改权限,请确保操作均在HOME目录内,不要在HOME外操作,涉及到权限问题,HOME外无法成功。
5.文件操作命令
- touch命令
// 可以通过touch命令创建文件
touch Linux路径
- cat命令和more命令
// 可以通过cat命令查看文件的内容
cat Linux路径
// 可以通过more命令查看文件内容
// 支持翻页功能,如果文件内容过多,可以一页页的展示
more Linux路径
// 空格翻页,q退出
- cp命令
// cp命令可以用于复制文件\文件夹
cp [-r] 被复制的路径 要复制去的路径
// -r:用于复制文件夹使用,表示递归复制所有子文件
- mv命令
// mv命令可以用于移动文件\文件夹,也可以用来改名
mv 被移动的路径 要移动去的路径
- rm命令
// rm命令可以用来删除文件、文件夹
rm [-r -f] 参数1 参数2 ... 参数N
// -r:在删除文件夹中使用,表示递归删除所有子文件
// -f:表示强制删除(用于root用户)
// rm命令支持通配符*,用来做模糊匹配
// 符号*表示通配符,即匹配任意内容(包含空)
6.查找命令
- which命令
// 可以通过which命令查找所使用的一系列命令的程序文件存放在哪里
which 要查找的命令
- find命令
// 可以通过find命令去搜索指定的文件
find 起始路径 -name "被查找的文件名"
// 可以使用通配符查找 "test*"
// 可以通过文件大小查找文件
find 起始路径 -size +|-n[kMG]
// +、-:表示大于和小于
// n:表示大小数字
// kMG:表示大小单位,k(小写字母)表示kb,M表示MB,G表示GB
// 为了拥有最大的权限,可以在整个系统中完成搜索
// 我们需要切换到root用户以获得管理员权限
su -root
密码:123456
7.grep、wc和管道符
- grep命令
// 可以通过grep命令,从文件中通过关键字过滤文件行
grep [-n] 关键字 文件路径
// -n:表示在结果中显示匹配的行的行号
// 关键字:表示过滤的关键字,带有空格或其它特殊符号,建议使用" "将关键字包围起来
// 文件路径:表示要过滤内容的文件路径,可作为内容输入端口
- wc命令
// wc命令统计文件的行数、单词数量等
wc [-c -m -l -w] 文件路径
// -c:统计bytes数量
// -m:统计字符数量
// -l:统计行数
// -w:统计单词数量
// 文件路径:被统计的文件,可作为内容输入端口,也就是管道符作别的结果作为右边的命令输入
- 管道符
// 管道符|的含义是将管道符左边命令的结果,作为右边命令的输入(可以嵌套使用)
cat test.txt | grep itheima [被过滤文件] | grep itheima [被过滤文件]
8.echo、tail和重定向符
- echo命令
// 可以使用echo命令在命令行内输出指定内容,复杂内容可以用" "包裹
echo 输出内容
// 反引号:` `
echo `pwd`
// 被反引号包围的内容,会被作为命令去执行,而非普通字符串
// 重定向符:>和>>
// >:将左侧命令的结果,覆盖写入到符号右侧指定的文件
// >>:将左侧命令的结果,追加写入到符号右侧指定的文件
- tail命令
// 使用tail命令,可以查看文件尾部内容,跟踪文件的最新更改
tail [-f -num] Linux路径
// -f:表示持续跟踪,可以开一个新的标签用于测试
// -num:表示查看尾部的多少行,不填默认10行
9.vi编辑器的快速体验
// 使用vim或者vi进入vi编辑器
vim 文件路径
vi 文件路径
// 如果该文件路径不存在,会自动创建,如果存在,就会编辑该路径上的文件
命令模式
- i:在当前光标位置进入输入模式
- a:在当前光标位置之后进入输入模式
- I:在当前行的开头进入输入模式
- A:在当前行的结尾进入输入模式
- o:在当前光标下一行进入输入模式
- O:在当前光标上一行进入输入模式
- esc:任何情况下esc都能回到命令模式
- ::任何情况下:都能进入底线命令模式
- 0:移动光标到当前行的开头
- $:移动光标到当前行的结尾
- pageup:向上翻页
- pagedown:向下翻页
- /:进入搜索模式
- n:向下继续搜索
- N:向上继续搜索
- dd:删除光标所在行的内容
- ndd:删除当前光标向下的n行
- yy:复制当前行
- nyy:复制当前光标向下的n行
- p:粘贴复制的内容
- u:撤销修改
- ctrl+r:反向撤销修改
- gg:跳到首行
- G:跳到尾行
- dG:从当前行开始,向下全部删除
- dgg:从当前行开始,向上全部删除
- d$:从当前光标开始,删除到本行的结尾
- d0:从当前光标开始,删除到本行的开头
底线命令模式
- :wq:保存并退出
- :q:仅退出
- :q!:强制退出
- :w:仅保存
- :set nu:显示行号
- :set paste:设置粘贴模式
10.认知root用户
- root用户(超级管理员):root用户拥有最大的系统操作权限
- 普通用户的权限,一般在其HOME目录内是不受限的
- 一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限
su [-] [用户名]
// -:表示是否在切换用户后加载环境变量,建议带上
// 用户名:表示要切换的用户,省略表示切换到root
exit
// 切换用户后可以使用exit命令退回上一个用户,也可以使用快捷键ctrl+d
// 不exit用户会导致占用进程,可能无法进行一些操作
// 注意:不建议长期使用root用户,避免带来系统的损坏
// 我们可以使用sudo命令,为普通的命令授权,临时以root身份执行
sudo 其它命令
// 在其它命令之前,带上sudo,即可为这一条命令临时赋予root授权
// 但不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证
// 为普通用户配置sudo认证
// etc其实就是Linux配置文件夹,其中都是相关配置文件
// 切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers
// 在文件的最后添加:
用户名 ALL=(ALL) NOPASSWD: ALL
// 其中最后的NOPASSWD:ALL表示使用sudo命令时,无需输入密码
11.用户、用户组
- 用户组管理
// 以下命令需root用户执行
// 创建用户组
groupadd 用户组名
// 删除用户组
groupdel 用户组名
- 用户管理
// 以下命令需root用户执行
// 创建用户
useradd 用户名 [-g 组名 -d Linux路径]
// -g:指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,则必须使用-g
// -d:指定用户的HOME路径,不指定,HOME目录默认在:/home/用户名
// 删除用户
userdel [-r] 用户名
// -r:删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留
// 查看用户所属组
id[用户名]
// 修改用户所属组
usermod -aG 用户组 用户名
// 将指定用户加入指定用户组
// 使用getent命令可以查看当前系统中有哪些用户
getent passwd
// 共有七份信息,分别是:
// 用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
// 使用getent命令同样可以查看当前系统中有哪些用户组
getent group
// 包含三份信息
// 组名称:组认证(x):组ID:
12.查看权限控制信息
- 认知权限信息

// 第一列:表示文件、文件夹的权限控制信息
// 第三列:表示文件、文件夹所属用户
// 第四列:表示文件、文件夹所属用户组
// r:表示读权限
// w:表示写权限
// x:表示执行权限
// 针对文件、文件夹的不同,rwx的含义有细微的差别
// r,针对文件可以查看文件的内容;针对文件夹可以查看文件夹的内容,比如ls命令
// w,针对文件可以修改此文件;针对文件夹,可以在文件夹内创建、删除、改名
// x,针对文件可以将文件作为程序执行;针对文件夹表示可以更改工作目录到此文件夹,比如cd命令
13.修改权限控制
- chmod命令
// 我们可以使用chmod命令,修改文件、文件夹的权限信息
// 注意:只有文件、文件夹的所属用户或root用户可以修改
chmod [-R] 权限 文件或文件夹
// R:对文件夹内的所有内容应用同样的操作
// 示例:
chmod u=rwx,g=rx,o=x hello.txt
// 其中u表示user所属用户权限,g表示group组权限,o表示other其它用户权限
chmod -R u=rwx,g=rx,0=x test
// 将文件夹test以及文件夹内全部内容权限设置为:rwxr-x--x
// 快捷写法:
chmod 751 hello.txt
// r记为4,w记为2,x记为1
// 0:---
// 1:--x
// 2:-w-
// 3:-wx
// 4:r--
// 5:r-x
// 6:rw-
// 7:rwx
- chown命令
// 使用chown命令,可以修改文件、文件夹的所属用户和用户组
// 注意:普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户去执行
chown [-R] [用户][:][用户组] 文件或文件夹
// 示例:
chown root hello.txt 将hello.txt所属用户修改为root
chown :root hello.txt 将hello.txt所属用户组修改为root