美文网首页
马哥linux培训第三天笔记

马哥linux培训第三天笔记

作者: 薄荷盐 | 来源:发表于2017-02-15 15:34 被阅读0次

    文件系统

    程序编译方式

    动态编译

    依赖系统共享库文件,节约内存资源

    静态编译

    体积大,依赖的库包含在程序内部

    进程的类型

    终端:硬件设备,关联一个用户接口

    * 与终端相关:通过终端启动

    * 与终端无关:操作引导启动过程当中自动启动

    linux系统上的文件类型

    -: 常规文件,即f;

    d: directory,目录文件

    l: 链接文件

    b: 块文件

    c: 字符设备

    p: 管道文件

    s: socket文件

    bash的基础特性

    命令补全

    根据PATH环境变量中设定的目录,自左而右的搜索

    路径补全

    根据路径补全

    命令行展开

    ~: 自动展开为用户的家目录,或指定的用户的家目录

    {}: 可承载一个以逗号分割的路径列表,并能够将其展开为多个路径

    /tmp/{a,b} 相当于/tmp/a,/tmp/b

    [root@cloud test]# mkdir -pv /root/test/x/{y1/{a,b},y2}

    mkdir: created directory ‘/root/test/x’

    mkdir: created directory ‘/root/test/x/y1’

    mkdir: created directory ‘/root/test/x/y1/a’

    mkdir: created directory ‘/root/test/x/y1/b’

    mkdir: created directory ‘/root/test/x/y2’

    [root@cloud test]# mkdir -v {a,b}_{c,d}

    mkdir: created directory ‘a_c’

    mkdir: created directory ‘a_d’

    mkdir: created directory ‘b_c’

    mkdir: created directory ‘b_d’

    命令的执行状态结果

    bash通过状态返回值来输出此结果:

    成功:0

    失败:1-255

    命令执行完成之后,其状态返回值保存于bash的特殊变量$?中

    [root@cloud test]# ls

    123.gz  a_c  a_d  b_c  b_d  file1  file1.gz  file2  x

    [root@cloud test]# echo $?

    0

    命令正常执行时,有的还会有命名返回值

    这个返回值会保存于bash的变量中 $(COMMAND)或`COMMAND`

    [root@WH-DNS-00 named]# $(date +'%F-%H-%M-%S')

    -bash: 2016-12-09-15-27-56: command not found

    [root@WH-DNS-00 named]# touch /tmp/tfile-$(date +'%F-%H-%M-%S')

    [root@WH-DNS-00 named]# ls /tmp/

    tfile-2016-12-09-15-28-19  tfile-date +'%F-%H-%M-%S'

    引用

    强引用:''

    弱引用:""

    命令引用:``

    命令别名

    alias 自定义别名

    alias cdnd='cd /var/named/chroot/var/named/'

    这样定义的别名只对当前shell有效,如果想永久有效,需要定义在配置文件中

    仅对当前用户有效:~/.bashrc

    对所有用户有效:/etc/bashrc

    source /etc/bashrc bash进程重新读取配置文件

    快捷键

    ctrl+l 相当于clear清屏

    ctrl+a 跳转至命令开始处

    ctrl+e 跳转至命令结尾处

    ctrl+c 取消命令执行

    ctrl+u 删除命令行首至光标所在处的所有内容

    ctrl+k 删除光标所在处至命令行尾的所有内容

    esc+. 粘贴上次输入的命令

    [root@localhost opms]#echo $$

    5610

    [root@localhost opms]#ps-ef|grep5610

    root56105608021:48pts/000:00:00-bash

    root59405610021:59pts/000:00:00ps-ef

    root59415610021:59pts/000:00:00grep--color=auto5610

    $$ 当前进程号

    文件名通配(globbing)

    匹配模式:  元字符

    *:  匹配任意长度的任意字符

    ?:  匹配任意单个字符

    []: 匹配指定范围内的任意单个字符

    几种特殊格式

    [a-z],[A-Z],[0-9],[a-z0-9] 不区分大小写

    [[:upper:]]    所有大写字母

    [[:lower:]]    所有小写字母

    [[:alpha:]]    所有字母

    [[:digit:]]    所有数字

    [[:alnum:]]    所有的字母和数字

    [[:space:]]    所有空格

    [[:punct:]]    所有标点符号

    [^]:    匹配指定范围外的任意单个字符+*

    IO重定向及管道

    程序的数据流有三种:

    输入的数据流:<-- 标准输入(stdin),键盘

    输出的数据流:--> 标准输出(stdout),显示器

    错误输出流: --> 错误输出(stderr),显示器

    fd file descriptor :文件描述符

    标准输入:0

    标准输出:1

    错误输出:2

    IO重定向

    输出重定向: >

    特性:覆盖输出 追加重定向: >>

    特性:追加输出

    set -C 禁止覆盖输出重定向至已存在的文件

    此时可使用强制覆盖输出: >|

    set +C 关闭上述特性

    错误输出流重定向: 2> 2>>

    合并正常输出流和错误输出流

    &> &>>

    command > /path/to/somefile 2>&1

    command >> /path/to/somefile 2>&1

    输入重定向 <

    cat << EOF 一次输出

    cat > /path/to/somefile << EOF 将输入的内容保存到指定文件

    最后输入EOF退出

    特殊设备: /dev/null 丢弃,黑洞

    [root@cloud test]# cat /etc/passwd &> /dev/null

    管道|

    连接程序,实现将前一个命令的输出直接定向给后一个程序当作输入数据流

    [root@cloud test]# cat /etc/issue |tr 'a-z' 'A-Z'

    \S

    KERNEL \R ON AN \M

    tee 命令配合管道使用,可将输出保存至指定文件

    [root@cloud test]# cat /etc/issue|tee /etc/nihao |tr 'a-z' 'A-Z'

    \S

    KERNEL \R ON AN \M

    [root@cloud test]# cat /etc/nihao

    \S

    Kernel \r on an \m

    基础命令

    hash 记录或显示程序的位置

    -d 表示清空指定的命令的缓存

    -r 表示清空所有命令的缓存

    history 历史命令

    [root@cloud ~]# ll -a .bash_history

    -rw------- 1 root root 14480 Dec  7 00:25 .bash_history

    登录shell后执行的命令在缓存

    登录shell时,会读取~/.bash_history

    -a 追加本次会话新执行的命令到历史文件

    -d 删除历史命令中指定的命令

    -c 清空历史命令

    !n 执行命令历史中第n条命令

    !! 重复执行上次的命令

    !string 调用历史中最近一个以string开头的命令

    history n 显示最近的n条历史命令

    man 帮助命令

    []: 可选内容

    <>: 必选内容

    |:  二选一

    ...:    同类内容可以有多个

    date 显示时间

    [root@WH-DNS-00 named]# date

    Wed Dec 7 11:56:09 CST 2016

    可以加上各种参数,自定义显示

    [root@WH-DNS-00 named]# date +%T

    11:55:58

    [root@WH-DNS-00 named]# date +'%F | %T'

    2016-12-07 | 11:55:48

    %F 按照指定格式显示 2016-12-07

    %D 直接显示日期 12/07/16

    %H 显示小时

    %M 显示分钟

    %S 显示秒

    %s 从1970年到现在进过的秒

    %m 显示月份

    ls 显示指定路径下的文件列表

    -a 显示所有文件

    -A 显示所有文件,但不显示.和..

    -l 长格式显示文件信息

    -h 用比较容易的单位来表示

    -d 显示目录自身的相关属性

    -r 逆序方式显示

    -R 递归显示

    [root@cloud ~]# ls -l

    total 3208

    drwxr-xr-x  5 root root    106 Dec  6 14:52 agent

    -rw-r--r--  1 root root 3215557 Oct 23 22:16 agent.tar.gz

    最左侧的第一位:文件类型

    cat 显示文件内容在屏幕上

    -A 显示所有符号

    -E 显示行结束符

    -T 显示制表符

    -v 显示其他非打印字符

    -n 显示行编号

    -b 打印出行号,空白行不打印

    echo 回显命令

    -n 关闭自动换行功能

    -e 启用转义符

    \t 制表符

    \b 退格符(删除前面的字符)

    \n 新添加一行

    单引号 强引用 例如变量不会引用

    双引号 弱引用 例如变量会引用

    which 显示应用程序文件位置

    --skip-alias 禁止使用命令别名

    [root@cloud test]# which ls

    alias ls='ls --color=auto'

    /usr/bin/ls

    [root@cloud test]# which --skip-alias ls

    /usr/bin/ls

    whatis 显示命令帮助信息的位置

    系统管理类命令

    关机:halt.poweroff.shutdown.init 0

    重启:reboot,shutdown,init 6

    跟用户登录相关:who,whoami,w

    shutdown 关机

    -r 重启

    -h 关机

    -c 取消关机 now: 立刻

    +M: 加时间,几分钟后关机

    hh:mm 具体关机时间

    shutdown -r +10 "hello erveryone" 十分钟之后关机,并发广播

    shutdown -c 取消关机计划

    whereis 查找命令目录

    -b 查找二进制文件

    -m 查找帮助文件

    [root@cloud test]# whereis -b ls

    ls: /usr/bin/ls

    [root@cloud test]# whereis -m ls

    ls: /usr/share/man/man1/ls.1.gz

    sort 排序

    -f 忽略字符大小写

    -r 逆序

    -t 字段分隔符

    -k 以指定字段为标准排序

    -n 以数值大小进行排序

    -u 排序后去重,连续且重复的行

    uniq 连续且完全相同方为重复

    -c 显示每行重复的次数

    -d 仅显示重复的行

    -u 仅显示不重复的行

    [root@cloud~]#cut-d:-f7/etc/passwd|sort|uniq-c

    6/bin/bash

    1/bin/sync

    1/bin/tcsh

    1/sbin/halt

    23/sbin/nologin

    1/sbin/shutdown

    [root@cloud~]#cut-d:-f7/etc/passwd|sort|uniq-u

    /bin/sync

    /bin/tcsh

    /sbin/halt

    /sbin/shutdown

    [root@cloud~]#cut-d:-f7/etc/passwd|sort|uniq-d

    /bin/bash

    /sbin/nologin

    cut 文本内容切割

    -d 指明分隔符

    -f 指明需要取出的字段

    n,m逗号分隔 n-m取一段

    [root@cloud ~]# cut -d: -f1,3-4,7 /etc/passwd

    diff 比较两个文件

    diff /PATH/OLDFILE /PATH/NEWFILE

    -u  显示要修改的上下文

    wc 统计命令

    -c 统计字节数数

    -l 统计行数

    -m 统计字符数,不能与-c一起使用

    -w 统计字数

    -L 打印最长行的长度

    tr 对位替换

    [root@WH-DNS-00 etc]# tr [a-z] [A-Z]

    nihao

    NIHAO

    过滤字符,转换字符,不会修改源文件

    [root@WH-DNS-00 etc]# tr [a-z] [A-Z] < /etc/issue

    \S

    KERNEL \R ON AN \M

    [root@WH-DNS-00 etc]# cat /etc/issue

    \S

    Kernel \r on an \m

    [root@WH-DNS-00 etc]# tr -d 'abc' < /etc/issue

    \S

    Kernel \r on n \m

    目录管理类命令

    mkdir 创建目录

    -p 自动按需创建目录

    -v 显示详细过程

    -m 直接给定权限

    rmdir 删除空目录

    只能删除空目录

    tree 显示目录树形结构

    -L 指定显示的层级

    -d 只显示目录

    [root@cloud test]# tree x/

    x/

    ├── y1

    │   ├── a

    │   └── b

    └── y2

    文件查看类命令

    分屏查看命令:more和less

    more 翻屏至文件尾部后自动退出

    less 同man

    head 查看文件的前n行

    -n 前n行

    tail 查看文件的后n行

    -n 后n行

    -f 查看文件尾部内容并监控,不退出

    stat 查看文件状态

    文件:两类数据组成

    * 元数据: metadata

    * 数据: data

    stat能看到文件的元数据

    [root@cloud test]# stat file1

    File: ‘file1’

    Size: 21          Blocks: 8          IO Block: 4096  regular file

    Device: 802h/2050d  Inode: 68666229    Links: 1

    Access: (0644/-rw-r--r--)  Uid: (    0/    root)  Gid: (    0/    root)

    Access: 2016-12-06 23:18:37.841655271 +0800

    Modify: 2016-12-06 23:18:35.767655289 +0800

    Change: 2016-12-06 23:18:35.767655289 +0800

    Birth: -

    Access: 2016-12-06 23:18:37.841655271 +0800 最近访问

    Modify: 2016-12-06 23:18:35.767655289 +0800 最近更改,数据

    Change: 2016-12-06 23:18:35.767655289 +0800 最近改动,元数据

    touch 创建文件,更改时间戳

    -c 指定的文件路径不存在时不予创建

    -a 仅修改access time;

    -m 仅修改modify time;

    -t 指定修改时间戳

    文件管理工具

    cp 复制

    单元复制

    如果目标文件不存在,会自动创建

    如果已经存在,会覆盖

    多源复制

    目标必须是目录,分别复制每个文件至目标目录中,并保持原名

    -i: 交互提醒

    -f: 强制覆盖,不交互

    -r: 递归复制目录

    -d: 如果复制的是符号链接,不找源文件,仅复制链接本身,cp默认是会复制符号链接的源文件到目标文件的

    -a: 用于实现付归档

    --preserv=

    mode 权限

    ownership 属主和属组

    timestamps 时间戳

    context 安全标签

    xattr 扩展属性

    links 符号链接

    all 上述所有属性

    mv 移动

    -i 交互式

    -f 强制,不交互

    rm 删除

    -i 交互式

    -f 强制 force

    -r 递归 recursive

    所有不用的文件建议不要直接删除,而是移动到某个专用目录。

    变量

    命名的内存空间;

    变量类型:

    字符型

    数值型:

    精确数值

    近似数值

    相关文章

      网友评论

          本文标题:马哥linux培训第三天笔记

          本文链接:https://www.haomeiwen.com/subject/ymyqwttx.html