【Linux】基本指令,拥抱Linux的第一步

Linux基本指令

就像我们当初学习使用Windows一样我们总要从最开始简单操作学起例如点击双击认识一些文件夹文件怎么进去文件夹怎么打开文件等等这些操作。我们开始学习使用Linux也是学习一些基本的操作。在此之前我希望来先谈一谈指令。

首先说明我们使用指令与计算机进行交互其实和我们在Windows下用鼠标点击等等一些操作其实没有区别只是Windows做了一个图形化界面降低了使用的门槛而已但是为什么Linux使用指令使用指令有什么好处呢

使用指令的特点

  • 指令是操作系统直接为我们提供的操作接口因此指令操作能让我们更贴近操作系统
  • 图形化界面其实是封装过后的指令因此指令操作的效率更高

因此在企业级开发中我们都是使用命令行界面。

指令的本质

我们知道Linux操作系统是通过一个个指令来进行操作的但是指令到底是什么呢为什么输入这个指令就能够执行一些操作呢

在Linux中一切皆文件这是一个很重要的特点。

所以一个个的指令本质其实就是一个个可执行程序结尾的文件例如Windows中就是我们编译代码后生成的.exe文件就是可执行程序文件。

那我们怎么来验证呢我们可以先一段代码然后将它编译后生成一个可执行程序看看怎么运行它。

image-20230425171910073

image-20230425171938143

通过./a.out就可以运行了而我们执行一些系统的指令例如ls等等为什么不用加路径呢既然它们都是可执行文件为什么我们自己写的就要加路径。

其实只要你愿意你也可以将自己的可执行程序放到特定的路径下面但是并不推荐这么做。当然为了验证我们可以试一下

image-20230425172543171

mytest是我们刚才写的可执行程序a.out只是重新命名了一下。这时候可以看到不加路径也可以执行我们自己写的可执行文件了。

总结指令的本质就是可执行程序。和我们自己写的没有任何区别。所以不要觉得指令多么奇特不要去神话它。

那么怎么知道指令在哪里这里也有一个which用来查看指令在哪里

image-20230505132102370

其中的alias是代表别名例如图中 ll 就等价于ls -l 后面的color就是配色我们也可以自己来为指令定义别名

image-20230505132725939

如果不想要了直接将内容改为空或者直接退出xshell再重新登录也会自动删掉虽然有办法让它留下来但是并不推荐这样的方式否则学的多了哪个是自己起的别名哪个是系统指令可能都搞混了。

ls指令

语法 ls [选项] [目录或文件]
功能对于目录该命令列出该目录下的所有子目录与文件。对于文件将列出文件名以及其他信息。

ls很好理解简单来说就是显示当下有什么但是它还有一些选项。

image-20230425173252911

显然我们只看名称肯定是不够的有时还要看一些文件的详细信息这时候在指令的基础上多了一些选项

-a 列出目录下的所有文件包括以. 开头的隐含文件。
-d 将目录象文件一样显示而不是显示其下的文件。 如ls –d 指定目录
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。
-n 用数字的 UID,GID 代替名称。 
-F 在每个文件名后附上一个字符以说明该文件的类型“*”表示可执行的普通文件“/”表示目录“@”表示符号链接
“|”表示FIFOs“=”表示套接字(sockets)。
-r 对目录反向排序。
-t 以时间排序。
-s 在l文件名后输出该文件的大小。
-R 列出所有子目录下的文件。(递归)
-1 一行只输出一个文件

最常用的其实也就几个-a(显示隐藏文件)-l显示详细信息下面展示几个感兴趣下面可以自己试一下。

image-20230426131121336

pwd指令

语法: pwd
功能显示用户当前所在的目录
常用选项

image-20230426132652954

cd指令

Linux系统中磁盘上的文件和目录被组成一棵目录树每个节点都是目录或文件。

image-20230426154442298

语法cd 目录名

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

特殊用法

cd .. : 返回上级目录
cd /home/lzb/code/ : 绝对路径
cd ../code/ : 相对路径
cd ~进入用户家目
cd -返回最近访问目录

image-20230426154835324

总结来说cd这个命令和我们在Windows中点击一个目录是一样的效果。

touch指令

语法:touch [选项]… 文件…

功能touch命令参数可更改文档或目录的日期时间包括存取时间和更改时间或者新建一个不存在的文件。

常用选项

-a  或--time=atime或--time=access或--time=use只更改存取时间。
-c  或--no-create 不建立任何文档。
-d 使用指定的日期时间而非现在的时间。
-f 此参数将忽略不予处理仅负责解决BSD版本touch指令的兼容性问题。
-m  或--time=mtime或--time=modify 只更改变动时间。
-r 把指定文档或目录的日期时间统统设成和参考文档或目录的日期时间相同。
-t 使用指定的日期时间而非现在的时间

touch就是创建一个普通文件而不是目录。

mkdir指令(重要)

语法mkdir [选项] dirname…

功能在当前目录下创建一个名为 “dirname”的目录

常用选项

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

创建一个目录或者-p选项可以创建一串目录。

image-20230426155504907

rmdir&&rm指令(重要)

有创建目录和文件就要有删除。rmdir和mkdir相对mkdir是创建目录rmdir是删除目录。

语法rmdir [-p] [dirName]

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

功能删除空目录

常用选项:

-p 当子目录被删除后如果父目录也变成空目录的话就连带父目录一起删除

rm 命令可以同时删除文件或目录

语法rm [-f-i-r-v] [dirName/dir]

适用对象所有使用者

功能删除文件或目录

常用选项

-f 即使文件属性为只读(即写保护)亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件

man指令重要

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

语法: man [选项] 命令

常用选项

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

解释一下,面手册分为8章

image-20230426160713090

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

cp指令重要

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

功能复制文件或目录

说明cp指令可以复制文件和目录同时指令两个以上的文件或目录且最后一个必须为已经存在的目录否则会出现错误信息。

常用选项

-f 或 --force 强行复制文件或目录 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理将指定目录下的文件与子目录一并处理。若源文件或目录的形态不属于目录或符号链接则一律视为普通文件处理
-R 或 --recursive递归处理将指定目录下的文件及子目录一并处理  

image-20230508130653058

mv指令重要

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

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

功能

  1. 视mv命令中第二个参数类型的不同是目标文件还是目标目录mv命令将文件重命名或将其移至个新的目录中。

  2. 当第二个参数类型是文件时mv命令完成文件重命名此时源文件只能有一个也可以是源目名它将所给的源文件或目录重命名为给定的目标文件名。

  3. 当第二个参数是已存在的目录名称时源文件或目录参数可以有多个mv命令将各参数指定的源文件移至目标目录中。

常用选项

-f force 强制的意思如果目标文件已经存在不会询问而直接覆盖
-i 若目标文件 (destination) 已经存在时就会询问是否覆盖。

image-20230508131811981

如果没有目标文件或目录就会自动创建。所以也可以用来重命名

image-20230508132050416

因为Linux下删除一个文件就是真的删除了并不像Windows一样有回收站可以恢复所以我们可以将rm改造一下改为mv的功能防止误删重要文件。

将rm改造成mv
vim ~/.bashrc #修改这个文件
mkdir -p ~/.trash
alias rm=trash
alias ur=undelfile
undelfile() {
mv -i ~/.trash/\$@ ./
}
trash() {
mv $@ ~/.trash/
}  

但是现在并不推荐等以后学的知识足够了再来能看懂这段脚本的时候再来做。

重定向

  • 输出重定向“>”

image-20230508133706123

本来echo是将字符串输出到显示器文件但是通过重定向输出到了文件test中。

  • 追加重定向“>>”

image-20230508134210027

追加重定向则是向文件末尾追加内容。图中有换行是因为echo自带如果用printf则不会有自动的换行。

image-20230508134312857

  • 输入重定向‘<’

image-20230508134455819

从文件中读取数据给cat显示在显示器文件。输入重定向相对来说是最难理解的但是没有关系之后会深入理解。

cat指令

语法cat [选项] [文件]

功能 查看目标文件的内容

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

cat用来查看文件里的内容有几个选项可以使用

image-20230508135131592

通常将两个选项连起来即可区别就是对空行是否编号。

more指令

语法more [选项] [文件]
功能more命令功能类似 cat
常用选项

-n 对输出的所有行编号
q 退出more  

image-20230520164749045

less指令重要

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

语法 less [参数] 文件

功能less与more类似但使用less可以随意浏览文件而more仅能向前移动却不能向后移动而且less在查看

之前不会加载整个文件

选项

-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串向下搜索“字符串”的功能
?字符串向上搜索“字符串”的功能
n重复前一个搜索与 / 或 ? 有关
N反向重复前一个搜索与 / 或 ? 有关
q:quit  

head和tail指令

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

语法 head [参数]… [文件]…
功能head 用来显示档案的开头至标准输出中默认head命令打印其相应文件的开头10行。
选项

-n<行数> 显示的行数  

语法 tail[必要参数] [选择参数] [文件]
功能 用于显示指定文件末尾内容不指定文件时作为输入信息进行处理。常用查看日志文件。
选项

f 循环读取
-n<行数> 显示行数  

通常head和tail可以配合使用来截取一段内容

image-20230520171251989

这样就截取了1000到1020的20行内容。

这里的‘|’实际上是管道用来连接多个指令我们也可以配合更多指令

image-20230520171429236

date指令

date显示

date 指定格式显示时间 date +%Y:%m:%d
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  

image-20230520172153456

2.时间戳

时间->时间戳date +%s
时间戳->时间date -d@1508749502

Unix时间戳英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp是从1970年1月1日UTC/GMT的午夜开始所经过的秒数不考虑闰秒

image-20230520172712809

cal指令

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

命令格式 cal [参数] [月份] [年份]
功能 用于查看日历等时间信息如只有一个参数则表示年份(1-9999)如有两个参数则表示月份和年份
常用选项

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

显示日历

image-20230520174500401

find指令灰常重要

  • Linux下find命令在目录结构中搜索文件并执行指定的操作。

  • Linux下find命令提供了相当多的查找条件功能很强大。由于find具有强大的功能所以它的选项也很多其中大部分选项都值得我们花时间来了解一下。

  • 即使系统中含有网络文件系统( NFS)find命令在该文件系统中同样有效只你具有相应的权限。

  • 在运行一个非常消耗资源的find命令时很多人都倾向于把它放在后台执行因为遍历一个大的文件系 统可能会花费很长的时间(这里是指30G字节以上的文件系统)

语法 find pathname -options
功能 用于在文件树种查找文件并作出相应的处理可能访问磁盘

常用选项

-name 按照文件名查找文件

常见的搜索指令

image-20230519203306963

grep指令

语法 grep [选项] 搜寻字符串 文件
功能 在文件中搜索字符串将找到的行打印出来
常用选项

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

image-20230519212303281

通常配合管道来进行搜索

image-20230519212607191

应用场景例如在一个很长的文件中找到main函数。

image-20230519212928974

这样所有的入口就找到了。

查找特定的进程

image-20230519213150490

zip/unzip指令

语法 zip 压缩文件.zip 目录或文件
功能 将目录或文件压缩成zip格式
常用选项

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

image-20230519214816902

简单会使用即可。注意有目录是-r选项不能丢。

-d 解压到指定目录

image-20230519215059827

tar指令

和zip和unzip的区别简单来看在于可以打包/解包不打开它直接看内容

格式tar [-cxtzjvf] 文件与目录 …
参数

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

案例

image-20230520195249956

bc指令

bc就是一个简单一个计算器有时进行一些浮点数的计算很方便。

image-20230520175240212

uname -r 指令

语法uname [选项]
功能 uname用来获取电脑和操作系统的相关信息。
补充说明uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息

常用选项

-a或–all 详细输出所有信息依次为内核名称主机名内核版本号内核版本硬件名处理器类型硬件平台类型操作系统名称  

image-20230520181306833

如果问到你怎么查Linux系统的体系结构要查的就是uname -r当然既然谈到了系统再补充两个命令。

df指令用来查系统的一些内存使用情况

image-20230520181913074

lscpu查看cpu的相关信息

image-20230520181957864

重要的几个热键[Tab],[ctrl]-c, [ctrl]-d

[Tab]按键---具有『命令补全』和『档案补齐』的功能
[Ctrl]+c按键---让当前的程序『停掉』
[Ctrl]+d按键---通常代表着『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思另外他也可以用来取代exit  
[Ctrl]+r按键---查询指令只保存了最近的1千条。history可以来查看

shutdown关机

通常Linux一般应用在服务器上服务器是不能随便关机的一般除了重大的更新维护等都是一直运行的。

语法shutdown [选项]

常见选项

-h  将系统的服务关掉后立即关机
-r  在将系统的服务停掉之后重新启动
-t sec  -t 后面加秒数亦即『过几秒后关机』的意思  

shell命令以及运行原理

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

从技术角度Shell的最简单定义命令行解释器command Interpreter主要作用

  1. 将使用者的命令翻译给核心kernel处理
  2. 同时将核心的处理结果翻译给使用者

shell 对于Linux有相同的作用主要是对我们的指令进行解析解析指令给Linux内核。反馈结果在通过内核运
行出结果通过shell解析给用户。

我们最常用的就是bash指令就是通过bash来识别并分析的

image-20230520193235505

妈呀Linux是真的难写很多其实概念都是难以表述的总结起来也很费劲。难怪都和我说Linux很难学这个时间点也快期末了更新频率肯定也要降下来了愁死我了。但是我还是相信没有迈不过去的坎加油

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux

“【Linux】基本指令,拥抱Linux的第一步” 的相关文章