linux的目录结构
linux的目录结构是一个树形结构
windows系统可以拥有多个盘符,如C盘 D盘 E盘 F盘
linux没有盘符这个概念,只有一个根目录/,所有文件都在它下面
linux路径的描述方式
在linux系统中,路径之间的层级关系,使用:/来表示(D:\data\work\hello.txt)
在windows系统中,路径之间的层级关系,室友:\来表示(/usr/local/hello.txt)
什么事命令行、命令
命令行:即linux终端(terminal),是一种命令提示符页面。以纯“字符”的形式操作系统,可以使用各种字符化命令对系统发出操作指令
命令:即linux程序。一个命令就是一个linux的程序。命令没有图形化页面,可以在命令行(终端中)提供字符画的反馈,本体就是一个个的二进制可执行程序,类似windows中的.exe文件
linux命令基础格式
command [-options] [parameter]
command:命令本身
-options:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节
parameter:[可选,非必填]命令的参数,多数用于命令的指向目标等
home目录概念
每一个用户在linux系统的专属目录,默认在:/home/用户名
当前工作目录:即当前所在的目录
ls 命令 list
指定要查看的文件夹(目录)的内容,如果不给定参数,就查看当前工作目录的内容
-a all,全部,可以展示出隐藏的内容
-l long format,长格式,以列表的形式展示内容,并展示跟多细节
-s human-readable,以更加人性化的方式显示文件的大小单位,需要和-l命令组合使用
参数组合使用的形式
- ls -l -h
- ls -lh
cd 命令 change derectoty
cd [linux路径]
不使用参数切换工作目录到当前用户的home目录
pwd 命令 print work directory
输出当前所在的工作目录
相对路径、绝对路径
绝对路径:以跟目录为起点
相对路径:以当前目录为起点
特殊路径符:
. 表示当前目录 cd ./desktop ,这种写法与cd desktop是一样的
.. 表示上一级目录 cd ../..切换到上两级目录,以此类推
~ 表示home目录,cd ~切换到home目录,cd ~/desktop切换到home内的desktop目录
mkdir 创建目录(文件夹)make directory
mkdir [-p] 路径
-p parents 表示自动创建不存在的父目录
touch 命令 创建一个新的文件
touch是触摸的意思,为什么用这个单词来作为命令创建文件呢
这个命令的本质是用来更新文件的时间戳,即访问时间和修改时间,所以用touch是合理的。第一次触摸没有就会创建文件
cat 命令 concatenate 查看文件
concatenate 是连接拼接的意思
该命令的主要作用是拼接文件并输出,cat test1.txt test2.txt 会把test1的内容拼接在test2后面并输出
只是非运维多用于查看单个文件
more 逐页显示文本的内容,支持翻页
空格 下一页
b 上一页
q 退出
cp 命令 copy 复制文件、文件夹
[-r] recursive,用于复制文件夹,表示递归
cp -r 被复制的文件夹 新的文件夹
mv命令 move,用于移动文件、文件夹
mv 被移动的文件、文件夹 要移动去的地方
如果目标文件夹、文件不存,则会有改名的效果,确保目标存在
rm命令 remove,用于删除文件、文件夹
rm [-r -f] 参数1 参数2 参数3
[-r] recursive,用于删除文件夹,表示递归
[-f] force,强制删除(不会弹出提示确认信息)
支持通配符,test 匹配任何以test开头的内容,以此类推
rm -rf /* 删除根目录下的所有内容
which命令 查看命令程序文件存放的位置
which cd
find命令 查找文件
find 起始路径 -name '被查找文件名' 按文件名查找。引号最好带,如果文件名中有特殊字符或空格,会导致命令错误
find 起始路径 -size +|-n [kMG] 按文件大小查找(k是小写kb)。
find / -size -10k ,查找小于10K的文件
find / -size +1G ,查找大于1G的文件
grep命令 global regular expression print,全局正则表达式打印。用于从文件中通过关键字过滤文件行
grep [-n] 关键字 文件路径
[-n] 结果中显示匹配文件行的行号
wc命令 word count,单词统计。统计文件的行数、单词数量等
wc [-c -m -l -w] 文件路径
[-c] bytes,统计字节数
[-m] characters,统计字节数
[-l] lines,统计行数
[-w] words,统计单词数
| 管道符,将左边命令的结果作为右边命令的输入
grep haha test.txt
cat test.txt | grep haha
上面的示例中,cat test.txt 的结果作为grep haha [..]的输入
可以嵌套使用 cat test.txt | grep haha | grep eded
echo 回声、回响,将输入的内容原样输出到终端或标准输出设备。输出指定内容
echo pwd 被``(反引号)包围的内容会被当成命令去执行,该语句将会输出当前的工作路径,而不是打印出pwd字符串
重定向符
·> 覆盖
·>> 追加
echo "haha" > test.txt 将haha覆盖test.txt的内容
tail 尾巴、尾部。查看文件尾部内容,跟踪文件的最新跟新
tail [-f -num] 路径
[-f] follow 跟随,持续跟踪
[-num] 查看尾部多少行,不填默认10行
tail -5 test.txt 查看5行
ctrl+c 结束进程
vi/vim
vim 文件路径
文件不存在时会创建文件
vim是vi的增强版,vim兼容全部的vi功能,建议使用vim
三种工作模式
命令模式:通过键盘快捷键快速的对整个文本惊醒操作
输入模式:编辑文本
底线命令模式:整体文件的控制,以:开始,通常用于文件的保存、退出
打开文件进入命令模式,命令模式通过快捷键进入输入模式,输入模式通过esc退出输入模式进入命令模式,命令模式下通过:进入底线命令模式
命令模式常用快捷键


底线命令模式

linux的用户、权限
su (switch user)切换用户
语法:su - 用户名
-符号表示是否在切换用户后加载环境变量,建议带上
参数:用户名,表示要切换的用户,可以省略,表示切换到root
切换用户后,可以通过exit命令退回上一个用户,或ctrl+d
普通用户切换到其它用户需要输入密码
root用户切换到其他用户,无需密码
sudo命令,临时获取root权限
在linux中不建议长期使用root用户,避免误操作,
可以使用【sudo 其它命令】这种方式,对命令临时授予root权限
并不是有所用户都有sudo权力,需要root用户对其它用户配置sudo认证
配置sudo认证
root用户下,执行visudo,会自动通过vi编辑器打开:/etc/sudoers
在文件最后添加:
eden ALL=(ALL) NOPASSWD:ALL
其中NOPASSWD:ALL表示使用sudo命令,无需输入密码
用户、用户组
linux系统支持多个用户、多个用户组、用户可以加入多个用户组中
linux权限管控单元是用户级别和用户组级别
这玩意时并集的关系,满足任意一个就有权限
用户组
groupadd 用户组名 创建用户组
groupdel 用户组名 删除用户组
用户
useradd [-g -d] 用户名 创建用户
-g 指定用户的组,不指定会创建同名组并自动加入,使用-g需要组已经存在,如果已经存在同名组,必须使用-g
-d 指定用户HOME目录,不指定,HOME目录默认在:/home/用户名
userdel [-r] 用户名 删除用户
-r 删除用户的home目录
id [用户名] 查看用户所属组
不带参数时查看当前用户
usermod -aG 用户组 用户名 将指定用户加入指定用户组
getent passwd 查看系统中的用户
用户名:密码(x):用户ID:组id:描述信息:home目录:使用终端
getent group 查看系统中组
组名称:组认证(x):组id
权限管控信息
chmod 修改权限(只有文件、文件夹所属用户或root用户可以修改)
chmod [-R] 权限 文件或文件夹
-R 对文件夹内的全部内容应用同样的操作
示例
chmod u=rwx,g=rx,o=x hello.txt
chmod -R u=rwx,g=rx,o=x test




chown 修改文件、文件夹的所属用户和用户组(只能root用户执行)
chown [-R] [用户][:][用户组]文件或文件夹
-R 递归,对文件夹内全部内容应用相同规则
示例
chown root hello.txt 将hello.txt所属用户修改为root
choen :root hello.txt 将hello.txt所属用户组修改为root
chown root:eden hello.txt 将hello.txt所属用户修改为root,用户组修改为eden
chown -R root test 将test文件夹的所属用户修改为root