是什么?
FHS本质一套规定Linux目录结构,软件建议安装位置的标准为什么? 使用Linux来开发产品或者发布软件的公司、个人太多,如果每家公司或者个人都按照自己的意愿来配置文件或者软件的存放位置,这无疑是一场灾难。我们可不想学完我们的Linux之后,去公司发现看不懂别人的目录结构,更别谈开发了。
那怎么办?
重定项目解释:重定向是什么呢?
输出/追加重定向:本来应该显示到显示器(通常)文件的内容,写入到文件当中。
输入重定向:或者本来应该从显示器(通常)文件读取数据,转化成从指定文件读取数据
(1)输出重定向:写入到指定的文件 、 覆盖写入
cat 🤬 > | 写入到指定的文件 、 覆盖写入 |
(2)追加重定向:会在文件结尾,追加指定的内容。
cat 🤬 >> | 会在文件结尾,追加指定的内容 |
(3)输入重定向:将文件的内容读取出来。
cat 🤬 | 会在文件结尾,追加指定的内容 |
(4)查找内容,将信息写入文件。
命令是可以产生数据的,如果我们还要多输出数据进行加工,甚至想多次加工,就需要使用管道
举例:
🤬 last | 打印出以时间为单位,登录服务器用户的登录信息。 |
(1)拿出数据的前5行
🤬 last | head -5 | 以行为单位打印出数据的前5行。 |
备注:管道 | 在生活中(传输“资源”的数据) 管道就是用来进行数据传导的。
我们利用管道做几个练习:
🤬 grep | 按照行为单位进行关键字过滤。 |
🤬 wc -l | 统计行数。 |
在linux环境中、命令、程序、工具统称为可执行程序!
在工程中可以直接执行ls,我们用c语言写一段代码,不可以被直接执行必须要加上./才可以被执行。
那可以说同样写了工具为啥是这样子的呢?
一般命令的执行过程分类两个阶段:1、找到 2、执行
🤧那我们能不能将我们制作的程序也让系统可以自己找到呢?在linux系统中,可执行程序的搜索路径是保存在一个“全局”的变量中 -> PATH 给系统提供命令的搜索路径,是
环境变量的一种!
🤬 echo $PATH | 查看$PATH的搜索路径。 |
🤬 which | 查看命令的路径。 |
PATH保存了多条路径!路径之间用“:”隔开。
PATH从左向右依次的进行程序搜索,找不到就继续在吓一跳路径中寻找,找到了就停下来,找不到报出 Cammand not found!
接下来我们将我自己制作的程序放到/usr/bin路径底下:
这样直接就可以执行了,我们在which查看命令的位置即可。
当然我们是不推荐将自己的命令添加到别人的目录下,我们可以将自己的目录添加到环境变量里面去:操作步骤:如下:
🤬export PATH=$PATH: |
🤬env :可以查看更多的命令 |
linux下有两种用户:超级用户(root)、普通用户
超级用户:可以在linux系统下做任何事情,且不受限制。
普通用户:在linux系统下做有限的事情。
超级用户的命令提示符号是:> "#" 普通用户的命令提示符号是:>"$"
su/su -:都是普通->root,su使用当前路径,su -跳转到root的家目录(/root)
🤬普通( exit / ctrl + d ) ( su / su - )root |
权限
权限:一件事情是否允许你“做” -> 人
文件权限:
1、属性:r,w,x。
2、人:文件的拥有者、文件的所属组、文件的other。
文件访问人的分类:
文件类型
|
|
|
|
|
|
比如:我们对第一个文件尽心给描述:
拥有者:可读、可写、可执行 | 所属组:可读、可写、不可执行 | other:可读、不可写、可执行
🤬 chmod | 该指令可以进行修改权限。(多选项 用逗号”,“隔开) |
比如:将一个文件的权限都去掉:
比如:将一个文件的所有权限附加上:
多组指令进行选择:
实在我们经常见到的 Permission denied 是代表我们没有权限。
就是用8进制表现形式:
权限符号(读写执行) | 八进制 | 二进制 |
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 5 | 111 |
wx | 3 | 011 |
rwx | 7 | 111 |
--- | 0 | 000 |
比如我们去掉一个文件的所有的权限:
比如我们添加一个文件的所有的权限:
🤬 chown | 更改拥有者权限 |
🤬 chgrp | 更改所属组权限 |
一次性将拥有者和所属组全部修改:
如果想进入目录的形况下:必须要有 w 权限!
🤬 passwd | 如果不加任何东西默认修改当前用户密码: 需要输入3次 第一次:当前密码 后两次:新密码 |
🤬 sudo adduser | 新添加一个用户 |
🤬userdel -r | 删除一个用户。 |