目录

Linux中的基本指令上

Linux中的基本指令(上)


今天我们正式开启我们的linux之旅!

我们先从指令开始!

ls指令

语法:ls [选项] [目录或文件]

功能:对于目录,显示该目录下的所以子目录和文件,对于文件,列出文件名以及其他信息。

常⽤选项:

  • -a列出⽬录下的所有⽂件,包括以.开头的隐含⽂件。
  • -l列出⽂件的详细信息
  • -d将⽬录像⽂件⼀样显⽰,⽽不是显⽰其下的⽂件。如:ls‒d指定⽬录
  • -i输出⽂件的i节点的索引信息。如ls‒ai指定⽂件
  • -k以k字节的形式表⽰⽂件的⼤⼩。ls‒alk指定⽂件
  • -r对⽬录反向排序
  • -R列出所有⼦⽬录下的⽂件。(递归)
  • -s在l⽂件名后输出该⽂件的⼤⼩。(⼤⼩排序,如何找到⽬录下最⼤的⽂件)
  • -1⼀⾏只输出⼀个⽂件。
  • -t以时间排序
  • -F在每个⽂件名后附上⼀个字符以说明该⽂件的类型,“*”表⽰可执⾏的普通⽂件;“/”表⽰ ⽬录;“@”表⽰符号链接;“|”表⽰FIFOs;“=”表⽰套接字(sockets)。(⽬录类型识别)

我们来演示以下:

https://i-blog.csdnimg.cn/direct/3dfb4aff31a24d87bbbd2afc665be3de.png

当然我们的命令行选项可以组合使用:

https://i-blog.csdnimg.cn/direct/960c9f1260ec4976b36164d91d8c0561.png

判断linux中文件

在windows中我们常常看文件的后缀(.txt,.zip,.c等)来区分文件,而在linux中我们不看后缀来区分文件,简单来说,linux不关心文件后缀!

我们来看看怎么来区分linux中的文件:

https://i-blog.csdnimg.cn/direct/bd1a742a45e240cc914fb87a08ed16ce.png

pwd指令

语法:pwd

功能:显示用户当前路径

如:

https://i-blog.csdnimg.cn/direct/87a76936c5af4253b9c8f638cf5799fe.png

认识路径

  • Linux系统中, 磁盘上的⽂件和⽬录被组成⼀棵⽬录树,每个节点都是⽬录或⽂件
  • 其中普通⽂件⼀定是⽬录树的叶⼦节点
  • ⽬录可能是叶⼦(空⽬录),也可能是路上节点
  • 理解路径存在的意义: 树状组织⽅式,都是为了保证快速定位查找到指定的⽂件,⽽定位⽂件就 需要具有唯⼀性的⽅案来进⾏定位⽂件。其中任何⼀个节点,都只有⼀个⽗节点,所以,从根⽬ 录开始,定位指定⽂件, 路径具有唯⼀性。

目录树:

https://i-blog.csdnimg.cn/direct/f6c2034aed5d47a5b6d4a55ffb3bee89.png

绝对路径/相对路径

绝对路径: ⼀般从/开始,不依赖其他⽬录的定位⽂件的⽅式。

绝对路径⼀般不会随着⽤⼾的路径变化⽽丧失唯⼀性,⼀般在特定服务的配置⽂件中经常被使⽤

如:

https://i-blog.csdnimg.cn/direct/ad13b18719be43d39e88505a406d5e88.png

相对路径: 相对于当前⽤⼾所处⽬录,定位⽂件的路径⽅式。

相对路径因为它的便捷性,⼀般在命令⾏中使⽤较多。

如:

https://i-blog.csdnimg.cn/direct/e92bb6d89da8457d864f83666b30902c.png

https://i-blog.csdnimg.cn/direct/2d089d8439b142128743d04507c033be.png

解释:

https://i-blog.csdnimg.cn/direct/f46cb55380d34e4781ee2498327838fc.png

进一步解释:

我们不难发现不管哪个目录(哪怕是空目录)都有 . 和 . . 文件。

https://i-blog.csdnimg.cn/direct/5997afbff53a4d3e99c7ff069a287f11.png

cd指令

语法:cd 指定路径

功能:改变工作目录

接上之前理解:

https://i-blog.csdnimg.cn/direct/2d0d794f113a4757b4d78309ce2bc167.png

cd - :去最近的路径。

如:

https://i-blog.csdnimg.cn/direct/d48d125ded234a6ca963cc80eb8c28f1.png

简要理解用户

每⼀次新建⼀个用户都会在
/home ⽬录
下为新用户创建新的⼯作⽬录,⽬录以新用户名称命名,而root用户在安装操作系统的时候,就已经内置了工作⽬录
/root

理解家目录

我们知道 . 代表当前目录,. . 代表上一级目录,现在 ~ 代表家目录!

任何一个linux用户,用某个用户登陆linux系统时,默认在家目录下!

https://i-blog.csdnimg.cn/direct/56d85354c7aa4d5db775cda6c69346a6.png

echo指令和printf指令

语法:echo  ….

功能:打印后续内容(将后续内容当作字符串)

https://i-blog.csdnimg.cn/direct/8c376651301e46218770729a37515d4b.png

但是printf和echo还有不同,printf没有如果不加\n,就没有换行,而echo是默认换行!

https://i-blog.csdnimg.cn/direct/8911597bcd1f415e96f81233be97cdd0.png

touch指令

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

功能:touch命令参数可更改⽂档或⽬录的⽇期时间,包括存取时间和更改时间,或者 新建⼀个不存在的⽂件。(只能新建普通文件,不能新建文件夹)

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

如:

https://i-blog.csdnimg.cn/direct/5aaca5210bad4531927cc48b12596db5.png

https://i-blog.csdnimg.cn/direct/e7d5e496962e44c6bc7e72f0b98a8e8c.png

mkdir指令

语法:mkdir  [选项]  dirname

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

常用选项:

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

例子:

https://i-blog.csdnimg.cn/direct/fb918b48dd7f4e34ad198454c8f2198d.png

https://i-blog.csdnimg.cn/direct/5b80c4c646af439891f4b1543f9ab03a.png

cat指令

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

功能:查看文件的内容

常用选项:

  • -b对⾮空输出⾏编号
  • -n对输出的所有⾏编号
  • -s不输出多⾏空⾏

https://i-blog.csdnimg.cn/direct/14c5eafa1a174c38b17ee73e316ba013.png

https://i-blog.csdnimg.cn/direct/d52bb796a54e40da81bf1036a990b344.png

tree指令

语法:tree 路径

功能:显示该路径下的所有文件

例子:

https://i-blog.csdnimg.cn/direct/ed7be83d606e41bebfb8b5cfbdd9b27b.png

rmdir指令和rm指令

rmdir是⼀个与mkdir相对应的命令,mkdir是建⽴⽬录,⽽rmdir是删除命令。

语法:rmdir  [选项] dirname

功能:删除目录

常用选项:

  • -p当⼦⽬录被删除后如果⽗⽬录也变成空目录的话,就连带父目录⼀起删除。

例子:

https://i-blog.csdnimg.cn/direct/c8d69fe15a4e4a9cab86ac1e613feb38.png

https://i-blog.csdnimg.cn/direct/42208ac43f7948dd92332e3c89ae03b0.png

注意:rm命令可以同时删除⽂件或⽬录

rm常用选项:

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

例子:

https://i-blog.csdnimg.cn/direct/84838cf6ee7c49188f2b2ee2413c1c38.png

https://i-blog.csdnimg.cn/direct/9574b2e3a0c54b258e81b0a865f3c03c.png

man指令

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

语法:man [选项]  dirname

常用选项:

  • -k根据关键字搜索联机帮助
  • num只在第num章节查找
  • -a将所有章节的都显⽰出来,⽐如manprintf它缺省从第⼀章开始搜索,知道就停⽌,⽤a选 项,当按下q退出,他会继续往后⾯搜索,直到所有章节都搜索完毕

解释⼀下:man⼿册分为9章(不同系统可能会有差别)

  • 1是普通的命令
  • 2是系统调⽤,如open,write之类的(通过这个,⾄少可以很⽅便的查到调⽤这个函数,需要加什么 头⽂件)
  • 3是库函数,如printf,fread4是特殊⽂件,也就是/dev下的各种设备⽂件
  • 4是包含设备文件、文件格式和约定等信息。设备文件通常位于/dev目录下,代表系统中的硬件设备或特殊文件。文件格式和约定则描述了特定类型文件的格式和结构。
  • 5是指⽂件的格式,⽐如passwd,就会说明这个⽂件中各个字段的含义
  • 6是给游戏留的,由各个游戏⾃⼰定义
  • 7是附件还有⼀些变量,⽐如像environ这种全局变量在这⾥就有说明
  • 8是系统管理⽤的命令,这些命令只能由root使⽤,如ifconfig
  • 包含内核例程、核心数据结构和重要的设备驱动程序等

例子:

https://i-blog.csdnimg.cn/direct/bb9dea58972f4192a8650c5803ed365b.png

cp指令

语法:cp [ 选项 ] 源⽂件或⽬录 ⽬标⽂件或⽬录

功能:复制⽂件或⽬录

常用选项:

  • -f或–force强⾏复制⽂件或⽬录,不论⽬的⽂件或⽬录是否已经存在
  • -i或–interactive 覆盖⽂件之前先询问⽤户
  • -r递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符 号链接,则⼀律视为普通⽂件处理

说明:

  1. cp指令⽤于复制⽂件或⽬录
  2. 如同时指定两个以上的⽂件或⽬录,且最后的⽬的地是⼀个已经存在的⽬录,则它会把前⾯指定 的所有⽂件或⽬录复制到此⽬录中

例子:

单个文件拷贝:

https://i-blog.csdnimg.cn/direct/d3a8228b58434578bc108bbbdd1da0f2.png

多个文件拷贝:

https://i-blog.csdnimg.cn/direct/c0fd5cf3d4e940bb960ee0573151069b.png

目录拷贝:

https://i-blog.csdnimg.cn/direct/09f4f3400a0444f9b07e04fac8dd9e8c.png

覆盖:

https://i-blog.csdnimg.cn/direct/8fa5ae3d31824f2b8b70fd4076398106.png

which指令

语法:which  指令名

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

例子:

https://i-blog.csdnimg.cn/direct/8c56757a5989415eb2a243b00fcaa7d3.png

alias 指令

功能:设置命令的别名

https://i-blog.csdnimg.cn/direct/ccd9bbef532d45d0adeef8f48579dd02.png

date指令

指定格式显⽰时间: date +%Y:%m:%d

⽤法: date [OPTION]… [+FORMAT]

在显⽰⽅⾯,使⽤者可以设定欲显⽰的格式,格式设定为⼀个加号后接数个标记,其中常⽤的标记 列表如下:

https://i-blog.csdnimg.cn/direct/5aaf5a2dc92e4a7997eea808c0f0dcae.png

在设定时间⽅⾯:

https://i-blog.csdnimg.cn/direct/205646a9d2d1487690518d94c8001f66.png

时间戳:

  • 时间->时间戳:date+%s
  • 时间戳->时间:date-d@1508749502
  • Unix时间戳(英⽂为Unixepoch,Unixtime,POSIXtime或Unixtimestamp)是从1970年1⽉1 ⽇(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒

例子:

https://i-blog.csdnimg.cn/direct/88c19f3f91c643888abd7a39febd60b3.png

cal指令

cal命令可以⽤来显⽰公历(阳历)⽇历。公历是现在国际通⽤的历法,⼜称格列历,通称阳历。“阳 历”⼜名“太阳历”,系以地球绕⾏太阳⼀周为⼀年,为西⽅各国所通⽤,故⼜名“西历”。

语法:cal 参数 [ 年份 ]

功能:⽤于查看⽇历等时间信息,如只有⼀个参数,则表⽰年份(1-9999),如有两个参数,则表⽰⽉份 和年份

常⽤选项:

  • -3显⽰系统前⼀个⽉,当前⽉,下⼀个⽉的⽉历
  • -j 显⽰在当年中的第⼏天(⼀年⽇期按天算,从1⽉1号算起,默认显⽰当前⽉在⼀年中的天数)
  • -y 显⽰当前年份的⽇历

例子:

https://i-blog.csdnimg.cn/direct/a4eba12d5b0c404fa216d18dad20d4d3.png

理解文件

学习了上面的指令,我们对linux中的文件有了基本认识!

我们可以知道一个 目录其实就是一个文件夹 ,这个文件夹里面可以继续有目录(文件夹)或者普通文件!

目录==文件夹!

继续理解:

如果建立一个空文件,这个空文件也会占据磁盘空间!因为它还有属性(文件名,建立时间等)

文件==属性+内容!

所有我们现在学习文件,不是对文件属性操作就是对内容操作!

继续深入理解:

其实Linux中的指令也是文件!

图理解:

https://i-blog.csdnimg.cn/direct/411e5e154de14410878286526822ce18.png

甚至我们可以自己写一个C/C++文件当指令:

https://i-blog.csdnimg.cn/direct/92edb9d8209f4207baccd43dfaf1bb78.png

由于内容过多,我们下期见!