Linux基本指令介绍
目录
前言
指令操作与图形化界面的对比
adduser
passwd
whoami
ls指令
pwd指令
cd指令
touch指令
mkdir指令
rmdir指令 && rm 指令
man指令
cp指令
mv指令
cat(显示文件内容(全部),且不可修改的)
重定向
输出重定向
追加输出重定向
输入重定向
more指令
less指令
head指令&&tail指令
date指令
Cal指令
find指令(非常重要)
grep指令
zip/unzip指令:
tar指令(重要)
bc指令
uname –r指令(查看内核版本,体系结构)
编辑 重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
shutdown-关机
指令的本质
shell命令以及运行原理
前言
之前给大家介绍了LInux操作系统的历史以及教大家自己配置了一个属于自己的操作系统,那么我们今天就给大家介绍一些基本指令,教会大家如何去基础的这款操作系统。
指令操作与图形化界面的对比
对于指令操作大家没接触过的肯定对其有点迷茫,但是我们对标我们的图形化界面的操作,可以说两者都是我们用于操作系统的一种方式,但是对于图像化界面的操作我们在我们的日常接触的比较多,也比较熟悉,而我们的指令操作,对应的可能就是图形化界面的鼠标的一次点击,文件的一次创建等等,可能大家比较有疑问的就是既然我们图形化操作这么方便我们为什么要使用指令去操作一个操作系统呢?
首先一点就是我们企业对应的服务器运行的操作系统是不需要图形化界面的,图形化界面的增加反而是我们的一种累赘,还有就是命令行的系统在执行效率上更快,而我们的图形化界面是经过多次封装运行速度反而得到了更加的缓慢,此外指令是操作系统直接为我们提供的操作接口,我们对其的操作也更加的贴合操作系统。
adduser
之前我们在搭建好Linux环境后,我们此时的用户只有我们的超级用户,但是在我们后续的指令学习中,只有通过普通用户才会让我们对指令和操作系统的相关知识有着更好的理解,所以我们的adduser指令的作用就是我们用来创建普通用户的。这里我给大家简单演示一下:
这里我们使用我们的超级用户创建用户xhj3,然后我们使用我们的ls指令(马上介绍),打开我们存储的用户目录的 home目录下,发现我们的xhj3用户创建成功。
passwd
这个指令是给我们的用户进行密码设置的指令,这里我们建议我们的普通用户不要设置和root账号一样的密码,那么具体操作如下:
这里说明一下,我们在输入密码时,屏幕是不回显的,这就需要我们输入时自己注意。
那么创建好普通用户后我们就可以自己登入到我们的普通用户了,这里我给大家说明一下登入的步骤:
首先ssh 对应用户名 公网ip
然后弹出我们对应的窗口:
输入我们刚刚设置的密码即可。
这样我们就登入成功了。
whoami
这是用于我们查询我们当前登入用户的指令,比如:
在介绍下面这些的指令之前,我需要给大家说明我们文件的组成,大家都看过我们windows操作系统下的文件:
这里的文件展示包含了我们对应的文件属性,而我们的文件本质上也就是:文件内容+文件属性,而我们对文件的操作也就是对文件内容的操作or对文件属性的操作。那么我们就看到我们第一个指令。
ls指令
语法: 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 一行只输出一个文件。
对于这么多选项,大家看到肯定特别头疼,但是我们并不需要去特殊去记忆,日常生活中我们只需要使用几个常见得,对于特殊情况,我们可以去查看相应得文档进行解决,这里我简单给大家简单演示一下几个常用选项:
ls -l:
ls -a:
这里我们发现,我们出现了一下以 . 开头的文件,而这个就是我们文件中的隐藏文件,具体的我们继续往下看。
ls -a -l (组合使用):
这里我们发现我们的文件不仅显示了详细的文件信息,也显示了我们的隐藏文件,那么这里对应的一些文件相关,我给大家简单介绍一下
这里我们的 . 文件以及 ..文件是什么呢?
Linux任何一个目录下都有两个隐藏文件 ./..
.. 指的是我们当前路径的上级路径
. 表示的是当前路径,该存在的意义是帮用户定位当前目录的下一个文件
pwd指令
语法: pwd
功能:显示用户当前所在的目录
常用选项:无
具体使用如下:
这里显示的就是我存在的当前目录路径。
cd指令
介绍这个指令前,我需要给大家普及Linux操作系统的路径的相关知识。
在Linux中/有两种身份:
1.一串路径分隔符,Linux /,win \
2./ 我们称之为”根目录“
基本上,所有的操作系统,组织文件的方式,都是树型结构,多叉树,Linux也不例外
对于Linux操作系统,他的叶子节点,一定是空目录或者非空目录,路上节点一定是一个非空目录
所以我们定义一个文件,通常用路径来定位
绝对路径:我们把/开始定位到指定位置,具有唯一性的路径叫做绝对路径
相对路径:我们以自己当前所处的路径为起始参照位置,来进行特定文件的定位,我们就把这种路径叫做相对路径。
对于绝对路径和相对路径使用:
1.绝对路径往往是比较长,但是不变,一般在一些固定场景,配置文件中使用
2.一般命令行输入,比较常用相对路径
那我们为什么会使用”路径“这样的方式进行文件定位?原来这种定位方式,具有唯一性。,而我们们的cd指令就是通过对应路径进入相应得目录,也相当于windows操作系统下的双击进入某个目录的操作,那么具体使用如下:
语法:cd 目录名
功能:改变工作目录。
举例:cd .. : 返回上 目录
cd /home/litao/linux/ : 绝对路径
cd ../day02/ : 相对路径
cd ~:进入用户家目(~指的是当前用户的主工作目录)
具体的我给大家演示一下:
touch指令
语法:touch [选项]... 文件...
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
常用选项:
-a 或--time=atime或--time=access或--time=use只更改存取时间。
-d 使用指定的日期时间,而非现在的时间。
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
-m 或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间,而非现在的时间。
touch指令我们可以用其创建一个普通文件,而不是目录,对于普通文件和目录的区别,我想大家应该也都知道,但是Linux区分普通文件和目录的方式是:
这里我们简单给大家创建一个普通文件:
mkdir指令
语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname”的目录
常用选项:
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
mkdir –p test/test1 : 递归建立多个目录
也就是:
这里如果我们需要查看我们的目录结构,我们可以使用tree指令,但是需要自己在root账户下安装,安装指令如下;yum install -y tree.这里我给大家看一下我们刚刚安装好的目录结构。
rmdir指令 && rm 指令
rmdir是一个与mkdir相对应的命令。mkdir是建立目录,而rmdir是删除命令。
语法:rmdir [-p] [dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
rm命令可以同时删除文件或目录(所以一般使用中我们都只使用rm指令)
语法:rm [-f-i-r-v] [dirName/dir](rm 不带·默认选项删除的是普通文件)
适用对象:所有使用者
功能:删除文件或目录
常用选项:
-f 即使文件属性为只读(即写保护),亦直接删除(强制删除并且不提示)
-i 删除前逐一询问确认(在超级用户目录的文件,删除后会自动询问)
-r 删除目录及其下所有文件(递归式)
这里我给大家演示一下:
这里我们就可以发现dir2连同该子目录和文件都被全部删除。
man指令
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是man
语法: man [选项] 命令
常用选项
-k 根据关键字搜索联机帮助
num 只在第num章节找(当man指令后面没有接数字(直接接命令),它是从手册的第一章开始按顺序往后访问)
-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
这里的手册我们一共分为8章
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)
3 是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfifig
cp指令
语法:cp [选项] 源文件或目录 目标文件或目录(同一个目录下不能存在同名文件,所以我们这里的目标文件和源文件如果在同一个目录中是不可以同名的)(所以我们这里的目标文件可以用同目录下的不同名文件,也可以是其他路径的同名(不同名)文件)
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理(通常用于拷贝目录)
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
这里给大家演示一下:
mv指令
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) fifiles),是Linux系统下常用的命令,经常用来备份文件或者目录。
语法: mv [选项] 源文件或目录 目标文件或目录
功能:
1. 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
这里先给大家演示一下:
当mv 文件名 目录名(这里只是单纯的将该文件移到我们指定的目录)
mv mytext.c dir/text.c
这里发生了先将mytext.c移到了dir目录下,然后重命名为text.c
当 mv 源文件名 目标文件名(这里做的是将文件重命名,但这里也可以写为 mv 源文件名 ./目标文件(这里我们其实也是我们理解上的剪切和重命名同时进行,但是我们剪切的时候只是把该文件移到当前文件))
对于目录操作其实大部分和文件操作是一致的,但是这里我们需要考虑到的是
比如:mv dir1 ../newdir
这里有两种情况,当newdir不存在时,我们这里进行的操作就是将dir1目录移到上一个目录,然后重命名为newdir,
当newdir存在时,就是将dir1文件移入newdir目录
用选项:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
cat(显示文件内容(全部),且不可修改的)
语法:cat [选项] [文件]
功能: 查看目标文件的内容(只能显示文件)
常用选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行(有连续多行的空行会压缩成一行空行输出)
在使用cat指令之前,我们需要先在一个文件中写入内容才可以该大家具体展示,这里我们需要使用到echo和我们的 >>,这里echo的功能大家可以认为是将该后面的文本内容写入到某个文件中。而如果我们后面不接文件,该会直接将其打印在屏幕上(在Linux中我们现阶段可以将其理解为该中一切皆文件,我们的屏幕也是对应的文件),那么接下来我给大家具体演示一下:
那么我们的 >>的作用就是将其写入到,对应的其他文件,那么接下来我们往文件中写一点内容,去给大家演示一下,cat命令的作用。
重定向
上面大家简单的看到了追加重定向的用法,但是对于具体的作用大家暂时还不了解,那么这里小编就给大家简单的介绍,三个重定向符号。
输出重定向
输出重定向的符号是:>
作用:这里 >的作用是将原本要写入其他文件的内容写到我们>后指定的文件当中。
这里我给大家简单的演示一下:
这里我们还发现一个问题就是,我们这里连续写入两次hello world,但是我们的文件当中并没有两条对应语句,这里我们就可以发现,我们输出重定向其实是:向文件进行写入的时候,覆盖文件
该本质上是:
1.先清空文件
2.再写入到文件当中
所以我们也可以使用 > 文件名 ,去自动清理一个文件,例如:
这里我们的text.txt就已经被清理了。
那么我们该如何将文件中如何在上一次写入的基础是继续写入相应内容呢?相信大家通过我们上面对于cat文本的相关演示已经发现了。我们的追加输出重定向就是起到这个作用。
追加输出重定向
那么具体的我们已经演示过了,这里大家只需要记住其作用是在进行内容写入时不对文件进行清空,直接会重我们上次写入的位置继续写入。
输入重定向
输入重定向这里我举一个例子给大家解释一下:
这里首先cat后面不跟文件表示的是后重键盘读到什么就输出什么(默认从输入设备读取,然后打印到显示器),但是cat< 文件名 这里表示原本是从键盘读取现在是从指定文件读取打印到屏幕,这里也就叫做输入重定向(这里其实和 cat 文件名是有区别的,但是这里得到的效果是一致的)
所以通过上面我们就可以理解为,输入重定向是将原本的输入文件改为其他输入文件。
more指令
(只给我们打印一屏幕的文件内容,按回车后会自动进行下翻,适合自顶向下看文件内容)
语法:more [选项][文件]
功能:more命令,功能类似 cat
常用选项:
-n 对输出的所有行编号
q 退出more
/字符串(向下搜索相关内容)
/数字(会给我们直接跳转到某行的内容)
对于该指令的介绍,我们需要搞一些大文本文件,而这里需要使用到我们的一些脚本,这里大家不用去理解该含义,可以直接使用:
cnt=0; while [ $cnt -le 10000 ]; do echo "hello Linux $cnt"; let cnt++; done
这里的意思就是输出10000行的hello Linux。
这里我们将输出内容写入text.txt文件,然后我们使用more指令进行查看,查看结果如下:
这里我们可以发现该输入了一屏内容,在我标红的位置可以进行,相关搜索指令,进行搜索。
less指令
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜
语法: less [参数] 文件
功能:
less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
选项:
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:quit
这里我们继续给大家演示一下:
用less打开文件后,这里就可以输入相关命令进行相关搜索的指令,这里大家可以自己去尝试一下。
head指令&&tail指令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然就是看档案的结尾。
语法: head [参数]... [文件]...
功能:head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
选项:
-n<行数> 显示的行数
语法: tail[必要参数][选择参数][文件]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
-f 循环读取
-n<行数> 显示的行数
这里我们分别使用一下,看看对应效果:
这里我们看到一个输入前10行,一个输出后10行。但是我们这两个一起讲解的原因还有一点是,我们这里可以使用该两个指令去截取对应文本的部分。
但是在讲解之前需要给大家讲解一下,管道命令,也就是:
| 管道:是用来数据传导的
| 一种符号会被系统解释成为管道文件(内存级)
管道是可以级联多条命令的,每条命令的结果输出,都作为输入,导入下一条命令。
正是由于管道这个特性,那么我们就可以让head去截取一个文本的前n行,然后其作为一个输入导入tail指令,然后让tail指令截取head截取片段的后面一部分,那么也就实现了片段的截取。
这里假设我们需要截取40行到59行的数据,那么我们做法如下:
date指令
date 指定格式显示时间: date +%Y:%m:%d
date 用法:date [OPTION]... [+FORMAT]
1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
%H : 小时(00..23)
%M : 分钟(00..59)
%S : 秒(00..61)(显示的是时间戳,从1970年的某一天到现在)
%X : 相当于 %H:%M:%S
%d : 日 (01..31)
%m : 月份 (01..12)
%Y : 完整年份 (0000..9999)
%F : 相当于 %Y-%m-%d
这里我们在Linux操作系统下,我们的时间打印出来的格式是固定的,所以我们就可以自己去设置格式
2.时间戳
时间->时间戳:date +%s
时间戳->时间:date -d@(时间戳数字)1508749502
Cal指令
cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。
命令格式: cal [参数][月份][年份]
功能: 用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999),如有两个参数,则表示月份和年份
常用选项:
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
cal 接年份,查看该年份的日历信息。
演示如下:
find指令(非常重要)
Linux下find命令在目录结构中搜索文件,并执行指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。
语法: find pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
-name 按照文件名查找文件
对于查找指令,我们除find指令之外,下面这两条也是我们需要经常使用到的:
which:可以在指令路径下(/uesr/bin),搜索我们对应的指令文件
whereis:在系统特定的路径下查找,既可以找到可执行程序,又可以找到手册,安装包压缩包之类
下面我给大家分别演示一下他们的作用:
这里我们可以看到他们都展示了他们对应路径下的文件。
grep指令
语法: grep [选项] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
-r:递归式的将一个目录下的所有对应内容都打印出来
演示如下:
zip/unzip指令:
语法: zip 压缩文件.zip 目录或文件
功能: 将目录或文件压缩成zip格式
常用选项:
-r 递 归处理,将指定目录下的所有文件和子目录一并处理(不加选项-r,默认只对我们指定的文件/目录进行压缩)
打包和压缩:
1.能被打包和压的,一定是一个整体,由多个文件->一个文件->不容易造成文件丢失
2.打包压缩,可以让我们文件体积变小,而体积较大,就会导致下载时间变长,和存储空间变大
这里的聚体使用如下:
压缩文件:
这里我们将目录dir1进行了压缩,这里产生了压缩文件dir.zip文件。
解压缩:
对于解压缩,这里有个选项,大家需要注意一下
-d选项将我们的文件和目录解压到指定目录
那我们实际操作一下,看看效果:
这里我们将刚压缩好的文件,解压到dir1目录,我们可以看到我们的dir1目录下,多了一个dir1目录。
tar指令(重要)
打包/解包,不打开它,直接看内容
选项如下:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-C : 解压到指定目录
那么通过上面的选项就构成了我们常用的几个选项,所达到的内容:
tar czf XXX --打包压缩
tar tzf XXX.tgz==预览
tar xzf XXX.tgz---解压文件(tar打包后缀,.gz压缩后缀)
那么我们再来实际操作一下:
bc指令
bc命令相当于Linux的计算器,可以很方便的进行浮点运算
这里简单的给大家演示一下:
uname –r指令(查看内核版本,体系结构)
-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
[Tab]按键---具有『命令补全』和『档案补齐』的功能[Ctrl]-c按键---让当前的程序『停掉』[Ctrl]-d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exitCtrl-r-----检索历史使用过的指令(这也就说明我们的Linux会自己记录历史命令(Linux会记录默认记录最新的1000条(可以修改)))
shutdown-关机
语法:shutdown [选项] 常见选项:
-h : 将系统的服务停掉后,立即关机
-r : 在将系统的服务停掉之后就重新启动
-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思
如果是后面购买了云服务器,尽量不要使用shutdown来关机,因为云服务器一般都要保证服务器一直在线,使用exit或者ctrl+d退出即可
指令的本质
给大家介绍了一堆指令,通过这些指令我相信大家肯定已经能基础的控制我们的操作系统了,那么指令到底是一种什么东西呢?
其实我们的指令就是可执行程序,那么指令是如何我们直接写出来就会调用的呢?原来在执行指令之前,我们需要先在系统中查找指令,而我们的指令是在系统中特定的路径下存在的(/uesr/bin)
这里我们进入相应的bin目录就可以看到我们一些存在于系统中指令,既然指令是可执行程序,那么我们也可以将我们的可执行程序移到该目录下,那么我们的可执行程序也可以当作命令使用,但是我们不建议大家这么做。
shell命令以及运行原理
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
-
将使用者的命令翻译给核心(kernel)处理。
-
同时,将核心的处理结果翻译给使用者。
(本质上我们的指令最终都需要在操作系统中运行,但是我们直接使用操作系统难度较高)
对比windows GUI(图形化界面),我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户
命令行解释器存在的意义:
1.进行命令解释
2.保护操作系统,对用户的非法请求直接进行拦截
命令行解释器只是一个统称,相当于一个软件,所以它也是有着它自己的不同类型解释器的名称的而我们经常使用的就是bash
相关文章:

Linux基本指令介绍
目录 前言 指令操作与图形化界面的对比 adduser passwd whoami ls指令 pwd指令 cd指令 touch指令 mkdir指令 rmdir指令 && rm 指令 man指令 cp指令 mv指令 cat(显示文件内容(全部),且不可修改的)…...
C++服务器框架开发1——项目介绍/分布式/#ifndef与#pragma once
该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。 其教学视频见:[C高级教程]从零开始开发服务器框架(sylar) C服务器开发1——项目介绍/分布式/#ifndef与#pragma once 项目介绍分布式#ifndef与#pragma once 最近开始学习下C的项目开发,找了很多…...

Tensorflow2基础代码实战系列之双层RNN文本分类任务
深度学习框架Tensorflow2系列 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark …...
Python爬虫-快手photoId
前言 本文是该专栏的第49篇,后面会持续分享python爬虫干货知识,记得关注。 笔者在本专栏的上一篇,有详细介绍平台视频播放量的爬取方法。与该平台相关联的文章,笔者已整理在下方,感兴趣的同学可查看翻阅。 1. Python如何解决“快手滑块验证码”(4) 2. 快手pcursor 3. …...

软件测试人员如何为项目的质量保障兜底?看完你就明白了...
上线前层层保障 01文档管理 关键词:需求文档、设计文档、测试文档 1.需求和设计产出方为产品、开发,测试需要做好流程监督,这里重点说下测试文档。 2.测试文档,从业务领域来说,一般有测试计划、测试用例、业务总结文…...

《幸福关系的7段旅程》
关于作者 本书作者安德鲁∙马歇尔,英国顶尖婚姻咨询机构RELATE的资深专家,拥有 30年丰富的咨询经验,并为《泰晤士报》《观察家》和《星期日快报》撰写专栏文章。已出版19部作品,并被翻译成20种语言。 关于本书 《幸福关系的7段…...
使用Python中PDB模块中的命令来调试Python代码的教程
这篇文章主要介绍了使用Python中PDB模块中的命令来调试Python代码的教程,包括设置断点来修改代码等、对于Python团队项目工作有一定帮助,需要的朋友可以参考下 你有多少次陷入不得不更改别人代码的境地?如果你是一个开发团队的一员,那么你遇…...

Codeforces Round 764 (Div. 3)
比赛链接 Codeforces Round 764 A. Plus One on the SubsetB. Make APC. Division by Two and PermutationD. Palindromes ColoringE. Masha-forgetful A. Plus One on the Subset Example input 3 6 3 4 2 4 1 2 3 1000 1002 998 2 12 11output 3 4 1题意: 你可…...

四月,收割12家offer,面试也太容易了吧....
前言 下面是我根据工作这几年来的面试经验,加上之前收集的资料,整理出来350道软件测试工程师 常考的面试题。字节跳动、阿里、腾讯、百度、快手、美团等大厂常考的面试题,在文章里面都有 提到。 虽然这篇文章很长,但是绝对值得你…...

Xubuntu22.04之自动调节亮度护眼redshift(一百七十四)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...

Spark基础学习笔记----RDD检查点与共享变量
零、本讲学习目标 了解RDD容错机制理解RDD检查点机制的特点与用处理解共享变量的类别、特点与使用 一、RDD容错机制 当Spark集群中的某一个节点由于宕机导致数据丢失,则可以通过Spark中的RDD进行容错恢复已经丢失的数据。RDD提供了两种故障恢复的方式,…...
ES6(对象,数组,类型化数组)
对象 1,Object.is 用于判断两个值是否相等, 其内部实现类SameValue算法, 其行为类似于“” 但与“”不同的是 它认为两个NaN是相等的 而0,-0是不相等的 2,Object.assign 表示此方法可以将对象合并成一个 他的第一个…...

JVM系列-第12章-垃圾回收器
垃圾回收器 GC 分类与性能指标 垃圾回收器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 从不同角度分析垃圾收集器,…...

零操作难度,轻松进行应用测试,App专项测试之Monkey测试完全指南!
目录 前言: 一、 Monkey测试的基础参数 1.1 事件类型参数: 1.2 覆盖包 1.3 事件数量 二、 Monkey测试的高级参数 2.1 稳定性级别 2.2 策略参数 2.3 包含选项参数 三、 附加代码 四、 总结 前言: 在移动应用的开发过程中࿰…...

Linux安装Docker(这应该是你看过的最简洁的安装教程)
Docker是一种开源的容器化平台,可以将应用程序及其依赖项打包成一个可移植的容器,以便在不同的环境中运行。Docker的核心是Docker引擎,它可以自动化应用程序的部署、扩展和管理,同时还提供了一个开放的API,可以与其他工…...
使用AES算法加密技术集成Java和Vue保护您的数据,代码示例和算法原理
1 算法的原理: AES是一种对称加密算法,也就是说加密和解密使用的是同一个密钥。其基本原理是将明文分成固定大小的块(128位),然后使用密钥对每个块进行加密操作,最后生成密文。在加密过程中,还需要使用一个向量(IV)来增加安全性,避免相同的明文块生成相同的密文块。…...

vcruntime140_1.dll丢失怎样修复,推荐4个vcruntime140_1.dll丢失的修复方法
vcruntime140_1.dll文件是Microsoft Visual C Redistributable for Visual Studio 2015运行库的一部分,它是一个用于支持Visual C构建的应用程序的系统文件。这个文件包含了在运行C程序时所需要的函数和类库,主要负责向应用程序提供运行时环境。如果电脑…...

快来试试这几个简单好用的手机技巧吧
技巧一:相机功能 苹果手机的相机功能确实非常出色,除了出色的像素之外,还有许多其他实用功能可以提升拍摄体验。 这些相机功能提供了更多的选择和便利性,使用户能够更好地适应不同的拍摄需求。 自拍功能:通过选择自…...

OneDrive同步角标消失 - 解决方案
问题 在电脑端使用OneDrive时,文件管理器OneDrive文件夹内的文件会在左下角显示同步状态,如下图。若没有显示同步角标,则此功能出现异常,下文介绍如何显示同步角标。 值得一提的是,同步角标只起到显示作用࿰…...

自学网络安全【黑客】,一般人我劝你还是算了吧
前言:我是劝一般人算了,看你是一般人还是。。。 一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全2.不要刚开始就深度学习网络安全3.收集适当的学习资料4.适当的报班学习二、学习网络安全的些许准备 1.硬件选择2.软件选择3.外语能力三、网…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...

【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...