Linux常见指令

文章目录

  • 一. 操作系统简述
  • 二. Linux 下基本指令
    • 01. ls 指令
    • 补充知识点 1 (关于路径)
    • 02. pwd 指令
    • 03. cd 指令
    • 04. touch 指令
    • 05. mkdir 指令
    • 06. rmdir 指令 && rm 指令
    • 07. man 指令
    • 补充知识点 2 (开发三种环境)
    • 08. cp 指令
    • 09. mv 指令
    • 10. alise 指令
    • 补充知识点 3 (命令的本质)
    • 11. echo 指令
    • 补充知识点 4 (Linux下一切皆文件)
    • 12. cat 指令
    • 13. more 指令
    • 14. less 指令
    • 15. head 指令
    • 16. tail 指令
    • 补充知识点 5 (命令行管道)
    • 17. 时间相关的指令
    • 补充知识点 6 (日志与时间戳)
    • 18. Cal 指令
    • 19. find 指令
    • 20. grep 指令
    • 21. sort 指令
    • 22. uniq指令
    • 23. zip/unzip 指令
    • 24. tar 指令
    • 25. uname -r 指令
    • 26. 其他一些获取系统信息的指令
    • 27. 重要的几个热键
    • 28. 扩展命令

一. 操作系统简述

计算机软硬件体系结构是层状结构, 如下图:
Linux常见指令_第1张图片

操作系统是进行软硬件资源管理软件

操作系统是系统软件, 不是硬件
负责管理协调硬件, 软件等计算机资源的工作
向上提供良好稳定的运行服务

二. Linux 下基本指令

先有的指令系统, 再有的图形化界面.
指令操作和图形化操作本质上没有区别, 只是形式上不同.

01. ls 指令

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

ls列出当前目录的所有文件名

在这里插入图片描述


ls -l列出文件的详细信息, l 相当于 list
一般会直接 ll 简写

这是文件的属性列表, 包括文件权限, 大小, 文件名, 创建时间等等.
Linux常见指令_第2张图片

由此可以看到, 文件包括文件内容文件属性
我们学习文件操作, 也就是学习对文件内容文件属性的操作

文件内容可以为 0, 但是只要一个文件存在, 他一定会有文件属性.
虽然在 windows 中创建一个空文件, 打开属性设置显示该文件为 0 字节.
Linux常见指令_第3张图片

但是存储这些属性信息也是需要空间的, 所以一个空文件也是占据空间的.


ls -a 列出目录下的所有文件, 包括以 . 开头的隐含文件

Linux常见指令_第4张图片

在每个目录里, 都一定会有两个隐含文件:
一个是 ., 一个是 ..

.: 代表当前路径
..: 代表上级路径


补充知识点 1 (关于路径)

关于路径
什么叫做路径呢?
在 Linux 下, 路径是由 / 进行间隔的一串字符串. 例如: /usr/bin
两斜杠之间一定是一个目录或者路径, 最后一个名称可能是文件或者目录

为什么要有路径呢? 为了唯一找到一个文件

Linux 整体目录是一个多叉树的样子

Linux常见指令_第5张图片

根据树的结构可以得到以下结论:

  • 叶子结点一定是普通文件或者空文件夹
  • 非叶子结点一定是目录
  • 访问一个文件的本质, 就是先通过路径找到文件本身
  • 路径的本质就是多叉树搜索路径
  • 每个结点只有一个父结点, 向上具有唯一性, 反过来向下也就具有唯一性. 根据唯一的路径可以找到目标文件.

绝对路径: 从根目录开始的形成的路径(无论处在哪里, 都能唯一锁定一个文件) /root/usr/bin/
相对路径: 相对于自身所处目录为参考点的路径. 例如上图, 现在所处bit目录, 想访问到passwd的路径是: ../etc/passwd

使用 tree 指令, 就可以看到指定目录的树状图
Linux常见指令_第6张图片


ls -d 将目录像文件一样显示, 而不是显示其下的文件.
一般会配合 -l, 这样就可以看到指定目录的属性信息了
在这里插入图片描述

ll -d / 也可以看到显示出了信息, / 是系统的根目录

在这里插入图片描述


02. pwd 指令

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

pwd 全称为 print work direction

会显示自根目录到当前目录的路径

在这里插入图片描述


03. cd 指令

语法: cd 目录名
功能: 改变工作目录. 将当前工作目录改变到指定的目录下

cd .. 返回上级目录

Linux常见指令_第7张图片


cd /usr/bin 按绝对路径访问
在这里插入图片描述


cd ../test_02 按相对路径访问
Linux常见指令_第8张图片


cd ~ 进入用户家目录

此时的用户是 root , 直接进入 root 下的目录 /root

若是普通用户, 则会进入 /home/xxx
在这里插入图片描述

默认登陆的时候, 默认登陆时所处的路径就是当前家目录.
在 windows 就是桌面, 桌面也是一个文件夹, 叫 /Desktop


cd - 返回最近访问目录

Linux常见指令_第9张图片

04. touch 指令

语法: touch[选项]...文件...
功能: touch 命令参数可更改文档或目录的日期时间, 包括存取时间和更改时间, 或者新建一个不存在的文件.

touch file1.txt 在当前目录下创建一个名为 file1.txt 的空文件
Linux常见指令_第10张图片

05. mkdir 指令

语法: mkdir[选项]dirname
功能: 在当前目录下创建一个名为 dirname 的目录

mkdir 1 在当前目录下创建一个名为 1 的空目录

Linux常见指令_第11张图片


mkdir -p a/b/c 递归建立 a/b/c 目录

Linux常见指令_第12张图片

06. rmdir 指令 && rm 指令

rmdir是一个与mkdir相对应的指令. mkdir时建立目录, 而rmdir是删除目录

语法: rmdir[-p][dirName]
适用于对象: 具有当前目录操作权限的所有使用者
功能: 删除空目录

rmdir a 失败
rmdir 1 成功

Linux常见指令_第13张图片


rm 命令可以同时删除文件或目录
语法: rm[-f-i-r-v][dirName/dir]
适用对象: 所有使用者
功能: 删除文件或目录

rm file1.txt 删除 file1.txt 文件
Linux常见指令_第14张图片


rm -f 不用询问就能删除

Linux常见指令_第15张图片


rm -r 递归的删除目录下所有文件
Linux常见指令_第16张图片

递归删除相当于深度优先遍历叶子结点, 返回时删除

rm -rf ./* 删除当前目录的所有文件, 不删除隐藏文件

* 是通配符, 指指定路径下的所有文件

Linux常见指令_第17张图片


07. man 指令

Linux 的命令有很多参数, 我们不可能全部都记住, 可以通过联机手册获取帮助. 访问 Linux 手册的指令是 man
语法: man[选项]命令
常用选项:

  • -k: 根据关键字搜索联机帮助
  • num: 只在 num 章节找
  • -a: 将所有的章节都显示出来

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


如果使用 man 找不到某个章节, 输入指令 yum install -y man-pages, 为什么环境里没有呢, 这里就要引入三种开发环境.

补充知识点 2 (开发三种环境)

开发三种环境

  1. 开发环境
  2. 测试环境
  3. 生产环境: 真实线上环境, 写完测完真正给用户提供服务的地方, 不能随便动.

一般来说, 各厂商提供的云服务器都是生产环境, 是非常干净的操作系统, 不会安装开发强相关的工具, 这里的 man-pages 就是一种.


man man 查看 man 的相关资料
Linux常见指令_第18张图片

man 3 printf 查看库函数中 printf 的资料

Linux常见指令_第19张图片

08. cp 指令

语法: cp[选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp 指令用于复制文件或目录, 如同时指定两个或两个以上的文件或目录, 且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中. 若同时指定多个文件和目录, 而最后的目的地并非一个已存在的目录, 则会出现错误信息.

cp -f 强制复制文件或目录, 不论目的文件或者目录是否存在
Linux常见指令_第20张图片


cp -i 覆盖文件前先询问用户
Linux常见指令_第21张图片


cp -r 递归处理目录

Linux常见指令_第22张图片


拷贝不会拷贝隐藏文件, 因为

  1. 如果用户知道要拷贝隐藏文件, 肯定会手动拷贝
  2. 如果用户不知道隐藏文件的存在, 肯定不会想拷贝它们

09. mv 指令

mv 命令是 move 的缩写, 可以用来移动文件或者将文件改名(move (rename) files), 是 Linux 系统下常用的命令, 经常用来备份文件或者目录.
语法: mv[选项] 源文件或目录 目标文件或目录
功能:

  1. mv 命令中第二个参数的类型不同(是目标文件还是目标目录), mv 命令将文件重命名或将其移至一个新的目录
  2. 当第二个参数类型是文件时, mv 命令完成文件重命名. 此时, 源文件只能有一个(也可以是原目录名), 它将所给的源文件或者目录重命名为给定的目标文件名.
  3. 当第二个参数是已存在的目录名称时, 源文件或目录参数可以有多个, mv 命令将各参数指定的源文件均移至目标目录中
    常用选项
    -f 如果目标文件已经存在, 不会询问直接覆盖
    -i 如果目标文件已经存在, 就会询问是否覆盖

mv file.txt file1.txtfile.txt 改名为 file1.txt
Linux常见指令_第23张图片


mv a aaa 改名为 aa

Linux常见指令_第24张图片


mv file1.txt try_grep aa/b 移动多个文件到已存在目录

Linux常见指令_第25张图片

10. alise 指令

对指令重命名.
语法: alise [指定命令]='[命令+选项]'


补充知识点 3 (命令的本质)

命令的本质就是可执行文件

例如, 在 /usr/bin 里存放的都是指令, 都是可执行文件

在这里插入图片描述

yum 就是 python 写的

Linux常见指令_第26张图片


比如写了一个打印 HelloLinux 的程序
在这里插入图片描述

可以使用 alias 指令将其修改为 hello

在这里插入图片描述

如果不将 alias hello='./test' 放在配置文件 ~/.bashrc 中, 重启终端该指令就会失效.

11. echo 指令

echo 默认将输入的字符串输出到显示器上

在这里插入图片描述


echo [内容] > [文件名] 可以将内容输出重定向入指定文件中, 如果该文件不存在, 会自动创建一个.

Linux常见指令_第27张图片


补充知识点 4 (Linux下一切皆文件)

Linux 下一切皆文件

通过 > 输出重定向, 本来应该是在显示器上显示的, 现在显示在文件当中.

向显示器打印就是向显示器文件的内容写入.
键盘写入文件的同时回显在显示器上, 显示器的读方法是空, 键盘的写方法是空.

那么各种各样的设备, 都有读方法和写方法.
大部分硬件也都有读方法, 有些硬件的写方法为空.

Linux 就想用统一思想来解决读写文件和设备.
Linux 设计者设计了Linux 下一切皆文件的设计理念.

虽然提高了 Linux 系统的编码维护成本, 但是更为统一方便.


注: 直接 >[文件名] 可以创建新文件或者清空一个文件

Linux常见指令_第28张图片

重定向会覆盖历史内容, 不想覆盖可以使用追加重定向 >>

echo "111111" >> c 追加一行内容到 c

Linux常见指令_第29张图片

12. cat 指令

语法: cat[选项][文件]
功能: 查看文件的内容
常用选项:

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

cat c

Linux常见指令_第30张图片


cat -b c
Linux常见指令_第31张图片


cat -n c
Linux常见指令_第32张图片


cat -s c
Linux常见指令_第33张图片

cat 不跟文件名 输入什么, cat 就打印什么
Linux常见指令_第34张图片

cat 从键盘读取了什么, 就向显示器文件显示什么.
默认读取的时候是从键盘文件中读入的, 如果添上了文件就是从文件中读入的.
也就是说 cat 文件 相当于 cat < 文件 把本来应该从键盘读取的内容改为从普通文件进行输入

总结:
> 按 w 打开
>> 按 a 打开
< 按 r 打开

13. more 指令

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

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

more 只能按回车, 不推荐使用

14. less 指令

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

语法: less[参数] 文件
功能: lessmore 类似, 但是 less 可以随意浏览文件.
选项:

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

15. head 指令

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

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

  • -n<行数> 显示的行数

head file.txt

Linux常见指令_第35张图片


head -3 file.txt

Linux常见指令_第36张图片

16. tail 指令

tail 命令从指定点开始将文件写道标准输出.
使用 tail 命令的 -f 选项可以方便的查阅正在改变的日志文件, tail -f filename 会把 filename 里最尾部的内容显示在屏幕上, 并且不断刷新, 使你看到最新的文件内容.
语法 tail[必要参数][选择参数][文件]
功能 用于显示指定文件末尾内容, 不指定文件时, 作为输入信息进行处理. 常用查看日志文件.
选项

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

Linux常见指令_第37张图片


补充知识点 5 (命令行管道)

关于命令行管道

如果想显示第 8001 - 8010 行该怎么办呢

第一种想法:
先用 head 把前 8010 行的内容输入重定向至一个 tmep 文件
再用 tail 把最后 10 行显示出来
Linux常见指令_第38张图片

但是这样会多出一个中间文件

第二种想法
使用管道, 直接将前一条命令的输出交给第二条指令的输入

Linux常见指令_第39张图片

head 默认是输入重定向至显示器文件, 而 | 是一个管道, 将本应放入显示器文件的内容放入管道中, 再使用 tail 指令将管道文件中的内容作为输入.

这是一种流水线作业处理.


17. 时间相关的指令

date 显示
date 指定格式显示时间 date +%Y%m%d
date 用法 date[OPTION]...[+FORMAT]

在显示方面, 使用着可以设定欲显示的格式, 格式设定为一个加号后接数个标记, 其中常用的标记列表如下

%H: 小时
%M: 分钟
%S: 秒
%X: 相当于 %H:%M:%S > %d: 日
%m: 月份
%Y: 年份
%F: 相当于 %Y-%m-%d

在这里插入图片描述

在这里插入图片描述


时间戳

时间->时间戳:date + %s

在这里插入图片描述

时间戳->时间: date -d@0, 得到时间戳为 0 的时间

在这里插入图片描述

Unix 时间戳是从 1970 年 1 月 1 日(UTC/GMT 的午夜)开始所经过的秒数, 不考虑闰秒.


补充知识点 6 (日志与时间戳)

关于软件开发的日志与时间戳

Unix 时间戳是 1970-1-1 午夜 到现在所经过的秒数, 这表示时间戳是 递增且可以进行范围查找的

时间可以完美运用在日志中, 日志是辅助程序员进行问题排查的.

程序会定时打印软件的情况, 如果程序挂掉, 程序员就可以通过日志了解到程序挂掉的信息, 其中就包括很重要的时间信息.

日志等级分为: DEBUG, Normal, Warning, Fatal.


18. Cal 指令

cal 指令可以用来显示(阳历)日历. 公历是现在国际通用的历法.

命令格式 cal[参数][月份][年份]
功能 用于查看日历等时间信息, 如只有一个参数, 则表示年份, 如有两个参数, 则表示月份和年份.

常用选项

-3 显示系统前一个月, 当前月, 下一个月的月历
-j 显示在当年中的第几天
-y 显示当前年份的日历

Linux常见指令_第40张图片

Linux常见指令_第41张图片


19. find 指令

  • Linux 下 find 命令在目录结构中搜索文件, 并执行指定的操作.
  • Linux 下 find 命令提供了相当多的查找条件, 功能很强大. 由于 find 具有强大的功能, 所以它的选项也很多.

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

常用选项 -name 按照文件名查找文件, 支持 *?

Linux常见指令_第42张图片

第一次查的时候需要慢慢找,如果短时间内还要查找同一名称的文件,速度会快很多,因为之前的结果被放在了缓存中。

which 可以查指令

在这里插入图片描述

whereis 可以查包含指令在内的文档、库。

在这里插入图片描述

20. grep 指令

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

grep 'A' c 在 c 文件中查找 ‘A’ 贪心策略查找

Linux常见指令_第43张图片


grep -i 'A' c 忽视大小写
Linux常见指令_第44张图片


grep -n 顺便输出行号

Linux常见指令_第45张图片


grep -v 反响选择,显示没有符合的那一行

Linux常见指令_第46张图片


grep 与管道结合可以更好的查找到需要的信息
例如: ps ajx | grep 'sleep' 查找睡眠进程

在这里插入图片描述

21. sort 指令

按顺序显示文件内容

sort c

Linux常见指令_第47张图片

sort -r c 逆向排序

Linux常见指令_第48张图片

22. uniq指令

相邻重复行进行压缩, 只会显示一行

uniq c

在这里插入图片描述


uniq -u 仅显示出现一次的行

Linux常见指令_第49张图片


uniq -d 仅显示出现多次的行

Linux常见指令_第50张图片


uniq -c 去重并统计重复行
那么结合 sortuniq指令和管道 就可以把重复行去重

Linux常见指令_第51张图片


结合上面的几个查看文件内容的相关指令,如果要查看出现 1 的不重复行的行数,以下指令即可
cat c | grep '1' | sort | unique | wc -l

Linux常见指令_第52张图片

23. zip/unzip 指令

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

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

zip -r test_01.zip test_01/test_01 所有文件夹打包

Linux常见指令_第53张图片


unzip test_01.zip -d ./tmp

Linux常见指令_第54张图片

24. tar 指令

在 Linux, 更多的是用到 tar 指令, 这个指令既包括打包, 也包括解包

tar 指令相关的文件是 .tar.gz 也可写成 .tgz

tar -czf xxx.tgz xxx 打包压缩指名
tar -xzf xxx.tgz 解包解压默认包名
tar -cvzf xxx.tgz xxx 显示过程
tar -xvzf xxx.tgz 显示过程
tar -xvzf xxx.tgz -C xxx 解包解压显示过程制定目录(目录必须存在)

25. uname -r 指令

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

uname -a 显示体系结构信息

体系结构信息, 狭义上指CPU架构(x86…), 广义上指 软件+硬件的体系结构

uname -a

在这里插入图片描述

26. 其他一些获取系统信息的指令

cat /etc/redhat-release 商业化发行版

在这里插入图片描述

cat /proc/cpuinfo CPU信息

Linux常见指令_第55张图片

cat /proc/meminfo 内存信息

Linux常见指令_第56张图片

27. 重要的几个热键

[TAB] 按键—具有[命令补全]和[档案补齐]的功能
[Ctrl]-c 按键—让当前的程序[停掉]
[Ctrl]-d 按键—[键盘输入结束(EOF)]或者exit
[history]查看历史输入的命令

28. 扩展命令

◆ 安装和登录命令: login、 shutdown、 halt、 reboot、 install、 mount、 umount、 chsh、 exit、 last;
◆ 文件处理命令: file、 mkdir、 grep、 dd、 find、 mv、 ls、 diff、 cat、 ln;
◆ 系统管理相关命令: df、 top、 free、 quota、 at、 lp、 adduser、 groupadd、 kill、 crontab;
◆ 网络操作命令: ifconfig、 ip、 ping、 netstat、 telnet、 ftp、 route、 rlogin、 rcp、 finger、 mail、 nslookup;
◆ 系统安全相关命令: passwd、 su、 umask、 chgrp、 chmod、 chown、 chattr、 sudo ps、 who;
◆ 其它命令: tar、 unzip、 gunzip、 unarj、 mtools、 man、 unendcode、 uudecode。

本章完.

你可能感兴趣的:(Linux系统编程及网络编程,linux,服务器)