【Linux篇】一文详解linux常用命令 -- 附带部分指令在具体场景下的应用示例

前言

    😊嗯哼,作为一个linux系统的初学者,我十分推荐大家在了解linux之
前对于文件权限以及文件类型有一个大致的了解! 
    当然,如果你对这些已经有一个大致的了解, 那么请忽略这些废话!👻
    如果你不了解or不太了解
    那么, 请点击下面的传送门!👇
    [文件权限部分解析](http://t.csdnimg.cn/nu0C4)😜

一 什么是路径

    为什么要先说路径呢?  这是因为linux中的绝大多数指令在对文件进行
处理的时候,我们都要通过 path - 路径 去定位这个文件。
    你想对这个文件进行操作, 那你是不是得先找到这个文件呢!😊

🐋 说起路径, 初学者的第一印象一定是, 哦! 不就是小路嘛。通过这条路我们可以去往目的地。 是的, 字面意思的确如此。
🐋那如果在我们的文件系统中, 路径又代表什么呢, 类比路径的字面意思,它是不是就代表 找到指定文件的一条路呢,可以这样说, 但是不太准确
🐋在详细的说明路径是什么之前呢, 我们先了解以下linux系统中文件系统是个什么样的层次结构

1 linux文件系统的层次结构

1> Linux树状目录结构图

在这里插入图片描述

2> 什么是目录
  • 🐋什么是目录, 目录就相当于Windouws系统中的文件夹。可以存放各种类型的文件。 目录中既可以存放目录,也可以存放普通文件。
  • 🐋被存放的目录, 叫做子目录,子目录也可以继续向下储存目录或文件。 而普通文件中则是储存的信息
  • 🐋如果了解文件类型, 那么你当然知道, 目录也是文件的一种, 它的全名是目录文件。 像我们平常所说的目录指的目录文件, 文件指的是普通文件。
  1. 树状结构解析
  • 🐋文件系统的最顶层是由根目录开始的,系统使用“/”来表示根目录,在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含(子)目录或文件。如此反复就可以构成一个庞大的文件系统。
  • 🐋如果将整个文件系统看作是一棵多叉树, 那么从根目录开始, 每一个文件都可以被视为一个节点。
  • 🐋不同的是:
    - 有的是根节点 – 根目录
    - 有的是中间节点 – 位于文件系统中间的文件
    - 有的是叶节点 – 位于文件系统层次结构最底层的文件
  1. 根目录与家目录

什么是根目录? 什么是家目录

  • 🐋根目录 : 在文件系统中, 最顶层的 / 就是根目录。
    - 根目录是Linux文件系统的入口
    - 所有类型的文件都在根目录之下, 也就是储存在根目录或其子目录中
  • 🐋家目录 : 是根目录下的一个子目录
    - 用户登陆后, 当前所在路径便是家目录
    - root用户的家目录是 /root
    - 普通用户的家目录是 /home/userName
    - 可以使用指令 pwd 查看用户当前所在路径
    - root用户 pwd指令 显示为/root
    - 普通用户 pwd指令 显示为 /home/userName
    - 符号 ~ 也代表家目录 对于root用户 ~ 指的是 /root ; 对于普通用户 ~ 指的是 /home/userName
  1. 两个特殊目录

🐋在文件系统中存在两个特殊目录, 每一个目录文件不管是否为空都存在两个特殊目录, 它们分别是 . 当前目录 和 … 上级目录

  1. 这两个目录存在于每一个目录文件中
  2. 这两个目录都属于隐藏文件
  3.  .     --  当前目录
    
  4.  ..    --  上级目录  
    
  1. 根目录下部分子目录的介绍

根目录中储存着多个子目录

  • 子目录 – /bin
    1. 所有用户的二进制命令目录
    2. bin目录是根目录下的一个子目录, 其中存储了二进制可执行文件。
    3. 在单用户模式下, 你所使用的常用Linux指令都位于bin目录下
  • 子目录 – /sbin
    1. 系统管理的二进制命令目录
    2. 跟bin目录类似,
    3. 在这个目录下的Linux命令通常由root用户使用, 对系统进行维护
  • 子目录 – /etc
    1. 配置文件目录
    2. 二进制安装包的配置文件的默认存放路径
    3. 服务启动命令存放的目录
  • 子目录 – /dev
    1. 设备文件目录
    2. 在Linux系统上, 任何装置与周边设备都是以文件的形态存放在该目录
    3. 通过存取dev目录下的某个文件,就等于存取某个装置
  • 子目录 – /proc
    1. 进程信息及内核信息目录
    2. 这个目录本身是一个虚拟文件系统
    3. 它存储的数据放置在内存当中,因此它本身不占任何硬盘空间
  • 子目录 – /var
    1. 变量文件目录
    2. var目录主要针对常态性变动的文件 例如 缓存 。
  • 子目录 – /tmp
    1. 临时文件目录
    2. 存放着系统和用户创建的临时文件
    3. 当系统重新启动时, 这个目录下的文件都将被删除
  • 子目录 – /usr
    - Unix操作系统软件资源存放的目录
  • 子目录 – /home/userName
    1. 普通用户的家目录
    2. /home/userName
    3. ~ 等效于 /home/userName (登陆账户为普通用户)
  • 子目录 – /root
    1. root用户的家目录
    2. /root
    3. ~ 等效于 /root (登陆用户为root用户)
  • 子目录 – /boot
    1. 存放 引导加载程序文件 的目录
    2. 内核的initrd, vmlinux ,grub等文件位于boot目录下
  • 子目录 – /lib
    1. 系统库
    2. 用于存放程序的动态库和模块文件
  • 子目录 – /opt
    1. 可选的附加应用程序安装目录
    2. opt – 可选的 , 包含个别厂商的附加应用程序
  • 子目录 – /media
    1. 用于挂载可移动设备的临时目录
  • 子目录 – /srv
    1. 服务数据目录
    2. srv – srverse 服务
    3. 存放服务进程所需的数据文件和一些服务执行脚本
3> 什么是路径

路径(path) :

  • 在编程中, 路径是指用于定位和访问文件或目录的字符串
  • 路径描述了文件在文件系统中处于一个什么位置
  • 路径又分为 相对路径和绝对路径
1) 路径在树状图中的体现
   🐋上文提到, 在树状图中, 每一个文件都是一个节点。 假设我们要在这
个树状图中去寻找某一个文件,且这个文件并不是根目录, 那么它一定是树
状图中的中间节点或是叶节点。
   🐋我们想要找到它, 那我们就得从根节点  -- / 出发, 然后去寻找它的
中间节点, 最后通过中间节点, 找到它这个叶节点 -- 也就是目标文件。
   🐋那么  从根节点出发, 经过一个又一个的中间节点, 最终我们找到了
这个文件。  以这样的方式去寻找目标文件的过程就叫做路径。
2) 相对路径和绝对路径
 路径又分为相对路径和绝对路径

绝对路径:

  • 所有从根目录开始的路径都叫做绝对路径
  • 从绝对路径中, 我们可以看出这条路径上的每一个文件在文件系统中的位置
  • 定位任意一个文件的绝对路径都只有一条

相对路径 :

  • 所有不从根目录开始的路径都叫做相对路径
  • 用户通过相对路径去定位一个文件, 都是从用户当前所在工作目录开始
  • 定位任意一个文件的相对路径都不止一条
3) 通过绝对路径去定位一个文件
    假设我们现在要找一个名为 fileName 的文件 我们已经知道 从 / 出
发,中间需要经过子目录 bin , bin的子目录 test01 , test01的子目录
test02, 最终在test2这个目录中我们找到了 fileName  这个文件。 

那么以代码的形式进行体现 :

/bin/test01/test02/fileName
   这个路径是绝对路径。
   在上述这条代码中, 第一个 斜杠 / 代表 根目录, 后面的每一个
斜杠代表路径分隔符。
   我们就可以通过这条路径来访问 fileName这个文件。
   而从这条路径中,  我们也可以看出路径中的每一个文件,在文件
系统中所处的一个位置。
4) 通过相对路径去定位一个文件
 假设我们现在位于目录 dir下, 我们想通过相对路径的方式去定位一个叫
做 fileName的文件, 已知, 它在我们上一目录下的子目录 op的子目录 
dir目录下

那么以代码的形式进行体现 :

../op/dir/fileName
   这个路径就是相对路径
   ..代表上级目录

二 指令篇

使用任何一个指令, 对指定文件操作, 都是通过相对路径或是绝对路径去定位这个文件, 然后才能操作。
单纯的输入文件的名称, 是无法找到这个文件, 指令也就无法作用到这个文件上

Linux中长选项与短选项的区别

长选项: 由两个连字符和一些大小写字母组合的单词构成。
例如 :

  • –size
  • –help

短选项: 由一个连字符和一个字母构成。
例如 : (短选项是可以合并的)

  • -s
  • -h
  • -sh (短选项合并)

1. ls – 指令

基础语法ls [选项] [文件名]
功能默认列出指定目录下的所有子目录与文件的名称
补充[] – 方括号, 代表括号内的参数是可选的, 可以输入也可以不输入, 输入时不带[]
补充[文件名] – 这个参数 实际是路径,我们使用任何指令对一个文件进行操作都是通过路径去定位这个文件

常用选项 :
注意 : 下面列表中的每一个示例,比如 ls -a这种, 都省略了路径, 它们的路径都是当前路径

  •    当前路径可以表示为   .
    
  •    也可以表示为        ./
    
选项含义示 例效果
-a列出目录下的所有文件,包括以 . 开头的隐含文件ls -a列出指定目录下所有文件的名称 (包含隐藏文件)
-d将目录像文件一样显示,而不是显示其下的文件ls -d显示这个路径
-i输出文件的 i 节点的索引信息ls -i显示当前目录对应的 inode号
k以 k 字节的形式表示文件的大小ls -k
-l列出文件的详细信息ls -l显示当前目录下所有文件的详细信息(文件的元数据)
-n用 UID,GID 代替名称ls-ln显示当前目录下文件的详细信息, 并将其属主,属组替换为其对应UID ,GID
-F在每个文件名后附上一个字符以说明该文件的类型ls-F参照文件类型符号
-r对目录反向排序ls -r对当前目录下的文件进行反向排序后在显示出来
-t以时间排序ls -t对当前目录下的文件按照最近修改时间排序后再显示出来
-s在l文件名后输出该文件的大小ls -s显示当前目录下所有文件名,且在文件名之前显示文件的大小
-R列出所有子目录下的文件ls-R显示当前目录下所有文件名再换行显示当前所有子目录中的所有文件名
-1一行只输出一个文件ls-1对当前目录下的所有文件名进行分行显示,一行显示一个

2 . pwd – 指令

基础语法pwd
功能显示当前路径(绝对路径)

常用选项 : 无

3. cd – 指令

基础语法cd [目录名]
功能将工作目录切换至指定目录
补充[目录名] – 这个目录名也是路径所定位的, 因此它实际上是个路径。
补充[目录名] – 可以是相对路径,也可以是绝对路径
补充当采用相对路径时, **./**或是 **.**可以省略
示例效果
cd . .返回上级目录
cd . ./返回上级目录
cd …/day02相对路径, 切换工作路径至该相对路径下
cd …/day02/相对路径, 和上一条等效
cd /home/litao/绝对路径, 切换工作路径至该绝对路径下 (家目录为home, 代表该用户为普通用户)
cd /home/litao绝对路径, 切换工作路径至该绝对路径下
cd /切换至根目录
cd ~切换至 家目录下
cd -返回最近访问目录 (返回上一个路径)

在末尾添加路径分隔符是为了表明该路径定位的文件是一个普通文件还是目录文件

  • 对于普通文件末尾不可以添加路径分隔符,否则会报错
  • 对于目录文件, 末尾是否添加路径分隔符对于指令的结果是没有影响的, 只是可以表明这是一个目录

4 . touch – 指令

语法touch [选项] [路径]
功能创建普通文件, 如果文件存在,那么表示修改当前文件的access和modify以及change时间
补充[路径] – 该路径定位的是一个普通文件, 不存在就创建
补充如果文件名为 “-”, 则特殊处理, 更改与标准输出相关的文件的access时间
补充长选项必须使用的时间 对于短选项也是必须使用的
选项含义示 例效果
-a更改文件访问时间 – accesstouch -a fileName将文件的access修改为当前时间, change也会变为当前时间
-c不创建任何文件touch -c fileName即使fileName不存在,也不进行创建
-d使用指定字符串表示时间,而非当前时间touch -d “1686” fileName将fileName 的 access与modify改为 1686
-d补充touch -d “1686” fileName也会将change 修改为当前时间
-f
-h与符号连接有关
-m只修改文件的modifytouch -m “2013-10-15” fileName将其 modify修改为当前时间, 并非字符串对应时间
-r使用指定文件的时间属性没测试
-tSTAMP 使用某个格式时间而不是当前时间没测试

文件的三种时间

  • access : 文件最近一次访问时间
  • modify : 文件内容最近一次的修改时间
  • change : 文件属性最近一次的修改时间

变化情况
- access 属于文件属性, access变, change也会变
- modify 变, access 和change 不一定变

5 . mkdir – 指令

语法mkdir [选项] [路径]
功能创建目录

常用选项:

选项含义示 例效果
mkdir默认创建目录mkdir filename文件存在就报错, 不存在就创建
-p递归创建目录,中间不存在的创建补齐mkir -p /home/test1/dirtest不存在,连带着test,dir一块创建
-p也就是说, 对于路径中不存在的目录会递归创建一次性创建多个目录

6.rmdir/rm – 指令

语法rm/rmdir [选项] [路径]
rm功能默认用于删除普通文件(适用于所有用户)
rmdir功能只能用于删除空目录(适用于具有相应权限的用户)

rmdir常用选项:

选项含义示 例效果
-p递归删除空目录rmdir -p ./test删除该空目录,如果父目录也为空,那么也删除父目录

rm常用选项:

选项含义示 例效果
默认删除普通文件rm fileName只可删除指定普通文件
-f强制删除文件(普通文件)rm -f fileName强制删除该指定文件
-i在删除文件前,与用户进行交互式确认(普通文件)rm -i fileName删除该普通文件之前询问是否删除,
-f递归删除指定目录及目录下所有文件rm -i fileName删除指定目录及其目录下所有文件(目录和普通文件)

7 .man – 指令

语法man [选项] [命令]
功能访问Linux联机手册,在手册中查找指定命令的详细信息
选项含义示 例效果
-f显示命令或函数的简短描述man -f ls显示指令ls的简略描述 – 列出目录内容
-k使用关键字搜索所有与该关键字相关的手册页man -k l不进入手册页, 直接显示所有包含关键字l 的内容
-S指定手册页进行搜索man -S ls 1进入指令第一页记录ls的部分
-Sman -S ls 2ls指令不存在于第二页, 这样的代码就会报错 , 显示无需手动输入 2
-a显示所有与命令或函数相关的手册页man -a ls与man ls 效果一样, -a 适用于软连接不指向自身的命令等
-w显示命令或函数的手册页路径man -w ls效果为 /usr/share/man/man1/ls.1.gz
-C指定手册页的格式man -C chm ls手册页本身的格式就是chm,因此没变化
-l显示所有手册页的列表man -l报错… 暂时不知道如何用
-p显示函数的原型man -p function这是一般格式
-s显示指定章节的手册页man -s 2 open显示第二节的手册页 , 也可以直接 man 2 open
-u显示未压缩的手册页man -u command一般格式
-h显示帮助信息
-M指定手册页的源路径man -M /usr/share/man command将手册页的源路径修改为 /usr/…

8. cp — 指令

语法cp [选项] [路径1] [路径]
功能将路径1所定位的普通文件拷贝至路径2所定位的目录下,
功能或是将路径1所定位的普通文件的信息覆盖式的拷贝至路径2所定位的普通文件中, 不更改文件名称
补充可以拷贝普通文件到目录下, 目录必须存在
补充可以拷贝普通文件中的信息到另一个普通文件中
补充普通文件 到 普通文件 不修改文件名称
补充普通文件到文件的时候, 如果文件2不存在, 那么会先创建一个同名文件,在拷贝信息
补充cp指令默认情况下,无法将 目录1拷贝至目录2下, 即使目录1为空
补充可以一次性复制多个普通文件到指定目录下
选项含义示 例效果
-f如果目标文件无法打开,将其删除并重试不具备打开文件的权限,将该文件删除并再次尝试该指令
-i覆盖文件前进行交互式询问效果, 询问是否确认覆盖某个文件 y/n
-r递归复制目录及目录下的所有文件可以将整个目录拷贝至另一个目录下
-R递归复制目录及目录下的所有文件与-r 的区别再与,视角上不对文件形态作出改变
-b为每个已存在的文件创建备份cp -b不接受参数, 为当前目录下所有文件创建备份
-l链接文件,但不复制
-n在拷贝的时候,不覆盖已存在的文件

9. mv — 指令

语法mv [选项] [源文件][目标文件]
功能用来移动文件或对文件进行更名
补充在移动文件时, 是将路径1定位的源文件移动到路径2所定位的目标文件当中去
pFile1 ->pFile2效果 , 普通文件1消失, 普通文件2中的信息被文件1中的信息覆盖
pFile1->pFile2pFile2不存在, 效果 将pFfile1移至pFile2所在路径,并将其更名为 Pfile2
File1->dirFile可以将多个文件移动到指定目录下, 该指定目录必须存在
补充多个文件移动至指定目录下, 指定目录必须存在
补充单个文件移动时, 所移动路径定位的文件不存在,相当于对其移动后在更名
补充普通文件 移动至 普通文件, 效相当于 cp指令拷贝文件信息
补充无法将目录移动至文件
选项含义示 例效果
-b若需覆盖文件, 覆盖前先备份mv -b file1 file2普通文件 ->普通文件, 备份被覆盖的文件
-f强制覆盖,不进行询问mv -f file1 file2效果和 mv file1 file2 一样
-fmv -if加上选项 -i 才可以体现其强制性
-i覆盖文件前,进行交互式询问
-u若目标文件已经存在, 且source 比较新,那就更新(update)
-t指定文件移动的目标目录使用 -t 时, 目标目录在前, 源文件在后

10. cat – 指令

语法cat [选项] [路径]
功能1查看指定路径所定位的文件的内容, 只适用于普通文件
功能2合并多个文件的信息为一个文件
功能3根据键盘输入创建一个文件

功能 1 补充

  • cat指令实际上是读取指定文件中的内容然后 执行写权限,
  • 默认情况下, cat指令将读取到的信息写入到显示器文件中
  1. 可以搭配 输出重定向符号 > , 更改cat指令写入的文件
    - 代码格式 cat [选项] [路径1] > [路径2]
    - 读取路径1定位的文件中的信息, 然后写入到路径2所定位的文件中
    - 是覆盖式写入信息
  2. 可以搭配 追加输出重定向符号 >> , 将信息追加写入到指定文件
    - 代码格式 cat [选项] [路径1] >> [路径2]
    - 这种方式 是追加写入, 不是覆盖式写入
    - 将读取到的信息, 在文件原有数据的基础上进行写入

功能2实际就是, 利用输出重定向, 将多个文件的信息写入到一个文件当中:

代码格式效果
cat 1.txt 2.txt > test.txt将文件1, 与文件2的内容写入到了 test.txt中

功能3示例:

代码格式效果
cat << EOF > test1.sh根据键盘输入, 新建了一个文件 test1.sh

常用选项:

选项含义示 例效果
-n对输出的所有行编号cat -n file.txt将该文件中的内容编号并进行打印显示
-b只对非空行编号cat -b file.txt打印该文件中的内容, 并对非空行进行编号
-s只输出非空行与单行空行cat -s file.txt多行空行只输出一行
-v使用 ^ 和 M- 表示法将换行符 ‘\r\n’ 会被显示为 ^M+‘\n’
-E在每行结束处 显示 $
-A等价于 -vEt
-T将TAB字符显示为 ^l
-e等价于 -vE
-t等价于 -vT

11. more – 指令

语法more [选项] [路径]
功能功能类似cat

常用选项:

选项含义示 例效果
-num一次显示的行数more -3 filename一次显示3行, 按空格继续,回车是向下一行
-p清空屏幕后,在显示内容more -p 1.txt对屏幕进行刷新后,在打印文件内容
-c类似于 -p
-s多行空行替换为单行空行进行显示more -s 1.txt显示非空行和单行空行
+nn代表数字, 从文件第n行开始显示more +3 1.txt从第三行开始显示

more – 指令中的快捷键

按键效果
空格向下翻一页
B向上回退一页
Enter向下滚动一行
=输出当前最后一行的行号
Q退出more指令

12. less – 指令

语法less [选项] [路径]
功能打印显示文件内容
功能可以使用行号或百分比作为书签浏览文件
功能提供了更加友好的检索, 高亮显示等操作
功能兼任了常用的字处理程序的键盘操作
功能阅读到文件结束时, less指令不会自动退出

快捷键:

快捷键作用
向上移动
向下移动
向左移动
向右移动
PgDn / 空格向下翻页
PgUp / B向上翻页
Enter向下滚动一行

常用选项:

选项含义
-i搜索时不区分大小写
-N显示每行的行号
-S行过长时舍弃超出部分
-e当文件显示结束后, 自动退出less指令
-m显示类似more指令的百分比
-f强制打开特殊文件, 比如二进制文件和目录文件
-b设置缓冲区的大小为 n
-o<文件名>将less读取的信息写入到指定文件中
-x<数字>将【TAB】键显示为指定的数字空格

13. head – 指令

语法head [选项] [路径]
功能显示文件的前 "指定行数"的内容
默认情况下head默认情况下显示文件前十行内容
另外head 指令也可以桉顺序同时显示多个文件的内容

常用选项 :

选项含义示例效果
-q隐藏文件名head -q 1.txt和 head 1.txt 效果一样
-v显示文件名head -v 1.txt显示文件名后, 再显示文件内容
-c<字节>显示指定字节的文件内容head -c 6 1.txt显示从第一行第一个字符开始,共6个字节的内容
-n<行数>显示指定行数的文件内容head -n 20 1,txt显示文件前 20行内容

14. tail – 指令

语法tail [选项] [路径]
功能显示文件的后 "指定行数"的内容
默认情况下显示后10行
另外也可以一次显示多个文件的内容
另外可以搭配输入重定向符号将文件末尾的指定内容写入到指定文件

常用选项 :

选项含义
-f可以查阅正在改变的日志文件
-q不显示处理信息
-v显示详细的处理信息
-c从文件行尾开始显示n个字节的内容
-n显示文件指定的后num行内容
-n<+num>从文件的第 num 行开始显示, 直到文件末尾

特别的, 在显示多个文件的内容时:

  • tail -n 5 1.txt 2.txt
  • 上述代码, 显示这两个文件的后5行内容

15 . date – 指令

语法date [选项] [指定时间] [格式]
功能显示系统的日期和时间
功能或是 设置系统的日期和时间

常用选项 : (太多了, 懒得排版了,直接复制自己的笔记了)


1> 以指定格式显示时间
     (1)  ------------小时---------------
%H 小时(00-23来表示)               date +%H   显示当前时刻对应的小时数
%K 小时(0-23来表示)                date +%K     显示当前时刻对应的小时数
%I(字母L的小写) 小时 (01-12来表示)   date +%l   显示当前时刻对应的小时数
%I(大写 i) 小时(0-12来表示)         date +%I   显示当前时刻对应的小时数



(2) ------------------分钟--------------- ------------
%M 分钟(00-59来表示)。     date +%M   显示当前时刻对应的分钟数



(3) -----------------------------------------
%S 秒(以本地的惯用法来表示)  date +%S   显示当前时刻对应的秒数


(4)-----------------------时间戳 ----------------
// 时间戳 : 从起算时间开始至指定时间的总秒数-    
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。 


(5) ----------------------时间----------------  
//时间 : 显示当前时刻对应的时分秒
%r 时间(含时分秒,小时以12小时AM/PM来表示)    date +%r  显示当前时分秒, am/pm  比如  10:21:49 AM
%T 时间(含时分秒,小时以24小时制来表示)。 date +%T  显示当前时分秒  例如    10:21:49
%X 时间(以本地的惯用法来表示)  date +%X  显示当前时分秒   例如 10:21:49 AM


(6)  --------------AM/PM----------------
// AM ------- 表示上午时间     PM ------------ 表示下午时间
%P AM或PM。 date +%P 显示当前是am还是pm  (am -- 上午时间, pm -- 下午时间) 



(7) -------------------年份 --------------------
%y 年份(00-99来表示)。      date +%y    显示当前年份    2023年显示为 23
%Y 年份(以四位数来表示)。      date +%Y   显示当前年份    2023年显示为 2023



(8)  --------------------月份 --------------------
%b 月份英文名的缩写。        date +%b    显示当前月份 十月显示为 Oct
%B 月份的完整英文名称。    date +%B    显示当前月份 十月显示为 October
%m 月份(01-12来表示)     date +%m   显示当前月份 十月显示为 10
  


(9) ----------------------- 天数 -------------------
%d 天数(01-31来表示)。   date +%d    显示当前天数   1015日显示为 15


(10) ----------------------显示日期 -----------------
%x 日期(以本地的惯用法来表示)。    date +%x    显示当前日期   2023/10/15  显示为  10/15/2023
%D 日期(含年月日)。          date +%D      显示当前日期    2023/10/15  显示为  10/15/23

(11) ----------------日期和时间 -----------------------
%c 日期与时间。只输入date指令也会显示同样的时间  
        与只输入date指令的区别
           date +%c        // 结果 Sun 15 Oct 2023 10:36:27 AM CST   
           date            //  结果 Sun Oct 15 10:36:24 CST 2023

(12)  -----------------显示时区 ----------------
%Z  显示当前所在地的时区。 

(13)-------------------显示星期-----------------
%A 星期的完整英文名称
%a 星期的英文名称缩写。


(14-----------显示当前日期在一年中的天数排序,周数排序以及天在周数排序 ------------
%j    该年中的第几天                date +%j       显示当前日期为本年的第几天  比如2023/10/15  为 第288%U 该年中的周数。                date +%U       显示当前日期为本年的第几周  比如2023/10/15  为 第42%w 该周的天数,(0-6) 0代表周日,1代表周一,依次类推。

(15) ------------特殊格式---------------
%n 在显示时,插入新的一行。 
%t 在显示时,插入tab。 



2>   在设定时间方面

date -s //设置当前时间,只有root权限才能设置,其他只能查看。
date -s 20080523 //日期设置为20080523,这样会把具体时间设置成00:00:00 
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s “01:01:01 2008-05-23//将日期和时间设置为指定值
date -s “01:01:01 20080523//将日期和时间设置为指定值
date -s “2008-05-23 01:01:01//将日期和时间设置为指定值
date -s “20080523 01:01:01//将日期和时间设置为指定值




3> 部分参数 

-d  :    显示字符串所指的日期和时间   格式  date -d  "1999-10-26 00:00:00" (后面可以跟格式控制字符)
-s  :    根据字符串所指时间来设置日期与时间  格式 date -d "2005-10-31 00:00:00" (后面可以跟格式控制字符)
-u  :   显示GMT时间(格林威治时间,国际标准时间, 也被称为世界时)



4> date 的格式化输出时间

date +%Y/%m/%d           2023/10/15         斜杠的作用是为了将 年月日分开, 不加斜杠 结果为 20231015 像这种分隔符可以自由使用, 比如 / - 
date +"%Y-%m-%d"         2023-10-15       加不加引号无影响, 在此加引号只是为了说明可以加
date +%Y:%m:%d              2023:10:15 

+%Y:%m:%d  像这样的一串字符 ,它们被视为一个操作数,中间不可以用空格分开。 如果想用空格去分开这串字符串, 需要对整个字符串整体加上 “”



5> 特别的 时间戳 转 日期+时间

date -d "1955466 seconds" +"%Y/%m/%d %H:%m:%S"    以当前时刻为起点 , +1955466秒后的 时刻 转换成 日期 + 时间 进行表示
date -d "1970-01-01 1955466 seconds" +"%Y/%m/%d %H:%m:%S"      // 此处添加引号的意义在于  可以将 年月日 与 时分秒分开,使得它们依旧被视为一个操作数
//  以1970-01-01 这个时刻作为起点, 

16 . cal – 指令

语法Cal [选项] [月份] [年份]
功能显示指定日历等时间信息

默认情况下 | cal指令显示的是当前时刻对应的日历
一个参数 | cal 12 ,显示公元 0012年的所有月历
两个参数 | cal 6 2012 , 显示2012年6月份月历
两个参数的时候, 必须月份在前, 年份在后

常用选项:

选项含义
-y将指定年份的12个月的月历显示出来, 等效于 cal 12
-j将当前月对应的月历中的每一天都替换为在一年中排第几天,然后显示
-3显示 前一个月, 当前月, 后一个月 这三个月的月历

17 . find – 指令

语法find [路径][查找条件][处理动作]
功能在指定路径中查找符合指定条件的文件, 并对文件进行指定处理

常用选项:

-name  按照文件名查找文件                   示例 : find -name 'fileName'   // 在当前路径下递归查找 文件fileName
-i     查找时不区分大小写,可搭配-name使用    示例 : find -i -name "fileName" 
-path  查找与该路径匹配的文件                示例 : "/path/name"(这个路径可以是部分路径)
-type  根据类型进行查找
          f:普通文件      d:目录文件   
          s:套接字文件    l:符号链接文件        
          b:块设备文件    c:字符设备文件
          p:管道文件         
-size [+-]  [num Unit] 根据文件大小来进行查找    示例 :  find -size +100M       // 在当前目录下, 查找大于100M的文件
      //  num --- 数字 
      // Unit -- 单位 , 在这里是指 表示文件大小的单位
      //文件大小常用Unit : K--kb M--mb G -- gb
      // + 或 -  代表 大于或小于
-a 或 m 或 c    [time 或 min  ]    [+-]    n  示例 : find -m time +5      //在当前目录下, 查找文件内容最近修改时间为5天之前的文件
      //a -- access   m -modify  c -- change 
      //time  -- 以天为单位
      //min -- 以分钟为单位
      //n  -- 代表天数  , n本身, 从当前时间算起的第n天之内(向前) 
      //+n  --  从当前时间算起的n天之前,比如 +1  代表1天之前,也就是昨天之前 不包括昨天本身
      //-n -- 从当前时间算起的n天之内,   比如-1,代表1天之内, 也就是昨天之内, 就是昨天yi't 
      
-user userName     // 查找文件属主(所有者)为指定用户的文件
-group groupName   //    查找文件属组(用户组)为指定用户组的文件
-uid userID        // 查找文件属主为指定uid号的文件
-gid groupID       //查找文件属组为指定gid号的文件
-nouser            // 查找无属主的文件
-nogroup           //查找无属组的文件  
  
-perm [+-] Mode
     // Mode : 精确权限匹配
     //+Mode : 文件的(所有者, 所属组或是其他用户)中的任何一类的权限中只要匹配即可
     //-Mode : 完全匹配此Mode时才可以匹配, 文件的(所有者, 所属组或是其他用户)都必须同时拥有为其指定的权限标准才可以匹配
   
逻辑组合
   -a -- 逻辑与        
   -o --- 逻辑或        
   -not --- 逻辑非
   !A -a !B = !(A -o B)   //  非A 交 非B  =  非(A 并 B)
   !A -o !B = !(A -a B)   //  非A 并 非B  =  非(A 交 B)
   

部分示例补充: 

举例 :
find  /home -name  "*.txt"       // 查找/home目录下所有以.txt结尾的文件
find  /home -name '???'          // 查找/home目录下 名称为三个字符的文件
find  /home  -path  "*/test/???"      // 查找/home目录下 名称为三个字符且父目录为test的文件
find  /home -type d -name 'python'     // 查找/home目录下所有名称为python的目录文件
find  /home -size +100M        // 查找/home目录下大于100M的文件
find  /home  -atime +3            // 查找/home下最近访问时间为3天之前的文件
find -amin -10                        // 在当前目录下查找距离当前时刻最近访问时间为10分钟之内的文件
find  /var -user root -a -group mail     // 查找/var目录下 属主为root 属组为mail 的所有文件, (-a -- 逻辑与)
find  /home -perm 755           // 查找在/home目录下权限是755的文件
find  /home -perm -222         //  查找在/home目录下 所有类别用户都具有写权限的文件
find  /home -perm +222        //  查找/home目录下 只要有一类用户(属主,属组, 其他)具有写权限即可
find  /  -type file -size +1G -ls      // 查找并显示所有1G以上大小的文件的详细信息
find  ~ -type d -empty -delete    // 删除 home目录下的所有空目录
find  /  -size 0 -type f -exec rm -rf {} ;   删除所有空文件

/*
{}  --  占位符 , 用于引用查找到的文件名称自身
;   --- 分号, 命令结束的标志, 需要转义, 也可以用  +  表示
-exec command {} ;  = -exec command + 
*/



find 常用处理文件的指令

//   find指令 默认处理动作为打印 
-print    : 默认的处理动作, 打印显示至屏幕
-ls       : 类似于对查找到的文件执行 "ls -l" 命令
-delate   : 删除查找到的文件
-fls      :  查找到的所有文件的长格式信息保存至指定文件中
-ok command {}    : 对查找到的每个文件执行由comman指定的命令, 对于每个文件在执行命令之前,会交互式要求用户确认
-exec command {}  : 对查找到的每个文件执行由command指定的命令

18 . grep-- 指令

语法 | grep [选项] [ – color = ‘具体颜色’] “指定字符串” [路径]
功能 | 在文件中搜索指定字符串, 将匹配的行整行打印出来

–color = ‘具体颜色’ : 这是长选项, 为grep指令的输出结果添加颜色

常用选项:

选项含义
-i忽略字符的大小写
-o仅显示匹配到的字符串本身
-v显示不能被模式匹配的行
-E支持使用扩展的正则表达式元字符 使用egrep命令
-q静默模式, 不输出任何信息
-n显示匹配行及其行号
-c统计并显示匹配的行数,
-w只匹配过滤的单词

19 . zip/unzip–指令

zip指令

语法zip [选项] file.zip [路径]…
功能将一个或者多个路径所定位的文件压缩为指定的 .zip 文件

zip指令在使用时, 压缩后的文件名所带后缀为 .zip
默认情况下,无法将一个目录及目录下所有文件进行压缩, 只会压缩这个目录,不会将目录下的文件进行压缩。
对文件进行压缩后, 会形成一个后缀为 .zip的文件, 原文件依旧存在

常用选项

选项含义
-r递归处理指定目录及该目录下的所有普通文件和子目录
-c添加单行注释
=d从zip文件中删除条目
-D不添加目录条目
-j不压缩目录, 只压缩其他类型文件
-n不压缩具有指定后缀的文件
-q不显示压缩过程
-v压缩文件时, 显示详细信息, 若只有指令-v ,那么展示版本信息

示例 :


zip test.zip ./test2          // 将test2这个目录及其下所有file进行压缩     
      //可以在test2后面使用 通配符 例如 test2/???   代表test2目录下,文件名为3个字符的文件

zip -r test.zip test2        // 以递归的方式将test2这个目录下的所有普通文件和子目录进行压缩 
  

unzip 指令

语法unzip [选项] file.zip [路径]
功能从ZIP归档中列出, 测试,解压后缀为.zip的压缩文件

常用选项:

选项含义
-d递归解压 压缩文件
-l列出归档中的文件
-p把文件解压到管道, 不打印输出
-t测试归档数据
-v解压时展示详细信息或文件的版本信息
-z只展示归档的注释
-o提示是否覆盖已存在的文件
-n不覆盖已存在的文件, 且不提示
-q不展示执行过程

示例:


unzip file.zip     // 解压file.zip中的所有文件到当前目录下, 根据是否需要, 自行创建子目录

unzip -l file.zip  // 展示 file.zip中的所有文件

unzip -d file.zip // 以递归的方式将file.zip中的所有文件解压到当前目录

20. tar – 指令

语法tar [选项] file.tar [文件名] …
功能将多个文件或目录压缩成单个文件
功能还可以创建和解压tar存档

常用选项:

选项含义
-c创建新的存档文件
-x从存档文件中提取文件
-t列出存档文件中的内容
-v显示tar指令执行的详细信息
-f指定存档文件的名称
-z在创建或提取存档文件时使用 gzip压缩算法来进行压缩/解压缩
-j在创建或提取存档文件时使用bzip2压缩算法来进行压缩/解压缩
-C指定tar指令的工作目录

示例:


 1. ------------------ 压缩 ---------------------
tar -cvf file.tar test1 test2 test3    //该条指令会创建一个名为 file.tar的 tar存档文件, 然后将 test1,2,3这三个文件添加到新建的tar文档中

tar -cvf file.tar test1 test2 test3    // 在打包文件时, 显示tar命令执行的详细信息

tar -czvf file.gz /dir    // 该条命令会创建一个名为file.gz的 gzip压缩的 tar存档文件, 并将/dir目录中的所有文件添加到该 tar存档文件中

tar -cjvf file.bz2 /dir    // 该条命令会创建一个名为file.bz2的 bzip2压缩的 tar存档文件, 并将/dir目录中的所有文件添加到该 tar存档文件中

tar -cJvf file.xz /dir     // 使用xz压缩算法创建tar存档文件, 并将目录dir中的所有文件添加至新建的 tar存档文件中
                           // xz压缩算法相比于 gzip和bzip2压缩算法具有更高的压缩比, 但是在压缩和解压缩时需要消耗更多的CPU和内存资源


2.  ------------------解压缩------------------------
tar -xvf file.tar     // 将file.tar存档文件解压至当前目录中

tar -xvf file.tar -C  /tmp      // 将file.tar存档文件解压至指定目录/tmp

tar -xjvf file.bz2      // 将经过bzip2压缩算法压缩的tar存档文件file.bz2解压至当前目录
tar -xzvf file.gz       // 将经过gzip压缩算法压缩的tar存档文件file.bz2解压至当前目录
tar -xJvf file.xz       // 将经过xz压缩算法压缩的tar存档文件file.bz2解压至当前目录

tar -tvf file.tar      // 列出存档文件file.tar的内容

tar -cvf my_files.tar /tmp/files/*     // 使用通配符压缩多个文件


3. ------------将存档文件直接发送至远程服务器--------------
/* 
   使用tar指令创建存档文件后, 可以将其发送到远程计算机以备份数据。 在Linux系统中, 可以使用 ssh命令将存档文件发送到远程计算机
*/

// 假如, 您已创建了 名为 backup.tar.gz的存档文件, 并且要将其发送到IP地址为 192.168.1.100 的远程计算机中的 /backup目录中, 那么可以执行以下命令
ssh user@192.168.1.100 'mkdir -p /backup' && \   // 在远程计算机的 /backup 目录中创建一个新目录
cat backup.tar.gz | ssh user@192.168.1.100 'cd /backup && tar -xz'  // 创建一个名为 backup.tar.gz的tar存档文件, 并使用管道符 将它发送到远程计算机。 远程计算机对其进行解压缩

//  上述两行代码 先创建一个名为 backup.tar.gz的tar存档文件, 并使用管道符 将它发送到远程计算机。 然后在远程计算机上, 先在/backup目录中创建一个新目录(如果不存在), 然后运行 tar命令解压 压缩存档文件

21 bc – 指令

语法bc [选项] [包含计算任务的文件]
功能类似于基本的计算器,可以做基本的数学运算

bc 指令是任意精度计算器语言, 在Linux中充当了计算器的作用

  • 常用的运算 : 加减乘除 + - * / 指数**^** 余数 %

22 uname –r指令

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

常用选项:

选项含义
-i强制进入交互式模式
-l(小写字母 L) 使用标准数学库
-q不打印正常的GNU bc环境信息
-v显示指令版本信息
-h显示指令的帮助信息

23 echo – 指令

语法echo [选项][输出内容]
功能将输入的字符串送往标准输出
功能输出的字符串间以空白字符分隔开, 并在最后加上换行符

echo指令在使用时, 输出内容以引号括起, 可以单引号,可以双引号

常用选项:

选项含义
-n输出时 不加换行符
-e启用 反斜杠ESC转义
-E禁用反斜杠ESC转义

24. which – 指令

语法which 指令名称
功能用于查找给定指令的绝对路径

在Linux系统中, 平时我们所使用的指令,它们的本质是一个可执行文件。而which指令可以在环境变量PATH设置的目录里查找符合条件的文件。 也就是说, 使用which指令, 就可以看到某个系统命令是否存在, 以及该命令在系统中所处的具体位置

25whereis – 指令

语法whereis [选项] [可执行程序名]
功能定位文件在文件系统中的位置并输出其绝对路径

说明:
whersis指令只用于程序名的搜索,它们分为

  • 二进制文件 使用参数 -b
  • man说明文件 使用参数-m
  • 源代码文件 使参数 -s
  • (省略参数会返回所有信息)

26 uniq – 指令

语法uniq [选项] [文件名]
功能检查及删除文本文件中的连续重复行(多行重复行只保留一行)

常用选项:

选项含义
-c在每行旁边显示该行出现的次数 , 出现一次记为1
-d仅显示连续重复出现的行列
-u仅显示不连续重复出现的行

27 sort – 指令

  1. sort的工作原理:
    – sort将文件的每一行作为一个单位, 从首字符向后,依次按ASCII码值进行比较, 最后将他们升序排序(默认以升序排列)
    – sort默认将结果写入到标准输出,

常用选项:

选项含义
-u输出行中去除重复行
-r将排序改为降序
-o将结果覆盖式写入到源文件
-n指定以数值进行排序
-k指定排列的列数
-t该参数后面可以设定间隔符, 搭配-k使用

28 wc – 指令

作用:

  • 统计指定文件中的字节数, 字数, 行数等
  • 默认情况下将结果写入到标准输入
  • 若不指定文件名称或是指定文件名称为 -, 则wc命令会从标准输入设备读取数据

语法 : wc [选项] [文件名]

常用选项:

选项含义
-l小写字母L, 显示行数
-w显示字数
-c显示字节数

29 gcc – 指令

  • 基于C/C++的编译器
  • 语法 : gcc [选项] [文件名]
  • 常用选项 :
    • -o : 指定生成的可执行文件的文件名
    • -E : 仅执行编译预处理
    • -S: 将C代码转换为汇编代码
    • -wall: 显示警告信息
    • -c: 仅执行编译操作, 不进行连接操作

示例:

gcc test   // 将test预处理, 汇编, 编译并链接形成可执行文件。 这里没有指定生成的可执行文件的名称, 默认为a.out

gcc test -o test.c   // 将test预处理, 汇编, 编译并链接形成可执行文件, 并指定该可执行文件的名称未test.c

30 alias – 指令

alias指令主要是为Linux系统中的指令起别名

  • 所设置的别名一般储存在临时文件中, 所以是临时别名
    1. 设置临时别名 : alias ec = “echo” 为echo命令设置临时别名ec
    1. 删除临时别名 : unalias ec
    1. 临时的意思是指的是, 仅当前用户在当前终端窗口有效
    1. 切换用户, 或窗口关闭再开启都会失效

31 history – 指令

语法history [选项] [参数]
功能历史输入命令管理
功能不带任何参数时,显示历史输入的所有指令

常用选项:

选项含义
-d删除历史记录的第n个命令
-n从历史记录中读取指定文件
-N显示历史记录中最近的N个记录
-c将历史命令缓冲区中的命令写入到历史命令文件中
-r将历史命令文件中的命令写入到当前历史命令缓冲区
-w将当前历史命令缓冲区中的命令写入到历史命令文件中

32 file – 指令

语法file [选项] [文件名]
功能查看文件的类型

常用参数:

选项含义
-b列出辨识结果时, 不显示文件名称
-c详细列出指令执行过程, 便于排错和分程序执行的情形
-f在有多个文件名参数时,让file 按照顺序依次辨识这些文件
-z尝试去解读压缩文件的内容
-L直接显示符号链接所指向的文件的类型

三 . Linux 系统中的几个热键

Tab按键

  • 模糊命令补齐
    • 较模糊命令直接补齐
    • 非常模糊命令, 列出其所有可能性
    • 例如在命令行解释器中输入 a 按TAB直接显示所有与a有关的命令
  • 档案不全

Ctrl + D

  • 相当于exit – 退出 一直按可关闭Linux系统
  • 或是 键盘输入结束
  • EOF
  • end of file
  • end of input

Ctrl + C

  • 不执行当前指令且添加^C作为结尾
  • 强制退出正在运行指令,退出且

四 . 扩展命令

安装和登录命令: 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与Windows的文件互传

互传方式:

  1. xshell
    • 对于xshell 需要 yum install -y lrzsz 该条指令安装程序lrzsz
    • 通过指令 rz或是 sz进行文件互传
  2. 通过scp命令

xshell中通过lrzsz进行文件互传步骤:

  1. 本机文件上传到服务器(Windows -> Linux)
    • 在xshell的命令行中输入指令 rz 敲击回车, 此时会弹出对话窗口, 选择需要上传的文件,点击打开进行上传。
  2. 服务器文件下载到本机(Linux->Windows)
    • 命令行输入rz, 敲击回车。 弹出对话框, 为文件指定下载路径后, 选择指定文件进行下载。 然后点击确定进行下载。

使用scp命令进行文件互传示例:


ssh user@192.168.1.100 'mkdir -p /backup' && \   // 在远程计算机的 /backup 目录中创建一个新目录
cat backup.tar.gz | ssh user@192.168.1.100 'cd /backup && tar -xz'  // 创建一个名为 backup.tar.gz的tar存档文件, 并使用管道符 将它发送到远程计算机。 远程计算机对其进行解压缩

//  上述两行代码 先创建一个名为 backup.tar.gz的tar存档文件, 并使用管道符 将它发送到远程计算机。 然后在远程计算机上, 先在/backup目录中创建一个新目录(如果不存在), 然后运行 tar命令解压 压缩存档文件

Linux与Linux的数据互传

  1. scp命令
  2. rcp命令
  3. wget命令
  4. rsync命令

此部分不再赘述,请参考已有文章
来自于xuan_luckyyy

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值