【Linux系统编程】3. Linux基本指令(下)

文章目录

1、cal指令

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

命令格式: cal [选项] [月份] [年份]
功能: ⽤于查看⽇历等时间信息,如只有⼀个参数,则表⽰年份,如有两个参数,则表⽰⽉份和年份。
常⽤选项:

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

举例:

  1. 显示2025 年1月的日历:cal January 2025

  2. 显示2025整年的日历:cal 2025

  3. 显示当前月份及相邻的前一个月和后一个月的日历:cal -3

2、find指令

  • Linux下find命令在⽬录结构中搜索⽂件,并执⾏指定的操作。
  • Linux下find命令提供了相当多的查找条件,功能很强⼤。由于find具有强⼤的功能,所以它的选项也很多,其中⼤部分选项都值得我们花时间来了解⼀下。
  • 即使系统中含有⽹络⽂件系统(NFS),find命令在该⽂件系统中同样有效,只你具有相应的权限。
  • 在运⾏⼀个⾮常消耗资源的find命令时,很多⼈都倾向于把它放在后台执⾏,因为遍历⼀个⼤的⽂件系统可能会花费很⻓的时间(这⾥是指30G字节以上的⽂件系统)。

语法: find [搜索路径] [匹配条件]
功能: ⽤于在⽂件树中查找⽂件,并作出相应的处理(可能访问磁盘)
搜索路径: 指定要搜索的目录(默认为当前目录),可指定1个或多个路径。
匹配条件:

  • -name 按文件名匹配(区分大小写),支持通配符(如 *.txt)
  • -iname 按文件名匹配(不区分大小写)
  1. 在指定路径下搜索执行名称的文件:find ~ -name temp.txt

3、which指令

语法: which [选项] 命令名
功能: 搜索系统指定命令的位置
常用选项:

  • -a:显示所有匹配的可执行文件路径
  • -s:静默模式,不输出结果,仅通过退出状态码表示是否找到(0 表示找到,1 表示未找到)

举例:

4、whereis指令

语法: whereis [选项] 命令名
功能: 用于查找程序的可执行文件、源代码文件和帮助文档(man 手册)位置的命令

常用选项:

  • -b:仅搜索可执行文件
  • -s:仅搜索源代码文件
  • -m:仅搜索帮助文档

举例:

  1. 查找 ls 命令的所有相关文件:where ls

  2. 仅查找 python3 的可执行文件位置:whereis -b python3

  3. 仅查找 gcc 的帮助文档位置:whereis -m gcc

5、alias指令

功能: 用于创建命令的别名
举例:

  1. 创建简单别名(用 ll 代替 ls -l
powershell 复制代码
alias ll="ls -l"
  1. 创建带参数的复杂别名(例如快速进入常用目录)
powershell 复制代码
alias work="cd /home/user1"
  1. 查看已定义的别名
powershell 复制代码
alias # 显示所有别名
alias ll # 仅显示ll别名的定义
  1. 删除别名
powershell 复制代码
unalias work

6、grep指令

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

  • -i:忽略⼤⼩写的不同,所以⼤⼩写视为相同
  • -n:输出⾏号
  • -v:反向选择,即显⽰出没有'搜寻字符串'内容的那⼀⾏

举例:

先向temp.txt文件写入如下内容:

  1. 在文件中搜索指定字符串:grep "ab" temp.txt

  2. 忽略大小写搜索,并显示行号:grep -in "ab" temp.txt

  3. 反向匹配(显示不包含指定内容的行):grep -v "ab" temp.txt

7、zip指令 和 unzip指令

1)zip指令

语法: zip [选项] 压缩文件名.zip 要压缩的文件/目录...
功能: 将⽬录或⽂件压缩成zip格式
常⽤选项:

  • -r:递归压缩目录

举例:

  1. 压缩单个文件
powershell 复制代码
zip test1.zip test1.txt
  1. 压缩多个文件
powershell 复制代码
zip files.zip test2.txt test3.txt test4.txt
  1. 压缩目录(必须加 -r)
powershell 复制代码
zip -r dir.zip dir

2)unzip指令

语法: unzip [选项] 压缩文件名.zip [要解压的文件...]
功能: 解压压缩文件
常用选项:

  • -d 目录:指定解压到的目标目录(目录不存在会自动创建)
  • -l:列出压缩文件中的内容(不解压)
  • -o:覆盖已存在的文件,无需确认
  • -x 文件:排除指定文件,不解压该文件
  1. 解压到当前目录
powershell 复制代码
unzip test1.zip
  1. 解压到指定目录
powershell 复制代码
unzip files.zip -d /home
  1. 查看压缩包内容(不解压)
powershell 复制代码
unzip -l files.zip
  1. 解压时排除指定文件
powershell 复制代码
unzip files.zip -x "test2.txt"

8、rz指令 和 sz指令

1)rz指令

语法: rz [选项]
功能: 从本地 Windows 系统向 Linux 服务器上传文件
常用选项:

  • -b 二进制模式传输:用于传输压缩包(.tar/.zip)、可执行文件、图片等非文本文件,避免文件内容损坏

举例:

  1. 基础传输:rz

    接下来会弹出窗口,点击想要传输的文件即可进行传输:

  2. 二进制模式传输(用于非文本文件)

    传输压缩包(如 data.tar.gz)、图片(如 img.png)、可执行程序时,必须用 -b 确保文件不损坏:rz -b

    接下来也是在弹出的窗口选择要传输的内容即可

2)sz指令

语法: sz [选项] 文件名1 [文件名2 ... 文件名N]
功能: 从本地 Linux 服务器向 Windows 系统上传文件
常用选项:

  • -b 二进制模式传输:用于传输压缩包、图片、可执行文件等非文本文件,避免内容损坏。

举例:

  1. 传输压缩包 files.zip 到远程终端:

    执行后,远程终端会弹出窗口,选择目录后开始传输:

    最后在我们的终端上就可以看见我们上传的压缩包了

9、tar指令

语法: tar [选项] 归档文件名 文件或目录
功能: 另外一种常见的打包和解包工具
常用选项:

  • -c:建⽴⼀个压缩⽂件,附档名为.tar
  • -x:解开⼀个压缩⽂件
  • -t:查看压缩文件⾥⾯的内容
  • -z:使用 gzip 压缩格式,附档名为.tar.gz
  • -j:使用 bzip2 压缩格式,附档名为.tar.bz2
  • -v:显示详细的处理过程
  • -f:指定归档文件名。注意:在 f 之后要⽴即接档名,不要再加参数。
  • -C:解压到指定⽬录

举例:

  1. 打包目录:将/home/test目录打包成test_backup.tar
powershell 复制代码
tar -cf test_backup.tar /home/test
  1. 打包并压缩目录:把/home/test目录打包并压缩成test_backup.tar.gz(gzip 格式)
powershell 复制代码
tar -czf test_backup.tar.gz /home/test

如果打包后压缩成bzip2格式:

powershell 复制代码
tar -cjf test_backup.tar.bz2 /home/test
  1. 解压压缩文件到当前目录:解压test_backup.tar到当前工作目录
powershell 复制代码
tar -xf test_backup.tar
  1. 解压压缩归档文件到指定目录:将test_backup.tar.gz解压到/home目录
powershell 复制代码
tar -xzf test_backup.tar.gz -C /home
  1. 查看归档文件内容:查看test_backup.tar.bz2归档文件包含的文件和目录:
powershell 复制代码
tar -tf test_backup.tar.bz2

10、bc指令

语法: bc [选项] [文件名]
功能: bc 是 Linux/Unix 系统中一款高精度的计算器工具,支持整数、小数运算,还能处理表达式、函数和变量,语法简洁直观,适合在命令行中进行数学计算。
常用选项:

  • -l 加载数学库,支持小数运算和数学函数。
  • -q 安静模式,进入交互环境时不显示版本信息和提示。

举例:

  1. 交互式计算
powershell 复制代码
bc -lq
  1. 非交互式计算(单行命令):通过管道传递表达式
powershell 复制代码
echo "2^10 + 100" | bc
  1. 计算文件中的表达式
powershell 复制代码
bc -lq calc.txt

11、uname指令

语法: uname [选项]
功能: 用于获取系统信息的命令, 可以显示当前操作系统的名称、节点名称、内核版本、内核发行版本、机器硬件名称等信息。

常⽤选项:

  • -a:详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
  • -r:显示内核发行版本

举例:

  1. 显示当前系统的内核发行版本号:uname -r

12、重要的⼏个热键 Tab,Ctrl+C,Ctrl+D

  • Tab:命令自动补全(最常用),文件 / 目录路径自动补全。

  • Ctrl + C:让当前的程序停掉。如果在命令行中,出现了异常情况,统一尝试Ctrl + C来终止异常。

  • Ctrl + D: 退出交互式程序(断开连接)

13、shutdown指令

语法: shutdown [选项]
常⻅选项:

  • -h:将系统的服务停掉后,⽴即关机。
  • -r:在将系统的服务停掉之后重新启动
  • -t sec:-t 后⾯加秒数,亦即过⼏秒后关机的意思。

14、扩展命令

  • 安装和登录命令: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。

15、shell命令以及运⾏原理

Linux严格意义上说的是⼀个操作系统,我们称之为"核⼼(kernel)",但我们⼀般⽤户,不能直接使⽤kernel。⽽是通过kernel的"外壳"程序,也就是所谓的shell,来与kernel沟通。

如何理解?

从技术⻆度,Shell的最简单定义:命令⾏解释器(command Interpreter)主要包含:

  • 将使⽤者的命令翻译给核⼼(kernel)处理。
  • 同时,将核⼼的处理结果翻译给使⽤者。

为什么要存在外壳程序?

  1. 方便用户操作
  2. 保护内核

对⽐windows GUI,我们操作windows 不是直接操作windows内核,⽽是通过图形接⼝,点击,从⽽完成我们的操作(⽐如进⼊D盘的操作,我们通常是双击D盘盘符或者运⾏起来⼀个应⽤程序)。

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

帮助理解: 如果说你是⼀个闷骚且害羞的程序员,那shell就像媒婆,操作系统内核就是你们村头漂亮的且有让你⼼动的⼩花。你看上了⼩花,但是又不好意思直接表⽩,那就让你家⼈找媒婆帮你提亲,所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给⼩花,⽽我们找到的媒婆姓王,所以我们叫它王婆,它对应我们常使⽤的bash。

相关推荐
艾莉丝努力练剑3 小时前
【C++STL :stack && queue (三) 】优先级队列的使用以及底层实现
linux·开发语言·数据结构·c++·stl
web安全工具库4 小时前
Makefile 模式规则精讲:从 %.o: %.c 到静态模式规则的终极自动化
linux·运维·c语言·开发语言·数据库·自动化
從南走到北4 小时前
JAVA代泊车接机送机服务代客泊车系统源码支持小程序+APP+H5
java·开发语言·微信小程序·小程序
earthzhang20217 小时前
【1028】字符菱形
c语言·开发语言·数据结构·c++·算法·青少年编程
江公望8 小时前
Qt的环境变量QT_QPA_PLATFORM浅解
linux·qt
Wang's Blog8 小时前
Linux小课堂: 文件操作核心命令深度解析(cat、less、head、tail、touch 与 mkdir 命令)
linux·chrome·less
earthzhang20219 小时前
第3讲:Go垃圾回收机制与性能优化
开发语言·jvm·数据结构·后端·性能优化·golang
AA陈超9 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-08 UI 部件数据表
c++·游戏·ue5·游戏引擎·虚幻
纵有疾風起10 小时前
C++——类和对象(3)
开发语言·c++·经验分享·开源