链接文件
链接文件可以用来代表另外一个文件 ln
命令可以创建链接文件, 命令使用方法和cp
命令一样;
- 直接用ln命令创建出来的链接文件叫硬链接文件,可以独立于原文件而存在;相当于对某一块存储空间又取了一个名字;
- 使用
-s
选项可以创建软链接文件,软链接不能独立于原文件而存在,源文件消失则软链接文件变成无效连接文件;
如果用cp
命令复制一个链接文件时没有指定-d
选项,则会复制一份文件的实体; 在计算机中文件名和文件内容不是一回事,只是文件系统帮我们做了一个映射; 硬连接文件只是多了一个文件名,文件内容并没有增加一份; 软连接文件是多了一个新文件,文件内容记录了原始文件的位置,相当于快捷方式; cp
命令则是多了一个文件名和一份文件内容;
软连接和硬连接区别
- 硬连接只是取了一个别名,还指向同一块数据和inode,其他什么都没做,因此删除原文件后硬链接仍有效,直到删除原文件和所有的硬链接文件存储区域才会失效;
- 软连接是增加了一个文件,有自己的inode和数据块;记录某个实体文件的信息,因此删除原文件后软连接变成无效连接文件;
ln
使用帮助
ln [OPTION]... [-T] TARGET LINK_NAME (1st form) ln [OPTION]... TARGET (2nd form) ln [OPTION]... TARGET... DIRECTORY (3rd form) ln [OPTION]... -t DIRECTORY TARGET... (4th form) In the 1st form, create a link to TARGET with the name LINK_NAME. In the 2nd form, create a link to TARGET in the current directory. In the 3rd and 4th forms, create links to each TARGET in DIRECTORY. -f //移除已存在的目标文件 -i //如果目标文件存在,则要求用户确认
ln -s /home/abc/def/jhi/tools /home/abc/tools
/home/abc/def/jhi/tools
可以是一个文件,也可以是一个目录 如果tools是一个目录,连接文件仍然是一个文件,使用rm tools
删除连接文件,不能使用rm tools/
删除;
文件属性
由文件类型和代表文件权限的英文字母构成; 决定了文件可以怎么使用; 文件属性分成3组,每一组3个字母,针对一种特定的用户;
三种用户分别是 文件属主user 属组group 其他人others
; 每组属性包含3个字母,第一个字母表示是否可读,第二个字母表示是否可写,第三个字母表示是否可执行;
- 字母
r
表示可以读, - 字母
w
表示可以写, - 字母
x
表示可以执行, - 字母
-
表示没有对应权限;
每一组的三个字母可以使用
0~7
之间到八进制数表示(r对应4,w对应2,x对应1);
相关命令
-
ls -l
命令可以查看文件属性; -
chmod
命令可以修改文件的属性,执行chmod
需要一定的权限;chmod mod file
chmod mod dir -R
- mod是可选的
u g o a
标识加上可选的符号+ - =
以及权限;权限可以使8进制表示的数值,也可以是r w x
表示;
u
代表user,g
代表group,o
代表others,a
代表all;+
表示增加某权限,-
代表去除某权限,=
直接用8进制赋值;
-
chown
命令可以修改文件的属组和属主;chown user[:group] file
chown user[:group] dir -R
进程基本概念
在早期面向进程设计的计算机结构中,进程是程序的基本执行实体; 在当代面向线程设计的计算机结构中,进程是线程的容器.
- Shell脚本是含多个可执行命令的文件,可以用来自动化的完成各种繁琐的工作;
- 脚本语言不同于编译程序的语言,脚本不需要编译即可执行,在执行时由特定的解释器逐行解释执行,Shell脚本一行出错并不会影响后面的语句执行;
- C/C++等属于编译型语言,需要编译后才可以执行,一行出错会影响整个程序的执行;
- 程序是计算机中的一个文件,程序的内容不会随着时间而改变;
- 进程是根据程序创建出来的一段数据,进程会随着时间变化,用户真正使用的是进程而不是程序;
操作系统为每个进程分配了一个整数作为进程ID即PID,不同进程的ID不同;
相关命令
ps
命令可以查看当前终端窗口中的进程;-ef
选项或-aux
选项可以查看系统中的所有进程-ef
选项兼容Unix
系统;
kill
命令可以给进程发信号;kill -l
可以查看所有的信号列表kill -signal PID
给进程号为PID
的进程发送signal
信号;-1
选项可以先挂起当前进程,结束子进程,再返回关闭当前进程并处理善后;-9
选项可以强制结束一个进程;Ctrl+c
可以把当前终端窗口的前台进程结束掉(实际是发送了信号2);
重定向
输入重定向可以让程序从文件中得到需要的信息,输入重定向使用 <
实现; 输出重定向可以让本来输出到终端标准输出窗口的内容输出到文件,在命令的最后使用>
号可以实现输出重定向的效果;
- 使用
>
实现输出重定向会把文件中原有内容覆盖掉; - 使用
>>
实现输出重定向会把新内容追加到原有文件的后面;
管道
linux系统中可以使用管道把多个命令串联成一条直线,前一个命令的输出作为后一个命令的输入;管道使用一个|
符号使用;
ls | grep *.txt
ls
命令的输出结果直接作为grep
命令的输入
分离输出命令tee
tee [OPTION] [FILE]
Copy standard input to each FILE, and also to standard output;
tee
命令后面可以跟多个文件名-a
//追加到文件末尾-i
//忽略中断信号
ls -a |tee -a list.txt
系统会执行ls -a
命令,把结果显示在屏幕上,同时以追加方式输出到文件list.txt
中
通配符
在命令中使用通配符编写路径可以用一个路径代表多个实际路径;
?
是一个通配符,可以用来代表单个
任意字符
ls test.?
可以显示test.c
,test.h
*
是一个通配符,可以用来代表任意多个
任意字符
ls test.*
可以显示test.c
,test.h
,test.cpp
,test.txt
等