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

Linux学习--软件编程(shell命令)

1.软件编程学习内容

  • IO操作文件
  • 多任务编程
  • 网络编程
  • 数据库编程

2.shell命令

2.1 常用的shell命令

1.基本的shell命令

ls、cd、touch、rm、mkdir、rmdir、cp、mv

2.文件查看命令

cat:查看文件中的内容

使用形式:cat 文件名

head:查看文件开头内容

使用形式: head -n 行数 文件名

tail:查看文件末尾内容

使用形式: tail -n 行数 文件名

3.通配符

*:匹配任意长度、任意字符的文件

使用形式:ls file*.txt

?:匹配一位长度、任意字符的文件名

使用形式:ls file_?.txt

[]:匹配一位长度、指定字符的文件名

使用形式:ls file_[1,3,5].txt (匹配1,3,5的文件)

ls file_[1-5].txt(匹配1到5的文件)

ls file_[^3].txt(匹配除3以外的文件)

4.文件查找命令

find:查找文件

使用形式:find . -name 文件名

查找包含某个字符串的文件

使用形式:find . -type f -print0 | xargs -0 grep -l "字符串"

whereis: 查找二进制可执行程序

使用形式: whereis valgrind

5.管道

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

./a.out | grep "字符串"

ls file* | grep ".sh"

6.重定向

将原本要输出在终端的内容定向到文件中

覆盖重定向(将原来的内容覆盖):echo "hello world" > file.txt

追加重定向(将原内容末尾添加新内容)echo "hello world" >> file.txt

7.常见命令

echo命令:在终端显示内容

使用形式:echo "hello world"

grep命令:查找包含字符串对应的行并显示

使用形式:grep "字符串" 文件名

8.压缩和解压命令

.tar.gz格式

压缩:tar -zcvf 文件名.tar.gz 目录名 /*

解压:tar -zxvf 文件名.tar.gz

.tar.bz2格式

压缩:tar -jcvf 文件名.tar.bz2 目录名 /*

解压:tar -jxvf 文件名.tar.bz2

9.用户管理命令

useradd:新建用户

sudo useradd 用户名

userdel:删除用户

sudo userdel 用户名

passwd:修改密码

sudo passwd 用户名

su:切换用户

su 用户名exit 退出当前用户

chmod:修改文件权限

chmod 权限值 文件名第一组rwx:创建文件的用户对文件是否拥有读写执行权限
第二组rwx:创建文件用户同组用户对文件是否拥有读写执行权限
第三组rwx:其余人是否拥有读写执行权限

chown:修改文件的所属用户

chown 用户名 文件名

chgrp:修改文件所属组

chgrp 组名 文件名

2.2 shell脚本

1.编程语言的分类

编译型语言:先编译再运行

  • 有丰富的数据类型、擅长计算
  • 执行效率高
  • 开发效率低
  • C、C++、C#、java

解释型语言:边编译边运行

  • 擅长对系统维护管理
  • 执行效率低
  • 开发效率高
  • shell、Python、javascript

2.shell脚本编程

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

1.编写步骤

编写脚本文件

vim filename.sh

使用chmod命令为脚本加上执行权限

chmod +x filename.sh

运行脚本

./filename.sh

2.指定脚本对应的运行shell

#!/bin/bash

3.shell脚本的输入和输出

输出

echo $filename

输入

read filename

4.shell 脚本中的引号

单引号

  • 原封不动打印引号的内容
echo '$filename'

双引号

  • 将双引号中的变量替换成对应的值打印
echo "$filename"

倒引号

将引号中的内容当作命令来处理

echo `seq 10`

5.shell中的变量

环境变量

echo "$HOME"
echo "$PWD"
echo "$PATH"
...

位置变量

$0:脚本的名称
$1:执行脚本时传入的参数1
$2:执行脚本时传入的参数2
$3:执行脚本时传入的参数3
...
...
$#:传入参数的个数
$?:是一条shell语句执行的结果
$$:脚本运行的进程编号

自定义变量

vallu=0
使用变量要加上$

6.分支结构

if分支

基本结构if 表达式
then语句块
else语句块
fi
表达式可以用test命令实现
-gt    >
-lt    <
-ge    >=
-le    <=
-eq    ==
-ne    !=-b    检测文件是否存在,并判断是否为块设备
-c    检测文件是否存在,并判断是否为字符设备
-d    检测文件是否存在,并判断是否为目录文件
-e    检测文件是否存在
-f    检测文件是否存在,并判断是否为普通文件
-L    检测文件是否存在,并判断是否为链接文件
-P    检测文件是否存在,并判断是否为管道文件
-S    检测文件是否存在,并判断是否为套接字文件test 可以用 [  ]代替

case分支

基本结构case 变量名 in常量1)语句;;    常量2)语句;;常量3)语句;;*)语句
esac

7.循环结构

while循环

while 表达式
do语句块
done

until

until 表达式
do语句块
done

for

for i in 数据集
do语句块
done 

8.数组

#!/bin/bash
array=("hello" "world" "how" "are" "you")
i=0
echo ================================
for ((i = 0; i < 5; i++))
do
echo ${array[$i]}
done
echo ================================
echo "${array[*]}

9.函数

#!/bin/bash
add()
{
sum=`expr $1 + $2`
echo "$sum"
return $sum
}
read num1
read num2
#获得函数内输出的字符串
ret=`add $num1 $num2`
#打印函数的运行的值
echo "$?"
#打印函数内输出的字符串
echo "ret = $ret"
http://www.lryc.cn/news/615445.html

相关文章:

  • 多线程(四) --- 线程安全问题
  • 使用 Ansys Discovery 进行动态设计和分析
  • js零基础入门
  • HashTable, HashMap, ConcurrentHashMap
  • Java 8 特性
  • 力扣(删除有序数组中的重复项I/II)
  • 20250808组题总结
  • 力扣 hot100 Day70
  • 力扣-35.搜索插入位置
  • SwiftUI 登录页面键盘约束冲突与卡顿优化全攻略
  • AI推理的“灵魂五问”:直面2025算力鸿沟与中国的破局之路
  • Java基础语法全面解析:从入门到掌握
  • MySQL 复制表详细说明
  • 三极管在电路中的应用
  • SpringSecurity过滤器链全解析
  • 工具箱许愿墙项目发布
  • Redis 事务机制
  • Mysql笔记-系统变量\用户变量管理
  • 机器学习 K-Means聚类 无监督学习
  • 数据结构初阶(7)树 二叉树
  • BGP笔记
  • 机器学习DBSCAN密度聚类
  • 讯飞晓医-讯飞医疗推出的个人AI健康助手
  • 复杂环境下车牌识别准确率↑29%:陌讯动态特征融合算法实战解析
  • 编译技术的两条演化支线:从前端 UI 框架到底层编译器的智能测试
  • Office安装使用?借助Ohook开源工具?【图文详解】微软Office产品
  • 每周算法思考:栈与队列
  • 【数据结构入门】栈和队列
  • 物理AI与人形机器人:从实验室到产业化的关键跨越
  • day15_keep going on