【DAY21】Linux软件编程基础&Shell 命令、脚本及系统管理实操

一、操作系统

1.概念

操作系统本质是一个软件,功能用来屏蔽底层不同的硬件平台,为上层应用提供统一的接口和运行环境

2.组成

二、Shell命令

1.基本命令

请查看:

https://blog.csdn.net/2503_92576274/article/details/156693714?fromshare=blogdetail&sharetype=blogdetail&sharerId=156693714&sharerefer=PC&sharesource=2503_92576274&sharefrom=from_link

2.文件查看命令

1.cat failname //查看文件的全部内容,内容显示在终端

2.查看文件 开头/末尾 内容

head -n 10 filename

tail -n 10 filename

3.管道

(将前面命令的输出作为后续命令的输入)

head -n 10 filename | grep "字符串"

tail -n 100 /usr/include/stdio.h | grep "extern"

ps -ef | grep bash

4.查看搜索

grep**(搜索关键字)**

grep "字符串" 文件名

5. 重定向

(将原来输出在终端的内容写入到文件中 )

覆盖重定向:

命令 > 文件名 : 执行命令后的内容,写入到新的文件中,覆盖该文件原来的内容

追加重定向:

command >> failename : 执行命令后的内容,补充到该文件后面

6. 通配符

*:匹配任意长度任意字符

?:匹配一位长度任意字符

\]:匹配一位长度指定字符 ### 7.chmod(修改文件权限) > r:读权限 > > w:写权限 > > x:执行权限 > > > 421 > rwx > > rwx:创建文件的用户对文件是否拥有读写执行的权限 > > rwx:创建文件用户的同组用户对文件是否拥有读写执行的权限 > > rwx:其余人是否拥有读写执行的权限 > > > 7 7 7 > > rwx rwx rwx > > chmod 0777 filename > > chmod +/-r/w/x filename ### 8.chgrp(修改文件所属的组) > chgrp 用户名 filename ### 9.chown(修改文件所属的用户) > chown 用户名 filename > ### 10. (1)压缩 > tar -jcvf filename.tar.bz2 dirname/\* > > tar -zcvf filename.tar.gz dirname/\* > > #### (2)解压缩 > > tar -jxvf filename.tar.bz2 > > tar -zxvf filename.tar.gz > ### 11.文件查找 > find 目录 -name "文件名" > ### 12.其余命名 > 1.echo(在终端显示对应的内容, 相当于printf) > > 2.du(统计文件大小) > > du -m 文件名 > > du -k 文件名 > > 3.fdisk(查看磁盘分区信息) > > fdisk -l > > 4.sudo(使用超级用户的权限来执行某个操作) > > sudo fdisk -l > > 5. date (查看日期) > > 6.whoami(查看当前登录的用户 ) > > 7.ps(查看进程信息) > > ps -ef > > 8.top(根据cpu占用率产看进程信息) > > top > > q(退出) > > 9.ifconfig(查看网卡信息) > > 10.ping(测试与目的主机是否连通) > > ping 8.8.8.8 ### 13.dpkg工具集 > #安装软件 > > sudo dpkg -i filename.deb > > > #查看软件是否安装成功 > > sudo dpkg -l 软件名 > > > #卸载软件 > > sudo dpkg -P 软件名 ### 14. apt-get工具集 可以自己根据配置的源下载对应软件 根据软件依赖关系安装软件所需要的所有依赖 #### 1. 上网 > ping 8.8.8.8 > > 1.让虚拟机使用NAT模式 > > 点击"虚拟机" > > 点击"设置" > > 点击"虚拟网络适配器" > > 选择"NAT模式" > > 点击"确定" > > 2.修改Ubuntu配置文件 > > 打开配置文件 > > sudo vim /etc/network/interfaces > > 修改配置文件格式: > > auto lo > > iface lo inet loopback > > auto ens33 > > iface ens33 inet dhcp > > 保存、退出:wq > > 3.重启Ubuntu > > sudo shutdown -r now #### 2. 配置apt-get工具集的源 1. 点击"Ubuntu Software" 2. 右键选择"Software \& Updates" 3. 点击"close" 4. 输入命令 > sudo apt-get autoclean > > sudo apt-get update > > sudo apt-get install -f #### 3. 软件安装 > #安装软件 > > sudo apt-get install 软件名 > > #卸载软件 > > sudo apt-get remove 软件名 --purge ### 15.shell编程 #### 1.解释型语言、编译型语言 > 解释型语言:边翻译边执行 > > * 开发效率高 > * 执行效率低 > * 不适合做数据运算 > * 适合对系统管理 > > 编译型语言:先编译再执行 > > * 开发效率低 > * 执行效率高 > * 适合做数据运算符,有丰富的数据类型 > * c/c++、c#、java #### 2.shell脚本开发流程 1.编写shell脚本 > vim filename.sh 2.加上执行权限 > chmod +x filename.sh 3.运行 > ./filename.sh #### 3.shell脚本本质 一系列shell命令的集合 #### 4.shell脚本中的引号 1. 双引号 双引号中的变量内容会进行替换 2. 单引号 单引号中间内容为字符串常量,不做任何改变,直接操作 3. 倒引号 将倒引号中的内容作为命令来执行 #### 5.shell中的变量 > 1. 环境变量 > > shell脚本中用来存放系统相关信息的变量 > > PWD:存放当前所在目录的绝对路径 > > HOME:登录用户的家目录 > > PATH:系统软件默认的路径 > > 2.位置变量 > > $0:程序名 > > $1:执行脚本时传入的第一个参数 > > $2:执行脚本时传入的第二个参数 > > $#:传入参数的个数 > > $?:上一句语句运行的结果 > > $$:执行脚本对应的进程的ID号 > > 3.自定义变量 > > i=0 > > str="hello world" #### 6.分支 1.if基本格式 > if 表达式 man test //查看test用法 > > then > > 语句块 > > elif 表达式 read 从终端接收变量 > > 语句块 > > else > > 语句块 > > fi ![](https://i-blog.csdnimg.cn/direct/178af24a182547e594c7a78612994bd7.png) 2.case > case $变量 in > > 9)语句块 > > ;; > > 8)语句块 > > ;; > > 7)语句块 > > ;; > > \*)语句块 > > ;; > > esac #### 7.循环 expr: 计算表达式 seq:序列 ![](https://i-blog.csdnimg.cn/direct/16e3e37c83624f7e9bba3c4070837f14.png) #### 8.数组 ![](https://i-blog.csdnimg.cn/direct/4d6b65fb3f034a2990bff675f8e3a99d.png) ![](https://i-blog.csdnimg.cn/direct/222c53ee95a541e49e0898d1eb0b86d9.png) #### 9.函数 ![](https://i-blog.csdnimg.cn/direct/1d2fa0b1fcbd48e1ab19ecbb55cbb8a4.png) ![](https://i-blog.csdnimg.cn/direct/a055867740cc4b2698df056b72f90dd8.png)

相关推荐
路由侠内网穿透.1 小时前
本地部署代码托管解决方案 Gitea 并实现外部访问( Windows 版本)
运维·服务器·网络协议·gitea
iFeng的小屋1 小时前
【2026年新版】Python根据小红书关键词爬取所有笔记数据
笔记·爬虫·python
山岚的运维笔记2 小时前
SQL Server笔记 -- 第14章:CASE语句
数据库·笔记·sql·microsoft·sqlserver
宵时待雨2 小时前
STM32笔记归纳8:时钟
笔记·stm32·单片机·嵌入式硬件
扶苏10022 小时前
vue使用event.dataTransfer实现A容器数据拖拽复制到到B容器
前端·vue.js·chrome
江畔何人初2 小时前
pod的内部结构
linux·运维·云原生·容器·kubernetes
不做无法实现的梦~3 小时前
PX4编译环境配置和qgc配置安装教程(2)
linux·stm32
齐鲁大虾3 小时前
Linux下用什么编程语言方便开发B/S架构程序
linux·运维·架构
范纹杉想快点毕业3 小时前
状态机设计与嵌入式系统开发完整指南从面向过程到面向对象,从理论到实践的全面解析
linux·服务器·数据库·c++·算法·mongodb·mfc