C语言编程基础-02Linux系统进程与重定向

链接文件

链接文件可以用来代表另外一个文件 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值