- 基础命令
- 基础目录
- 文件命令
- 文件描述符
- 管道
基础命令
// 日时 date date +%Y/%m/%d date +%H:%M // 日历 cal cal 2019 cal 07 2019 // 计算器 bc env echo $PATH
基础目录
/根目录
/usr软件存放处
/etc配置文件
/var系统运行相关,其中/var/mail用户邮箱,/var/run程序相关,/var/lock程序相关,/var/spool/news新闻组
文件命令
先了解一下文件属性,执行:
ls -al
Linux共9种权限,分别是拥有者(owner),所在组(group),其他人(others)三种身份,加上读(r),写(w),执行(x)三种权限,叉乘就是9种权限,见上面第一列。
第一列文件权限有十个字符。
第1个字符:文件类型,d是目录,–是文件,l是链接文件,b可供存储的周报设备,c串行接口设备,如鼠标键盘等。
第234个字符:这三个字符为一组,这三个字符的位置顺序不会变化,表示文件拥有者的权限。r是可读,w是可写,x是可执行,如果哪个没有权限就为–。对目录来说,x可执行表示有进入该目录的权限。
第567个字符:表示文件所属用户组的权限,内容同上。
第8910个字符:表示其他人的权限,内容同上。
例如drwxr-xr-x:目录,拥有者可读可写可执行,用户组和其他人都是可读可执行,但不可写。
另外各权限的数字为r:4,w:2,x:1。例如-rwxrwx—,表示该文件的owner=rwx=4+2+1=7,group=rwx=4+2+1=7,other=0,所以改文件的权限是【770】
权限修改命令:
chown [-R] group file // 修改文件拥有者权限,可选 -R 表示递归修改,即目录里所有子文件一起修改 chgrp [-R] owner[:group] file // 修改文件所属用户组权限,可选 -R 表示递归修改,即目录里所有子文件一起修改 chmod [-R] xyz file // 修改文件权限,例如 chmod -R 777 mydir
文件描述符
Linux中一切皆文件,包括标准输入设备(键盘)和标准输出设备(显示器)在内的所有计算机硬件都是文件。
为了表示和区分已经打开的文件,Linux会给每个文件分配一个整数ID,被称为文件描述符(File Descriptor)。
Linux进程启动后,会在内核空间中创建一个PCB控制块,PCB内部有一个文件描述符表(File descriptor table),记录着当前进程所有可用的文件描述符,也即当前进程所有打开的文件。
文件描述符 | 文件名 | 类型 | 硬件 |
---|---|---|---|
0 | stdin | 标准输入文件 | 键盘 |
1 | stdout | 标准输出文件 | 显示器 |
2 | stderr | 标准错误输出文件 | 显示器 |
stdin、stdout、stderr 默认都是打开的,在shell命令重定向的过程中,0、1、2 这三个文件描述符可以直接使用。
管道
将两个或者多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,以这种方式连接的两个或者多个命令就形成了管道(pipe)。
Linux管道使用竖线|连接多个命令,这被称为管道符。
command1 | command2 command1 | command2 [ | commandN... ]
当在两个命令之间设置管道时,管道符|左边命令的输出就变成了右边命令的输入。只要第一个命令向标准输出写入,而第二个命令是从标准输入读取,那么这两个命令就可以形成一个管道。
command1必须有正确输出,而command2必须可以处理command2的输出结果。command2只能处理command1的正确输出结果,不能处理command1的错误信息。