Linux软件编程:Shell命令

  • 操作系统概念:
    • 操作系统可以看成是一个软件,功能用来屏蔽底层不同的硬件平台,为上层应用提供统一的接口和运行环境
  • 操作系统组成:
    • Linux内核
      • Linux内核功能
      • Shell
      • 库函数

1.Shell基本命令

  • 使用形式:

command -options arg1 arg2 arg3 ...

  • ls
  • cd
  • mkdir
  • rmdir
  • touch
  • rm
  • pwd
  • cp
  • mv

2. 文件查看命令

  • cat

查看文件信息

cat filename

  • head/tail

查看文件 开头/末尾 内容

head -n 10 filename

tail -n 10 filename

  • 管道

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

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

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

ps -ef | grep bash

  • grep

查看搜索关键字

grep "字符串" filename

  • >

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

>

覆盖重定向

>>

追加重定向

  • *、?、

通配符

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

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

\[\]:匹配一位长度指定字符

  • chnod

修改文件权限

r:读权限

w:写权限

x:执行权限

421

rwx

rwx:创建文件的用户对文件是否拥有读写执行的权限

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

rwx:其余人是否拥有读写执行的权限

7 7 7

rwxrwxrwx

chmod 0777 filename

chmod +/-r/w/x filename

  • chgrp

修改文件所属的组

chgrp 用户名 filename

  • chown

修改文件所属的用户

chown 用户名 filenane

  • .tar.bz2 / .gz

压缩:

tar -jcvf filename.tar.bz2 dirname/*

tar -zcvf filename.tar.gz dirname/*

解压缩:

tar -jxvf filename.tar.bz2

tar -zxvf filename.tar.gz

  • find

查找文件

find 目录 -name "filename"

  • 其余命令

1).echo

在终端显示对应内容

2).du

统计文件大小

du -m filename //以MB为单位

du -k filename //以KB为单位

3).fdisk

查看磁盘分区信息

fdisk -l

4).sudo

使用超级用户的权限来执行某个操作

sudo fdisk -l

5).date

查看日期

6).whoami

查看当前登录的用户

7).ps

查看进程信息

ps -ef

8).top

根据CPU占用率查看进程信息

9).ifconfig

查看网卡信息

10).ping

测试与目的主机是否连通

ping 8.8.8.8

11).dpkg工具集

#安装软件

sudo dpkg -i filename.deb

#查看软件是否安装成功

sudo dpkg -l 软件名

#卸载软件

sudo dpkg -P 软件名

12).apt-get工具集

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

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

3.Shell编程

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

  • 解释型语言:边翻译边执行
    • 开发效率高
    • 执行效率低
    • 不适合做数据运算
    • 适合对系统管理
    • python,shell
  • 编译型语言:先编译再执行
    • 开发效率低
    • 执行效率高
    • 适合做数据运算符,有丰富的数据类型
    • c/c++、c#、java

2).shell脚本开发流程

3).shell脚本本质

  • shell脚本本质就是一系列shell命令的集合

4).shell脚本中引号

  • 双引号
    • 双引号中的变量内容会进行替换
  • 单引号
    • 单引号中间内容为字符串常量,不做任何改变,直接操作
  • 倒引号
    • 将倒引号中的内容作为命令来执行

5).shell中的变量

环境变量

  • PWD:存放当前所在目录的绝对路径
  • HOME:登录用户的家目录
  • PATH:系统软件默认的路径

位置变量

  • $0:程序名
  • $1:执行脚本时传入的第一个参数
  • $2:执行脚本时传入的第二个参数
  • ......
  • $#:传入参数的个数
  • $?:上一句语句运行的结果
  • $$:执行脚本对应的进程的ID号

自定义变量

  • i=0
  • str="hello world"

6).分支

空格非常重要,稍不注意就会报错

  • if

if 表达式

then

语句块

elif 表达式

语句块

else

语句块

fi

  • case

case $变量 in

9)语句块

;;

8)语句块

;;

7)语句块

;;

*)语句块

;;

esa

7).循环

  • for、while、until

#while $i -le 100

#for i in 1 2 3 4 5 6

for i in `seq 6`

do

语句块

done

8).数组

9)函数

相关推荐
学长毕设11 小时前
基于SpringBoot的实验室资产管理系统
java·spring boot·后端
HideF11 小时前
Linux
linux·服务器·网络
zzu123zsw12 小时前
从臃肿的模板调用到声明式契约:深入 UniHttp 动态代理与多渠道生命周期扩展
java·spring boot·microsoft·unihttp
Ruiery13 小时前
Linux 6.6内核内存管理深度解析(十三):slab/slub 分配器
linux·运维·服务器
源码集结号13 小时前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
论文复现现场13 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
乌恩大侠14 小时前
从 AI-RAN 到 AI Agent:基于 NVIDIA Nemotron 构建 5G/6G 智能网络故障诊断系统
服务器·人工智能·5g·o-ru·ai-ran·电信大模型
啃瓜子的松鼠14 小时前
泛微OAe9-后端二开异步调用
java
秋天的怀念_David14 小时前
第二十一夜 · 数字黑洞与西西弗斯的惩罚
java·程序人生·算法
外收内放15 小时前
Python基础语法练习题(73)
java·前端·python