hexdump -C f1   查看文件里面的16进制的显示,

linux和win的记事本二进制格式是不同的,这样就会有些人把在windwos上面写好的脚本文档,直接移动到linux上面来,shell脚本没有问题,但是总是报错,这就是二进制格式不同造成的,我们可以通过一个命令doc2unix来在不同系统上面转换文档

[root@zou tmp]# cat abc   这个abc是在linux上面建立的正常文档

a

b

c


我们通过hexdump可以查看文件里面每一个字符的16进制的显示信息

[root@zou tmp]# hexdump -C abc

00000000  61 0a 62 0a 63 0a                                |a.b.c.|

00000006

这里的0000006代表的是偏移量  其中61是a  62是b 63是c 其余的0a代表换行符



下面将这个abc转移成windows上面正常的txt文档

使用命令 unix2dos abc  这个命令明显可以看得出unix to dos 由linux转移成windows格式的文件

[root@zou tmp]# unix2dos abc

unix2dos: converting file abc to DOS format ...

[root@zou tmp]# hexdump -C abc

00000000  61 0d 0a 62 0d 0a 63 0d  0a                   |a..b..c..|

00000009

同一个文档,windows格式的ASCII文件明显与linux不同

同样上面的一串0以及尾部的9代表的是偏移量,可以看出windows上面的ASCII还是有很大不同的,尤其是换行,windows上面是 od oa 的


如果想把win上面的文件转译成linux上面的ASCII上面的文档

使用命令 dos2unix 明显可以看出dos to unix 

[root@zou tmp]# dos2unix abc.txt

dos2unix: converting file abc.txt to UNIX format ...


windows和linux装换的文本工具:上面我们已经说了是

unix2dos  和 dos2unix 

之后通过hexdump -C Filename 查看字符格式




reset   当屏幕出现乱码的情况的时候,执行这个命令可恢复正常



快捷键:

crtl+l 清屏

crtl+c 取消命令的执行

crtl+a 将光标移动到命令的最前面

crtl+e      将光标移动到命令的最后面

crtl+u      删除光标前的多有字符

crtl+k      删除光标后的所有字符

crtl+b      左移动一个位置

crtl+f      光标向右移动一个字符

esc 松手 按b  向左移动一个单词

esc 松手 按f   向右移动一个单词


图形化的终端的快捷键

   ctrl+shift +t   打开一个新的终端

w   退出当前一个

q   退出所有终端

crtl+PgUp/PgUn  切换到下一个/上一个标签页

crtl+shift+c   复制选中文本

crtl_shift+v   粘贴到光标后






文件管理   www.pathname.con/fhs下载帮助文档


文件系统是文件在系统上的存方式,是硬盘存储数据的范式

fat 不支持单个文件大于4G,不支持加密、压缩

ntfs 支持


文件结构 (文件分成结构 LSB: linux standard base)


FHS文件系统分层标准

/ 整个文件系统的起始

/bin 系统最基本的程序,二进制程序

/sbin 管理员的基本程序

/boot 存放启动程序,入内和vmlinuz..

/dev    设备   b块文件,摸得着的设备,具有缓存

  c  字符设备,线性,顺序读写,是逻辑的设备,没有缓存

/etc    配置文件

opt    /opt相对应的配置文件

X11     桌面

sgml     标记语言

/lib    库,程序运行时需要的共享库,在7上是lib64

/media  移动设备挂载点

    /mnt   临时文件系统的挂在点

    /opt    第三方软件的安装目录

    /srv    服务器的数据

    /tmp    临时文件,系统自动清除

    /usr    小系统,大部分数据在这里面,

    bin   保证系统拥有完整功能而提供的应用程序,在7版本上二进制程序是这个位置,/bin软连接到这个位置

    sbin  /sbin软连接到这个位置,管理的二进制程序

    lib   32位使用的库 /lib 软连接到这个位置

    lib64  只存在64位系统上面 /lib64软连接到这个位置

    include  C程序的头文件(header files)

    share    结构化独立的数据  如doc,man等

    local   第三方程序安装位置,其下的目录有:

    bin

    sbin

    lib

    lib64

    etc

    share   

    以上都是第三方的软件安装生成的

    /var    变化数据,web网页等

    cache 应用程序缓存目录

    local 为/usr/local下的应用程序存储可变数据

    lock 锁文件

    log 日志

    opt 为/opt下的应用程序存储可变数据

    run 运行相关进程数据,常存储进程pid文件

    spool   应用程序数据池

    tmp     保存系统两次重启之间产生的临时数据

    /home


   假目录文件

    /proc  内存中的一些信息,内存中的分区表,大小为0,是模拟的

    process的简称

    cat /proc/cpuinfo    cpu信息

    cat /proc/swaps     交换分区

    cat /proc/partions  分区  

    /sys   存放硬件相关的信息,

    /selinux  权限加强linux,安全策略相关的信息存储位置,root是王,也要在这个法律的规范下活动


在7上/usr不可以做挂载点

/usr/sbin,   bin是不可以挂载的,是系统启动的过程中就要用的,/usr里面有bin,因此也不支持挂载


版本6和版本7的目录变化为/bin /sbin /lib /lib64

都跑到/usr的目录下面去了

lrwxrwxrwx.   1 root root    7 2月  26 02:04 bin -> usr/bin

dr-xr-xr-x.   4 root root 4096 2月  26 02:09 boot

drwxr-xr-x.  20 root root 3200 5月  13 16:54 dev

drwxr-xr-x.  75 root root 8192 5月  14 02:27 etc

drwxr-xr-x.   5 root root   37 5月  10 22:38 home

lrwxrwxrwx.   1 root root    7 2月  26 02:04 lib -> usr/lib

lrwxrwxrwx.   1 root root    9 2月  26 02:04 lib64 -> usr/lib64

drwxr-xr-x.   2 root root    6 8月  12 2015 media

drwxr-xr-x.   2 root root    6 8月  12 2015 mnt

drwxr-xr-x.   2 root root    6 8月  12 2015 opt

dr-xr-xr-x. 360 root root    0 5月  13 16:54 proc

dr-xr-x---.   4 root root 4096 5月  14 02:43 root

drwxr-xr-x.  22 root root  620 5月  13 16:54 run

lrwxrwxrwx.   1 root root    8 2月  26 02:04 sbin -> usr/sbin

drwxr-xr-x.   2 root root    6 8月  12 2015 srv

dr-xr-xr-x.  13 root root    0 5月  13 16:54 sys

drwxrwxrwt.  12 root root 4096 5月  14 03:21 tmp

drwxr-xr-x.  13 root root 4096 2月  26 02:04 usr

drwxr-xr-x.  19 root root 4096 5月  13 16:54 var



linux上的应用程序的组成部分

二进制程序

/bin

/sbin

/usr/bin

/usr/sbin

/usr/local/bin

/usr/local/sbin

库文件:

/lib

/lib64

/usr/lib

/usr/lib64

/usr/local/lib

/usr/local/lib64

配置文件:

/etc

/etc/Diectory

/usr/local/etc

帮助文件:

/usr/share/man

/usr/share/doc

/usr/local/share/man

/usr/local/share/doc



linux下的文件类型 

  - 普通

  p 管道

  l   软连接

  b    块

  c    字符

  s    套接字

  d    目录

    使用file File_name  去查看文件的类型



定义文件,文件名命令规则

包括路径在内文件命长对为4095个字节,用/分隔的路径不能超过255个字节

不能用 /  作为文件里面的名字字符

文件名一般区分大小写,这是和文件系统有关的xfs为区分大小写(fat不区分大小写)

当文件名就叫 -a 的时候,就需要使用绝对路径或者相对路径了



df -T 显示样式

[root@zou ~]# df -T

文件系统                类型        1K-块   已用     可用 已用% 挂载点

/dev/mapper/centos-root xfs      18307072 922400 17384672    6% /

devtmpfs                devtmpfs   490452      0   490452    0% /dev

tmpfs                   tmpfs      500668      0   500668    0% /dev/shm

tmpfs                   tmpfs      500668   6828   493840    2% /run

tmpfs                   tmpfs      500668      0   500668    0% /sys/fs/cgroup

/dev/sda1               xfs        508588 125600   382988   25% /boot

tmpfs                   tmpfs      100136      0   100136    0% /run/user/0



pwd 显示当前用户工作的目录

PWD    当前的共组目录

OLDPWD   上一个工作目录

相对路径

绝对路径

cd ~wang  到隔壁老王家



ls  list列出目录内容

-r    按照字母逆序显示

-1     数字1,一个文件一行显示

-S     大S排序,以文件大小排序

-U     就是按照文件存储的顺序来排序

-u     按照修改时间排序

-X     按照文件的扩展名来排序

-i     显示inode的数量

-ld    目录和符号链接的信息

-R      递归显示

-a     显示隐藏文件

-l     显示更多的信息



文件通配符

    *      0或多个任意字符

    ?     1个任意字符,必须有一个字符,不能为空

    ~zou    zou的家目录  

~+     当前目录,相当于.

~- 前一个目录

[1-3]    1到3的一个个数

[13]     1或者3

[12][34] 笛卡尔乘积,但是{12}{34}不用的是,后者必须要有,前者没事

[a-z] aAbBcCdD....xXyYz 在这里面是这样排序的大写和小写字母,少一个Z

[A-Z]   AbBcC.....yYzZ   少一个a


预定义的字符:  man 7 glob

[:digit:] 数字

[:lower:]   小写字母

[:upper:]   大写字母

[:alpha:]    字母

[:alnum:]    字母和数字

[:space:]    空格

[:punct:]    标点符号



元数据netadata:

在系统当中记录文件的,使用ll显示出来的东西就是元数据:权限,所有者(数主,属组),文件大小,创建时间



文件元数据的时间

--atime    访问时间,文件最后一次读时间,默认读取,如使用了cat命令查看

--ctime 状态更改时间,文件属性,文件空间大小,文件名等 如chmod chown mv改名,移动位置,

--mtime 修改改动时间,就是利用vim echo sed等编辑了这个文件,使这个文件里面的内容与以前不一样,


当我们使用vim编辑了文件,它的atime,ctime和mtime会同时发生变化,atime在你进入编辑界面发生变化,之后编辑完成之后,保存退出ctime和mtime再变化,如果只是vim进去,直接q退出,那么只有atime变化

当使用echo 增加文章里面的内容,只有ctime和mtime变化


web服务器上面禁用--atime可以提高近5%的性能


默认显示文件内容的时间,

ll --time=atime /etc/issu  这里的atime可以换成另两个

state File_name 查看文件的三个时间

[root@zou ~]# ll --time=atime test

-rw-r--r--. 1 root root 0 5月  13 19:46 test


[root@zou ~]# stat test

 File: "test"

 Size: 0         Blocks: 0          IO Block: 4096   普通空文件

Device: fd00h/64768d Inode: 134651      Links: 1

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

Access: 2016-05-13 19:46:57.714519785 +0800

Modify: 2016-05-13 19:46:57.714519785 +0800

Change: 2016-05-13 19:46:57.714519785 +0800



touch 如果文件名没有存在将会新建文件,如果文件存在,将会把3个时间给刷新了

-a 仅修改atime   ctime也会同时变化

-m 修改mtime     ctime也会同时变化

-t  [[CC]yy]MMDDhhmm[.ss]  时间格式

-c  如果文件不存在,不会创建,只刷新那三个时间


touch -t 201608081000.30 --time=mtime test   年月时分秒 修改test文件的mtime


> file_name  新建一个文件,会刷新时间,如果文件存,则会覆盖

>> file_name  可以新建一个目录,不会刷新时间,慎用,文件存在就附加


cp  copy文件

格式:

cp  option [-T] source dest

cp /etc/issue /mnt/a

cp option source directory

cp /etc/issue /tmp/a /mnt

cp option -t directory source

cp -t /mnt /etc/issue /tmp/a  源和目的反过来


src是文件,如果目标不存在,新建dest,并将src中内容填充至dest中

如果目标文件存在,

1.dest为文件,这个时候源只能有一个,src中的内容会覆盖dest当中的内容,当然这个需要再经过你同意,敲了y之后才会覆盖,当然普通用户不会,你可以处于安全考虑使用cp -i 命令别名

2.如果dest是个目录,的dest下面新建一个src一样的文件名的文件,并将src中内容填充进去,这时源文件可以是多个