Linuv软件编程 | Shell命令

Linux软件编程

  1. 操作系统概念:

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

  1. 操作系统组成:
    1. Linux内核
    • 内存的管理
    • 文件系统的管理
    • 任务的调度
    • 多任务通信
    • 网络功能管理
    • 硬件设备管理
    1. Shell
    • 保护内核
    • 命令解释器
    1. 库函数

3.man用户手册

标准命令 系统调用 库函数 设备说明 文件格式 娱乐 杂项 管理员命令

一、Shell命令

1.基本命令

除了刚开始学过的命令(例如ls、cd、cp mv等)外,还有许多其他命令

(1)文件查看指令

  • cat 查看文件内容

cat 文件名

  • head/tail 查看文件开头/结尾 内容

head -n 10 文件名 // 查看文件前十行内容

tail -n 10 文件名 //查看文件后十行内容

(2)查看搜索

  • grep

grep "字符串" 文件名

(3)管道

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

head -n 10 filename | grep "字符串" //在文件前十行查找该"字符串"

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

ps -ef | grep bash

(4)重定向

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

> 覆盖重定向 //将文件内容覆盖了

"hello world" > test.txt

>> 追加重定向 //接到文件内容后面

"hello world" >>test.txt

(5)通配符

  • * 匹配任意长度字符
  • ?匹配一位长度任意字符
  • \] 匹配一位长度指定字符

(6)chmod

修改文件权限

r读(4) w写(2) x执行(1)

三组rwx:

  • rwx:创建文件的用户对文件是否拥有读写执行的权限
  • rwx:创建文件的用户的同组用户对文件是否拥有读写执行的权限
  • rwx:其余人是否拥有读写执行的权限

chmod 0777 * //使所有人都有读写和执行权限

chmod +/-r/w/x //使加上或者减去读/写/执行的权限

(7)chgrp

修改文件所属的组

chgrp 用户名 文件名

(8)chown

修改文件所属的用户

chgrp 用户名 文件名

(9)压缩和解压缩

.tar.bz2

.tar.gz

压缩:
tar -jcvf filename.tar.bz2 dirname/*
tar -zcvf filename.tar.gz dirname/*

//两种形式都可,将dirname中的所有文件压缩到名为filename的压缩包中

解压缩:
tar -jxvf filename.tar.bz2
tar -zxvf filename.tar.gz

(10)文件查找

find 目录 -name"文件名"

2.其余命令

(1)echo 在终端显示对应的内容

(2)du 统计文件大小

du -m 文件名

du -k 文件名 //m和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

二、dpkg工具集

#安装软件

sudo dpkg -i filename.deb

#查看软件是否安装成功

sudo dpkg -l 软件名

#卸载软件

sudo dpkg -P 软件名

三、aptget工具集

可以自己根据配置的源下载对应软件

根据软件依赖关系安装软件所需要的所有依赖

#安装软件

sudo apt-get install 软件名

#卸载软件

sudo apt-get remove 软件名 --purg

四、shell编程

1. 解释型语言与编译型语言

  • 解释性语言:边翻译边执行
    • 开发效率高
    • 执行效率低
    • 不适合做数据运算
    • 适合对系统管理
    • python、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号

  • i=0

  • str="hello world"

示例:

6.分支

(1)if

  • 基本格式

if 表达式

then

语句块

elif 表达式

语句块

fi

  • test 检测文件类型,比较数值

-gt 大于

-lt 小于

-ge 大于等于

-le 小于等于

-eq 等于

-ne 不等于

示例:判断两个数中的最大值

cpp 复制代码
#!/bin/bash 
read num1
read num2

#if test $num1 -gt $num2 
#if [ $num1 -gt $num2 ]

then
	echo "num1 = $num1"
else
	echo "num2 = $num2"
fi

(2)case

  • 基本形式

case 变量值 in

9)语句块

;;

8)语句块

;;

7)语句块

;;

*)语句块

;;

esac

示例:接收一个数,输出它的大写

cpp 复制代码
#!/bin/bash 
read num

case $num in
	9)echo "玖"
		;;
	8)echo "捌"
		;;
	7)echo "柒"
		;;
    6)echo "陆"
        ;;
	*)echo "不认识"
		;;
esac

7.循环

  • for

示例:0-100求和

cpp 复制代码
#!/bin/bash

sum=0
i=0

for i in `seq 100`  //seq为序列
do
    sum=`expr $sum + $i`  //expr为计算表达式
dome

echo "sum = $sum"
  • while

示例:

cpp 复制代码
#!/bin/bash

sum=0
i=0

while[$i -le 100]
do
    sum=`expr $sum + $i`
    ((i++))
dome

echo "sum = $sum"
  • until

示例:

cpp 复制代码
#!/bin/bash

sum=0
i=0

until[ $i -gt 100 ]
do
    sum=`expr $sum + $i`
    i = `expr $i + 1`
done

echo "sum = $sum"

8.数组

示例:

cpp 复制代码
#!/bin/bash

array=(nice to meet you)

echo ======================
echo ${array[0]}
echo ${array[1]}
echo ${array[2]}
echo ${array[3]}

echo ======================
echo ${array[*]}

9.函数

示例:

cpp 复制代码
#!/bin/bash

add()
{
    sum=`expr $1 + $2`
    echo $sum
}

ret = `add 520 1`
echo "ret = $ret"
相关推荐
释怀不想释怀1 小时前
Linux快捷键,软件安装启动
linux·运维·服务器
zhengfei6111 小时前
自动化快速评估工具
运维·自动化
Hello World . .2 小时前
Linux:软件编程
linux·运维·服务器·vim
人间打气筒(Ada)2 小时前
k8s:CNI网络插件flannel与calico
linux·云原生·容器·kubernetes·云计算·k8s
老师用之于民2 小时前
【DAY21】Linux软件编程基础&Shell 命令、脚本及系统管理实操
linux·运维·chrome·经验分享·笔记·ubuntu
路由侠内网穿透.2 小时前
本地部署代码托管解决方案 Gitea 并实现外部访问( Windows 版本)
运维·服务器·网络协议·gitea
serve the people3 小时前
python环境搭建 (十三) tenacity重试库
服务器·python·php
jake don3 小时前
GPU服务器搭建大模型指南
服务器·人工智能
江畔何人初3 小时前
pod的内部结构
linux·运维·云原生·容器·kubernetes