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)函数

相关推荐
ltl8 小时前
内核追踪:ftrace、kprobe、uprobe、tracepoint 生产实战
linux
·薯条大王8 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
ZJH__GO11 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
小小、码农11 小时前
Linux进程控制:从fork到exec,手写一个简易Shell
linux·运维·服务器
程序员黑豆11 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
命运之光12 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
凤山老林12 小时前
Spring Boot @Async 线上实战:从默认配置到生产级线程池治理
java·spring boot·后端
不会就选b12 小时前
Linux之进程间通信(二)---模拟进程池
linux·运维·服务器
marvelyu12 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
NeilYuen13 小时前
用UDP实现向DNS服务器请求IP地址
服务器·tcp/ip·udp