【Linux学习笔记】Linux基本指令及其发展史分析
🔥个人主页:大白的编程日记
🔥专栏:Linux学习笔记
文章目录
- 【Linux学习笔记】Linux基本指令及其发展史分析
- 前言
- 一. Linux发展史
- 1.1 UNIX发展的历史
- 1.2 Linux发展历史
- 1.3 开源
- 1.4 Linux的应用
- 二. Linux基本指令
- 2.1 ls 指令
- 2.2 pwd 命令
- 2.3 cd 指令
- 2.4 touch 指令
- 2.5 mkdir 指令
- 2.6 rmdir 指令 && rm 指令
- 2.7 man 指令
- 2.8 cp 指令
- 后言
前言
哈喽,各位小伙伴大家好!C++篇章的知识我们已全部讲解完毕。今天开始我们开启全新的篇章——Linux操作系统 今天我们讲的是Linux基本指令及其分析。话不多说,我们进入正题!向大厂冲锋
一. Linux发展史
我们先来聊一下操作系统的发展历史
1.1 UNIX发展的历史
UNIX是现代操作系统的重要奠基者之一 。
现在的Linux系统 安卓系统 鸿蒙系统 ios系统都受到UNIX系统的影响。
- 1968年,⼀些来自通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了⼀个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念。
- 1969−1970年,AT&T的贝尔实验室研究人员Ken Tompson和Dennis Ritchie,在采用很多Multics特点的基础上开发了UINX系统。它运行在小型机上,满足了系统对科研环境的要求。从产生开始,UNIX就是⼀个有价值的、高效的、多用户和多任务的操作系统。
- UNIX从满足个人的设计需求开始,逐步成长为由许多不同开发商所支持的标准软件产品。
1.2 Linux发展历史
在Unix的基础上就衍生出了Linux操作系统。
像现在的centos ubuntu 红旗等都是linux的内核。
- 1991年10月5日,赫尔辛基大学的⼀名研究生Linus Benedict Torvalds在⼀个Usenet新闻组(comp.os.minix)中宣布他编制出了⼀种类似UNIX的⼩操作系统,叫Linux。新的操作系统是受到另⼀个UNIX的小操作系统⸺Minix的启发,该系统是由⼀名叫Andrew S Tanenbaum的教师开发的。读者也许猜想所发布的这个系统应该是Linux的0.01版本,实际上不是这样。真正的Linux 0.01版本并没有被发布,原因是0.01版本不实用。Linus仅仅在第⼀个Linux的FTP站点
(ftp://nic.funet.fi)上提供过这个版本的的源代码。 - Torvalds于10月5日发布的这个Linux版本被称为0.02版,它能够运行GNU Bourne AgainShell(bash)和GNU的C编译程序(gcc)以及为数不多的其它语言。Torvalds绝对没有想到他设想的⼀种能够针对高级业余爱好者和黑客们的操作系统已经产生,这就是人们所称的Linux。;
- Linux发布时的版本是0.02,后来⼜有0.03版,然后又跳到0.10版。因为世界各地越来越多的程序员都开始开发Linux,它已经达到0.95版。这就意味着正式公布1.0版本的时间已经为期不远了。正式的1.0版本是在1994年公布的
1.3 开源
- Linux是⼀种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。
- GNU通用公共许可协议(GNU General Public License,简称GNU GPL或GPL),是⼀个广泛被使用的自由软件许可协议条款,最初由理查德斯托曼为GNU计划而撰写,GPL给予了计算机程序自由软件的定义, 任何基于GPL软件开发衍生的产品在发布时必须采目GPL许可证方式,且必须公开源代码
- Linux是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。随着Linux操作系统⻜速发展,各种集成在Linux上的开源软件和实用工具也得到了应⽤和普及,因此,Linux也成为了开源软件的代名词。
1.4 Linux的应用
-
Linux在服务器领域的发展
随着开源软件在世界范围内影响力日益增强,Linux服务器操作系统在整个服务器操作系统市场格局中占据了越来越多的市场份额,已经形成了大规模市场应用的局面。并且保持着快速的增长率。尤其在政府、金融、农业、交通、电信等国家关键领域。此外,考虑到Linux的快速成长性以及国家相关政策的扶持力度,Linux服务器产品⼀定能够冲击更大的服务器市场。据权威部们统计,目前Linux在服务器领域已经占据75%的市场份额,同时,Linux在服务器市场的迅速崛起,已经引起全球IT产业的高度关注,并以强劲的势头成为服务器操作系统领域中的中坚力量。 -
Linux在桌面领域的发展
近年来,特别在国内市场,Linux桌面操作系统的发展趋势非常迅猛。国内如中标麒麟Linux、红旗Linux、深度Linux等系统软件厂商都推出的Linux桌面操作系统,目前已经在政府、企业、OEM等领域得到了广泛应用。另外SUSE、Ubuntu也相继推出了基于Linux的桌面系统,特别是Ubuntu Linux,已经积累了大量社区用户。但是,从系统的整体功能、性能来看,Linux桌面系统与Windows系列相比还有⼀定的差距,主要表现在系统易用性、系统管理、软硬件兼容性、软件的丰富程度等方面。 -
Linux在移动嵌入式领域的发展
Linux的低成本、强⼤的定制功能以及良好的移植性能,使得Linux在嵌入式系统方面也得到广泛应用,目前Linux以广泛应用于手机、平板电脑、路由器、电视和电⼦游戏机等领域。在移动设备上广泛使用的Android操作系统就是创建在Linux内核之上的。⽬前,Android已经成为全球最流行的智能手机操作系统,据2015年权威部们最新统计,Android操作系统的全球市场份额已达84.6%。
此外,思科在网络防火墙和路由器也使用了定制的Linux,阿里云也开发了⼀套基于Linux的操作系统“YunOS”,可用于智能手机、平板电脑和网络电视;常剪的数字视频录像机、舞台灯光控制系统等都在逐渐采用定制版本的Linux来实现,而这⼀切均归功与Linux与开源的力量。 -
Linux在云计算/大数据领域的发展
互联网产业的迅猛发展,促使云计算、⼤数据产业的形成并快速发展,云计算、大数据作为⼀个基于开源软件的平台,Linux占据了核心优势;据Linux基金会的研究,86%的企业已经使用Linux操作系统进行云计算、⼤数据平台的构建,目前,Linux已开始取代Unix成为最受睐的云计算、大数据平台操作系统。
二. Linux基本指令
同时每个命令有多个选项,我们需要关注常用的选项,其他了解即可。
2.1 ls 指令
语法: ls [选项] [目录或文件]
功能对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
- a 列出目录下的所有文件,包括以 . 开头的隐含文件。
- -d 将目录像文件⼀样显示,而不是显示其下的文件。 如:ls ‒d 指定目录
- -i 输出文件的 i 节点的索引信息。 如 ls ‒ai 指定文件
- -k 以 k 字节的形式表示文件的大小。ls ‒alk 指定文件
- -l 列出文件的详细信息
- -n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
- -F 在每个文件名后附上⼀个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
- -r 对目录反向排序
- -t 以时间排序
- -s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
- -R 列出所有子目录下的文件。(递归)
- -1 ⼀行只输出⼀个文件。
[qcj@bite - alicloud test]$ ls
dir file.txt
[qcj@bite - alicloud test]$ ls - a
. ..dir file.txt
[qcj@bite - alicloud test]$ ls - a - l
total 12
drwxrwxr - x 3 qcj qcj 4096 Jan 11 15:01 .
drwx------ 22 qcj qcj 4096 Jan 11 14 : 21 ..
drwxrwxr - x 2 qcj qcj 4096 Jan 11 14 : 22 dir
- rw - rw - r-- 1 qcj qcj 0 Jan 11 14 : 22 file.txt
[qcj@bite - alicloud test]$ ls - a - l - F
total 12
drwxrwxr - x 3 qcj qcj 4096 Jan 11 15 : 01 . /
drwx------ 22 qcj qcj 4096 Jan 11 14 : 21 .. /
drwxrwxr - x 2 qcj qcj 4096 Jan 11 14 : 22 dir /
-rw - rw - r-- 1 qcj qcj 0 Jan 11 14 : 22 file.txt
[qcj@bite - alicloud test]$ ls - alFn
total 12
drwxrwxr - x 3 1003 1003 4096 Jan 11 15 : 01 . /
drwx------ 22 1003 1003 4096 Jan 11 14 : 21 .. /
drwxrwxr - x 2 1003 1003 4096 Jan 11 14 : 22 dir /
-rw - rw - r-- 1 1003 1003 0 Jan 11 14 : 22 file.txt
2.2 pwd 命令
语法: pwd
功能: 显示用户当前所在的目录
常用选项: 无
root@hcss-ecs-8ddb:~/Linux指令# pwd
/root/Linux指令
2.3 cd 指令
Linux理论知识:路径的认识
- Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件
- 其中普通文件一定是目录树的叶子节点
- 目录可能是叶子(空目录), 也可能是路上节点
- 理解路径存在的意义 : 树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位文件。其中任何一个节点,都只有一个父节点,所以,从根目录开始,定位指定文件,路径具有唯一性
- 绝对路径:一般从 / 开始,不依赖其他目录的定位文件的方式
- 相对路径:相对于当前用户所处目录,定位文件的路径方式
- 绝对路径一般不会随着用户的路径变化而丧失唯一性,一般在特定服务的配置文件中经常被使用
- 相对路径因为它的便捷性,一般在命令行中使用较多
语法: cd 目录名
功能: 改变工作目录。将当前工作目录改变到指定的目录
# 返回上级⽬录
[qcj@bite - alicloud ~]$ pwd
/ home / qcj
[qcj@bite - alicloud ~]$ cd ..
[qcj@bite - alicloud home]$ pwd
/ home
# 绝对路径定位⽬录或者⽂件
[qcj@bite - alicloud home]$ pwd
/ home
[qcj@bite - alicloud home]$ cd / home / qcj / test
[qcj@bite - alicloud test]$ pwd
/ home / qcj / test
# 相对路径定位⽬录或者⽂件
[qcj@bite - alicloud test]$ pwd
/ home / qcj / test
[qcj@bite - alicloud test]$ cd .. / temp /
[qcj@bite - alicloud temp]$ pwd
/ home / qcj / temp
# 每⼀次新建⼀个⽤⼾都会在 / home⽬录下为新⽤⼾创建新的⼯作⽬录,⽬录以新⽤⼾名称命名
# root⽤⼾在安装操作系统的时候,就已经内置了⼯作⽬录: / root
[qcj@bite - alicloud temp]$ ls / home
bss gaobo luojie qcj wudu
# 快速进⼊⾃⼰的家⽬录
[qcj@bite - alicloud test]$ whoami
qcj
[qcj@bite - alicloud test]$ pwd
/ home / qcj / test
[qcj@bite - alicloud test]$ cd ~
[qcj@bite - alicloud ~]$ pwd
/ home / qcj
# 返回到最近访问⽬录
[qcj@bite - alicloud ~]$ pwd # 当前在 / home / qcj⽬录下
/ home / qcj
[qcj@bite - alicloud ~]$ cd / # 进⼊ / ⽬录
[qcj@bite - alicloud / ]$ pwd
/
[qcj@bite - alicloud / ]$ cd - # 直接可以回退到最近⼀次所处的⽬录: / home / qcj
/ home / qcj
[qcj@bite - alicloud ~]$ pwd
/ home / qcj
[qcj@bite - alicloud ~]$ cd - # 直接可以回退到最近⼀次所处的⽬录 : /
/
[qcj@bite - alicloud / ]$ pwd
/
[qcj@bite - alicloud / ]$ cd - # 同上
/ home / qcj
[qcj@bite - alicloud ~]$ pwd
/ home / qcj
2.4 touch 指令
Linux理论知识:文件类型的认识
语法: touch [选项]… 文件…
功能: touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建⼀个不存在的文件。
常用选项:
- -a : change only the access time
- -c : change only the modification time
# 创建普通⽂件
[qcj@bite - alicloud test]$ ls
dir file.txt
[qcj@bite - alicloud test]$ touch newFile.txt
[qcj@bite - alicloud test]$ ls
dir file.txt newFile.txt
# 查看⽂件时间
[qcj@bite - alicloud test]$ stat newFile.txt
File : ‘newFile.txt’
Size : 0 Blocks : 0 IO Block : 4096 regular empty
file
Device : fd01h / 64769d Inode : 1844719 Links : 1
Access : (0664 / -rw - rw - r--) Uid : (1003 / qcj) Gid : (1003 / qcj)
Access : 2023 - 01 - 11 15 : 06 : 45.832787572 + 0800
Modify : 2023 - 01 - 11 15 : 06 : 45.832787572 + 0800
Change : 2023 - 01 - 11 15 : 06 : 45.832787572 + 0800
Birth : -
# 修改⽂件access时间
[qcj@bite - alicloud test]$ touch - a newFile.txt
[qcj@bite - alicloud test]$ stat newFile.txt
File : ‘newFile.txt’
Size : 0 Blocks : 0 IO Block : 4096 regular empty
file
Device : fd01h / 64769d Inode : 1844719 Links : 1
Access : (0664 / -rw - rw - r--) Uid : (1003 / qcj) Gid : (1003 / qcj)
Access : 2023 - 01 - 11 15 : 07 : 00.062846804 + 0800
Modify : 2023 - 01 - 11 15 : 06 : 45.832787572 + 0800
Change : 2023 - 01 - 11 15 : 07 : 00.062846804 + 0800 # 该时间为何会变化?
Birth : -
# 修改⽂件Modify时间
[qcj@bite - alicloud test]$ touch - m newFile.txt
[qcj@bite - alicloud test]$ stat newFile.txt
File : ‘newFile.txt’
Size : 0 Blocks : 0 IO Block : 4096 regular empty
file
Device : fd01h / 64769d Inode : 1844719 Links : 1
Access : (0664 / -rw - rw - r--) Uid : (1003 / qcj) Gid : (1003 / qcj)
Access : 2023 - 01 - 11 15 : 07 : 00.062846804 + 0800
Modify : 2023 - 01 - 11 15 : 09 : 19.428426903 + 0800
Change : 2023 - 01 - 11 15 : 09 : 19.428426903 + 0800
Birth : -
# 更多讲解,会在基础IO部分统⼀在说
2.5 mkdir 指令
语法: mkdir [选项] dirname…
功能: 在当前目录下创建⼀个名为 “dirname”的目录
常用选项:
• -p/–parents: 可以是⼀个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即⼀次可以建立多个目录
# 创建普通空⽬录
[qcj@bite - alicloud test]$ ls - l
total 4
drwxrwxr - x 2 qcj qcj 4096 Jan 11 14:22 dir
- rw - rw - r-- 1 qcj qcj 0 Jan 11 14 : 22 file.txt
- rw - rw - r-- 1 qcj qcj 0 Jan 11 15 : 09 newFile.txt
[qcj@bite - alicloud test]$ mkdir mydir
[qcj@bite - alicloud test]$ ls - l
total 8
drwxrwxr - x 2 qcj qcj 4096 Jan 11 14:22 dir
- rw - rw - r-- 1 qcj qcj 0 Jan 11 14 : 22 file.txt
drwxrwxr - x 2 qcj qcj 4096 Jan 11 15 : 15 mydir
- rw - rw - r-- 1 qcj qcj 0 Jan 11 15 : 09 newFile.txt
# 递归建⽴多个⽬录,创建指定路径
[qcj@bite - alicloud test]$ mkdir - p path1 / path2 / path3 / path4
[qcj@bite - alicloud test]$ ls - l
total 12
drwxrwxr - x 2 qcj qcj 4096 Jan 11 14:22 dir
- rw - rw - r-- 1 qcj qcj 0 Jan 11 14 : 22 file.txt
drwxrwxr - x 2 qcj qcj 4096 Jan 11 15 : 15 mydir
- rw - rw - r-- 1 qcj qcj 0 Jan 11 15 : 09 newFile.txt
drwxrwxr - x 3 qcj qcj 4096 Jan 11 15:16 path1
[qcj@bite - alicloud test]$ tree path1
path1
└── path2
└── path3
└── path4
# tree命令是⼀个递归以树状结构显⽰指定⽬录的命令,如果没有安装
# 如果当前⽤⼾是root: yum install - y tree(因为现在开始⽤的都是root,所以推荐这个⽤法)
# 如果当前⽤⼾是普通⽤⼾ : sudo yum install - y tree(后⾯讲讲完vim,⼤家才能将⾃⼰添加到系统信任列表中,暂时普通⽤⼾⽆法使⽤sudo)
2.6 rmdir 指令 && rm 指令
rmdir是⼀个与mkdir相对应的命令,mkdir是建立目录,而rmdir是删除命令
语法: rmdir [-p] [dirName]
适用对象: 具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
- p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录⼀起删除。
# 删除空⽬录
[qcj@bite - alicloud test]$ ll
total 12
drwxrwxr - x 2 qcj qcj 4096 Jan 11 14:22 dir
- rw - rw - r-- 1 qcj qcj 0 Jan 11 14 : 22 file.txt
drwxrwxr - x 2 qcj qcj 4096 Jan 11 15 : 15 mydir
- rw - rw - r-- 1 qcj qcj 0 Jan 11 15 : 09 newFile.txt
drwxrwxr - x 3 qcj qcj 4096 Jan 11 15:16 path1
[qcj@bite - alicloud test]$ tree mydir /
mydir /
0 directories, 0 files
[qcj@bite - alicloud test]$ rmdir mydir
[qcj@bite - alicloud test]$ ll
total 8
drwxrwxr - x 2 qcj qcj 4096 Jan 11 14:22 dir
- rw - rw - r-- 1 qcj qcj 0 Jan 11 14 : 22 file.txt
- rw - rw - r-- 1 qcj qcj 0 Jan 11 15 : 09 newFile.txt
drwxrwxr - x 3 qcj qcj 4096 Jan 11 15:16 path1
# 删除路径
[qcj@bite - alicloud test]$ tree path1
path1
└── path2
└── path3
└── path4
3 directories, 0 files
[qcj@bite - alicloud test]$ rmdir - p path1 / path2 / path3 / path4
[qcj@bite - alicloud test]$ ll
total 4
drwxrwxr - x 2 qcj qcj 4096 Jan 11 14:22 dir
- rw - rw - r-- 1 qcj qcj 0 Jan 11 14 : 22 file.txt
- rw - rw - r-- 1 qcj qcj 0 Jan 11 15 : 09 newFile.txt
# 指定路径中有不为空的路径,便⽆法删除
[qcj@bite - alicloud test]$ rmdir - p path1 / path2 / path3
rmdir : failed to remove ‘path1 / path2 / path3’ : Directory not empty
[qcj@bite - alicloud test]$ touch path1 / myfile.txt
[qcj@bite - alicloud test]$ touch path1 / path2 / myfile.txt
[qcj@bite - alicloud test]$ tree path1 /
path1 /
├── myfile.txt
└── path2
├── myfile.txt
└── path3
└── path4
3 directories, 2 files
[qcj@bite - alicloud test]$ rmdir - p path1 / path2 / path3 / path4
rmdir : failed to remove directory ‘path1 / path2’ : Directory not empty
rm 命令可以同时删除文件或目录
语法: rm [-f-i-r-v] [dirName/dir]
适用对象: 所有使用者
功能: 删除文件或目录
常用选项:
• -f 即使文件属性为只读(即写保护),亦直接删除
• -i 删除前逐⼀询问确认
• -r 删除目录及其下所有文件
# 删除普通⽂件
[qcj@bite - alicloud test]$ ll
total 8
drwxrwxr - x 2 qcj qcj 4096 Jan 11 14:22 dir
- rw - rw - r-- 1 qcj qcj 0 Jan 11 14 : 22 file.txt
- rw - rw - r-- 1 qcj qcj 0 Jan 11 15 : 09 newFile.txt
drwxrwxr - x 3 qcj qcj 4096 Jan 11 15:26 path1
[qcj@bite - alicloud test]$ rm file.txt
[qcj@bite - alicloud test]$ ll
total 8
drwxrwxr - x 2 qcj qcj 4096 Jan 11 14 : 22 dir
- rw - rw - r-- 1 qcj qcj 0 Jan 11 15 : 09 newFile.txt
drwxrwxr - x 3 qcj qcj 4096 Jan 11 15:26 path1
# 删除⽬录⽂件
[qcj@bite - alicloud test]$ ll
total 8
drwxrwxr - x 2 qcj qcj 4096 Jan 11 14:22 dir
- rw - rw - r-- 1 qcj qcj 0 Jan 11 15 : 09 newFile.txt
drwxrwxr - x 3 qcj qcj 4096 Jan 11 15:26 path1
[qcj@bite - alicloud test]$ rm dir
rm : cannot remove ‘dir’ : Is a directory
[qcj@bite - alicloud test]$ rm - r dir
[qcj@bite - alicloud test]$ ll
total 4
- rw - rw - r-- 1 qcj qcj 0 Jan 11 15 : 09 newFile.txt
drwxrwxr - x 3 qcj qcj 4096 Jan 11 15:26 path1
# 删除普通⽂件前询问
[qcj@bite - alicloud test]$ ll
total 4
- rw - rw - r-- 1 qcj qcj 0 Jan 11 15:09 newFile.txt
drwxrwxr - x 3 qcj qcj 4096 Jan 11 15:26 path1
[qcj@bite - alicloud test]$ rm - i newFile.txt
rm : remove regular empty file ‘newFile.txt’ ? y
[qcj@bite - alicloud test]$ ll
total 4
drwxrwxr - x 3 qcj qcj 4096 Jan 11 15 : 26 path1
[qcj@bite - alicloud test]$ ll
total 4
drwxrwxr - x 3 qcj qcj 4096 Jan 11 15 : 26 path1
# 删除⽬录前询问
[qcj@bite - alicloud test]$ mkdir - p d / d / d / d
[qcj@bite - alicloud test]$ tree d
d
└── d
└── d
└── d
3 directories, 0 files
[qcj@bite - alicloud test]$ rm - ri d
rm : descend into directory ‘d’ ? y
rm : descend into directory ‘d / d’ ? y
rm : descend into directory ‘d / d / d’ ? y
rm : remove directory ‘d / d / d / d’ ? y
rm : remove directory ‘d / d / d’ ? y
rm : remove directory ‘d / d’ ? y
rm : remove directory ‘d’ ? y
[qcj@bite - alicloud test]$ ll
total 0
# 递归强制删除⾮空⽬录
[qcj@bite - alicloud test]$ tree path1 /
path1 /
├── myfile.txt
└── path2
└── myfile.txt
1 directory, 2 files
[qcj@bite - alicloud test]$ rm - f path1
rm : cannot remove ‘path1’ : Is a directory
[qcj@bite - alicloud test]$ rm - rf path1
[qcj@bite - alicloud test]$ ll
total 0
2.7 man 指令
Linux的命令有很多参数,我们不可能全记住,可以通过查看联机手册获取帮助
语法 : man[选项] 命令
常用选项
- -k 根据关键字搜索联机帮助
- num 只在第num章节查找
- -a 将所有章节的都显示出来,比如 man printf 它缺省从第⼀章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕
解释⼀下:man手册分为9章(不同系统可能会有差别)
- 是普通的命令
- 是系统调用, 如open, write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么 头⽂件)
- 是库函数, 如printf, fread4是特殊文件, 也就是 / dev下的各种设备⽂件
- 略
- 是指文件的格式, 比如passwd, 就会说明这个文件中各个字段的含义
- 是给游戏留的, 由各个游戏自己定义
- 是附件还有⼀些变量, 比如像environ这种全局变量在这里就有说明
- 是系统管理⽤的命令, 这些命令只能由root使用, 如ifconfig
- 略
[qcj@bite - alicloud test]$ man printf # 查看printf指令(没错,printf也是⼀个指令)
qcj@bite - alicloud test]$ man fork # 查看系统调⽤,默认没有这个指令,man就⾃动
去2号⼿册查找
[qcj@bite - alicloud test]$ man 2 frok # 查看系统调⽤
[qcj@bite - alicloud test]$ man 3 printf # 查看C库函数
[qcj@bite - alicloud test]$ man 7 signal # 查看变量
[qcj@bite - alicloud test]$ man 7 environ
[qcj@bite - alicloud test]$ man man # 查看man⼿册⾃⼰
2.8 cp 指令
语法: cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明:
- cp指令用于复制文件或目录
- 如同时指定两个以上的文件或目录,且最后的目的地是⼀个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中
常用选项 - -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
- -i 或 --interactive 覆盖文件之前先询问用户
- -r 递归处理,将指定⽬录下的文件与子目录录⼀并处理。若源文件或目录的形态,不属于目录或符号链接,则⼀律视为普通文件处理
# cp普通⽂件
[qcj@bite - alicloud test]$ echo "你好世界" > myfile.txt
[qcj@bite - alicloud test]$ cat myfile.txt
你好世界
[qcj@bite - alicloud test]$ ll
total 4
- rw - rw - r-- 1 qcj qcj 22 Jan 11 15:47 myfile.txt
[qcj@bite - alicloud test]$ cp myfile.txt myfile - backup.txt
[qcj@bite - alicloud test]$ ll
total 8
- rw - rw - r-- 1 qcj qcj 22 Jan 11 15 : 47 myfile - backup.txt
- rw - rw - r-- 1 qcj qcj 22 Jan 11 15 : 47 myfile.txt
[qcj@bite - alicloud test]$ cat myfile - backup.txt
你好世界
# 将多个⽂件拷⻉到指定路径下
[qcj@bite - alicloud test]$ ll
total 8
- rw - rw - r-- 1 qcj qcj 22 Jan 11 15:47 myfile - backup.txt
- rw - rw - r-- 1 qcj qcj 22 Jan 11 15 : 47 myfile.txt
[qcj@bite - alicloud test]$ mkdir dir
[qcj@bite - alicloud test]$ ll
total 12
drwxrwxr - x 2 qcj qcj 4096 Jan 11 15 : 48 dir
- rw - rw - r-- 1 qcj qcj 22 Jan 11 15 : 47 myfile - backup.txt
- rw - rw - r-- 1 qcj qcj 22 Jan 11 15 : 47 myfile.txt
[qcj@bite - alicloud test]$ cp * .txt dir # * 表⽰通配符,匹配所有.txt结尾的⽂件名
[qcj@bite - alicloud test]$ ll
total 12
drwxrwxr - x 2 qcj qcj 4096 Jan 11 15 : 48 dir
- rw - rw - r-- 1 qcj qcj 22 Jan 11 15 : 47 myfile - backup.txt
- rw - rw - r-- 1 qcj qcj 22 Jan 11 15 : 47 myfile.txt
[qcj@bite - alicloud test]$ tree dir
dir
├── myfile - backup.txt
└── myfile.txt
# cp如果⽬标⽂件存在,就覆盖
[qcj@bite - alicloud test]$ echo "hello bite tech" > myfile.txt
[qcj@bite - alicloud test]$ cat myfile.txt
hello bite tech
[qcj@bite - alicloud test]$ cp myfile.txt myfile - backup.txt
[qcj@bite - alicloud test]$ cat myfile - backup.txt
hello bite tech
# 拷⻉前询问
[qcj@bite - alicloud test]$ cp - i myfile.txt myfile - backup.txt
cp : overwrite ‘myfile - backup.txt’ ? y
# 递归强制拷⻉整个⽬录
[qcj@bite - alicloud ~]$ tree test
test
├── dir
│ ├── myfile - backup.txt
│ └── myfile.txt
├── myfile - backup.txt
└── myfile.txt
1 directory, 4 files
[qcj@bite - alicloud ~]$ cp - rf test test - backup
[qcj@bite - alicloud ~]$ tree test - backup
test - backup
├── dir
│ ├── myfile - backup.txt
│ └── myfile.txt
├── myfile - backup.txt
└── myfile.txt
1 directory, 4 files
后言
这就是Linux基本指令及其分析。大家自己好好消化!今天就分享到这!
感谢各位的耐心垂阅!咱们下期见!拜拜~