初识Linux和Linux基础指令详细解析及shell的运行原理

文章目录

1.发展史

  • 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 Again Shell(bash)和GNU的C编译程序(gcc)以及为数不多的其它语言。Torvalds绝对没有想到他设想的一种能够针对高级业余爱好者和黑客们的操作系统已经产生,这就是人们所称的Linux。;
  • Linux发布时的版本是0.02,后来又有0.03版,然后又跳到0.10版。因为世界各地越来越多的程序员都开始开发Linux,它已经达到0.95版。这就意味着正式公布1.0版本的时间已经为期不远了。正式的1.0版本是在1994年公布的



2.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成为最受青睐的云计算、大数据平台操作系统。

3.Linux下基础指令

1.adduser&&passwd

adduser 用户名 添加新用户(需要root权限)

注意:密码不回显 但是正常显示

此时 创建成功。

passwd 用于修改当前账户密码

2.su&whoami

su 用户名 ------ 用户切换命令

如果不写用户名 默认进入root用户

woami------ 查找自己是哪个用户的命令

3. 用户删除命令(userdel)

userdel -r 用户名 删除账户命令

4.mkdir(创建一个目录)

格式:mkdir [选项] A

功能:在当前目录下创建一个名为A的目录

默认创建的是空的目录!


如果想创建一串目录呢?

  • -p/--parents: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录

    tree 命令参考 命令10

5.touch(新建一个文件)

touch 文件名这是touch 最常用的功能 创建文件

stat(获取文件或目录时间)

stat 命令用于显示文件或文件系统的详细状态信息,包括文件的权限、大小、创建时间、修改时间等元数据,是查看文件属性的重要工具。

Access(atime):最后一次访问文件的时间(如读取内容)

Modify(mtime):最后一次修改文件内容的时间

Change(ctime):最后一次修改文件元数据的时间(如权限、所有者)

Birth(部分系统支持):文件的创建时间。

touch的其他功能(更改文档或目录的日期时间,包括存取时间和更改时间)

文件时间发生了变化。

  • -a : change only the access time
  • -c : change only the modification time

文件类型&file(详细查看文件类型)

Linux系统中 文件类型 不由后缀决定!!

取决于ls -l后的第一个字符

  • d开头 表示为一个目录文件
  • -开头 表示为一个普通文件(文本,二进制,图片,视频音频,静动态库都是!)
    如果想查看更仔细可以使用file 文件或者目录命令

    注意: 虽然说系统不以后缀作为文件类型 但不代表不带后缀 带上后缀有利于阅读,最重要的是Linux虽然不区分后缀 不代表其工具不区分后缀!(例如 使用 gcc进行编译的时候 .txt 文件无法编译)

6.clear(清屏操作)

clear 顾名思义 清空屏幕

清空前:

清空后:

7.ls指令(查看文件或者目录的属性)

格式:ls [选项] [目录或文件]

功能:对于目录,该命令列出该目录下的所有子目录与文件 。对于文件,将列出文件名以及其他信息。

在Linux环境下 目录就等于我们平常所说的文件夹


问题:如果我在windows下新建一个文件大小为0kb,请问是否回占据磁盘的空间呢?

答:不管什么文件 文件的属性(文件名 文件创建时间等)也是数据 所以文件!=文件的内容

文件=文件的内容+文件的属性(也叫元数据)

所以未来 我们对文件进行操作 无外乎 对文件内容或者属性进行操作!

ls 的本质是展现文件的属性ls默认是显示当前目录下文件的名字

cpp 复制代码
ls -l//可以显示更多的文件属性


ls后面的-l -a就是指令后面的选项 它可以混在一起写 也可以直接单独写


隐藏文件

在linux系统中可以存在隐藏文件 隐藏文件往往就是以.开头

这里发现 新创建的.youcanseeme文件并没有显示出来



当我们进行ls -la或者ls -a指令的时候 隐藏文件就显示出来了 -a表示显示当前路径下隐藏的文件或者目录

当然创建目录也是同理 这里就不进行详细解释了


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 一行只输出一个文件。

系统中的别名(略讲)

Linux 系统中,命令别名(alias)是简化操作的常用工具,以下是查看和管理别名的方法(不同系统的默认别名可能会略有所不同)

cpp 复制代码
alias

此时 ll 相当于ls -alF

8. pwd(打印工作目录)

好比windows的桌面就是个文件夹 只不过把该文件夹的内容以图形化页面的形式展现了出来


'\' (路径分隔符)

在 windows 系统中在两个\之间的一定是目录 而整体形成的就是路径

所以在Linux中 \就是Linux下的路径分隔符


pwd语法

语法: pwd

功能:显示用户当前所在的目录


语法: cd 目录名

功能:改变工作目录。将当前工作目录改变到指定的目录下

9. cd 指令(更改目录)

语法: cd 目录名

功能:改变工作目录。将当前工作目录改变到指定的目录下

在Linux系统中 .通常表示 当前路径 ..通常表示上级路径

路径没变

返回上级路径

当我们不停的cd .. 最后目录会变成一个/ 而我们称这个/根目录

那么


Linux的 目录结构

  • Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件
  • 其中普通文件一定是目录树的叶子节点
  • 目录可能是叶子(空目录),也可能是路上节点
  • 理解路径存在的意义:树状组织方式,都是为了保证快速定位查找到指定的文件,而定位文件就需要具有唯一性的方案来进行定位文件。其中任何一个节点,都只有一个父节点,所以,从根目录开始,定位指定文件,路径具有唯一性
  • 绝对路径:一般从/开始,不依赖其他目录的定位文件的方式
  • 相对路径:相对于当前用户所处目录,定位文件的路径方式
  • 绝对路径一般不会随着用户的路径变化而丧失唯一性,一般在特定服务的配置文件中经常被使用
  • 相对路径因为它的便捷性,一般在命令行中使用较多

    目录 本质上是树形目录结构的基础。
    结论1 :这棵多叉树,叶子节点,一定是普通文件或者空的文件夹(目录)
    结论2:这棵多叉树,路上(非叶子)节点,本质就是文件夹或者目录!

标识文件唯一性,是通过路径标识的! 为什么路径具有唯一性?
任何一个多叉树节点,都只有一个父节点 所以从/目标文件定位的时候,路径就是唯一的。

cpp 复制代码
/etc/rc.d/rc3.d  这条路径就是唯一的

这时候 我们查看到 任何目录都有... 哪怕是空目录

那么..和.本质是什么呢?

我们可以把..和.当成目录的一个节点 他相当于一个指针分别指向上级目录或者当前路径

根目录中也有..和.不过指向的都是自己!


假设我们要从根目录开始 找dira
方法一 :绝对路径

所以 绝对路径 是以根目录为参照点的
方法二 :相对路径(假设此时我们在dira路径下 我们要打开.notseeme)

这里的../表示dira的上一个目录123

所以 相对路径,是从我们当前所处的目录为参照点的 一旦所处的目录发生变化的时候,相对路径则可能失效

对于一个确定的相对路径 相对路径能否保证唯一性?

答案:能!!因为我当前所在路径下 我的父节点是唯一的 所以相对路径也是唯一的!


那么我们该如何合理实践路径?

  1. 配置文件,要配置各种途径,建议绝对路径
  2. 否则,常规操作统一使用相对路径

假设 此时我们在/

如果直接cd home就能进入home的目录 然后再输入cd ubuntu又会直接进入该目录下

这么做仅限于当前目录下有的目录!

. 的意义(这里有些东西先不细说 以后会补充)

你要执行一个程序的前提 就是先找到它 程序本身就是个文件 而找文件就需要通过路径去找到!!


cd的拓展

cd ~:~表示当前用户下的家目录

在Linux系统中 可以同时开不同账户 而每个用户的账户都有一个家目录

home目录下的所有目录就是你所创建过的用户名称 除了root用户外 是不能访问不属于你的文件夹的


正常情况下 root用户所在家目录是/root 而你通过adduser创建的其他普通用户所在的家目录一般为/home/XXX


cd -:退回到上一次所处的路径(可以来回横跳哦~)

10.tree(树形结构显示目录和文件)

安装 tree(部分系统默认未安装)

如果系统中没有 tree 命令,可通过包管理器安装(要在root用户下安装):

Ubuntu 系统:
apt install -y tree

CentOS系统:
yum install -y tree

cpp 复制代码
-y 表示 yes

直接输入 tree,会递归显示当前目录下所有文件和子目录的层级关系:

在 tree 后加目录路径,查看该目录的结构:

终止命令

如果你的操作出现了退出不了的情况

windows键盘:ctrl + c Mac键盘:control+c

进行终止

例如:我们执行tree /命令的时候他会遍历我们所有目录和文件 想强行终止 就必须始终该方法

11.rmdir(删除空目录)&&rm(删除删除文件或目录)

rmdir(remove directory )

语法:rmdir [dirName]

适用对象:具有当前目录操作权限的所有使用者

功能:删除空目录

非空目录删除失败。

空目录A 被我们成功删除!

rm(remove)

  • -f 即使文件属性为只读(即写保护),亦直接删除(大部分root账号会进行询问)
  • -i 删除前逐一询问确认
  • -r(recurse 递归) 删除目录及其下所有文件

    但是如果在这种目录下有东西 没法直接删除 则需要-r 删除 通过递归删除 。
    这里先从a进入b然后进入c再是d 然后从d开始删除 直到全部删完。

使用-i指令则会进行询问操作(大部分超级用户默认询问)

注意!!!

这里请不要因为好奇或者手贱😅 然后跟个傻X一样进入自己的超级用户 然后rm -fr / 把自己整个系统删了!

当然让有其他普通用户在线的时候 没法删除根目录 虽然没法把根目录连根拔起 但会通过递归把很多程序文件删除!!

12.man (查看联机手册获取帮助)

语法: man [选项] 命令

Linux的命令有很多参数,我们不可能全记住,可以通过查看联机手册获取帮助。

enter或者⬇️可以翻往下一页 按⬆️可以回翻 按q则可以退出


当然 man 还可以查取C语言的库函数

但是这里发现并不是C语言的定义那是因为 在Linux系统中本身就自带printf 这里man默认是从一号手册开始寻找 而一号手册一般是 可执行程序或者命令

  • 1是普通的命令
  • 2是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
  • 3是库函数(主要是C语言的库函数),如printf,fread4是特殊文件,也就是/dev下的各种设备文件
  • 4略
  • 5是指文件的格式,比如passwd,就会说明这个文件中各个字段的含义
  • 6是给游戏留的,由各个游戏自己定义
  • 7是附件还有一些变量,比如像environ这种全局变量在这里就有说明
  • 8是系统管理用的命令,这些命令只能由root使用,如ifconfig
  • 9略

所以这里就涉及到了man的选项接口:

  • -k 根据关键字搜索联机帮助
  • num 只在第num章节查找
  • -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕
    所以这里要使用man 3 printf 就能查看了

如果你man本身是什么你不知道 你也可以man man


最后 部分系统可能查阅指令时会有报错 这时你就可以在线安装手册

Ubuntu:apt install -y man-pages

Centos: yum install -y man-pages

当然一般情况下默认是全的。

13.cp(copy 复制文件或目录)

补充理论:Linux系统下一切皆"文件"

  1. C:向显示器打印(Linux:向显示器(终端窗口)文件进行写入)
  2. C:从键盘scanf读取消息(Linux:从键盘文件中读取数据)

这里echo相当于printf一样 在终端窗口打印信息

这里echo命令的本质就是向显示器文件写入对应的字符串。

此时这么写 就会生成一个hello.txt的文件 而文件的内容就是hello world

此时我们提前介绍一下cat命令 它可以打印文件的内容


重定向

那么 话说回来了>这个符号是干什么的?

这个过程叫输出重定向

说人话就是 这里把本来原本要输出到显示器的内容 输出到了hello.txt文件下。

这个>有两个特点:

  1. 如果指向文件没有 会在你所在的相对路径下自动创建
  2. 它每次写入的时候 会将原始文件内容清空光标移动道开头处 在把对应内容写入进去

    >用途呢? 它可以用于清空指定文件

这里可以看到 我们此时的hello.txt文件内容是4个字节

此时我们hello.txt文件的内容大小变成了0

那如果是>>呢?

这么写不会清空原有内容 我们称其为追加重定向

那有没有输入重定向

当然有 本来cat如果在不加任何的文件情况 会一直从键盘读取数据并打印直到接收到终止命令。

此时cat < 文件名就不会从键盘读取数据而是直接打印 <就叫输入重定向

验证

终端本身也是文件的一种

他存储在/dev/pts目录中

当我再打开一个终端时候

此时多了一个终端文件!

退出后终端文件又少了一个!

当然还有一个方式也可以更直观看出来

此时我的root 账号为文件0 新开的ubuntu账户为文件1

神不神奇!

所以 终端文件 得证!!

cp(拷贝)

好了终于到讲cp命令了

语法:cp [选项] 源文件或目录 目标文件或目录

功能: 复制文件或目录

他不仅拷贝了个新的文件 还拷贝了内容 。

当然也可以拷贝到别的目录下!


那么能否拷贝目录?

因为目录是树状结构 没发直接拷贝 所以要加个-r选项

当然 也可以拷贝到指定路径下

此时我们先创建一个a/b/c的目录

输入cp -r 123 a/b/c指令

总结

拷贝的时候不光内容拷贝进去 更是把 属性也基本拷进去了

14.mv 指令

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files,经常用来备份文件或者目录

语法: mv [选项] 源文件或目录 目标文件或目录

功能:

  1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
  2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
  3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
cpp 复制代码
mv hello.txt .. 把hello.txt 文件移动到上级目录

移动前:

移动后:

当然也可以移动回当前目录

这个指令相当于 Windows下的 剪切+拷贝

那移动文件呢?

此时则是直接移动了过去 不再需要-r


当然mv还可以用来重命名 比如说我们此时想要重命名 hello.txt

也可以重命名目录
总结:只要你输入的名字 不可查找 这里就会默认为重命名!!

15.cat(查看目标文件的内容)

语法: cat [选项] [文件]

功能: 查看目标文件的内容

常用选项:

  • -b 对非空输出行编号,空行不做编号
  • -n 对输出的所有行编号
  • -s 不输出多行空行

此时我们往fcy.txt文件中添加一个空行

这是用-n打印的结果 空行是带编号的

此时用-b 发现空行不带编号了

然后-s直接就把多行转成一行空了

所以cat很适合查看小文件的内容 因为内容一旦过长 就会导致刷屏

tac(逆向输出内容)

16. more or less(推荐)(类似cat)

more

more指令

语法: `more 选项``

功能: more命令,功能类似 cat

常用选项:

  • -n 指定输出行数
  • q 退出more
  • more是 Linux系统中经典的分页查看工具,主要用于逐屏显示文件内容(按 Enter 键逐行滚动,按空格键翻页),相比cat的一次性输出,更适合查看长文件。
    除了你提到的选项,more还有一些实用操作(在查看文件时输入):
    空格:显示下一屏内容
    Enter:显示下一行内容

但是 我们并不推荐 使用more

less

  • less工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大
  • less的用法比起more更加的有弹性,在more的时候,我们并没有办法向前面翻,只能往后面看
  • 但若使用了less时,就可以使用pageuppagedown等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容
  • 除此之外,在less里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

语法: less [参数] 文件

功能: less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。


选项:

  • -i 忽略搜索时的大小写
  • -N 显示每行的行号
  • /字符串: 向下搜索"字符串"的功能
  • ?字符串: 向上搜索"字符串"的功能
  • n: 重复前一个搜索(与 / 或?有关)
  • N: 反向重复前一个搜索(与 / 或?有关)
  • q:quit
    比如 我输入/ 999

    再按下n(重复前一个搜索)

    用途
    例如:查看日志文件
    比如 在/var/log 文件中查找messages 也就是日志的信息
    cat 查直接就全屏幕了 但是用less就方便多了。

17. head&&tail

head与tail就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head用来显示档案的开头至标准输出中,而tail想当然就是看档案的结尾。

语法:head [参数]... [文件]...

功能:

head用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。

选项:

  • -n 行数 显示的行数(可以省略)

tail

tail 命令从指定点开始将文件写到标准输出。使用 tail 命令的 -f 选项可以方便的查阅正在改变的日志文件,tail -f filename 会把 filename 里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容。

语法: tail 必要参数 [文件]

功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。

选项:

  • -f 循环读取
  • -n<行数> 显示行数(可以省略)

|(管道)

| 管道:一定有入口出口 本质是用来传送资源的

在指令中 可以 把前的输出 作为后的输入来使用

这里就是把第四行最为末尾 输出最后3行!

甚至于可以head -1000 xxx | tail -100 | less 使用less功能查看。

所以管道的存在 可以让不同的命令组合在一起!

18.date(指定格式显示时间)

用法: date [OPTION]... [+FORMAT]

  1. 在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
  • %H :小时(00...23)
  • %M :分钟(00...59)
  • %S :秒(00...61)
  • %X :相当于 %H:%M:%S
  • %d :日(01...31)
  • %m :月份(01...12)
  • %Y :完整年份(0000...9999)
  • %F :相当于 %Y-%m-%d

date直接使用 就是输出当前时间

不同格式下的输出

时间戳

  • 时间->时间戳:date +%s
  • 时间戳->时间:date -d@1508749502
  • Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数。

可以把时间戳转换成正常时间

19.cal(显示日历)

cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。"阳历"又名"太阳历",系以地球绕行太阳一周为一年,为西方各国所通用,故又名"西历"。

命令格式: cal 参数 [年份]

功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份

常用选项:

  • -3 显示系统前一个月,当前月,下一个月的月历
  • -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
  • -y 显示当前年份的日历

该指令默认部分机器是没有的 需要安装

以ubuntu环境下举例apt install -y ncal


20.find

  • Linux下find命令在目录结构中搜索文件,并执行指定的操作。
  • Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
  • 即使系统中含有网络文件系统(NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
  • 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。

语法: find pathname -options

功能: 用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)

常用选项

  • -name 按照文件名查找文件
  • 其他选项需要在查,这个命令其实比较复杂

    以递归的方式 输出根目录下 所有带有.c的文件

我们未来所学的大部分指令 本质都是可执行文件

21.which

功能:搜索系统指定的命令


这个bin就是二进制的意思

这里不建议把自己的代码拷贝到该目录下 因为会污染系统的命令池

#22. file

file 指令是一个用于识别文件类型的工具,它通过分析文件的内容(而非文件名后缀)来判断文件的格式和类型

23.whereis

功能:用于找到程序的源、二进制文件或手册(在系统指定路径下进行搜索)

24.alias(别名)

取消别名

拓展

比如命令行 直接执行的ls并不是真正的ls 而是

a的颜色 这个就是差别


你自己取的别名 是内存级别的 当你下次登录的时候或者切换账号时候 别名自动消失

25.grep指令

语法: grep [选项] 搜寻字符串 文件

功能: 在文件中搜索字符串,将找到的行打印出来

常用选项:

  • -i:忽略大小写的不同,所以大小写视为相同
  • -n:顺便输出行号
  • -v:反向选择,亦即显示出没有'搜寻字符串'内容的那一行

自动提取999关键字。

过滤2090-2099中 包含8的

-v则是反向提取

26.top

用于实时监控系统进程和资源使用情况的命令行工具,能够动态显示系统的 CPU 使用率、内存占用、进程状态等关键信息,是系统管理员排查性能问题的常用工具。

d是秒。

htop(增强版本的top)

Ubuntu 系统:
apt install -y htop

CentOS系统:
yum install -y htop

27.zip/unzip 指令

语法:zip 压缩文件.zip 目录或文件

功能:将目录或文件压缩成zip格式

常用选项

  • -r:递归处理,将指定目录下的所有文件和子目录一并处理

为什么要打包压缩?

为了进行网络传输,将多文件变成一个文件,可以增加下载效率。

利用本地效率换网络传输的效率。

压缩解压普通目录

test文件压缩成test.zip

解压缩。

压缩解压特殊目录(目录里面有东西)

需要加上一个-r选项 表示递归

我们将b.zip移到b文件夹内解压缩

解压到指定地点

解压到指定地点需要使用-d选项

此时我们返回目录a 再次压缩一次test 并将其解压后放到c

效果如下:

关于rz sz

这个工具用于机器和远端的 Linux 机器通过 Shell 传输文件. 安装完毕之后可以通过拖拽的方式将文件上传过去.

cpp 复制代码
yum/apt install -y lrzsz

使用 rz 命令从本地向服务器上传文件,sz命令从服务器向本地下载文件。

28. tar 指令(重要)

打包/解包,不打开它,直接看内容

语法:tar [-cxtzjvf] 文件与目录

参数:

  • -c:建立一个压缩文件的参数指令(create 的意思);
  • -x:解开一个压缩文件的参数指令!
  • -t:查看 tarfile 里面的文件!
  • -z:是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
  • -j:是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
  • -v:压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
  • -f:使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
  • -C: 解压到指定目录

普通压缩

压缩:

移除test 后解压:

解压到指定目录

这里就不详细演示了。

tar xzf XXX -C 指定路径

scp(远程拷贝)

机器一:传输lesson5.tgz到另一个服务器

机器2:

总结:

29.bc(内置计算器)

bc命令可以很方便的进行浮点运算

退出:quit

30.uname 指令

语法:uname [选项]

功能:uname用来获取电脑和操作系统的相关信息。

补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。

常用选项:

  • -a或--all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
  • lsb_release -a:查看操作系统版本
  • -r 只会显示内核版本和架构

31.查看CPU或者内存方面的信息

CPU cat /proc/cpuinfo

执行该命令后,会输出与 CPU 相关的详细参数

lscpu

主要输出 CPU 的架构、核心数、线程数、频率等汇总信息

32.关机

语法:shutdown [选项]

常见选项:

  • -h:将系统的服务停掉后,立即关机。
  • -r:在将系统的服务停掉之后就重新启动
  • -t sec:-t 后面加秒数,亦即「过几秒后关机」的意思

注意:别没事关机云服务器 服务器是不能关的!可能上面有程序在上面跑。

当然还有一点就是 云服务器你是花了钱的 bro 你干嘛关呢?

4.重要的几个热键

  • Tab按键---具有「命令补全」和「档案补齐」的功能(按两下)
  • Ctrl-c按键---让当前的程序「停掉」
  • Ctrl-d按键---通常代表着:「键盘输入结束(End Of File, EOF 或 End Of Input)」的意思;另外,它也可以用来取代exit
  • Ctrl-r按键---对用于搜索历史命令。操作方式:按下 Ctrl + R 后,终端会显示 reverse-i-search 提示,此时输入你想查找的命令关键字,终端会自动匹配历史记录中包含该关键字的最近一条命令。如果匹配的不是你想要的,可以继续按 Ctrl + R 切换到更早的匹配项,找到目标命令后按回车键即可执行,或按左右方向键编辑后再执行。
  • !(命令记录)

    比如你输入ls -la后输入!l系统会自动调用ls -la

5.shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们称之为"核心(kernel)",但我们一般用户,不能直接使用kernel。而是通过kernel的"外壳"程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:

  • 将使用者的命令翻译给核心(kernel)处理。
  • 同时,将核心的处理结果翻译给使用者。
    对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
    shell对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。
  • 帮助理解:如果说你是一个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你心动的女孩小花。你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花,而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的bash
相关推荐
A小辣椒2 天前
TShark:Wireshark CLI 功能
linux
A小辣椒2 天前
TShark:基础知识
linux
AlfredZhao2 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao3 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334663 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪3 天前
linux 拷贝文件或目录到指定的位置
linux
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush44 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5204 天前
Linux 11 动态监控指令top
linux