热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Shell编程(week4_day1)--技术流ken

本节内容1.shell简介2.shell分类3.查看shell4.第一个shell脚本5.shell编程常用命令5.1grep5.2cut

 

本节内容

 

1.shell简介

2. shell分类

3. 查看shell

4. 第一个shell脚本

5. shell编程常用命令

  5.1 grep

  5.2 cut

  5.3 sort

  5.4 uniq

  5.5 seq

  5.6 tr

6. 课后作业

 

前言

 

什么是脚本?

脚本简单地说就是一条条的文字命令(一些指令的堆积),这些文字命令是可以看到的(如可以用记事本打开查看、编辑)。

常见的脚本: Javascript(JS,前端),Vbscript, ASP,JSP,PHP(后端),SQL(数据库操作语言),Perl,Shell,python,Ruby,JavaFX, Lua等。

 

为什么要学习和使用shell?

Shell属于内置的脚本

程序开发的效率非常高,依赖于功能强大的命令可以迅速地完成开发任务(批处理)

语法简单,代码写起来比较轻松,简单易学

 

1.1  Shell 简介

 

Shell 是一个 C 语言编写的脚本语言,它是用户与 Linux 的桥梁,用户输入命令交给 Shell 处理, Shell 将相应的操作传递给内核(Kernel),内核把处理的结果输出给用户。

 下面是流程示意图:

 

 

Shell 既然是工作在 Linux 内核之上,那我们也有必要了解下 Linux 相关知识。 Linux 是一套免费试用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任 务、支持多线程和多 CPU 的操作系统。

1983 年 9 月 27 日,Richard Stallman(理查德-马修-斯托曼)发起 GNU 计划,它的目标是创建一 套完全自由的操作系统。为保证 GNU 软件可以自由的使用、复制、修改和发布,所有的 GNU 软件都 有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU 通用公共许可 证(GNU General Plubic License,GPL),说白了就是不能做商业用途。

GNU 是"GNU is Not Unix"的递归缩写。UNIX 是一种广泛使用的商业操作系统的名称。

1985 年,Richard Stallman 又创立了自由软件基金会(Free Software Foundation,FSF)来为 GNU 计划提供技术、法律以及财政支持。

1990 年,GNU 计划开发主要项目有 Emacs(文本编辑器)、GCC(GNU Compiler Collection,GNU 编 译器集合)、Bash 等,GCC 是一套 GNU 开发的编程语言编译器。还有开发一些 UNIX 系统的程序库和 工具。

1991 年,Linuxs Torvalds(林纳斯- 托瓦兹)开发出了与 UNIX 兼容的 Linux 操作系统内核并在 GPL 条款下发布。

1992 年,Linux 与其他 GUN 软件结合,完全自由的 GUN/Linux 操作系统正式诞生,简称 Linux。

1995 年 1 月,Bob Young 创办 ACC 公司,以 GNU/Linux 为核心,开发出了 RedHat Linux 商业版。

Linux 基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。

与 Unix 思想十分 相近。 Kernel Shell 命令 用户 解析命令 并传递给内核 执行动作

 

1.2  Shell 分类

 

1.2.1  图形界面 Shell(GUI Shell)

 GUI 为 Unix 或者类 Unix 操作系统构造一个功能完善、操作简单以及界面友好的桌面环境。主流桌 面环境有 KDE,Gnome 等。

 

1.2.2  命令行界面 Shell(CLI Shell)

CLI 是在用户提示符下键入可执行指令的界面,用户通过键盘输入指令,完成一系列操作。 在 Linux 系统上主流的 CLI 实现是 Bash,是许多 Linux 发行版默认的 Shell。还有许多 Unix 上 Shell,例如 tcsh、csh、ash、bsh、ksh 等。

 

1.3  查看shell

 

Shell 是一个程序,一般都是放在/bin或者/user/bin目录下,当前 Linux 系统可用的 Shell 都记录在/etc/shells文件中。/etc/shells是一个纯文本文件,你可以在图形界面下打开它,也可以使用 cat 命令查看它。

通过 cat 命令来查看当前 Linux 系统的可用 Shell:

$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

 

在现代的 Linux 上,sh 已经被 bash 代替,/bin/sh往往是指向/bin/bash的符号链接。 

如果你希望查看当前 Linux 的默认 Shell,那么可以输出 SHELL 环境变量:

$ echo $SHELL
/bin/bash

 

输出结果表明默认的 Shell 是 bash。 

SHELL Linux 系统中的环境变量,它指明了当前使用的 Shell 程序的位置,也就是使用的哪个 Shell。

 

1.4 第一个 Shell 脚本

 

主要讲解在大多 Linux 发行版下默认 Bash Shell。Linux 系统是 RedHat 下的 CentOS 操作系 统,完全免费。与其商业版 RHEL(Red Hat Enterprise Linux)出自同样的源代码,不同的是 CentOS 并不包含封闭源代码软件和售后支持。

  vim 打开 test.sh,编写:

 # vim test.sh
 #!/bin/bash
echo "Hello world!"

 

第一行指定解释器,第二行打印 Hello world!

 写好后,开始执行,执行 Shell 脚本有三种方法:

 

方法 1:直接用 bash 解释器执行

# bash test.sh
Hello world!

当前终端会新生成一个子 bash 去执行脚本。

 

方法 2:添加可执行权限

 # ll
test.sh -rw-r--r--. 1 root root 32 Aug 18 01:07 test.sh
 # chmod +x test.sh
 # ./test.sh
-bash: ./test.sh: Permission denied
# chmod +x test.sh
# ./test.sh
Hello world!

这种方式默认根据脚本第一行指定的解释器处理,如果没写以当前默认 Shell 解释器执行。 

注意,这里在运行时一定要写成 ./test.sh(绝对路径亦可),而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,Linux 系统会去 PATH(环境变量 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

 

方法 3:source 命令执行,以当前默认 Shell 解释器执行

# source test.sh
Hello world!

 

source filename 与 bash filename 及./filename执行脚本的区别

 

  • 当shell脚本具有可执行权限时,用bash filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所以”.”是用来表示当前目录的。
  • source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。
  • bash filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell。


最后一句话什么意思那?

子shell新建变量,在父shell中不会生效:

 

我们可以使用命令pstree查看我们当前所处的位置

需要下载

[root@ken ~]# yum search pstree
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
==================================================== Matched: pstree ====================================================
psmisc.x86_64 : Utilities for managing processes on your system
texlive-pst-tree.noarch : Trees, using pstricks
[root@ken ~]# yum install psmisc -y

 

使用pstree

 

我们再次执行bash,就会进入到另外一个子shell中

这个时候我们在这个子shell中定义一个变量,发现可以正确打印出来

[root@ken ~]# age=25
[root@ken ~]# echo $age
25

 

现在我们退出当前的shell,即进入了当前子shell中的父shell中,再次打印我们刚才定义的变量

可以发现现在已经无法获取到我们刚才定义的变量值了。

 

子shell继承父shell的环境变量:

 

我们把环境变量定义到profile的一个子文件中,并使用source执行该文件并生效

打开一个子shell,定义在父shell中的环境变量依然有效

反之,这种操作在子shell中操作,父shell也不能继承

[root@ken ~]# cat /etc/profile.d/ken.sh
export name=ken
[root@ken ~]# source /etc/profile.d/ken.sh
[root@ken ~]# echo $name
ken
[root@ken ~]# bash
[root@ken ~]# echo $name
ken

 

shell编程练习:

 练习1:使用root用户帐号创建并执行test2.sh,实现创建一个shelltest用户,并在其家目录中新建文件try.html。

 练习2:统计当前系统总共有多少用户

 练习3:统计当前已经安装的软件数量

 

1.5   shell编程几个常用命令

 

grep命令详解

 

过滤来自一个文件或标准输入匹配模式内容。

除了 grep 外,还有 egrep。egrep 是 grep 的扩展,相当于 grep -E。

Usage: grep [OPTION]... PATTERN [FILE]...

 

grep常用选项详解

 

                 选项             

                  描述                                     

-E,--extended-regexp                                

模式是扩展正则表达式(ERE)                                

 -i,--ignore-case

忽略大小写

 -n,--line-number

打印行号

 -o,--only-matching

只打印匹配的内容

 -c,--count

只打印每个文件匹配的行数

 -B,--before-cOntext=NUM

打印匹配的前几行

 -A,--after-cOntext=NUM

打印匹配的后几行

-C,--cOntext=NUM

打印匹配的前后几行

--color[=WHEN],

 匹配的字体颜色

-v,--invert-match

 打印不匹配的行

 

 grep案例演示

 

1. -i, 忽略大小写

[root@ken ~]# echo "this is ken THIS IS KEN" | grep -i 'ken'
this is ken THIS IS KEN
[root@ken ~]# echo "this is ken THIS IS KEN" | grep  'ken'
this is ken THIS IS KEN

 

2. -n,打印行号

[root@ken ~]# grep -n 'root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin

 

 3. -o,只打印匹配的内容

[root@ken ~]# echo "this is ken THIS IS KEN" | grep -o 'ken'
ken
[root@ken ~]# echo "this is ken THIS IS KEN" | grep  'ken'
this is ken THIS IS KEN

 

4. -c,打印文件匹配的行数

[root@ken ~]# grep  -c 'root' /etc/passwd
2
[root@ken ~]# grep  'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

 

5. -B,打印匹配的前几行

[root@ken ~]# grep -B 3 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
--
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

 

6.-A,打印匹配的后几行

[root@ken ~]# grep -A 3 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

 

7.-C,打印匹配的前后几行

[root@ken ~]# grep -C 3 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
--
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

 

8. --color,在centos7中已经默认为 grep --color,在centos6中需要加上--color才会显示颜色

[root@ken ~]# alias grep 
alias grep='grep --color=auto'

 

9. -v, 打印不匹配的行

[root@ken ~]# echo -e "hi\nthis is ken\nncie to meet you\nbye " | grep -v 'ken'
hi
ncie to meet you
bye 

 

 

一、cut命令

 

语法

cut  [-bn] [file]
cut [-c] [file]
cut [-df] [file]
 

使用说明:

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b-c -f 标志之一。

 

常用参数:

  • -c :以字符为单位进行分割。

  • -d :自定义分隔符。

  • -f :与-d一起使用,指定显示哪个区域。

 

常用实例演示1: -c:以字符为单位进行分隔

[root@ken ~]# echo "this is ken" | cut -c  4
s
[root@ken ~]# echo "this is ken" | cut -c 5
 
[root@ken ~]# echo "this is ken" | cut -c 2
h

  [root@ken ~]# echo "this is ken" | cut -c 1-5
  this

 

常用实例演示2:-d,-f:自定义分隔符并进行指定显示

1.从标准输入读取

[root@ken ~]# echo 'this is ken' | cut -d' ' -f3
ken

  [root@ken ~]# echo "name:ken age:25 gender:male" | cut -d ' ' -f2
  age:25

 

2.从文件中读取

[root@ken ~]# echo "this is ken">test
[root@ken ~]#  cut -d' ' -f3 test
ken

 

二、sort命令

 

Linux sort命令用于将文本文件内容加以排序。

sort可针对文本文件的内容,以行为单位来排序。

语法:

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]
 

常用参数说明

  • -k:根据切割后的那一段进行排序
  • -n 依照数值的大小排序(默认是根据字符进行排序)。
  • -r 以相反的顺序来排序。
  • -t<分隔字符> 指定排序时所用的栏位分隔字符。
  • -u:去除重复的行(只要那个指定的字段重复,就认定是重复的行)

 

实例一:默认排序

在使用sort命令以默认的式对文件的行进行排序,使用的命令如下:

[root@ken ~]# cat test
6 this is ken
2 this is ken
5 this is ken
6 this is ken
1 this is ken
8 this is ken
[root@ken ~]# sort test
1 this is ken
2 this is ken
5 this is ken
6 this is ken
6 this is ken
8 this is ken

sort 命令将以默认的方式将文本文件的第一列以ASCII 码的次序排列,并将结果输出到标准输出。

 

实例二:取出排名前三

[root@ken ~]# sort -r test | head -3
8 this is ken
6 this is ken
6 this is ken

 

实例三:对文件中的内容按照e分割第二部分进行排序

[root@ken ~]# sort -t 'e' -k 2 test
6 this:is:ke1
5 this:is:ke2
6 this:is:ke3
2 this:is:ke4
1 this:is:ke6
8 this:is:ke7
[root@ken ~]# sort -t 'e' -k 2  -r test
8 this:is:ke7
1 this:is:ke6
2 this:is:ke4
6 this:is:ke3
5 this:is:ke2
6 this:is:ke1

 

实例四:去除重复的行

[root@ken ~]# sort test
1 this:is:ke6
2 this:is:ke4
2 this:is:ke4
2 this:is:ke4
2 this:is:ke4
5 this:is:ke2
6 this:is:ke1
6 this:is:ke3
8 this:is:ke7
[root@ken ~]# sort -u test
1 this:is:ke6
2 this:is:ke4
5 this:is:ke2
6 this:is:ke1
6 this:is:ke3
8 this:is:ke7

 

 三、uniq命令

作用:

去除重复的行(相邻且相同,认定为重复)

选项:

-c:在行首用数字表示该行出现了多少次

-u:仅仅显示那些没有出现重复过的行

 

实例一:统计行数

[root@ken ~]# uniq -c test
      1 6 this:is:ke3
      4 2 this:is:ke4
      1 5 this:is:ke2
      1 6 this:is:ke1
      1 1 this:is:ke6
      1 8 this:is:ke7

 

实例二:将文件中相同的行去重

[root@ken ~]# sort test | uniq
1 this:is:ke6
2 this:is:ke4
5 this:is:ke2
6 this:is:ke1
6 this:is:ke3
8 this:is:ke7

 

 四、seq命令

作用:

生成一个数组序列

格式:

seq [start  [step]] stop

 

实例:

[root@ken ~]# seq 5       #终止位5
1
2
3
4
5
[root@ken ~]# seq 2 5     #起始位2,终止位5
2
3
4
5
[root@ken ~]# seq 2 2 10  #起始位2,步长为2,终止位10
2
4
6
8
10

 

五、tr命令

 

作用:

Linux tr 命令用于转换或删除文件中的字符。

tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。

 

a-z 任意小写

A-Z 任意大写

0-9 任意数字

 

实例一:替换大小写

[root@ken ~]# echo "this is ken" | tr a-z A-Z
THIS IS KEN
[root@ken ~]# echo "THIS IS KEN" | tr A-Z a-z
this is ken

 

实例二:删除特定字符串

s这个字符串都会被删掉

[root@ken ~]# cat test
6 this:is:ke3
2 this:is:ke4
2 this:is:ke4
2 this:is:ke4
2 this:is:ke4
5 this:is:ke2
6 this:is:ke1
1 this:is:ke6
8 this:is:ke7
[root@ken ~]# cat test | tr -d 's'
6 thi:i:ke3
2 thi:i:ke4
2 thi:i:ke4
2 thi:i:ke4
2 thi:i:ke4
5 thi:i:ke2
6 thi:i:ke1
1 thi:i:ke6
8 thi:i:ke7

 

课后作业

 

作业1. 获取主机IP地址,获取结果仅显示IP,例如:172.20.10.2(使用尽可能多的方法)

 

作业2. 有如下一个文件,文件内容如下。

请把下方的内容复制到你的一个文件中,并完成如下需求

需求1. 统计出各个网址出现的次数

需求2. 按照出现次数排序(升序)

需求3. 取出出现次数排名前两名的网址

[root@ken ~]# cat ken.sh
http://www.baidu.com
http://www.baidu.com
http://www.sina.com
http://www.sina.com
http://www.sina.com
http://www.sina.com
http://www.sina.com
http://www.sina.com
http://www.sina.com
http://www.sina.com
http://www.sina.com
http://www.sina.com
http://www.sina.com
http://www.sina.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com
http://www.qq.com
http://www.qq.com
http://www.qq.com
http://www.qq.com
http://www.qq.com
http://www.qq.com
http://www.qq.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com
http://www.taobao.com
http://www.taobao.com
http://www.taobao.com
http://www.taobao.com
http://www.taobao.com
http://www.taobao.com
http://www.taobao.com
http://www.taobao.com
http://www.taobao.com
http://www.taobao.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com

 

课后作业答案

 

作业1:

第一种方法:

[root@ken ~]# ip a | grep global | cut -d " " -f 6 | cut -d "/" -f1
172.20.10.6

 

第二种方法:

[root@ken ~]# ip a | grep global | cut -d "b" -f 1 | tr -d [a-z] | cut -d "/" -f 1 | tr -d " "
172.20.10.6

 

第三种方法:

[root@ken ~]# ip a | grep global | tr -d [a-z] | tr -d " " | cut -d "/" -f1
172.20.10.6

方法有很多,大家尽可能的自己多思考哦!

 

作业2:

1. 统计出各个网址出现的次数

[root@ken ~]# cat ken.sh  | cut -d '/' -f3 | sort | uniq -c
     19 www.baidu.com
      7 www.qq.com
     12 www.sina.com
     10 www.taobao.com

 

2. 按照出现次数排序(升序)

[root@ken ~]# cat ken.sh  | cut -d '/' -f3 | sort | uniq -c | sort -n
      7 www.qq.com
     10 www.taobao.com
     12 www.sina.com
     19 www.baidu.com

 

3.  取出出现次数排名前两名的网址

[root@ken ~]# cat ken.sh  | cut -d '/' -f3 | sort | uniq -c | sort -n -r | head -2
     19 www.baidu.com
     12 www.sina.com

 

思考:还有更多的办法吗?


推荐阅读
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • SWIG 3.0.12 Windows官方版下载:实现C语言与PHP、Java、Python等多语言代码互调接口
    SWIG 3.0.12 Windows官方版是一款强大的接口生成工具,能够实现C语言与多种高级编程语言(如Java、C#)及脚本语言(如PHP、JavaScript、Python)之间的互操作性。它不仅支持跨语言调用,还提供了丰富的封装选项,确保了代码的高效性和可维护性。 ... [详细]
  • Ubuntu 20.04 TLS安装指南:详细步骤与专业技巧
    在 Ubuntu 20.04 LTS 的正式版安装过程中,本文提供了详细的步骤和专业技巧。使用 VMware 虚拟机进行安装时,建议选择简体中文作为系统语言,并采用默认的常规安装选项。虚拟磁盘配置可直接使用默认设置,以简化安装流程。此外,本文还涵盖了安装过程中的常见问题及解决方法,确保用户能够顺利进行系统安装。 ... [详细]
  • 如何撰写PHP电商项目的实战经验? ... [详细]
  • 如何在命令行中启动、停止和重启 Nginx 的详细指南
    如何在命令行中启动、停止和重启 Nginx 的详细指南 ... [详细]
  • 题目链接:http://poj.org/problem?id=3083。题目描述:给定一个迷宫,其中 'S' 表示起点,'E' 表示终点,'#' 表示墙壁,'.' 表示可通行的道路。起点和终点均位于迷宫的边界上,并且保证存在唯一路径。任务是求从起点 'S' 到终点 'E' 的最短路径步数,且优先考虑向左转弯。通过深度优先搜索(DFS)和广度优先搜索(BFS)算法进行路径探索,分析两种方法的优劣及适用场景。 ... [详细]
  • 本文详细探讨了Java中Unicode编码的二进制转换方法及其具体实现。通过分析\u开头的字符串,解释了每组\uxxxx如何对应一个特定的Unicode字符,并提供了相关代码示例以加深理解。希望读者在实际开发中能有效应用这些知识。 ... [详细]
  • Node.js 教程第五讲:深入解析 EventEmitter(事件监听与发射机制)
    本文将深入探讨 Node.js 中的 EventEmitter 模块,详细介绍其在事件监听与发射机制中的应用。内容涵盖事件驱动的基本概念、如何在 Node.js 中注册和触发自定义事件,以及 EventEmitter 的核心 API 和使用方法。通过本教程,读者将能够全面理解并熟练运用 EventEmitter 进行高效的事件处理。 ... [详细]
  • 美国血统争议与遗传学研究进展:在遗传学领域,血统记录的准确性至关重要。然而,在实际操作中,记录错误时有发生。本文探讨了通过遗传学方法验证血统的有效性,并介绍了利用二叉树结构进行家谱分析的技术,特别是中序遍历和前序遍历的应用,为血统争议提供科学依据。 ... [详细]
  • 本文探讨了如何在C#中实现USB条形码扫描仪的数据读取,并自动过滤掉键盘输入,即使不知道设备的供应商ID(VID)和产品ID(PID)。通过详细的技术指导和代码示例,展示了如何高效地处理条形码数据,确保系统能够准确识别并忽略来自键盘的干扰信号。该方法适用于多种USB条形码扫描仪,无需额外配置设备信息。 ... [详细]
  • Python作为当今IT领域中最受欢迎且高效的语言之一,其框架能够显著加速Web应用程序的开发过程。本文推荐并对比了十大顶级Python Web开发框架,其中CubicWeb以其卓越的代码重用性和模块化设计脱颖而出,为开发者提供了强大的支持。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 探索 PHP 8.0 的重大更新:轻松获取年度月份数据
    PHP 8.0 引入了多项重要更新,包括增强的类型系统、全新的 JIT 编译器以及联合类型等特性。这些改进不仅提升了性能,还简化了开发流程。本文将重点介绍如何利用 PHP 8.0 的新功能轻松获取年度和月份数据,为开发者提供更高效、更简洁的解决方案。 ... [详细]
  • 本文深入解析了 Python 爬虫技术在 B 站数据挖掘中的应用,通过分析海量用户行为和内容数据,揭示了热门 UP 主成功的背后因素。Python 作为一种强大的编程语言,其面向对象和解释执行的特点使其成为数据抓取和处理的理想选择。文章详细介绍了如何利用 Python 爬虫技术获取 B 站的数据,并通过数据分析方法,探讨了热门 UP 主的创作策略和互动模式,为内容创作者提供了有价值的参考。 ... [详细]
  • 如何在服务器后台运行PHP脚本?
    如何在服务器后台运行PHP脚本? ... [详细]
author-avatar
洋洋哥2602913063
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有