PHP中高级工程师面试重点讲解视频课程
Go快速入门浅显易懂视频教程-基础篇
Go快速入门浅显易懂视频教程-中级篇
linux部分基础知识
原创杂文 / 时间:2014-04-20 19:01:22 / 阅读:1790 / 分享:0

开源:开放源代码

自由:
自由获取,自由修改,自由学习

Emacs: 文本编辑器
gcc: GNU C Complier
bash: 

Linux:glibc, gcc, 

GNU/Linux

源代码: C --> 编译成二进制 (交叉编译)

ABI:Application Binary Interface

RedHat
SLS
Debian
SUSE --> Novell (Netware), OpenSUSE

发行商: release

kernel: 2w

Debian, dpt
RedHat, rpm

Ubuntu: Mint

CentOS: Community ENTerprise OS

Fedora: 

Mandriva


linux ip=172.16.X.1 netmask=255.255.0.0 gateway=172.16.0.1 dns=172.16.0.1 ks=http://172.16.0.1/class.cfg

Linux: 0.1, 1.0, 2.0, 2.2, 2.4, 2.6, 3.0, 3.7

RHEL 3.0, 4.0, 5.0, 6.0

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

GUI接口:
CLI接口:
    命令提示符,prompt, bash(shell)
        #: root
        $: 普通用户
    命令:

命令格式:
    命令  选项  参数
        选项:
            短选项: -
                多个选项可以组合:-a -b = -ab
            长选项: --
        参数:命令的作用对象
            
使用凭证:

root, redhat

虚拟终端(terminal):Ctrl+Alt+F1-F6

GUI:
    Gnome: C
    KDE: C++
    XFace

CLI:
    sh
    bash
    csh
    zsh
    ksh
    tcsh
    

root, student, vistor

su: switch user
# su [-l] 用户名

# passwd

密码复杂性规则:
10^6
36^6
62^6
100^6


Linuxedu@126.com
1、使用4种类别字符中至少3种;
2、足够长,大于7位;
3、使用随机字符串;
4、定期更换;
5、循环周期足够大;

123
456
123
456


RHCE+RHCA+shell编程+MySQL+Web集群+NoSQL+Hadoop+Hbase+Openstack

 


172.16.100.177
192.168.0.1

GNU: GNU is Not Unix.
GPL: General Public License,通用公共许可证,版权
    Copyright, Copyleft
    开源协定
LGPL:lesser
GPLv2
GPLv3

Shell:
GUI: Graphic User Interface
    Windows
    X-Window
        Gnome
        KDE
        Xface
CLI: Command Line Interface
    sh
    bash
    csh
    ksh
    zsh
    tcsh
        
        
Google:
linux filetype:pdf
linux site:ibm.com

google hack


IDE:


login:
    用户名:用户ID
    
认证机制:Authentication
授权:Authorization
审计:Audition (日志)

prompt,命令提示符:
命令:
magic number: 魔数
shebang

#!/bin/bash

# command  options...  arguments...

选项:
    短选项
    长选项
参数:

list: ls
列出,列表

目录:文件,路径映射

路径:从指定起始点到目的地所经过位置

文件系统:file system

列出指定路径下的文件


目录:working directory, current directory

pwd: Printing Working directory

ls
    -l:长格式
        文件类型:
            -:普通文件 (f)
            d: 目录文件
            b: 块设备文件 (block)
            c: 字符设备文件 (character)
            l: 符号链接文件(symbolic link file)
            p: 命令管道文件(pipe)
            s: 套接字文件(socket)
        文件权限:9位,每3位一组,每一组:rwx(读,写,执行), r--
        文件硬链接的次数
        文件的属主(owner)
        文件的属组(group)
        文件大小(size),单位是字节
        时间戳(timestamp):最近一次被修改的时间
            访问:access
            修改:modify,文件内容发生了改变
            改变:change,metadata,元数据
    -h:做单位转换
    -a: 显示以.开头的隐藏文件
        . 表示当前目录
        .. 表示父目录
    -A
    -d: 显示目录自身属性
    -i: index node, inode
    -r: 逆序显示
    -R: 递归(recursive)显示
    
cd: change directory
    家目录,主目录, home directory
    cd ~USERNAME: 进入指定用户的家目录
    cd -:在当前目录和前一次所在的目录之间来回切换

命令类型:
    内置命令(shell内置),内部,内建
    外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件
    
环境变量:命名的内存空间
    变量赋值
        NAME=Jerry
        
    PATH: 使用冒号分隔的路径
    O(1)

type: 显示指定属于哪种类型
    
date:时间管理
Linux: rtc

    硬件时钟
    系统时钟


获得命令的使用帮助:
内部命令:
    help COMMAND
外部命令:
    COMMAND --help
    
命令手册:manual
man COMMAND

whatis COMMAND

分章节:
1:用户命令(/bin, /usr/bin, /usr/local/bin)
2:系统调用
3:库用户
4:特殊文件(设备文件)
5:文件格式(配置文件的语法)
6:游戏
7:杂项(Miscellaneous)
8: 管理命令(/sbin, /usr/sbin, /usr/local/sbin)

<>:必选
[]:可选
...:可以出现多次
|:多选一
{}:分组

MAN:
    NAME:命令名称及功能简要说明
    SYNOPSIS:用法说明,包括可用的选项
    DESCRIPTION:命令功能的详尽说明,可能包括每一个选项的意义
    OPTIONS:说明每一个选项的意义
    FILES:此命令相关的配置文件
    BUGS:
    EXAMPLES:使用示例
    SEE ALSO:另外参照

翻屏:
    向后翻一屏:SPACE
    向前翻一屏:b
    向后翻一行:ENTER
    向前翻一行:k

查找:
/KEYWORD: 向后
n: 下一个
N:前一个 

?KEYWORD:向前
n: 下一个
N:前一个 

q: 退出


在线文档:
info COMMAND

文档:/usr/share/doc

google

apache, hadoop

练习:
    使用date单独获取系统当前的年份、月份、日、小时、分钟、秒
    
hwclock
    -w: 
    -s: 


cal: calendar

练习:
1、echo是内部命令还是外部命令?
2、其作用?
3、如何显示“The year is 2013. Today is 26.”为两行?

转义,逃逸

练习:
1、printf是内部命令还是外部命令?
2、其作用?
3、如何显示“The year is 2013. Today is 26.”为两行?

file命令及其用法。

Windows: PE
Linux: ELF

 

文件系统:
rootfs: 根文件系统

FHS:Linux

/boot: 系统启动相关的文件,如内核、initrd,以及grub(bootloader)
/dev: 设备文件
    设备文件:
        块设备:随机访问,数据块
        字符设备:线性访问,按字符为单位
        设备号:主设备号(major)和次设备号(minor)
/etc:配置文件
/home:用户的家目录,每一个用户的家目录通常默认为/home/USERNAME
/root:管理员的家目录;
/lib:库文件
    静态库,  .a
    动态库, .dll, .so (shared object)
    /lib/modules:内核模块文件
/media:挂载点目录,移动设备
/mnt:挂载点目录,额外的临时文件系统
/opt:可选目录,第三方程序的安装目录
/proc:伪文件系统,内核映射文件
/sys:伪文件系统,跟硬件设备相关的属性映射文件
/tmp:临时文件, /var/tmp
/var:可变化的文件
/bin: 可执行文件, 用户命令
/sbin:管理命令

/usr:shared, read-only
    /usr/bin
    /usr/sbin
    /usr/lib
    
/usr/local:
    /usr/local/bin
    /usr/local/sbin
    /usr/local/lib

命名规则:
1、长度不能超过255个字符;
2、不能使用/当文件名
3、严格区分大小写

相对路径:
绝对路径:

 

文件管理
    
目录管理
ls
cd
pwd

mkdir:创建空目录
    -p:
    -v: verbose
/root/x/y/z

/mnt/test/x/m,y
mkdir -pv /mnt/test/x/m /mnt/test/y
mkdir -pv /mnt/test/{x/m,y}

~USERNAME 

命令行展开:
/mnt/test2/
a_b, a_c, d_b, d_c
(a+d)(b+c)=ab+ac+db+dc
{a,d}_{b,c}


# tree:查看目录树

删除目录:rmdir (remove directory)
    删除空目录
    -p
    
文件创建和删除
# touch  并不是为了创建文件,主要的作用是改变timestamp
    -a
    -m
    -t
    -c
# stat   查看文件或者目录的属性

创建文件,可以使用文件编辑器

ASCII: 

128不同的字符:
    二进制:
        2^6=0,63
        2^7=0,127
        000 0000 - 111 1111

ASCII:        
0000 1001: t

2^16: 65536
 
标准:GB18030, GBK, GB2312,Unicode
0000 1001 0000 1110:上, 卫

nano

删除文件:rm
    -i
    -f
    -r
    
rm -rf /

练习:
1、创建目录
(1)在/mnt下创建boot和sysroot;
(2)在/mnt/boot下创建grub;
(3)在/mnt/sysroot下创建proc, sys, bin, sbin, lib, usr, var, etc, dev, home, root, tmp
    a)在/mnt/sysroot/usr下创建bin, sbin, lib
    b)在/mnt/sysroot/lib下创建modules
    c)在/mnt/sysroot/var下创建run, log, lock
    d)在/mnt/sysroot/etc下创建init.d
    

复制和移动文件
cp: copy
cp SRC DEST
    -r
    -i
    -f
    -p
    -a:归档复制,常用于备份
    

cp file1 file2 file3
一个文件到一个文件
多个文件到一个目录
cp /etc/{passwd,inittab,rc.d/rc.sysinit} /tmp/

mv: move
移动文件

mv SRC DEST
mv -t DEST SRC


install
    -d DIRECOTRY ... :创建目录
    SRC DEST
install -t DIRECTORY SRC...

作业1:
1、创建目录/backup
# mkdir -v /backup
2、复制目录/etc至/backup目录中,并重命名为“etc-当前日期”,如etc-2013-02-26;要求保留文件原来的属性,保持链接文件;
cp
    -r 
    -p
    -d
# cp -a /etc /backup/etc-2013-02-28

命令替换
    
3、复制文件/etc/inittab为/tmp/inittab.new,并删除inittab.new文件的后两行;
# cp /etc/inittab  /tmp/inittab.new
# nano /tmp/inittab.new

作业2:
1、思考:ls命令是否可以显示某目录的整体大小,即包括其内部的所有文件的整体大小?
2、通过帮助手册,学习使用du命令;
# du 
    -s
    -h
3、通过帮助,学习read命令;
变量:内存空间,有名称
变量赋值:

变量替换

作业3:
描述GPL, BSD, Apache三个开源协定的大体联系及区别。

自由软件
开源协定,版权描述


作业4:
1、如何获取Linux当前最新的内核版本号?
    www.kernel.org
2、列出你所了解的Linux发行版,并说明其跟Linux内核的关系。
    Linux, GNU: GNU/Linux, 源代码
    
    发行版:Fedora, RedHat(CentOS), SUSE, Debian(Ubuntu, Mint), Gentoo, LFS(Linux From Scratch)
    
C, Tom, AMD, Jerry, 

RedHat: 通用格式

奔腾:


运行程序
设备管理
软件管理
进程管理
网络管理


目录管理:
ls、cd、pwd、mkdir、rmdir、tree

文件管理:
touch、stat、file、rm、cp、mv、nano

日期时间:
date、clock、hwclock、cal

查看文本:
cat、tac、more、less、head、tail

cat:连接并显示
    -n
    -E
    
Ctrl+c

分屏显示:
more、less

more: 向后翻
less: 


head:查看前n行 
tail:查看后n行
    -n 
    
tail -f: 查看文件尾部,不退出,等待显示后续追加至此文件的新内容;


文本处理:
cut、join、sed、awk

database:数据库

关系型数据库:
表:二维表

文本文件:
Tom:23:male:2013/05/06

cut:
    -d: 指定字段分隔符,默认是空格
    -f: 指定要显示的字段
        -f 1,3
        -f 1-3

文本排序:sort
    -n:数值排序
    -r: 降序
    -t: 字段分隔符
    -k: 以哪个字段为关键字进行排序
    -u: 排序后相同的行只显示一次
    -f: 排序时忽略字符大小写
    
uniq: 
    -c: 显示文件中行重复的次数
    -d: 只显示重复的行
    
文本统计:wc (word count)
    -l
    -w
    -c
    -L

字符处理命令:tr —— 转换或删除字符
tr [OPTION]... SET1 [SET2]
    -d: 删除出现在字符集中的所有字符


tr ab AB


bash及其特性:
shell: 外壳
GUI:Gnome, KDE, Xfce
CLI: sh, csh, ksh, bash, tcsh, zsh

root, student
程序:进程

进程:在每个进程看来,当前主机上只存在内核和当前进程
进程是程序的副本,进程是程序执行实例

用户工作环境:
bash:
    #
    $
    
    tom, jerry
    
shell,子shell

bash--bash

bash: 
1、命令历史、命令补全
2、管道、重定向
3、命令别名
4、命令行编辑
5、命令行展开
6、文件名通配
7、变量
8、编程

命令行编辑:
光标跳转:
    Ctrl+a:跳到命令行首
    Ctrl+e:跳到命令行尾
    Ctrl+u: 删除光标至命令行首的内容
    Ctrl+k: 删除光标至命令行尾的内容
    Ctrl+l: 清屏
    
命令历史:
查看命令历史:history
    -c:清空命令历史
    -d OFFSET [n]: 删除指定位置的命令
    -w:保存命令历史至历史文件中
    
环境变量
PATH:命令搜索路径
HISTSIZE: 命令历史缓冲区大小

命令历史的使用技巧:
!n:执行命令历史中的第n条命令;
!-n:执行命令历史中的倒数第n条命令; 
!!: 执行上一条命令;
!string:执行命令历史中最近一个以指定字符串开头的命令
!$:引用前一个命令的最后一个参数; 
Esc, . 引用前一个命令的最后一个参数
Alt+.  引用前一个命令的最后一个参数     

命令补全:
    PATH:
路径补全:


文本相关的命令
查看:cat, tac, more, less, head, tail
统计:wc
处理:tr, cut, join
排序:sort
uniq

bash特性:
命令行编辑:
命令历史:
    history
        -c
        -w
        -d
    HISTSIZE
    ~/.bash_history

!n, !-n, !!, !string, !$

命令补全,路径补全
命令补全:搜索PATH环境变量所指定的每个路径下以我们给出的字符串开头的可执行文件,如果多于一个,两次tab,可以给出列表;否则将直接补全;
路径补全:搜索我们给出的起始路径下的每个文件名,并试图补全;


命令别名
alias CMDALIAS='COMMAND [options] [arguments]'
在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;

ualias CMDALIAS

\CMD


命令替换: $(COMMAND), 反引号:`COMMAND`
把命令中某个子命令替换为其执行结果的过程
file-2013-02-28-14-53-31.txt


bash支持的引号:
``: 命令替换
"": 弱引用,可以实现变量替换
'': 强引用,不完成变量替换


文件名通配, globbing
*: 任意长度的任意字符
?:任意单个字符
[]:匹配指定范围内的任意单个字符
    [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:]]*

关于作者
按时间分类