📝 Writing docs.

This commit is contained in:
Zhang Peng 2018-09-27 17:26:46 +08:00
parent f3e89e79c5
commit 32192f6deb
22 changed files with 449 additions and 306 deletions

View File

@ -0,0 +1,153 @@
---
title: 查看 Linux 命令帮助信息
date: 2018/09/26
categories:
- linux
tags:
- linux
- command
---
# 查看 Linux 命令帮助信息
> Linux 中有非常多的命令,想全部背下来是很困难的事。所以,我认为学习 Linux 的第一步,就是了解如何快速检索命令说明。
>
> 关键词:`help`, `whatis`, `info`, `which`, `man`
<!-- TOC depthFrom:2 depthTo:3 -->
- [查看 Linux 命令帮助信息的要点](#查看-linux-命令帮助信息的要点)
- [命令概述](#命令概述)
- [查看 Shell 内部命令 - help](#查看-shell-内部命令---help)
- [查看命令的简要说明 - whatis](#查看命令的简要说明---whatis)
- [查看命令的详细说明 - info](#查看命令的详细说明---info)
- [查找命令的绝对路径 - which](#查找命令的绝对路径---which)
- [查看命令的帮助手册 - man](#查看命令的帮助手册---man)
- [参考资料](#参考资料)
<!-- /TOC -->
## 查看 Linux 命令帮助信息的要点
- 查看 Shell 内部命令的帮助信息 - 使用 `help`
- 查看命令的简要说明 - 使用 `whatis`
- 查看命令的详细说明 - 使用 `info`
- 查看命令的位置 - 使用 `which`
- 查看命令的帮助手册(包含说明、用法等信息) - 使用 `man`
- 只记得部分命令关键字 - 使用 `man -k`
> 注:推荐一些 Linux 命令中文手册:
>
> - [Linux 命令大全](http://man.linuxde.net/)
> - [linux-command](https://github.com/jaywcjlove/linux-command)
## 命令概述
### 查看 Shell 内部命令 - help
> help 命令用于查看 Shell 内部命令的帮助信息。而对于外部命令的帮助信息只能使用 man 或者 info 命令查看。
>
> 参考http://man.linuxde.net/help
### 查看命令的简要说明 - whatis
> whatis 用于查询一个命令执行什么功能。
>
> 参考http://man.linuxde.net/whatis
示例:
```sh
# 查看 man 命令的简要说明
$ whatis man
# 查看以 loca 开拓的命令的简要说明
$ whatis -w "loca*"
```
### 查看命令的详细说明 - info
> info 是 Linux 下 info 格式的帮助指令。
>
> 参考http://man.linuxde.net/info
示例:
```sh
# 查看 man 命令的详细说明
$ info man
```
### 查找命令的绝对路径 - which
> which 命令用于查找并显示给定命令的绝对路径,环境变量 PATH 中保存了查找命令时需要遍历的目录。which 指令会在环境变量$PATH 设置的目录里查找符合条件的文件。也就是说,使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
>
> 参考http://man.linuxde.net/which
示例:
```sh
which pwd # 查找命令的路径
```
说明which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,不同的 PATH 配置内容所找到的命令当然不一样的!
```sh
[root@localhost ~]# which cd
cd: shell built-in command
```
cd 这个常用的命令竟然找不到啊!为什么呢?这是因为 cd 是 bash 内建的命令!但是 which 默认是找 PATH 内所规范的目录,所以当然一定找不到的!
### 查看命令的帮助手册 - man
> man 命令是 Linux 下的帮助指令,通过 man 指令可以查看 Linux 中的指令帮助、配置文件帮助和编程帮助等信息。
>
> 参考http://man.linuxde.net/man
示例:
```sh
$ man date # 查看 date 命令的帮助手册
$ man 3 printf # 查看 printf 命令的帮助手册中的第 3 类
$ man -k keyword # 根据命令中部分关键字来查询命令
```
#### man 要点
在 man 的帮助手册中,可以使用 page up 和 page down 来上下翻页。
man 的帮助手册中,将帮助文档分为了 9 个类别,对于有的关键字可能存在多个类别中, 我们就需要指定特定的类别来查看;(一般我们查询 bash 命令,归类在 1 类中)。
man 页面的分类(常用的是分类 1 和分类 3)
1. 可执行程序或 shell 命令
2. 系统调用(内核提供的函数)
3. 库调用(程序库中的函数)
4. 特殊文件(通常位于 /dev)
5. 文件格式和规范,如 /etc/passwd
6. 游戏
7. 杂项(包括宏包和规范,如 man(7)groff(7))
8. 系统管理命令(通常只针对 root 用户)
9. 内核例程 [非标准]
前面说到使用 whatis 会显示命令所在的具体的文档类别,我们学习如何使用它
```sh
$ whatis printf
printf (1) - format and print data
printf (1p) - write formatted output
printf (3) - formatted output conversion
printf (3p) - print formatted output
printf [builtins](1) - bash built-in commands, see bash(1)
```
我们看到 printf 在分类 1 和分类 3 中都有;分类 1 中的页面是命令操作及可执行文件的帮助;而 3 是常用函数库说明;如果我们想看的是 C 语言中 printf 的用法,可以指定查看分类 3 的帮助:
```sh
$ man 3 printf
```
## 参考资料
https://linuxtools-rst.readthedocs.io/zh_CN/latest/base/01_use_man.html

View File

@ -0,0 +1,259 @@
---
title: Linux 文件目录管理命令
date: 2018/02/27
categories:
- linux
tags:
- linux
- command
---
# Linux 文件目录管理
> 关键词:`cd`, `ls`, `pwd`, `mkdir`, `rmdir`, `tree`, `cp`, `mv`, `rm`
<!-- TOC depthFrom:2 depthTo:3 -->
- [Linux 文件目录管理要点](#linux-文件目录管理要点)
- [Linux 目录结构](#linux-目录结构)
- [Linux 文件属性](#linux-文件属性)
- [命令概述](#命令概述)
- [切换目录 - cd](#切换目录---cd)
- [显示目录信息 - ls](#显示目录信息---ls)
- [显示当前目录的绝对路径 - pwd](#显示当前目录的绝对路径---pwd)
- [创建目录 - mkdir](#创建目录---mkdir)
- [删除空目录 - rmdir](#删除空目录---rmdir)
- [树状显示目录的内容 - tree](#树状显示目录的内容---tree)
- [复制文件或目录 - cp](#复制文件或目录---cp)
- [移动文件或目录 - mv](#移动文件或目录---mv)
- [删除文件或目录 - rm](#删除文件或目录---rm)
<!-- /TOC -->
## Linux 文件目录管理要点
### Linux 目录结构
linux 目录结构是树形结构,其根目录是 `/` 。一张思维导图说明各个目录的作用:
![](http://dunwu.test.upcdn.net/images/linux/linux-folders.png)
### Linux 文件属性
Linux 系统是一种典型的多用户系统不同的用户处于不同的地位拥有不同的权限。为了保护系统的安全性Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在 Linux 中我们可以使用 ll 或者 ls l 命令来显示一个文件的属性以及文件所属的用户和组,如:
```sh
$ ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
```
实例中bin 文件的第一个属性用 `d` 表示。`d` 在 Linux 中代表该文件是一个目录文件。
在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为 `d` 则是目录
- 当为 `-` 则是文件;
- 若是 `l` 则表示为链接文档(link file)
- 若是 `b` 则表示为装置文件里面的可供储存的接口设备(可随机存取装置)
- 若是 `c` 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中以三个为一组且均为『rwx』 的三个参数的组合。其中,`r` 代表可读(read)、`w` 代表可写(write)、`x` 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 `-` 而已。
每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。
![](http://oyz7npk35.bkt.clouddn.com/images/20180920180927171909.png)
从左至右用 0-9 这些数字来表示。
- 第 0 位确定文件类型
- 第 1-3 位确定属主(该文件的拥有者)拥有该文件的权限。
- 第 4-6 位确定属组(拥有者的同组用户)拥有该文件的权限。
- 第 7-9 位确定其他用户拥有该文件的权限。
- 第 1、4、7 位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限。
- 第 2、5、8 位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限。
- 第 3、6、9 位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。
#### Linux 文件属主和属组
```sh
$ ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
```
- 对于文件来说,它都有一个特定的拥有者,也就是对该文件具有所有权的用户。
- 同时,在 Linux 系统中,用户是按组分类的,一个用户属于一个或多个组。
- 文件拥有者以外的用户又可以分为文件拥有者的同组用户和其他用户。
- 因此Linux 系统按文件拥有者、文件拥有者同组用户和其他用户来规定了不同的文件访问权限。
- 在以上实例中bin 文件是一个目录文件,属主和属组都为 root属主有可读、可写、可执行的权限与属主同组的其他用户有可读和可执行的权限其他用户也有可读和可执行的权限。
## 命令概述
### 切换目录 - cd
> cd 命令用来切换工作目录。
>
> 参考http://man.linuxde.net/cd
示例:
```sh
cd # 切换到用户主目录
cd ~ # 切换到用户主目录
cd - # 切换到上一个工作目录
cd .. # 切换到上级目录
cd ../.. # 切换到上两级目录
```
### 显示目录信息 - ls
> ls 命令用来显示目录信息。
>
> 参考http://man.linuxde.net/ls
示例:
```sh
ls # 列出当前目录可见文件
ls -l # 列出当前目录可见文件详细信息
ls -la # 列出所有文件(包括隐藏)的详细信息
ls -lh # 列出详细信息并以可读大小显示文件大小
ls -lt # 按时间列出文件和文件夹详细信息
ls -ltr # 按修改时间列出文件和文件夹详细信息
ls --color=auto # 列出文件并标记颜色分类
```
### 显示当前目录的绝对路径 - pwd
> pwd 命令用来显示当前目录的绝对路径。
>
> 参考http://man.linuxde.net/pwd
### 创建目录 - mkdir
> mkdir 命令用来创建目录。
>
> 参考http://man.linuxde.net/mkdir
示例:
```sh
# 在当前目录中创建 zp 和 zp 的子目录 test
mkdir -p zp/test
# 在当前目录中创建 zp 和 zp 的子目录 test权限设置为文件主可读、写、执行同组用户可读和执行其他用户无权访问
mkdir -p -m 750 zp/test
```
### 删除空目录 - rmdir
> rmdir 命令用来删除空目录。
>
> 参考http://man.linuxde.net/rmdir
示例:
```sh
# 删除子目录 test 和其父目录 zp
rmdir -p zp/test
```
### 树状显示目录的内容 - tree
> tree 命令以树状显示目录的内。
>
> 参考http://man.linuxde.net/tree
示例:
```sh
# 列出目录 /private 第一级文件名
tree /private -L 1
/private/
├── etc
├── tftpboot
├── tmp
└── var
# 忽略文件夹
tree -I node_modules # 忽略当前目录文件夹 node_modules
tree -P node_modules # 列出当前目录文件夹 node_modules 的目录结构
tree -P node_modules -L 2 # 显示目录 node_modules 两层的目录树结构
tree -L 2 > /home/www/tree.txt # 当前目录结果存到 tree.txt 文件中
# 忽略多个文件夹
tree -I 'node_modules|icon|font' -L 2
```
### 复制文件或目录 - cp
> cp 命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp 命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
>
> 参考http://man.linuxde.net/cp
示例:
#### 参数
- 源文件制定源文件列表。默认情况下cp 命令不能复制目录,如果要复制目录,则必须使用`-R`选项;
- 目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
示例:
```sh
# 将文件 file 复制到目录 /usr/men/tmp 下,并改名为 file1
cp file /usr/men/tmp/file1
# 将目录 /usr/men下的所有文件及其子目录复制到目录 /usr/zh 中
cp -r /usr/men /usr/zh
# 强行将 /usr/men下的所有文件复制到目录 /usr/zh 中,无论是否有文件重复
cp -rf /usr/men/* /usr/zh
# 将目录 /usr/men 中的以 m 打头的所有 .c 文件复制到目录 /usr/zh 中
cp -i /usr/men m*.c /usr/zh
```
### 移动文件或目录 - mv
> mv 命令用来对文件或目录重新命名或者将文件从一个目录移到另一个目录中。source 表示源文件或目录target 表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
>
> 参考http://man.linuxde.net/mv
示例:
```sh
mv file1.txt /home/office/ # 移动单个文件
mv file2.txt file3.txt file4.txt /home/office/ # 移动多个文件
mv *.txt /home/office/ # 移动所有 txt 文件
mv dir1/ /home/office/ # 移动目录
mv /usr/men/* . # 将指定目录中的所有文件移到当前目录中
mv file1.txt file2.txt # 重命名文件
mv dir1/ dir2/ # 重命名目录
mv -v *.txt /home/office # 打印移动信息
mv -i file1.txt /home/office # 提示是否覆盖文件
mv -uv *.txt /home/office # 源文件比目标文件新时才执行更新
mv -vn *.txt /home/office # 不要覆盖任何已存在的文件
mv -f *.txt /home/office # 无条件覆盖已经存在的文件
mv -bv *.txt /home/office # 复制时创建备份
```
### 删除文件或目录 - rm
> rm 命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
>
> 参考http://man.linuxde.net/rm
```sh
rm test.txt # 删除文件
rm -i test.txt test2.txt # 交互式删除文件
rm -r * # 删除当前目录下的所有文件和目录
rm -r testdir # 删除目录下的所有文件和目录
rm -rf testdir # 强制删除目录下的所有文件和目录
rm -v testdir # 显示当前删除操作的详情
```

View File

@ -1,32 +1,42 @@
# linux
# Linux
- [linux 系统目录结构](linux系统目录结构.md)
- [linux 文件基本属性](linux文件基本属性.md)
- [linux 监控](linux监控.md)
- [linux 软件](软件/README.md)
- [samba 使用详解](软件/samba使用详解.md)
- [linux 常用命令](commands/README.md)
- [命令行的艺术(转载)](commands/命令行的艺术.md)
- [Linux 帮助命令](commands/Linux帮助命令.md) - 关键词:`help`, `whatis`, `info`, `man`
- [Linux 文件内容查看命令](commands/Linux文件内容查看命令.md) - 关键词:`cat`, `head`, `tail`, `more`, `less`
- [Linux 文件处理命令](commands/Linux文件处理命令.md) - 关键词:`touch`, `ln`, `rename`
- [Linux 文件编辑命令](commands/Linux文件编辑命令.md) - 关键词:`sed`, `vi`
- [Linux 文件权限管理命令](commands/Linux文件权限管理命令.md) - 关键词:`chmod`, `chown`, `stat`, `file`
- [Linux 文件查找和比较命令](commands/Linux文件查找和比较命令.md) - 关键词:`diff`, `locate`/`slocate`, `find`, `which`, `whereis`
- [Linux 文件目录管理命令](commands/Linux文件目录管理命令.md) - 关键词:`cd`, `ls`, `pwd`, `mkdir`, `rmdir`, `tree`, `cp`, `mv`, `rm`
- [Linux 文件压缩与解压命令](commands/Linux文件压缩与解压命令.md) - 关键词:`tar`, `gzip`, `zip`, `unzip`
- [Linux 用户管理命令](commands/Linux用户管理命令.md) - 关键词:`groupadd`, `groupdel`, `groupmod`, `useradd`, `userdel`, `usermod`, `passwd`, `su`, `sudo`
- [Linux 系统管理命令](commands/Linux系统管理命令.md) - 关键词:`reboot`, `exit`, `shutdown`, `date`, `mount`, `umount`
- [Linux 性能管理命令](commands/Linux性能管理命令.md) - 关键词:`df`, `du`, `top`, `free`, `iotop`
- [Linux 进程管理命令](commands/Linux进程管理命令.md) - 关键词:`ps`, `kill`, `systemctl`, `service`, `crontab`
- [Linux 网络应用命令](commands/Linux网络应用命令.md) - 关键词:`curl`, `wget`, `telnet`, `ip`, `hostname`, `ifconfig`, `route`, `ssh`, `ssh-keygen`, `iptables`
- [Linux 网络测试命令](commands/Linux网络测试命令.md) - 关键词:`host`, `nslookup`, `nc`/`netcat`, `dig`, `ping`, `traceroute`, `netstat`
## 内容
- [查看 Linux 命令帮助信息](01.查看Linux命令帮助信息.md) - 关键词:`help`, `whatis`, `info`, `which`, `man`
- [Linux 文件目录管理](02.Linux文件目录管理.md) - 关键词:`cd`, `ls`, `pwd`, `mkdir`, `rmdir`, `tree`, `cp`, `mv`, `rm`
- [Linux 文件内容查看命令](Linux文件内容查看命令.md) - 关键词:`cat`, `head`, `tail`, `more`, `less`
- [Linux 文件处理命令](Linux文件处理命令.md) - 关键词:`touch`, `ln`, `rename`
- [Linux 文件编辑命令](Linux文件编辑命令.md) - 关键词:`sed`, `vi`
- [Linux 文件权限管理命令](Linux文件权限管理命令.md) - 关键词:`chmod`, `chown`, `stat`, `file`
- [Linux 文件查找和比较命令](Linux文件查找和比较命令.md) - 关键词:`diff`, `locate`/`slocate`, `find`, `which`, `whereis`
- [Linux 文件压缩与解压命令](Linux文件压缩与解压命令.md) - 关键词:`tar`, `gzip`, `zip`, `unzip`
- [Linux 用户管理命令](Linux用户管理命令.md) - 关键词:`groupadd`, `groupdel`, `groupmod`, `useradd`, `userdel`, `usermod`, `passwd`, `su`, `sudo`
- [Linux 系统管理命令](Linux系统管理命令.md) - 关键词:`reboot`, `exit`, `shutdown`, `date`, `mount`, `umount`
- [Linux 性能管理命令](Linux性能管理命令.md) - 关键词:`df`, `du`, `top`, `free`, `iotop`
- [Linux 进程管理命令](Linux进程管理命令.md) - 关键词:`ps`, `kill`, `systemctl`, `service`, `crontab`
- [Linux 网络应用命令](Linux网络应用命令.md) - 关键词:`curl`, `wget`, `telnet`, `ip`, `hostname`, `ifconfig`, `route`, `ssh`, `ssh-keygen`, `iptables`
- [Linux 网络测试命令](Linux网络测试命令.md) - 关键词:`host`, `nslookup`, `nc`/`netcat`, `dig`, `ping`, `traceroute`, `netstat`
- [yum 命令](yum.md)
- [linux 监控](linux监控.md)
- [samba 使用详解](samba使用详解.md)
- [命令行的艺术(转载)](命令行的艺术.md)
## 资料
- [awesome-linux](https://github.com/aleksandar-todorovic/awesome-linux)
- [awesome-linux-software](https://github.com/LewisVo/Awesome-Linux-Software)
- [linux-tutorial](https://github.com/judasn/Linux-Tutorial)
- [菜鸟教程-Linux](http://www.runoob.com/linux/linux-tutorial.html)
- [Linux Tools Quick Tutorial](https://linuxtools-rst.readthedocs.io/zh_CN/latest/base/index.html)
### Linux 资源汇总
- [awesome-linux](https://github.com/aleksandar-todorovic/awesome-linux) - Linux 资源汇总
- [awesome-linux-software](https://github.com/LewisVo/Awesome-Linux-Software) - Linux 软件汇总
### Linux 教程
- [鸟哥的私房菜](http://cn.linux.vbird.org/) - 久负盛名的 Linux 教程
- [菜鸟教程-Linux](http://www.runoob.com/linux/linux-tutorial.html) - 入门级 Linux 教程
- [Linux 工具快速教程](hhttps://github.com/me115/linuxtools_rst)
### Linux 帮助手册
- [命令行的艺术](https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md) - Linux 命令 cheat sheet
- [Linux 命令大全](http://man.linuxde.net/) - Linux 命令在线帮助手册
- [linux-command](https://github.com/jaywcjlove/linux-command) - Linux 命令在线帮助手册
- [linux-tutorial](https://github.com/judasn/Linux-Tutorial) - Linux 环境下各种软件安装部署

View File

@ -1,46 +0,0 @@
---
title: Linux 帮助命令
date: 2018/09/26
categories:
- linux
tags:
- linux
- command
---
# Linux 帮助命令
> 关键词:`help`, `whatis`, `info`, `man`
<!-- TOC depthFrom:2 depthTo:2 -->
- [help](#help)
- [whatis](#whatis)
- [info](#info)
- [man](#man)
<!-- /TOC -->
## help
> help 命令用于显示 Shell 内部命令的帮助信息。而对于外部命令的帮助信息只能使用 man 或者 info 命令查看。
>
> 参考http://man.linuxde.net/help
## whatis
> whatis 用于查询一个命令执行什么功能。
>
> 参考http://man.linuxde.net/whatis
## info
> info 是 Linux 下 info 格式的帮助指令。
>
> 参考http://man.linuxde.net/info
## man
> man 命令是 Linux 下的帮助指令,通过 man 指令可以查看 Linux 中的指令帮助、配置文件帮助和编程帮助等信息。
>
> 参考http://man.linuxde.net/man

View File

@ -1,26 +0,0 @@
# linux 命令
## [命令行的艺术(转载)](命令行的艺术.md)
## [文件目录管理](文件目录管理/README.md)
* [linux 常用命令-文件内容查看](文件目录管理/文件内容查看.md)
* [linux 常用命令-文件压缩与解压](文件目录管理/文件压缩与解压.md)
* [linux 常用命令-文件处理](文件目录管理/文件处理.md)
* [linux 常用命令-文件编辑](文件目录管理/文件编辑.md)
* [linux 常用命令-文件权限属性设置](文件目录管理/文件权限属性设置.md)
* [linux 常用命令-文件查找和比较](文件目录管理/文件查找和比较.md)
* [linux 常用命令-目录基本操作](文件目录管理/目录基本操作.md)
## [系统管理](系统管理/README.md)
* [linux 常用命令-系统操作](系统管理/系统操作.md)
* [linux 常用命令-系统设置](系统管理/系统设置.md)
* [linux 常用命令-用户和工作组管理](系统管理/用户和工作组管理.md)
* [linux 常用命令-进程和作业管理](系统管理/进程和作业管理.md)
* [linux 常用命令-系统性能管理](系统管理/系统性能管理.md)
## [网络管理](网络管理/README.md)
* [linux 常用命令-网络应用](Linux网络应用命令.md)

View File

@ -1,190 +0,0 @@
---
title: linux 文件基本属性
date: 2018/02/26
categories:
- linux
tags:
- linux
---
<!-- TOC -->
- [linux 文件基本属性](#linux-%E6%96%87%E4%BB%B6%E5%9F%BA%E6%9C%AC%E5%B1%9E%E6%80%A7)
- [linux 文件基本属性](#linux-%E6%96%87%E4%BB%B6%E5%9F%BA%E6%9C%AC%E5%B1%9E%E6%80%A7)
- [linux 文件属主和属组](#linux-%E6%96%87%E4%BB%B6%E5%B1%9E%E4%B8%BB%E5%92%8C%E5%B1%9E%E7%BB%84)
- [更改文件属性](#%E6%9B%B4%E6%94%B9%E6%96%87%E4%BB%B6%E5%B1%9E%E6%80%A7)
- [chgrp更改文件属组](#chgrp%EF%BC%9A%E6%9B%B4%E6%94%B9%E6%96%87%E4%BB%B6%E5%B1%9E%E7%BB%84)
- [chown更改文件属主也可以同时更改文件属组](#chown%EF%BC%9A%E6%9B%B4%E6%94%B9%E6%96%87%E4%BB%B6%E5%B1%9E%E4%B8%BB%EF%BC%8C%E4%B9%9F%E5%8F%AF%E4%BB%A5%E5%90%8C%E6%97%B6%E6%9B%B4%E6%94%B9%E6%96%87%E4%BB%B6%E5%B1%9E%E7%BB%84)
- [chmod更改文件9个属性](#chmod%EF%BC%9A%E6%9B%B4%E6%94%B9%E6%96%87%E4%BB%B69%E4%B8%AA%E5%B1%9E%E6%80%A7)
- [符号类型改变文件权限](#%E7%AC%A6%E5%8F%B7%E7%B1%BB%E5%9E%8B%E6%94%B9%E5%8F%98%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90)
<!-- /TOC -->
# linux 文件基本属性
## linux 文件基本属性
Linux系统是一种典型的多用户系统不同的用户处于不同的地位拥有不同的权限。为了保护系统的安全性Linux系统对不同的用户访问同一文件包括目录文件的权限做了不同的规定。
在Linux中我们可以使用 ll 或者 ls l 命令来显示一个文件的属性以及文件所属的用户和组,如:
```
[root@www /]# ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
……
```
实例中bin文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为[* d* ]则是目录
- 当为[* -* ]则是文件;
- 若是[* l* ]则表示为链接文档(link file)
- 若是[* b* ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置)
- 若是[* c* ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中以三个为一组且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
每个文件的属性由左边第一部分的10个字符来确定如下图
从左至右用0-9这些数字来表示。
第0位确定文件类型第1-3位确定属主该文件的所有者拥有该文件的权限。
第4-6位确定属组所有者的同组用户拥有该文件的权限第7-9位确定其他用户拥有该文件的权限。
其中第1、4、7位表示读权限如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;
第2、5、8位表示写权限如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限第3、6、9位表示可执行权限如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。
## linux 文件属主和属组
```
[root@www /]# ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot
……
```
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时在Linux系统中用户是按组分类的一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
在以上实例中bin文件是一个目录文件属主和属组都为root属主有可读、可写、可执行的权限与属主同组的其他用户有可读和可执行的权限其他用户也有可读和可执行的权限。
### 更改文件属性
#### chgrp更改文件属组
语法:
```
chgrp [-R] 属组名文件名
```
参数选项
- -R递归更改文件属组就是在更改某个目录文件的属组时如果加上-R的参数那么该目录下的所有文件的属组都会更改。
#### chown更改文件属主也可以同时更改文件属组
语法:
```
chown [R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
```
进入 /root 目录(~将install.log的拥有者改为bin这个账号
```
[root@www ~] cd ~
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
```
将install.log的拥有者与群组改回为root
```
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
```
#### chmod更改文件9个属性
Linux文件属性有两种设置方法一种是数字一种是符号。
Linux文件的基本权限就有九个分别是owner/group/others三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
- r:4
- w:2
- x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= --- = 0+0+0 = 0
所以等一下我们设定权限的变更时该文件的权限数字就是770啦变更权限的指令chmod的语法是这样的
```
chmod [-R] xyz 文件或目录
```
选项与参数:
- xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
- -R : 进行递归(recursive)的持续变更,亦即连同此目录下的所有文件都会变更
举例来说,如果要将.bashrc这个文件所有的权限都设定启用那么命令如下
```
[root@www ~]# ls -al .bashrc
-rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
```
那如果要将权限变成 *-rwxr-xr--* 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754。
#### 符号类型改变文件权限
还有一个改变权限的方法呦!从之前的介绍中我们可以发现,基本上就九个权限分别是(1)user (2)group (3)others三种身份啦 那么我们就可以藉由u, g, o来代表三种身份的权限
此外, a 则代表 all 亦即全部的身份那么读写的权限就可以写成r, w, x也就是可以使用底下的方式来看
| chmod | ugoa | +(加入)-(除去)=(设定) | rwx | 文件或目录 |
| ----- | ---- | --------------- | ---- | ----- |
| | | | | |
如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 *chmod u=rwx,g=rx,o=r 文件名* 来设定:
```
[root@www ~]# ls -al .bashrc
-rwxr-xr-x 1 root root 395 Jul 4 11:45 .bashrc
[root@www ~]# chmod a+w .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
```
而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:
```
[root@www ~]# chmod a-x .bashrc
[root@www ~]# ls -al .bashrc
-rw-rw-rw- 1 root root 395 Jul 4 11:45 .bashrc
```

View File

@ -1,14 +0,0 @@
---
title: linux 系统目录结构
date: 2017/12/15
categories:
- linux
tags:
- linux
---
# linux 系统目录结构
linux 目录结构是树形结构,其根目录是 `/` 。一张思维导图说明各个目录的作用:
![linux目录.png](https://raw.githubusercontent.com/dunwu/linux/master/docs/linux/images/linux-folders.png)

View File

@ -1,3 +0,0 @@
# linux 软件
## [samba使用详解](samba使用详解.md)