当前位置: 首页 > news >正文

【Linux游记】基础指令篇

 

枫の个人主页

你不能改变过去,但你可以改变未来

算法/C++/数据结构/C/Linux

Hello,这里是小枫。C语言与数据结构和算法初阶两个板块都更新完毕,我们继续来学习C++,C++更新的同时我也会更新Linux。Linux操作系统是很经典的操作系统,因此学习起来注定枯燥无味,西游记大家都看过吧~,我希望能带着大家一起跨过九九八十一难,降伏各类难题,学会Linux,我会尽我所能,以通俗易懂、幽默风趣的方式带给大家形象生动的知识,也希望大家遇到困难不退缩,遇到难题不放弃,学习师徒四人的精神!!!故此得名【Linux游记

 话不多说,让我们一起进入今天的学习吧~~~  

一、初识 Linux 操作系统

学习 Linux 系统编程,需从多个基础方面入手:

  • 初识 shell 命令及相关背景知识
  • 初步使用 40 + 个常用 Linux 命令
  • 掌握 Linux 权限概念与思想,深度理解 “权限”
  • 初步了解 Linux 目录结构含义
  • 了解 Linux 相关知识:目录结构、路径、重定向、管道操作等

二、Linux 背景知识

(一)发展史

  1. UNIX 发展历程
    • 1968 年,通用电器公司、贝尔实验室和麻省理工学院的研究人员开发了 Multics 操作系统,其在多任务文件管理和用户连接中融入了许多新概念。
    • 1969 - 1970 年,AT&T 贝尔实验室的 Ken Tompson 和 Dennis Ritchie 开发了 UNIX 系统,它运行在小型机上,是高效的多用户、多任务操作系统。
    • 第一个 UNIX 版本免费提供给多所知名大学计算机系使用,1972 年贝尔实验室开始发放商业版本并授权给不同用户,加州大学伯克利分校对其进行改进后成为标准。
    • 1975 年,伯克利下属部门 BSD 发行了自己的 UNIX 版本,与 AT&T 贝尔实验室版本形成竞争,其他独立开发的版本也逐渐出现。
    • 1980 年,微软开发了 Xenix 的 UNIX PC 版本,AT&T 发行了第一个商业版本 System Ⅲ,后被 System Ⅴ 替代;同时 BSD 版本不断发展,BSD Release 4.2 包含高级文件管理器和基于 TCP/IP 协议的网络特点,被许多厂商采用。
    • 80 年代中期,出现基于 AT&T 和 BSD 版本的两个竞争标准;AT&T 建立 UNIX 系统实验室以综合不同版本,开发标准系统。
    • 1991 年,UNIX 综合实验室发行 System V Release 4,其他公司成立 Open Software Foundation (OSF) 产生自己的标准版本,形成两个竞争的商业版本。
    • 1993 年,AT&T 将 UNIX 转卖给 Novell 公司,Novell 发行 UNIXWare,SUN 公司将 System V Release 4 融入 SUN OS 发行 Solaris;两个竞争的 UNIX 图形用户界面合并为通用平台环境 (CDE)。
  2. Linux 发展历程
    • 1991 年 10 月 5 日,赫尔辛基大学研究生 Linus Benedict Torvalds 在 Usenet 新闻组宣布编制出类似 UNIX 的小操作系统 Linux,受 Minix 系统启发;真正的 Linux 0.01 版本未发布,仅在 FTP 站点提供源代码。
    • Torvalds 于 10 月 5 日发布的 Linux 0.02 版能运行 GNU Bourne Again Shell (bash)、GNU 的 C 编译程序 (gcc) 等,后续版本不断更新,1994 年公布正式的 1.0 版本。
  3. Windows 发展史对比
    • MS-DOS 版本有 1.0、2.0、3.0、3.1 等。
    • Windows 系列包括 Win95、Win98、Win ME、3.X、4.0、Win2000、XP、Vista、Win7、Win8、Windows 10 等。
    • NT 版本有 Workstation 3.1、4.0、Win2000、Win2003、Win2008、Win2012 等服务器版本,时间跨度从 1985 年到 2015 年。

(二)开源特性

Linux 是自由和开放源代码的类 UNIX 操作系统,内核由林纳斯・托瓦兹于 1991 年首次发布,加上用户空间应用程序后构成完整操作系统。严格来说,Linux 指内核,而通常所说的 Linux 是基于其内核的完整操作系统,包括 GUI 组件和实用工具。

GNU 通用公共许可协议(GNU GPL 或 GPL)是广泛使用的自由软件许可协议,基于 GPL 开发的衍生产品发布时必须采用 GPL 许可证并公开源代码。

Linux 是自由软件和开放源代码软件的典型例子,遵循 GNU 通用公共许可证,个人和机构可自由使用、修改和再发布其底层源代码,随着发展,集成的开源软件和实用工具也得到普及,成为开源软件的代名词。

(三)官网

Linux 内核的官方网站是 kernel 官网。

(四)企业应用现状

  1. 服务器领域:Linux 服务器操作系统市场份额不断增长,在政府、金融、农业、交通、电信等关键领域广泛应用,目前占据 75% 的市场份额,成为服务器操作系统的中坚力量。
  2. 桌面领域:国内如中标麒麟 Linux、红旗 Linux、深度 Linux 等厂商推出的桌面操作系统在政府、企业、OEM 等领域应用广泛,SUSE、Ubuntu 也有相关桌面系统,但在易用性、软硬件兼容性等方面与 Windows 有差距。
  3. 移动嵌入式领域:Linux 低成本、定制功能强、移植性好,在手机、平板电脑、路由器等领域广泛应用,Android 操作系统基于 Linux 内核,2015 年全球市场份额达 84.6%,思科、阿里云等也有基于 Linux 的定制系统。
  4. 云计算 / 大数据领域:Linux 在云计算、大数据平台构建中占据核心优势,86% 的企业使用 Linux 进行相关平台构建,正取代 Unix 成为主流。

(五)主要发行版本

发行版本特点适用人群
Debian运行极其稳定系统管理员和高级用户
UbuntuDebian 的衍生版,最受欢迎的免费操作系统新手用户
红帽企业级 Linux首款面向商业市场的 Linux 发行版,有服务器版本,支持多种处理器架构企业用户,需通过红帽认证的系统管理员
CentOS基于红帽企业级 Linux 免费源代码重构,与红帽企业级 Linux 外观和行为相似,使用 YUM 管理软件包不想支付高额费用又想使用类似红帽企业级 Linux 的用户
Fedora红帽公司的测试平台,有庞大的用户论坛和较多软件包想尝试最先进技术的用户
Kali LinuxDebian 的衍生版,用于渗透测试,前身是 Backtrack,自带许多渗透测试工具,使用 APT 管理软件包渗透测试人员、文明黑客

三、OS 概念与定位

操作系统的根本要义是 “使计算机更好用”,它负责内存管理、进程管理、文件管理、驱动管理等,用户通过指令操作、开发操作、管理操作与操作系统交互,操作系统通过驱动程序与底层硬件(如网卡、硬盘等)交互。

四、使用 XShell 远程登录 Linux

(一)关于 Linux 桌面

工作中很少使用图形界面,因为图形界面会占用更多系统资源,且在服务器环境中,命令行操作更高效、稳定和灵活。

(二)下载安装 XShell

XShell 是远程终端软件,官网为 https://www.netsarang.com/products/xsh_overview.html,下载安装时选择 "home/school" 为免费版本。

(三)查看 Linux 主机 IP

在终端输入 ifconfig 指令可查看 IP 地址。

(四)使用 XShell 登陆主机

在 XShell 终端输入 ssh [ip](ip 为 ifconfig 查到的结果),网络畅通时输入用户名密码即可登录。

(五)XShell 下的复制粘贴

  • 复制:ctrl + insert(部分电脑需配合 fn 键)
  • 粘贴:shift + insert
  • ctrl + c / ctrl + v 不可用

五、Linux 下基本指令

(一)ls 指令

  • 语法ls [选项] [目录或文件]
  • 功能:列出目录下的子目录与文件,或文件的相关信息。
  • 常用选项
    • -a:列出所有文件,包括以 . 开头的隐含文件。
    • -d:将目录像文件一样显示,而非其下文件,如 ls –d 指定目录
    • -i:输出文件的 i 节点索引信息,如 ls –ai 指定文件
    • -k:以 k 字节表示文件大小,如 ls –alk 指定文件
    • -l:列出文件详细信息。
    • -n:用数字的 UID、GID 代替名称。
    • -F:在文件名后附字符说明文件类型,* 表示可执行普通文件;/ 表示目录;@ 表示符号链接;| 表示 FIFOs;= 表示套接字。
    • -r:对目录反向排序。
    • -t:以时间排序。
    • -s:在文件名后输出文件大小。
    • -R:列出所有子目录下的文件(递归)。
    • -1:一行只输出一个文件。

(二)pwd 命令

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

(三)cd 指令

  • Linux 理论知识:路径的认识
    • Linux 系统中,文件和目录组成目录树,普通文件是叶子节点,目录可能是叶子(空目录)或中间节点。
    • 路径用于快速定位文件,具有唯一性,绝对路径从 / 开始,不依赖其他目录;相对路径相对于当前目录。
  • 语法cd 目录名
  • 功能:改变工作目录到指定目录。

(四)touch 指令

  • 语法touch [选项]... 文件...
  • 功能:更改文档或目录的日期时间(存取时间和更改时间),或新建不存在的文件。
  • 常用选项
    • -a:仅更改访问时间。
    • -c:仅更改修改时间。

(五)mkdir 指令

  • 语法mkdir [选项] dirname...
  • 功能:在当前目录创建名为 “dirname” 的目录。
  • 常用选项-p/--parents:若路径中某些目录不存在,自动建立,可一次建立多个目录。

(六)rmdir 指令 && rm 指令

  1. rmdir 指令
    • 语法rmdir [-p] [dirName]
    • 功能:删除空目录。
    • 常用选项-p:子目录删除后父目录为空则一并删除。
  2. rm 指令
    • 语法rm [-f-i-r-v] [dirName/dir]
    • 功能:删除文件或目录。
    • 常用选项
      • -f:即使文件为只读,直接删除。
      • -i:删除前逐一询问确认。
      • -r:删除目录及其下所有文件。

(七)man 指令

  • 功能:通过查看联机手册获取命令帮助。
  • 语法man [选项] 命令
  • 常用选项
    • -k:根据关键字搜索联机帮助。
    • num:只在第 num 章节查找。
    • -a:显示所有章节的内容。
  • man 手册章节解释
    • 1:普通命令;2:系统调用;3:库函数;4:特殊文件;5:文件格式;6:游戏相关;7:附件和变量;8:系统管理命令;9:略。

(八)cp 指令

  • 语法cp [选项] 源文件或目录 目标文件或目录
  • 功能:复制文件或目录;若指定多个文件或目录,且最后目的地是已存在目录,会将前面的所有文件或目录复制到该目录。
  • 常用选项
    • -f 或 --force:强行复制,不论目标是否存在。
    • -i 或 --interactive:覆盖前询问用户。
    • -r:递归处理,将目录下的文件与子目录一并处理。

(九)mv 指令

  • 语法mv [选项] 源文件或目录 目标文件或目录
  • 功能
    • 视 mv 命令中第二个参数类型的不同(是目标文件还是目标目录),mv 命令将文件重命名或将其移至一个新的目录中。
    • 当第二个参数类型是文件时,mv 命令完成文件重命名,此时源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
      • 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv 命令将各参数指定的源文件均移至目标目录中。
    • 常用选项
      • -f:强制,如果目标文件已经存在,不会询问而直接覆盖。
      • -i:若目标文件已经存在时,会询问是否覆盖。
  • (十)cat 指令

  • 语法cat [选项] [文件]
  • 功能:查看目标文件的内容。
  • 常用选项
    • -b:对非空输出行编号,空行不做编号。
    • -n:对输出的所有行编号。
    • -s:不输出多行空行。
  • (十一)more 指令

  • 语法more [选项] [文件]
  • 功能:类似 cat 命令,用于查看文件内容,可分页显示。
  • 常用选项
    • -n:指定输出行数。
    • q:退出 more。
  • (十二)less 指令

  • 语法less [参数] 文件
  • 功能:对文件或其它输出进行分页显示,功能比 more 更强大,可前后翻阅文件,支持搜索。
  • 常用选项
    • -i:忽略搜索时的大小写。
    • -N:显示每行的行号。
    • /字符串:向下搜索 “字符串”。
    • ?字符串:向上搜索 “字符串”。
    • n:重复前一个搜索。
    • N:反向重复前一个搜索。
    • q:退出。
  • (十三)head 指令

  • 语法head [参数]... [文件]...
  • 功能:显示文件的开头部分内容,默认显示开头 10 行。
  • 常用选项
    • -n<行数>:显示指定的行数。
  • (十四)tail 指令

  • 语法tail [必要参数] [文件]
  • 功能:显示指定文件末尾内容,常用查看日志文件,可动态刷新。
  • 常用选项
    • -f:循环读取,实时显示新增内容。
    • -n<行数>:显示指定的行数。
  • (十五)date 指令

  • 语法date [OPTION]... [+FORMAT]
  • 功能:显示或设置系统时间。
  • 常用格式标记
    • %H:小时(00..23)
    • %M:分钟(00..59)
    • %S:秒(00..61)
    • %d:日(01..31)
    • %m:月份(01..12)
    • %Y:完整年份(0000..9999)
    • %F:相当于 %Y-%m-%d
    • %X:相当于 %H:%M:%S
  • 时间戳相关
    • 时间转时间戳:date +%s
    • 时间戳转时间:date -d@时间戳
  • (十六)cal 指令

  • 语法cal [参数] [年份]
  • 功能:查看公历日历。
  • 常用选项
    • -3:显示系统前一个月、当前月、下一个月的月历。
    • -j:显示在当年中的第几天。
    • -y:显示当前年份的日历。
  • (十七)find 指令

  • 语法find pathname -options
  • 功能:在目录结构中搜索文件,并执行指定的操作。
  • 常用选项
    • -name:按照文件名查找文件。
  • (十八)which 指令

  • 功能:搜索系统指定的命令的路径。
  • (十九)whereis 指令

  • 功能:用于找到程序的源文件、二进制文件或手册。
  • (二十)alias 指令

  • 功能:设置命令的别名。
  • (二十一)grep 指令

  • 语法grep [选项] 搜寻字符串 文件
  • 功能:在文件中搜索字符串,将找到的行打印出来。
  • 常用选项
    • -i:忽略大小写。
    • -n:输出行号。
    • -v:反向选择,显示没有搜寻字符串的行。
  • (二十二)top 指令

  • 功能:实时显示系统中各个进程的资源占用情况。
  • 常用选项
    • -d:刷新的时间间隔。
    • -n:刷新的次数。
    • q:退出。
  • (二十三)zip/unzip 指令

  • 语法zip 压缩文件.zip 目录或文件unzip 压缩文件.zip [选项]
  • 功能:将目录或文件压缩成 zip 格式,或解压 zip 格式文件。
  • 常用选项
    • zip 的 -r:递归处理,将指定目录下的所有文件和子目录一并处理。
    • unzip 的 -d:指定解压目录。
  • (二十四)tar 指令

  • 语法tar [-cxtzjvf] 文件与目录 ....
  • 功能:打包、压缩或解压文件。
  • 常用参数
    • -c:建立压缩文件。
    • -x:解开压缩文件。
    • -t:查看压缩文件内的文件。
    • -z:使用 gzip 压缩。
    • -j:使用 bzip2 压缩。
    • -v:显示压缩过程。
    • -f:指定压缩文件名,后接文件名。
    • -C:解压到指定目录。
  • (二十五)bc 指令

  • 功能:进行浮点运算。
  • (二十六)uname 指令

  • 语法uname [选项]
  • 功能:获取电脑和操作系统的相关信息。
  • 常用选项
    • -a:详细输出所有信息,包括内核名称、主机名、内核版本号等。
  • 六、重要热键

  • [Tab]:具有 “命令补全” 和 “档案补齐” 的功能。
  • [Ctrl]-c:让当前的程序停止。
  • [Ctrl]-d:通常代表 “键盘输入结束”,也可用来取代 exit。
  • 七、关机命令

  • 语法shutdown [选项]
  • 常见选项
    • -h:将系统的服务停掉后,立即关机。
    • -r:在将系统的服务停掉之后重新启动。
    • -t sec:过 sec 秒后关机。
  • 八、shell 命令及运行原理

    Linux 严格意义上是一个操作系统的 “核心 (kernel)”,用户不能直接使用 kernel,而是通过 “外壳” 程序 shell 与 kernel 沟通。shell 是命令行解释器,主要功能是将使用者的命令翻译给核心处理,同时将核心的处理结果翻译给使用者。

    九、Linux 权限管理

    (一)用户分类

  • 超级用户(root):可在 Linux 系统下做任何事情,不受限制,命令提示符是 “#”。
  • 普通用户:在 Linux 下做有限的事情,命令提示符是 “$”。
  • 切换用户命令:su [用户名],如从普通用户切换到 root 用户使用 su root(root 可省略),需输入 root 密码。
  • (二)文件访问者分类

  • 所有者(u - User)
  • 所有者所在组的用户(g - Group)
  • 其它用户(o - Others)
  • (三)文件类型和访问权限

  • 文件类型
    • d:文件夹
    • -:普通文件
    • l:软链接(类似 Windows 的快捷方式)
    • b:块设备文件(如硬盘、光驱等)
    • p:管道文件
    • c:字符设备文件(如屏幕等串口设备)
    • s:套接口文件
  • 基本权限
    • 读(r/4):对文件可读取内容,对目录可浏览信息。
    • 写(w/2):对文件可修改内容,对目录可删除移动文件。
    • 执行(x/1):对文件可执行,对目录可进入。
    • “—”:不具有该项权限。
  • (四)权限设置方法

  • chmod:设置文件的访问权限
    • 格式:chmod [参数] 权限 文件名
    • 常用选项:-R 递归修改目录文件的权限。
    • 权限设置格式:
      • 用户表示符 +/-= 权限字符,如 chmod u+w /home/abc.txtchmod o-x /home/abc.txt
      • 三位 8 进制数字,如 chmod 664 /home/abc.txtchmod 640 /home/abc.txt
  • chown:修改文件的拥有者
    • 格式:chown [参数] 用户名 文件名
    • 举例:chown user1 f1chown -R user1 filegroup1
  • chgrp:修改文件或目录的所属组
    • 格式:chgrp [参数] 用户组名 文件名
    • 常用选项:-R 递归修改。
    • 举例:chgrp users /abc/f2
  • umask:查看或修改文件掩码
    • 新建文件默认权限 = 0666,新建目录默认权限 = 0777,实际权限 = mask & ~umask。
    • 格式:umask 权限值,如 umask 044 设置
    • 举例:umask 查看当前掩码值,umask 044 设置掩码值。
    • (五)目录权限特殊说明

    • 可执行权限:无此权限则无法 cd 到目录中。
    • 可读权限:无此权限则无法用 ls 等命令查看目录中的文件内容。
    • 可写权限:无此权限则无法在目录中创建或删除文件。
    • (六)粘滞位

      为解决用户可删除目录中他人文件的问题,Linux 引入粘滞位概念。当目录被设置为 “粘滞位”(用 chmod +t),该目录下的文件只能由超级管理员、该目录的所有者或该文件的所有者删除。

    • 十、file 指令

    • 功能:辨识文件类型。
    • 语法file [选项] 文件或目录...
    • 常用选项
      • -c:详细显示指令执行过程,便于排错。
      • -z:尝试解读压缩文件的内容。
    • 十一、使用 sudo 分配权限

    • 修改 /etc/sudoers 文件分配权限

      格式:接受权限的用户登陆的主机 =(执行命令的用户) 命令
    • 使用 sudo 调用授权的命令
      • 格式:$ sudo –u 用户名 命令
      • 举例:$ sudo -u root /usr/sbin/useradd u2
    • 十二、其他常用命令分类

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

 十三、结语

今日C++到这里就结束啦,如果觉得文章还不错的话,可以三连支持一下。感兴趣的宝子们欢迎持续订阅小枫,小枫在这里谢谢宝子们啦~小枫の主页还有更多生动有趣的文章,欢迎宝子们去点评鸭~C++的学习很陡,时而巨难时而巨简单,希望宝子们和小枫一起坚持下去~你们的三连就是小枫的动力,感谢支持~

http://www.xdnf.cn/news/1463185.html

相关文章:

  • 关于CAN总线bus off 理论标准 vs 工程实践
  • XX汽集团数字化转型:全生命周期网络安全、数据合规与AI工业物联网融合实践
  • 数据可视化工具推荐:5款让图表制作轻松上手的神器
  • 23ai数据库通过SQLcl生成AWR报告
  • 【FastDDS】Layer Transport ( 01-overview )
  • 五年霸榜|悬镜安全持续引领《2025年中国网络安全市场全景图》DevSecOps开发安全赛道
  • Redis 发布订阅:社区的 “通知栏与分类订阅” 系统
  • Linux/UNIX系统编程手册笔记:DAEMON、编写安全的特权程序、能力、登录记账
  • 【QT 5.12.12 下载 Windows 版本】
  • Bing 搜索引擎检索语法
  • CodeQL(Mac)安装与测试(Visual Studio)简明指南
  • 解决IntelliJ IDEA 提交代码时无复选框问题
  • Node.js 做 Web 后端优势为什么这么大?
  • Spark面试题及详细答案100道(56-70)-- 性能优化
  • 逆天!影响因子0.1,竟然划分到中科院1区TOP?
  • 少儿舞蹈小程序(8)校区信息后台搭建
  • linux缺页中断频繁怎么定位
  • flask的使用
  • 栈:简化路径
  • 手写MyBatis第51弹:深入解析MyBatis分页插件原理与手写实现
  • 改 TDengine 数据库的时间写入限制
  • Bug 排查日记:打造高效问题定位与解决的技术秘籍
  • GCC编译器深度解剖:从源码到可执行文件的全面探索
  • 残差连接与归一化结合应用
  • 解决网络太慢问题
  • C++《C++11》(上)
  • 基于单片机智能热水壶/养生壶设计
  • 用 epoll 实现的 Reactor 模式详解(含代码逐块讲解)
  • Vue3源码reactivity响应式篇之EffectScope
  • Android 应用进程启动