news 2026/8/5 17:32:31

Linux系统编程(一)命令基础、软件安装与卸载

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux系统编程(一)命令基础、软件安装与卸载

一、shell简介

shell:命令解释器,根据输入的命令执行相应命令。

  • 查看当前系统有哪些shell:
cat/etc/shells /bin/sh 已经被/bin/bash取代 /bin/bash Linux默认的shell /bin/ksh Kornshell有AT&T Bell lab 发展出来的,兼容于bash /bin/tcsh 整合 C Shell,提供更多的功能 /bin/csh 被/bin/tcsh所取代 /bin/zsh 基于ksh发展出来的,功能更强大的shell
  • 查看当前系统正在使用的shell
echo$SHELLecho:回显,显示字符串;$:(取值)把命令解释器取出;SHELL:指命令解释器env把当前系统所有的环境变量都显示出来top文字版的任务管理器kill杀死进程ps查看系统级下的进程状态jobs查看当前用户下的进程状态,alias给命令起别名umask[-p]-S[mode]umask指定用户创建文件时的掩码,其中的mode和chmod的命令中的格式一样。如果不用mode参数,则显示当前的umask设置。如果使用-S,则以符号形式显示设置。
  • 主键盘快捷键
功能快捷键助记
Ctrl-pprevious
Ctrl-nnext
Ctrl-bbackward
Ctrl-fforward
DelCtrl-ddelete光标后面的
HomeCtrl-athe first letter
EndCtrl-eend
BackspaceBackspacedelete光标前面的

热键呼出终端Ctrl-p

二、类Unix系统目录结构

1./ 根目录

bin 系统可执行程序,如命令 boot 内核和启动程序,所有和启动相关文件都存在这里 grub 引导器相关文件 dev 存放设备文件 home 用户的主目录。下面是自己定义的用户名的文件夹 etc 系统软件的启动和配置文件,系统在启动过程中需要读取的文件都在这个目录。如LIL0参数、用户账号和密码 lib 系统程序库文件,这个目录里存放着系统最基本的动态链接共享库,类似于Windows下的system32目录,几乎所有的应用程序都需要用到这些共享库 media 挂载媒体设备、如光驱、U盘等 mnt 目录是让用户临时挂载别的文件系统,如挂载Windows下的某个分区,ubuntu默认还是挂载在/media目录 opt 可选的应用软件包(很少使用) proc 这个目录是系统内存的映射,我们可以直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘而是在内存里 sbin 管理员系统程序 selinux srv sys udev用到的设备目录树,/sys反映你机器当前所接的设备 tmp 临时文件夹 root 管理员宿主目录(家目录) usr 用户资源管理目录 bin 应用程序 game 游戏程序 include lib 应用程序的库文件 lib64 local 包含用户程序等 sbin 管理员应用程序

2.Linux系统文件类型

普通文件:- 目录文件:d 字符设备文件:c 块设备文件:b 软连接:l 管道文件:p 套接字:s 未知文件:。

三、基础命令行

a.目录、文件命令

1、ls

ls[参数][目录]-a#显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);-A#显示除影藏文件“.”和“…”以外的所有文件列表;-l#与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;-h#以人类的方式查看-F#在每个输出项后追加文件的类型标识符,具体含义:“”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;类型标识符-b#将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;-c#与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;-d#仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;-f#此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;-i#显示文件索引节点号(inode)。一个索引节点代表一个文件;–file-type#与“-F”选项的功能相同,但是不显示“”;-k#以KB(千字节)为单位显示文件大小;-l#以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;-m#用“,”号区隔每个文件和目录的名称;-n#以用户识别码和群组识别码替代其名称;-r#以文件名反序排列并输出目录内容列表;-s#显示文件和目录的大小,以区块为单位;-t#用文件和目录的更改时间排序;-L#如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;-R#递归处理,将指定目录下的所有文件及子目录一并处理;–full-time#列出完整的日期与时间;–color[=WHEN]#使用不同的颜色高亮显示不同类型的。

2、Which

whichls查看制定命令所在路径

如何省略用户头:vi .bashrc,添加PS1=$

3、pwd

pwd查看当前所在目录

4、mkdir

mkdir[OPTION]DIRECTORY 创建目录DIRECTORY,可以一次创建多个。如果OPTION是-p,表示可以连同父目录一起创建。

5、rmdir

rmdir[OPTION]DIRECTORY 删除空目录,可以一次删除多个。OPTION如果是-p,表示可以连同空的父目录一起删除。 空目录:只包含.和..的目录为空目录。

6、touch

touch[OPTION]FILE 将每个文件的访问及修改时间都更新为目前的时间 如果文件不存在,则创建一个字节数为0的文件

7、rm

rmfile删除文件或目录-r递归删除-f强制删除

8、mv

mvfile1 file2 文件重命名 移动文件

9、cp

拷贝文件cpfile1 file2cpfile1 dir/cpfile1../ 拷贝目录cpdir1 dir2#如果dir1不是空的,会显示“略过目录”cp-rdir1 dir2cp-rdir1 ~/cp-adir1 dir2cp-adir1 ~/-r#递归-a#all,全部-r和-a的区别:-a的拷贝过去的最后修改时间不会改变

b.文件读取命令行

1.cat

catfile查看文件内容,输出到终端; 如果cat后没跟文件名,则读取终端的标准输入,遇到\n后,输出标准输出,终端下输入Ctrl-d表示结束tacfile将文件内容倒序输出到终端

2、more、less

more[OPTION]FILEless[OPTION]FILE 查看文本文件内容,屏幕显示完一屏就等待用户按下任意键再滚动到下一屏,如果中途不想继续看下去,可以按Ctrl-c或Ctrl-q终止显示

3、head、tail

head[OPTION]FILE 显示指定文件的前几行。如果没有指定文件,将从标准输入(键盘)上读取;如果没有指定要显示的行数,则默认显示前10行,指定行数:head-5filetail[OPTION]FILE 显示指定文件的后几行。tail-5file

4、tree

tree 按结构树的形状显示目录和文件

5、du、df

du-h查看每个文件的大小df-h查看磁盘的占用大小

6、ln

链接有两种,一种被称为硬链接,另一种被称为软连接(符号链接)。

硬链接:链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。

特征:修改任意的链接或被链接文件,所有文件内容都会修改。

lnhello word_h
statfile.h 硬链接原理:使用Inode/唯一编号 删除硬链接的时候:操作的是硬链接基数-1

软连接

ln-shello word_s

四、文件属性和用户用户组

1、whoami

whoami查看当前登录用户

2、chmod

1)文字设定法

chmod [who] [+|-|=] [mode] 文件名 操作对象who可是下述字母中的任一个或它们的组合: u表示“用户(user)”,即文件或目录的所有者 g表示“同组(group)用户”,即与文件属主有相同组ID的所有用户 o表示“其他(others)用户” a表示“所有(all)用户”,它表示系统默认值 操作符号 +添加某个权限 -取消某个权限 =赋予某个权限 mode表示权限可用下述字母的任意组合 r可读 w可写 x可执行

2)数字设定法

chmod [mode] 文件名 数字表示的属性: 0表示没有权限 1表示可执行权限 2表示可写权限 4表示可读权限

3、chown、chgrp

chown[OPTION]...[OWNER:GROUP]FILE...chown[OPTION]...-reference=RFILE FILE...-R递归式地改变指定目录及其下的所有子目录和文件的拥有者。-v显示chown命令所做的工作。

4、adduser/passwd/deluser

/etc目录下的passwd文件中有用户和用户组信息:

sudoadduser username 添加用户sudodeluser username 删除用户sudochownusername filenamesudochown新用户名 待修改文件
sudoaddgroup g88 添加用户组sudodelgroup g88 删除用户组sudochgrpg88 a.csudochgrp新用户组名 待修改文件

示例:把一个文件改为nobody用户和nogroup用户组所有

sudochownnobody:nogroup fiel1

五、查找与检索

1、find(找文件)

find./-type'l'通过文件类型搜索文件find./-name'*.jpg'通过文件名字搜索文件find./-maxdepth2-name'*.jpg'-maxdepth2指find的目录层级find./-size+20M-size-50M通过文件大小查找文件(大于20M,小于50M)-atime# access 最近访问时间-mtime# modify 最近更改时间-ctime# change 最近改动时间,按天find./-ctime1find/usr/-name"*tmp*"-execls-l{}\;如果执行rm-r,不询问find./-name"*tmp"-okrm{}\;如果执行rm-r,询问 -xargs:将find搜索的结果集执行某一指定命令。当结果集数量过大时,可以分片映射,提高效率;find/usr/-name'*tmp*'|xargsls-ld-xargs-exec的区别: (1)-xargs 与|同时使用 (2)-xargs 当结果集数量过大时,可以分片映射,提高效率; (3)-xargs 以“空格”作为分割依据find./-maxdepth1-typef-print0|xargs-print0ls-l#以“null”作为拆分依据

2、stat

查看Inode节点

stat文件名

3、grep

根据文件内容检索

grep-r'copy'./-n'copy':文件内容 -n:会显示出行号

4、ps

ps命令用于监控后台进程的工作情况,因为后台进程是不合屏幕键盘等输出设备进行通信,所以需要检测其情况;

ps[选项]# 显示当前跟用户交互的进程-e# 显示所有进程-f# 全格式-h# 不显示标题-l# 长格式-w# 宽输出-r# 只显示正在运行的进程-a# 即all,查看当前系统所有用户的所有进程-u# 查看进程所有者及其他一些详细信息-x# 显示没有控制终端的进程psaux|grep'cupsd'# 检索进程结果集

5、locate

查找符合条件的文件

六、软件包安装

1、apt-get

sudoapt-getupdate 更新本地软件列表sudoapt-getinstall软件名 安装软件sudoapt-getremove 软件名 卸载软件

aptitude与apt-get类似

sudoaptitudeshow tree 查看tree是否已经安装,这是apt-get没有的

2、deb包安装

sudodpkg-ixxx.deb 安装deb软件包命令sudodpkg-rxxx.deb 删除软件包命令sudodpkg-r--purgexxx.deb 连同配置文件一起删除命令sudodpkg-infoxxx.deb 查看软件包信息命令sudodpkg-Lxxx.deb 查看文件拷贝详情命令sudodpkg-l查看系统中已安装软件包信息命令sudodpkg-reconfigure xxx 重新配置软件包命令

3、源码包安装

  1. 解压缩源码包
  2. cd dir
  3. ./configure检测文件是否缺失,创建Makefile,检测编译环境
  4. make编译源码,生成库和可执行程序
  5. sudo make install把库和可执行程序,安装到系统路径下
  6. sudo make distclean删除和卸载软件

七、压缩包管理

1、tar

tar [主选项+辅选项] 文件或目录打包

tar可以为文件和目录创建档案。利用tar命令用户可以为某一特定文件创建档案,也可以在档案中改变文件,或者向档案中加入新的文件。使用该命令时,主选项是必须要有的,辅选项是辅助使用的,可以选用。

tar-zcvf要生成的压缩包名(带.tar.gz后缀) 压缩文件

主选项:

c# 创建新的档案文件。如果用户想备份一个目录或一些文件,就要选择这个选项,create(常用)r# 把要存档的文件追加到档案文件的末尾t# 列出档案文件的内容,查看已经备份了哪些文件u# 更新文件。用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。x# 从档案文件中释放文件(常用)

辅选项:

z# 指gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩(常用)v# 指压缩说明;详细报告tar处理的文件信息(常用)f# 指file,文件;使用档案文件或设备这个选项通常是必选的(常用)k# 保存已经存在的文件m# 在还原文件时,把所有文件的修改时间设定为现在M# 创建多卷的档案文件,以便在几个磁盘中存放W# 每一步都要求确认j# 用bzip2来压缩/解压文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩(常用)

2、rar

打包:把dir压缩成newdir.rar

rara-rnewdirdir

解包:把newdir.rar解压缩到当前目录

unrarx newdir.rar

3、zip

打包:

zip-rdir.zipdir

解包:

unzipdir.zip

其它

linux创建终端:快捷键 新开终端:Ctrl+Shift+n 创建终端标签:Ctrl+Shift+t 切换标签:Alt+n(n=1)

1、通过运行程序名称找到文件运行路径

$ pgrep-xmy_server12345$ readlink-f/proc/12345/exe /home/user/projects/my_server/bin/my_server

2、嵌入式中如何自启守护进程,并在被杀死立即重启

a. install.sh
#!/bin/bashchmod777./bs_scpchmod777./start_app.shcp./bs_scp.service /etc/systemd/system/ systemctl daemon-reload systemctlenablebs_scp systemctl start bs_scp systemctl status bs_scp

b. start_app.sh

#!/bin/bash# 定义源目录和目标目录路径SOURCE_DIR="./temp"# 替换为实际的源目录路径TARGET_DIR="./"# 替换为实际的目标目录路径# 检查源目录是否存在并且是目录if[-d"$SOURCE_DIR"];thenecho"update directory exists:$SOURCE_DIR"# 复制源目录中的所有文件和子目录到目标目录(覆盖同名文件)cp-r"$SOURCE_DIR"/."$TARGET_DIR"/echo"Copied contents from$SOURCE_DIRto$TARGET_DIR"# 删除源目录及其内容rm-rf"$SOURCE_DIR"echo"Removed source directory:$SOURCE_DIR"elseecho"update directory does not exist"fiwhiletrue;dosleep0.5sLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$(pwd)./bs_scpdone
c.bs_scp.service
[Unit]Description=bs_scp#服务的描述,方便管理员识别。After=network.target#表示该服务在网络服务就绪后才启动,避免因网络未准备好而出错。[Service]Type=simple# 表示 ExecStart 启动的进程就是主进程(不会 fork)。User=root#以 root 身份运行。WorkingDirectory=/root/app#设置工作目录,start_app.sh 中的相对路径 ./bs_scp 就是相对于这个目录。ExecStart=/root/app/start_app.sh#服务启动时要执行的命令,这里是运行 start_app.sh 脚本。ExecStop=/usr/bin/kill-15$MAINPID#服务停止时执行的命令,向主进程发送 SIGTERM(15)信号,优雅终止。Restart=on-failure#当服务进程异常退出(非正常停止)时,systemd 会自动重启它。[Install]WantedBy=multi-user.target#表示该服务在系统进入多用户模式(正常启动)时被启用,从而实现开机自启。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/5 17:31:45

数据库开发之事务和索引的详细解析

2. 事务场景:学工部整个部门解散了,该部门及部门下的员工都需要删除了。操作:-- 删除学工部 delete from dept where id 1; -- 删除成功 ​ -- 删除学工部的员工 delete from emp where dept_id 1; -- 删除失败(操作过程中出现…

作者头像 李华
网站建设 2026/8/5 17:25:15

小型储能六层板叠层架构选型

小型储能设备以户用储能电源、便携式储能、低压 BMS 控制板为代表,普遍同时存在高压充放电功率回路、电芯微弱采样线路、CAN 通讯差分信号三类电路,六层 PCB 凭借分层隔离空间充足、电源平面载流能力强的优势成为主流方案。不少制造失效案例显示&#xf…

作者头像 李华
网站建设 2026/8/5 17:24:21

界面控件DevExtreme(v23.2)下半年发展路线图

在这篇文章中,我们将介绍DevExtreme在v23.2中发布的一些主要特性,这些特性既适用于DevExtreme JavaScript (Angular、React、Vue、jQuery),也适用于基于DevExtreme的ASP. NET MVC/Core控件。 DevExtreme包含全面的高性能和响应式UI小部件集合…

作者头像 李华
网站建设 2026/8/5 17:24:16

readxl包深度解析:Excel数据导入R语言的完整实战指南

readxl包深度解析:Excel数据导入R语言的完整实战指南 【免费下载链接】readxl Read excel files (.xls and .xlsx) into R 🖇 项目地址: https://gitcode.com/gh_mirrors/re/readxl 还在为Excel数据处理而烦恼吗?面对.xls和.xlsx格式的…

作者头像 李华
网站建设 2026/8/5 17:21:57

Proxmark3企业级实战:NFC安全认证深度解析与配置指南

Proxmark3企业级实战:NFC安全认证深度解析与配置指南 【免费下载链接】proxmark3 Iceman Fork - Proxmark3 项目地址: https://gitcode.com/GitHub_Trending/pr/proxmark3 在物联网和智能门禁系统日益普及的今天,NFC/RFID安全认证成为企业级应用的…

作者头像 李华