Linux系统编程
shell脚本
基本命令
gcc和gdb
⽂件IO操作与⽂件系统原理
进程
进程通信
shell语法
shell变量
shell数组
shell运算
流程控制
shell函数
shell中的特殊变量
正则表达式
shell对⽂件的操作
shell的awk
shell案例
⽆名管道
有名管道
共享存储映射
信号
信号四要素
信号产⽣函数
进程可以直接读写内存,不需要任何数据拷⻉
存储映射函数
kill函数
raise函数
abort函数
alarm函数(闹钟)
setitimer定时器
mmap函数 一个⽂件或者其他对象映射进内存
定时与进程的状态⽆关。
1.编号2.名称3.事件4.默认处理动作
创建有名管道
命令:mkfifo管道名字
管道也叫⽆名管道。
pipe函数
管道读写特点
gcc⼯作流程
静态链接和动态链接
静态库和动态库的制作和使⽤
GDB调试器
Makefile
sed命令
语法
makefile带来的好处是“⾃动化编译”,只需要一个make命
令,整个⼯程完全⾃动编译,极⼤的提⾼了软件开发的效率。
make是一个命令⼯具,是一个解释mak e中指令的命令⼯具。
make主要解决两个问题
Makefile⽂件命名规则
Makefile语法规则
Makefile⼯作原理
若想⽣成⽬标,检查规则中的依赖条件,若不存在,则寻找是否
有规则⽤来⽣成该依赖⽂件
检查规则中的⽬标是否需要更新,必须先检查它d饿所有依赖,依
赖中有任何一个被更新,则⽬标必须更新
一条规则
Makefile基本规则三要素
make
Makefile中的变量
Makefile中的函数
Makefile中的伪⽬标
Makefile⽰例
makefile和Makefile都可以,推荐使⽤Makefile
make⼯具安装:sudoaptinstallmake
变量分类
定义变量
读取变量内容
取消变量unset
定义全局变量export
读取变量内容$,⽅法是$变量名
awk介绍
awk基本⽤法
awk⾼级⽤法
awk技巧
静态链接
动态链接
系统默认采⽤动态链接的⽅式进⾏编译程序,若采⽤静态编译加
⼊-static参数。
链接器在链接的时候仅仅需要建⽴与所需库函数之间的链接关
系,在程序运⾏时所在将所需资源调⼊可执⾏程序。优点是:在
需要的时候才会调⼊对应的资源函数,简化程序的升级,有较⼩
的程序体积,实现进程之间的资源共享,避免资源重复拷⻉。缺
点:依赖动态库,不能独⽴运⾏,动态库依赖版本问题严重。
由链接器在链接的时候将库的内容加⼊到可执⾏的程序中。优点
是:对运⾏环境的依赖性⼩,兼容性好。缺点是:⽣层的程序⽐
较⼤,需要更多的系统资源,在装⼊内存时会消耗更多的时间。
库函数有了更新,必须重新编译应⽤程序。
awk除了定义变量以外,还可以定义数组,进⾏运算
定义数组
运算
流程控制
awk对字段列的提取
awk对⾏的提取
通过⾏号
通过正则匹配
提取⽂本中的一列数据并打印输出
awk'{print$0}'⽂件,打印整个⽂本
awk环境变量
1.本地变量
2.全局变量
3.⽤⼾⾃定义变量
定义变量:变量名=值,在shell编程中的变量名和等号之间不能
有空格。
所有⽤⼾都可以使⽤,保存在/etc/profile、/e tc/bashrc⽂件中
⽤⼾私有变量,只有本⽤⼾可以使⽤,保存在家⽬录下
的.bash_profile、.bashrc中
clean⽤途:清除编译⽣成的中间.o⽂件和最终⽬标⽂件。make
clean如果当前⽬录下有同名clean⽂件,则不执⾏clean对应的
命令。解决⽅案:伪⽬标声明.PHONY:clean声明伪⽬标之后,
makefile将不会判断⽬标是否存在活⽬标是否需要更新。
clean命令中的特殊符号:“-”命令出错,make也会执⾏后续
的命令,如-rmmain.o。“@”不显⽰命令本⾝,只显⽰结果。
makefile写法
1.wildcard查找指定⽬录下的指定类型的⽂件,src=$(wildcard
*.c)找到当前⽬录下所有后缀为.c的⽂件,赋值给src
2.patsubst匹配替换,obj=$(patsubst%.c,%.o,$(src)),把src
变量⾥所有的后缀为.c的⽂件替换成.o
makefile写法
在Makefile中的变量有点类似于C语言的宏定义,使⽤该变量相
当于内容替换,使⽤变量可以使Makefile易于维护,修改内容变
得简单。
⾃定义变量⽅法:变量名=变量值
引⽤变量:$(变量名)或${变量名}
makefile的变量名:makefil e变量名可以以数字开头,变量是⼤
⼩写敏感的,变量一般都在makefile的头部定义,变量⼏乎可在
makefile的任何地⽅使⽤。
makefile中的删除命令
三个⾃动变量
模式匹配
make是一个命令⼯具,它解释Makefil e中的指令。
make命令格式:mak e[-ffile][options][ targe ts]
[-ffile]:make默认在⼯作⽬录中寻找名为GNUmakefile,
makefile,Makefile的⽂件作为输⼊⽂件。-f可以指定以上名字
以外的⽂件作为makefile输⼊⽂件。
[options]:-v显⽰make⼯具的版本信息,-w在处理makefile之
前和之后显⽰⼯作路径,-Cdir读取makefil e之前改变⼯作路径
⾄dir⽬录,-n只打印要执⾏的命令但不执⾏,-s执⾏但是不显⽰
要执⾏的命令。
[targets]:若使⽤make命令时没有指定⽬标,则mak e⼯具默
认会实现makefile⽂件内的第一个⽬标,然后退出。若指定了
make⼯具要实现的⽬标,⽬标可以是一个或多个(多个⽬标空
格隔开)
模式匹配中所有的.o都以来对应的.c,将所有的.c⽣成对应的.o
makefile写法
$@表⽰⽬标⽂件,$^表⽰所有的依赖⽂件,{bodyContent}lt;
表⽰第一个依赖⽂件
1.⽬标:通常是要产⽣的⽂件名称,⽬标可以是可执⾏⽂件或其
他obj⽂件,也可以是一个动作的名称。
2.依赖⽂件:⽤来输⼊从⽽产⽣⽬标的⽂件,一个⽬标通常有⼏
个依赖⽂件(可以没有)
3.命令:make执⾏的动作,一个规则可以含⼏个命令(可以没
有),有多个命令时,每个命令占一⾏。
⼤量代码维护
减少重复编译时间
在改动其中一个⽂件的时候,能判断那些⽂件被修改过,可以只
对该⽂件进⾏重新编译,然后重新链接所有⽬标⽂件,节省编译
时间。
⼤项⽬源码⽐较多,⼿⼯维护、编译时间⻓⽽且编译命令复杂,
难以记忆维护。把代码维护命令以及编译命令写在makefile⽂件
中,然后再⽤make⼯具解析⽂件⾃动执⾏相应命令,可以实现
代码合理编译。
⾏编辑器
GNU⼯具集中的调式器是GDB,该程序是一个交互式⼯具,⼯作
在字符模式。
⽣成调试信息
启动GDB
显⽰源码
断点操作
list命令打印程序源代码。默认打印10⾏。
设置一次显⽰源代码的⾏数
启动gdb:gdbprogram,program是执⾏⽂件
设置运⾏参数:setagrs可指定运⾏时参数。showagrs命令可
以查看设置好的运⾏参数。
启动程序:run程序开始执⾏,如果有断点,停在第一个断点
处,start程序向下执⾏一⾏。
一般来说GDB主要的调试的是C/C++程序,要调试C/C++ 程序,
⾸先在编译时,我们必须要把调试信息加到可执⾏⽂件中。使⽤
编译器的-g参数可以做到。
静态库制作和使⽤
动态库的制作和使⽤
awk是一种可以处理数据、产⽣格式化报表的语言。awk的⼯作
⽅式是读取数据,将每⾏数据视为一条记录,每条记录以字段分
隔符分成若⼲字段,然后输出各字段的值。
共享库在程序编译时并不会被链接到⽬标代码中,⽽是在程序运
⾏中才是被载⼊。不同的应⽤程序如果调⽤相同的库,那么内存
⾥⾯只需要一份该共享库的实例,规避了空间的浪费问题。
动态库在程序运⾏是时才被载⼊,也解决;静态库对程序的更
新、部署和发布会带来⿇烦。⽤⼾只需要更新动态库即可,增量
更新。
按照习惯,一般以“.so”作为⽂件后缀名。共享库的命名一般分
为三个部分:前缀lib,库名称⾃⼰定义,后缀.so。动态库的名字
应该是:libxxx.so。
动态库在内存中只存在一份拷⻉,避免了静态库浪费空间的问
题。
动态库的制作
动态库的使⽤
和静态库⽂件使⽤⽅法一样,但是需要设置库⽂件的路径
-fPIC创建与地址⽆关的编译程序,是为了能够在多个应⽤程序之
间共享。
lld可以查看可执⾏⽂件的依赖的动态库
⽤⼾⾃定义,⽐如脚本中的变量
gcc编译器介绍
gcc是GNU开发的编程语言编译器。
编译命令格式:
gcc[options]file
g++[options]file
命令、选项和源⽂件之间使⽤空格分隔,一⾏命令中可以有零
个、一个或多个选项,⽂件名可以包含⽂件的绝对路径,也可也
是相对路径,如果命令中不包含输出可执⾏⽂件的⽂件名,可执
⾏⽂件的⽂件名会⾃动⽣成一个默认名,Linux平台是a.out
特殊字符
POSIX字符 特殊字符
匹配符,匹配字符串
限定符,对前⾯的字符或者字符串做限定说明
静态库可以认为是一些⽬标代码的集合,是可执⾏程序在运⾏之
前已经加⼊到可执⾏代码中,成为执⾏程序的一部分。一般
以“.a”作为⽂件后缀名。
静态库的命名:libxxx.a,前缀是lib,库名称⾃⼰定义,后缀
是.a。
静态库的创建
静态库的使⽤
脚本的名字$0
if判断语句
for语法
循环控制语句
while
until
case
数学⽐较运算
⽂件⽐较与检查
-eq等于,-gt⼤于,-lt⼩于,-ge⼤于或等于,-le⼩于或等于,ne不等
于
单if语句
if-then-else
if-then-elif
if⾼级应⽤
条件符号使⽤双圆括号,可以在条件中植⼊数学表达式
使⽤⽅括号,可以在条件中使⽤通配符
数组语法:数组名称=(元素1元素2元素3...)
数组读出:${数组名称[索引]},索引默认是元素在数组中的排队编
号,默认第一个从0开始。
查看声明过的数组:declare-a
关联数组
-d检查⽂件是否存在且为⽬录,-e 检查⽂件是否存在,-f检查⽂
件是否存在且为⽂件,-r检查⽂件是否存在且可读,-s检查⽂件
是否存在且可写,-w检查⽂件是否存在且可写,-x检查⽂件是否
存在且可执⾏,-o检查⽂件是否存在且被当前⽤⼾拥有,-G检查
⽂件是否存在且默认组为当前⽤⼾组
赋值
一次性赋一个值:数组名[索引]=变量值,
ass_array[index1]=pear
一次赋多个值
shell脚本是将完成一个任务的所有命令按照先后顺序写在⽂本⽂
件中,然后给予执⾏权限。
⽂件最好以为.sh扩展名
shell脚本开头必须指定脚本运⾏环境,以#!这个特殊符号组成。
如:#!/bin/bash指定该脚本是运⾏解析由/bin /bash来完成。
shell中注释使⽤#
运⾏脚本给脚本设置执⾏权限,解释器直接运⾏,不需要给权限
shell中的符号
shell格式化输出
shell基本输⼊
查看进程的状态
进程相关命令
进程中的相关函数
孤⼉进程
僵⼫进程
进程替换
read命令
exec函数族的作⽤是根据指定的⽂件名或⽬录名找到可执⾏⽂
件,并⽤它来取代调⽤进程的内容。进程调⽤一种exec函数时,
该进程完全由新程序替换,⽽新程序从main函数开始执⾏。exec
不创建新进程,前后的进程ID未改变。exec只是⽤另外一个新程
序替换了当前进程的正⽂、数据段、堆和栈(进程替换)
默认接受键盘的输⼊,回⻋符代表输⼊结束
命令选项
-p打印信息
-t限定时间
-s不回显
-n输⼊字符个数
进程终⽌,⽗进程尚未回收,⼦进程残留资源(PCB)存放在内
核中,变成僵⼫进程(Zombie)。如果进程不调⽤wait或
waitpid的话,那么保留的那段信息将不会被释放,其进程号就会
一直被占⽤。
进程号PID
getpid函数,获取本进程号
getppid函数,获取当前进程的⽗进程号
fork进程的创建
wait函数
gdb调试多进程
ps查看进程详细状况
top动态显⽰运⾏中的进程
kill指定进程号的进程
killall
使⽤gdb调试的时候,gdb只能跟踪一个进程。可以在fork函数
调⽤之前,通过设置gdb调试⼯具跟踪⽗进程或跟踪⼦进程。默
认跟踪⽗进程。
注意:一定要在fork函数调⽤之前设置才有效
通过进程名字杀死进程
有些进程不能直接杀死,这个时候需要一个参数-9,强制结束
top命令⽤来动态的显⽰运⾏中的进程。在top命令能够运⾏后,
在指定的时间间隔更新显⽰信息。可以在使⽤top命令时加上-d
来指定显⽰信息更新的时间间隔。
调⽤wait函数的进程会挂起(阻塞),直到它的一个⼦进程退出
或收到一个不能被忽视的信号时才会被唤醒。
wait的主要功能为回收已经结束⼦进程的资源。
如果status的值不是NULL,wait就会把进程退出时的状态存⼊其
中,返回一个整数值,指出⼦进程是正常退出还是⾮正常结束。
⽤于从一个已存在的进程中创建一个新进程,新进程被称为⼦进
程,原进程被成为⽗进程。
创建进程失败的原因:1.当前的系统进程数达到上限。2.系统内存
不⾜
linux的fork使⽤是通过写时拷⻉实现。写时拷⻉是一种可以推迟
甚⾄避免拷⻉数据的技术。⽗⼦进程共享同一个地址空间,只有
在写⼊的时候,才会复制地址空间,从⽽各个进⾏拥有各⾃的地
址空间。
⽗进程运⾏结束,但⼦进程还在运⾏(未运⾏结束)的⼦进程就
被成为孤⼉进程。
标识进程的一个⾮负整型数
⽗进程号PPID
组进程号PGID
psaux
进程组是一个或多个进程的集合。进程组可以接受同一端的各种
信号,关联的进程有一个进程组号PGID。
任何进程(除了init进程)都是由另外一个进程创建,该进程被称
为创建进程的⽗进程,对应的进程号被称为⽗进程号PPID
echo命令
~家⽬录;!执⾏历史;$变量中取内容符;&后台执⾏;*shell中
的通配符,匹配所有;‘:’是shell中一⾏执⾏多个命令,命令之
间⽤分号分割;‘|’管道符,上一个命令的输出作为一个命令的
输⼊;‘`’反号,命令中执⾏命令;""和''⽤于把脚本中的字符
串括起来,单引号不解释变量。
一个程序需要有0个或者以上输⼊,一个或更多的输出
将内容输出到默认显⽰设备
echo命令功能是在显⽰器上显⽰一段⽂字,一般起到一个提⽰的
作⽤。
语法:echo[-ne][字符串],echo会将输⼊的字符串送往标准输
出,输出的字符串间以空⽩字符隔开,并在最后加上换⾏号。
命令选项
-e若字符串出现以下字符特别加以处理
-n不要在最后⾃动换⾏
\a发出警告声⾳,删除前一个字符等等
系统调⽤
库函数调⽤
C库中的IO函数流程
错误处理函数errno
⽂件操作
操纵系统提供给⽤⼾程序调⽤的一组“特殊”接⼝。
errno是记录系统的最后一次错误代码。代码是一个int型的值,
在errno.h中定义。查看错误代码errno是调试程序的一个重要⽅
法。一般会将errno全局变量赋值一个整数值,不同的值代表不
同的含义,可以通过该值推测出错的原因。
打印错误码是errno,把errno的数字转换成相应的⽂字
strerror(errno)),打印错误原因字符串perror("string")
虚拟地址空间
⽂件描述符
open函数
clos e函数
wr ite函数
read函数
lseek函数
stat函数(重点)
⽂件描述符复制
dup
dup2
dup,dup2通过原来的⽂件描述符复制出一个新的⽂件描述符,原
来的⽂件描述符和新的⽂件描述符都指向同一个⽂件
fcnlt
打开⽂件或新建⽂件时,系统会返回一个⽂件描述符,⽂件描述
符⽤来指定已经打开的⽂件是已打开⽂件的标号,⽂件描述符是
⾮负整数,是⽂件的标识,操作这个⽂件描述符,相当于操作这
个描述符指定的⽂件。
最⼤打开⽂件个数
linux进程最多只能打开1024个⽂件,⽂件不⽤时候close关闭
函数库实现的
Bash解析器常⽤快捷键
Linux系统所⻅皆是⽂件
内建命令和外部命令
绝对路径和相对路径
Linux命令格式
查看命令帮助help
帮助⽂档查看⽅法man
⽬录相关命令
⽂件类型
⽂件相关命令
⽂件查看命令
du和df
查找相关命令
管道(|)
压缩包管理
⽂件权限
软件安装和卸载
重定向
ln
vim
在bash下敲命令时,Tab键可以补⻬已经敲了的一部分⽂件路径
和⽬录名,显⽰当前⽬录下的所有⽬录。
清屏:clear或者ctrl+L
中断进程:ctrl+c
遍历输⼊的历史命令:从当前位置向上遍历(ctrl+p),从当前位置
向下遍历(ctrl+n)。
光标左移动ctrl+b,右移动ctrl+f,移动到头部ctr+a,移动到尾部
ctrl+e
删除光标前边的字符:ctr+h,删除光标后边的字符:ctr+d,删除
光标前所有内容:ctrl+u,删除光标后所有内容:ctrl +k
Alt+F2图形打开终端
终端相关快捷键
vim⼯作模式
vim基本操作
命令模式下的操作
末⾏模式的操作 保存退出
打开⽂件:vimfilena me,打开或者新建⽂件,并将光标置于第
一⾏⾏⾸,如果⽂件不存在,则会新建⽂件。
保存⽂件:一定要退出插⼊模式(ESC进⼊命令模式),然后
shift+z+z可以保存退出当前⽂件。
命令模式
编辑模式
末⾏模式
末⾏模式下,⽤⼾可以对⽂件进⾏一些附加处理。尽管命令模式
下的命令可以完成很多功能,但要执⾏一些如字符串查找、替
换、显⽰⾏号等操作还是必须要进⼊末⾏模式。在命令模式下,
输⼊':'可以进⼊末⾏模式。
在命令模式下输⼊插⼊命令i,附加命令a,打开命令o,替换命令
s都可以进⼊⽂本输⼊模式,此时vi窗⼝最后一⾏会显⽰“插
⼊”。
不管⽤⼾处于何种模式,只要按下ESC键,即可使vi进⼊命令模
式。在命令模式下⽤⼾可以输⼊各种合法的vi命令,⽤于管理⾃
⼰的⽂档。此时从键盘上输⼊的任何字符都被当作编辑命令来解
释。
ln⽤于创建链接⽂件。Linux链接⽂件类似于windows 下的快捷⽅
式。
链接分为软链接和硬链接
如果没有-s选项代表建⽴一个硬链接⽂件,两个⽂件占⽤相同⼤
⼩的硬盘空间,即使删除了源⽂件,链接⽂件还是存在。如果软
链接⽂件和源⽂件不在同一个⽬录,源⽂件最好使⽤绝对路径,
不要使⽤相对路径。
软链接不占⽤磁盘空间,源⽂件删除则软链接失效。使⽤格式:
ln源⽂件链接⽂件
硬链接只能链接普通⽂件,不能链接⽬录。使⽤格式:ln-s源⽂
件链接⽂件
在线安装
离线安装
访问⽤⼾分类
访问权限
chmod
chown
chgrp
⽤于修改⽂件所属组
使⽤⽅法:chgrp⽤⼾组名⽂件或⽬录名
⽤于修改⽂件所有者
使⽤⽅法:chown⽤⼾名⽂件或⽬录名
加分号‘:’修改所属组
修改⽂件使⽤的两种格式:字⺟法、数字法
+表⽰增加权限,-表⽰撤销权限,=表⽰设定权限
rwx:r表⽰可以读取,数字代号“4”;w表⽰可以写⼊,数字代
号为“2”;x表⽰可以执⾏,数字代号为“0”。
字⺟法:chmodu/g/o/a+/-/=rwx⽂件
读权限(r)
写权限(w)
可执⾏⽂件权限(x)
所有者:只允许⽤⼾⾃⼰访问
⽤⼾组:允许一个预先指定的⽤⼾组中的⽤⼾访问
其他⽤⼾:允许系统中的任何⽤⼾访问
内建命令是指的bash⼯具中集成的命令。外部命令是安装外部软
件所带的命令。内建命令有更⾼的执⾏效率。
查看命令类型:type[-afptP]名称。显⽰命令类型信息。
使⽤格式:man[选项]命令名,[]表⽰可以省略
tar
gzip
bzip2
zip和unzip
解压到指定⽬录是-C
一个命令的输出可以通过管道做为另一个命令的输⼊。|的左右分
为两端,左端写,右端读。
tar与bzip2使⽤实现⽂件打包、压缩。⽤bzip2压缩tar打包⽂
件,其扩展名一般⽤xxx.tar.bz2。在tar命令中增加一个选项(-j)
可以调⽤bzip2实现了一个压缩的功能,实现一个先打包后压缩
的过程。
压缩:tarjcvf压缩包包名⽂件,解压:tarjxvf压缩包包名
tar命令可以把一系列⽂件归档到一个⼤的⽂件中,也可也把归档
⽂件解开以恢复数据。
格式:tar[选项]打包⽂件名⽂件
注意除了f参数必须放在最后,其他参数顺序任意。
find
grep
grep允许对⽂本⽂件进⾏模式查找。如果找到匹配模
式,grep打印包含模式的所有⾏。
格式:grep[-选项]'搜索内容串'⽂件名。在grep命令中输⼊字
符串参数时,最好引号或双引号括起来。例如:grep'a'1.txt
搜索⽬录需要添加参数-r,命令:grep-r+"查找的关键字"+路径
通常⽤来在特定的⽬录下搜索符合条件,也可也⽤来搜索⽤⼾属
主的⽂件。
按⽂件名查询:使⽤参数-name。命令格式:find+路径+-
name+“⽂件名”
按⽂件⼤⼩查询:使⽤参数-size。格式:find+路径+-size+范围
按⽂件类型查询:使⽤参数type。格式:find+路径+-type+类型
du
df
cat
more
less
hea d
tail
⽤于检测⽂件系统磁盘空间占⽤和空余情况,可以显⽰所有⽂件
系统对节点和磁盘块的使⽤情况。
从⽂件尾部向上查看最后n⾏内容,如果没有指定⾏数,默认显
⽰最后10⾏内容。
格式:tail-n[⾏数]⽂件名
tar只负责打包⽂件,gzip压缩tar打包后的⽂件,扩展名一般⽤
xxx.tar.gz
格式:gzip[选项]被压缩⽂件
选项:-d解压,-r压缩所有⼦⽬录
将⽂件内容分⻚显⽰到终端,可以⾃由上下浏览。
将⽂件内容分⻚显⽰到终端,但是只能一直向下浏览,不能回
退。
cat将⽂件内容一次性输出到终端。缺点是:终端的内容显⽰有
限,如果⽂件太⻓⽆法全部显⽰。
du命令⽤于查看某个⽬录⼤⼩
格式:du[选项]⽬录或⽂件名
ls,⽤法ls[选项]...[⽂件]...
touch,⽤法touch[选项]...⽂件...
cp
rm
mv
⽤⼾可以使⽤mv命令来移动⽂件或⽬录,也可也给⽂件或⽬录重
命名
hea d命令从⽂件头部开始查看前n⾏的内容,如果没有指定⾏
数,默认显⽰前10⾏内容。
命令格式:hea d-n[⾏数]⽂件名
cp命令的功能啊将给出的⽂件或者⽬录复制到另一个⽂件或⽬录
中。
如果⽂件不存在,创建新⽂件(只能是普通⽂件,不能是⽂件
夹)。如果⽂件存在。更新⽂件时间。
可通过rm删除⽂件或⽬录。使⽤rm命令删除⽂件后不能恢复,
未来防⽌⽂件误删,可以在使⽤rm后⾯⽤-i参数以逐个确认要删
除的⽂件。
常⽤参数
通配符
-a :显式指定⽬录下所有⼦⽬录与⽂件,包括隐藏⽂件
-l:以列表⽅式显⽰⽂件的详细信息
-h:配合-l以⼈性化的⽅式显⽰⽂件⼤⼩
常⽤的有7种,普通⽂件、⽬录⽂件、设备⽂件、管道⽂件、链接
⽂件和套接字
pwd打印当前⼯作⽬录的名字,格式:pwd[-LP]
cd切换⽬录,格式:cd[-L|-P][dir]
创建⽬录mkdir,格式:mkdir[OPTION]...DIRECTORY...
删除⽬录rmdir,删除指定的⽬录,如何创建的就如何删除。
通过mkdir命令可以创建一个新的⽬录,参数-p 可以递归创建⽬
录。需要注意的是新建⽬录名称不能与当前⽬录中已有的⽬录或
⽂件同名,并且⽬录创建者必须对当前⽬录具有写权限。
切换到当前主⽬录cd
切换到当前⽤⼾的主⽬录cd~
切换到当前⽬录cd.
切换到上级⽬录cd..
可进⼊上一个进⼊的⽬录cd-
内建命令:help+内建命令
外部命令:命令+--help
绝对路径就是从⽬录树的树根“/”⽬录开始往下直⾄到达⽂件所
经过的所有节点⽬录。绝对路径是从“/”开始的,所以第一个字
符一定是“/”
相对路径就是从当前位置开始描述的路径为相对路径如cd../../。
每个⽬录下都有.和..。.表⽰当前⽬录,..表⽰上一级⽬录,即⽗⽬
录。根⽬录下.和..都表⽰当前⽬录。
bin:存放⼆进制可执⾏⽂件
boot:存放开机启动程序
dev:存放设备⽂件
etc:⽤⼾信息和系统配置⽂件
home:存放⽤⼾
lib:库⽂件
root:管理员宿主⽬录
usr:⽤⼾资源管理⽬录