C语言基础 Day13 Linux&Unix基础
操作系统在计算机中承上启下,向下封装硬件,向上提供操作接口。
1969年Thompson和Ritchie开发了一个多任务操作系统–UNICS,后改名为Unix。1971年两人在贝尔诞生了C语言。1990年Linus Torvalds决定编写一个自己的Minix内核,初名为Linus’ Minix,意为Linus的Minix内核,后改名为Linux。
Linux有很多优秀的特点:
- 开放性;
- 完全免费;
- 多用户;
- 多任务;
- 良好的用户界面;
- 设备独立性;
- 提供了丰富的网络功能;
- 可靠的系统安全性;
- 良好的可移植性;
Linux内核源码的网址为: http://www.kernel.org。
Linux的文件系统是从根目录开始的。路径主要分为相对路径和绝对路径。
- 绝对路径
- 绝对路径是从根目录“/”开始往下直达文件所经过的所有节点目录。
- 下级目录接在上级目录后面用“/”隔开。
- 相对路径
- 相对路径是指目标目录相对于当前目录的位置。
- 如果不在当前目录下,则需要使用两个特殊目录“.”和“..”。其中“.”指向当前目录,而目录“..”指向上一级目录。
Linux中有很多目录,其中有一些目录极为重要。
- /bin:/usr/bin:可执行二进制文件的目录。
- /dev:存放Linux系统下的设备文件。
- /home:系统默认的家目录。
- /lib:/usr/lib:/usr/local/lib:系统使用的函数库目录。
- /root:系统管理员root的家目录。
- /tmp:一般用户或正在执行的程序临时存放文件的目录。
- /usr:应用程序的存放目录。
在Linux系统中,常用的文件类型有7类,分别是普通文件(-)、目录文件(d)、套接字文件(s)、字符设备(c)、块设备(b)、管道文件(p)、链接文件(l)。
在这个图中每个文件的信息中,我们可以划分为文件类型+文件访问权限、硬链接计数、文件所有者、文件所属组、文件所占用空间的大小、文件创建或者是最后修改时间、文件名。在文件类型和文件访问权限中,一共有十个字符,第一个字符表示文件类型,后面三三为一组,分别表示文件所有者读写执行权限、文件所属组的读写执行权限、其它人的读写执行权限。
在说Linux命令之前,先看一下如何查看帮助文档。有两个方法,第一个方法是使用命令 --help
,但是不是每一个命令都有这个选项。第二个方法是使用man 命令
,man里面分为了九卷,如下:
卷名 | 内容 |
---|---|
1 | 可执行程序或shell命令 |
2 | 系统调用 |
3 | 库调用 |
4 | 特殊文件 |
5 | 文件格式和规范 |
6 | 游戏 |
7 | 杂项(包括宏包和规范) |
8 | 系统管理命令 |
9 | 内核例程 |
如我们查询可执行程序或shell命令中的printf用法,可以使用 man 1 printf
;如果我们查询库调用的printf,可使用man 3 printf
即可。若不指定的话,查询是按照卷的顺序进行搜索的,就会显示第一次出现的卷的用法。
接下来说一下Linux中的常见命令:
历史命令:history,将执行过的命令列举出来。
查看文件信息:ls,列出目录的内容,常用的参数如下:
参数 | 含义 |
---|---|
-a | 显示指定目录下的所有子目录与文件,包括隐藏文件 |
-l | 以列表的方式显示文件的详细信息 |
-h | 配合-l以人性化的方式显示文件大小 |
-d | 查看目录本身 |
常用的通配符:有时候我们不指定文件的具体名字,需要使用特殊字符去进行模糊的匹配,这些字符就是通配符,他们可以同时引用多个文件名。
通配符 | 含义 |
---|---|
* | 代表文件名的所有字符 |
? | 代表文件名中任意一个字符 |
输出重定向命令:>
和>>
,将Linux命令执行的结果重定向到一个文件,本应该显示在终端的内容保存到指定文件中。其中>
会覆盖掉原来的内容,而>>
则会追加到文件的尾部。
清理屏幕:clear,清楚终端上显示的内容。
切换工作目录:cd,切换工作的路径,Linux的工作目录和文件名对大小写敏感,常见的用法如下:
命令 | 含义 |
---|---|
cd | 切换到当前用户的主目录 |
cd ~ | 切换到当前用户的主目录 |
cd . | 切换到当前目录 |
cd .. | 切换到上级目录 |
cd - | 切换到上一个进入的目录 |
显示当前路径:pwd,显示当前的工作目录。
创建目录:mkdir,创建一个新的目录,如果要创建多层目录可以使用-p选项进行地柜创建目录。
删除目录:rmdir,删除一个目录,删除的时候必须离开目录,且目录必须是空目录,否则会删除失败。
删除文件:rm,删除文件和目录,rm的参数如下。
参数 | 含义 |
---|---|
-f | 强行删除 |
-r | 递归地删除目录下的内容,删除文件夹时必须加此参数 |
查看或者合并文件内容:cat,使用cat可以查看一个文件的内容,如果想要合并两个文件的内容,则可以结合输出重定向。
拷贝文件:cp,将指定文件或目录复制到另一个文件或目录中。可选参数如下。
参数 | 含义 |
---|---|
-a | 该选项通常在复制目录时使用,它保留链接、文件属性,并递归地赋值目录,保持文件原有属性 |
-r | 若给出来的是目录文件,则递归地赋值该目录下的所有子目录和文件。目标文件必须为一个目录名 |
移动文件:mv,移动文件或者更改文件的文件名。常见的参数如下。
获取文件类型:file,可以使用file确定文件的具体类型。
归档管理:tar,可以使用这个命令进行归档管理,但是这个命令不具有压缩的功能,所以会与gzip和bzip2的命令结合使用。下面分别给出这两个的压缩命令和解压缩的命令。
# gzip的压缩命令
tar zcvf xxxx.tar.gz 待压缩的文件
# gzip的解压缩命令
tar zxvf 待压缩的文件.tar.gz
# bzip2的压缩命令
tar jcvf xxxx.tar.bz2 待压缩的文件
# bzip2的解压缩命令
tar jxvf 待压缩的文件.tar.bz2
查看命令位置:which
切换用户:su
设置用户密码:passwd
修改文件权限:chmod,修改文件权限有两种格式:字母法和数字法。这里主要说一下数字法,文件的权限有读写执行,如果用三位二进制表示,则读代表4,写代表2,可执行代表1。文件具有的哪些权限进行相加即可。如5是4+1,所以表示可读可执行。需要注意的是不可执行的对象是目录的时候,文件目录不能被打开。
查看进程信息:ps,常和grep命令一起使用查看进程的信息。命令为 ps aux | grep 查询关键词
。
终止进程:kill,终止指定的进程,后面跟上进程的pid即可。有些进程不能直接杀死,这时候需要加一个参数-9,-9信号代表强制结束,信号值的范围为1到15。命令为kill -9 pid
。
关机重启:shutdown、reboot
命令 | 含义 |
---|---|
reboot | 重启操作系统 |
shutdown -r now | 重新启动操作系统,shutdown会给别的用户提示 |
shutdown -h now | 立刻关机,其中now相当于时间为0的状态 |
shutdown -h 13:14 | 系统在今天的13:14会关机 |
shutdown -h +10 | 系统在十分钟后会自动关机 |
查看或配置网卡信息:ifconfig
测试远程主机的连通性:ping,使用方法为ping 远程主机IP地址
接下来看看关于Linux终端中的一些快捷键:
快捷键 | 含义 |
---|---|
Ctrl shift += | 放大终端字体 |
Ctrl -_ | 缩小终端字体 |
Ctrl C | 终止运行 |
Ctrl L | 清理终端屏幕 |
Ctrl P | 上一次执行的命令 |
Ctrl N | 下一次执行的命令 |
Ctrl U | 清空输入的内容 |
Ctrl A | 快速移动到输入开头 |
Ctrl E | 快速回到末尾 |
接下来说一下关于vi和vim使用的一些命令和快捷方式。
命令模式:
按键 | 含义 |
---|---|
a | 光标位置右边插入文字 |
i | 光标当前位置插入文字 |
o | 光标位置下方开启新行 |
s | 删除光标位置的文字并插入文字 |
A | 光标所在行尾插入文字 |
I | 光标所在行首插入文字 |
O | 光标位置上方开启新行 |
S | 删除当行并插入文字 |
[n]dd | 删除当前行开始的n行,准确来讲应该是剪切 |
[n]yy | 复制当前行开始的n行 |
p | 把粘贴板上的内容插入到当前行 |
u | 撤销前一个命令 |
gg | 到文件第一行行首 |
G | 到文件最后一行行首 |
[n]G | 到指定行 |
ZZ | 保存退出 |
* | 查找当前光标所在位置内容 |
n | 寻找下一个 |
末行模式:
输入 | 含义 |
---|---|
:wq | 保存退出 |
:q | 退出,如果文件修改但没有保存,会提示无法退出 |
:q! | 不保存退出 |
:!命令 | 暂时离开vi执行命令 |
/字符串 | 查找指定字符串 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |