马哥linux培训第三天笔记

文件系统

程序编译方式

动态编译

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

静态编译

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

进程的类型

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

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

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

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培训第三天笔记)