一、 计算机常识

Windows动态链接库:
dll :Dynamic Link Library

Linux共享依赖库:
so:shared object

二、Linux

1.

Linux的基本原则

1、由目的单一的小程序组成;组合小程序完成复杂任务;
2、一切皆文件;
3、尽量避免捕获用户接口;
4、配置文件保存为纯文本格式;

Linux 精神

开源:开放源代码 Open source
自由:自有获取,自有修改,自由学习。

开源是获利不是收取版权,卖服务,授权使用费,卖的是软件,还有服务等级(售后响应)。

1. 多种发行版本

基于RedHat二次发行的版本:
centOS:Community Enterprise OS 社区企业操作系统

安装软件工具

kernel:2w
Debian:dpt
RedHat:rpm
Ubuntu:Mint

GNU GNU is Not Unix

通用公共许可证

GPL: General Public License
LGPL:lesser
GPLv2:
GPLv3:

gcc GNU C 语言编译器

GNU C Complier

源代码:C —> 编译成二级制(交叉编译)

ABI:Application Binary Interface

使用凭证

用户和密码。
认证机制:authentication
授权:authorization
审计:audition(日志)

2. shell的类别

01. GUI:

Graphic User Interface 图形化用户界面
Gnome:C
KDE:C++
XFace

02. CLI:

Command Line Interface 命令行用户界面
sh
bash
csh
zsh
ksh
tcsh

3. 系统调用

Linux 基础 - 图1

4.环境变量

命名的内存空间
变量的赋值
工作环境属性 printenv

启用禁用tomcat可以将tomcat的路径添加到path环境变量的路径里,就可以直接使用tomcat的start.sh命令了

多个 PATH 使用 “:” 隔开
查看命令的缓存 hash
命中率

5. 命令格式

命令 [选项] [参数]

选项

解释:
{
[] 可省略
| 表示多选一
<> 必选
可以出现多次
{} 分组
}
短选项:多个选项可以组合:-a -b = -ab
长选项:一般使用 —word (接一个单词)

参数

命令的作用对象,可以是个列表

prompt,命令提示符:

命令:
magic number:魔数
shebang
#!/bin/bash
#shell程序的入口,指定shell程序

获得命令的使用帮助:

内部命令:
help COMMAND
外部命令:
COMMAND —help
命令手册:manual
man COMMAND
whatis COMMAND

  • 显示某个命令的描述信息

    MAN:

    NAME:命令名称及功能简要说明
    SYNOPSIS:用法说明,包括可用的选项
    DESCRIPTION:命令功能的详尽说明,可能包括每一个选项的意义
    OPTIONS:说明每一个选项的意义
    FILES:此命令相关的配置文件
    BUGS:
    EXAMPLES:使用示例
    SEE ALSO:另外参照
    翻屏:
    向后翻一屏:SPACE
    向前翻一屏:b
    向后翻一行:ENTER
    向前翻一行:k
    查找:
    /KEYWORD: 向后
    n: 下一个
    N:前一个
    ?KEYWORD:向前
    n: 下一个
    N:前一个
    q: 退出

在线文档:

info COMMAND (man的补充)
文档:/usr/share/doc

分章节

  1. 用户命令(/bin,/usr/bin,/usr/local/bin)

  2. 系统调用

  3. 库用户

  4. 特殊文件(设备文件)

  5. 文件格式(配置文件的语法)

  6. 游戏

  7. 杂项(Miscellaneous)

  8. 管理命令(/sbin,/usr/sbin,/usr/local/sbin)

命令的类型

内部命令:(shell内置),内部,自建
外部命令:在文件系统的某个路径下有一个与命名名称相应的可执行文件

命令补全

长命令单词忘记或不想输入、文件不想键入可以使用TAB键自动补全命令,多个相同的命令按两下TAB键显示所有命令、路径前缀相同的内容。
在PATH路径下寻找

路径补全

在目录路径下寻找

命令别名 alias

  1. alias CMDALIAS='COMMAND [options] [arguments]'
  2. shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;
  3. # 取消别名
  4. ualias CMDALIAS
  5. \CMD # 命令别名和命令名相同的加反斜线使用原命令
  6. 命令替换: $(COMMAND), 反引号:`COMMAND`
  7. 把命令中某个子命令替换为其执行结果的过程
  8. # 创建文件名为:file-2018-12-25+24+54.txt
  9. touch file-$(date +%F+%M+%S).txt

正则表达式


文件名通配, globbing
*: 任意长度的任意字符 [0,)
?:任意单个字符
[]:匹配指定范围内的任意单个字符
    [abc], [a-m], [a-z], [A-Z], [0-9], [a-zA-Z], [0-9a-zA-Z]
    [:space:]:空白字符
    [:punct:]:标点符号
    [:lower:]:小写字母
    [:upper:]: 大写字母
    [:alpha:]: 大小写字母
    [:digit:]: 数字
    [:alnum:]: 数字和大小写字母

# man 7 glob
[^]: 匹配指定范围之外的任意单个字符

[[:alpha:]]*[[:space:]]*[^[:alpha:]]


练习:
1、创建a123, cd6, c78m, c1 my, m.z, k 67, 8yu, 789等文件;注意,以上文件是以逗号隔开的,其它符号都是文件名的组成部分;
2、显示所有以a或m开头的文件;
ls [am]*
3、显示所有文件名中包含了数字的文件;
ls *[0-9]* 
ls *[[:digit:]]*
4、显示所有以数字结尾且文件名中不包含空白的文件;
ls *[^[:space:]]*[0-9]   ?????????
5、显示文件名中包含了非字母或数字的特殊符号的文件;
ls *[^[:alnum:]]*