20160218自学Linux_根文件目录介绍+目录管理命令学习(mkdir,rmdir,tree,touch,stat,rm,nano,cp,mv,insatll)

07

Windows:PE

Linux:ELF

ELF:可执行的可链接的文件格式

文件系统rootfs文件系统

FHSLinux

 

下面开始了解/目录下的一级子目录,有以下一些:

/boot

/boot:系统启动的时候主要用到的一些相关的文件:如内核,initrd,以及grub(MBR只是一个存储空间,起作用的是grubbootloader,这个才是主要的程序,都在/boot/目录下

 

/dev:设备文件

20160218自学Linux_根文件目录介绍+目录管理命令学习(mkdir,rmdir,tree,touch,stat,rm,nano,cp,mv,insatll)_第1张图片 

设备文件:

块设备:随机访问(可以实现随机访问的数据),数据块(数据被分成一个一个的块)

字符设备:线性访问模型(有次序的访问)

如:键盘,显示器都是线性访问模型

特殊文件没有大小(可以看到上图大小是10,5,这些不是他们的大小),只有元数据,如上图的c设备,还有b设备

设备号:主设备号(major)和次设备号(minor|视频中这一段会有嘈杂的响声

 

/etc配置文件的主要存放路径这里主要是纯文本的配置文件

 

/home:用户的家目录,每一个用户的家目录通常默认为 /home/USERNAME

在自己的家目录下是有所有权限的,root的用户的家目录就是/root

root用户的家目录就是/root,没有/home

工作中的root用户不经常登录的,因为root的权限非常的大

只有在管理员的权限要做的时候才用到root用户

 

/lib:主要是存放库文件

当然除了lib,还有其他存放/lib/modules:内核模块文件

静态库Linux的是 .a  

动态库 window的是.dll

         Linux的是.soshared object)称为动态库也称为(共享库

20160218自学Linux_根文件目录介绍+目录管理命令学习(mkdir,rmdir,tree,touch,stat,rm,nano,cp,mv,insatll)_第2张图片 

上图表示的是:我的共享库给你用,你的ls就可以用,但是你ls移植到了另外一个环境,你的ls就不能用了,因为另一个环境没有ls的共享库,也就是途中的.so

库文件是不能单独执行的,只能被调用,因为没有访问入口

 

/media:/mnt:这两个是我们经常用于挂载点目录

我们光盘放进光驱以后,必须关联到某一个树的根节点上,才能访问

/media通常挂载移动设备的

/mnt:是挂载额外的临时文件系统,cd-rom常可以挂在到这里

 

/misc:杂项

/opt:可选目录,第三方官方的程序的安装目录,现在比较多放在了/usr/local

 

/proc这个是一个伪文件系统

这里所有显示的文件,其实是内核映射的文件,一般是内核的可调参数

所以我们所说的系统调优跟这个很大相关,但是这也是非常难理解的目录

/sys 这是另一个伪文件系统,这个不是内核映射文件,是跟硬件设备相关的属性映射文件

通常实现对硬件相关的信息映射

[root@www sys]# ls

block  bus  class  dev  devices  firmware  fs  hypervisor  kernel  module  power

 

/tmp:临时文件,可以用其他用户查看,还有一个临时文件目录在var/tmp下面

每一个可以在里面创建文件,当然也只能创建自己的文件(主要是因为其他属组是t权限没这是个特殊权限,其他两个是u+sg+s。这个是o+t

/var:可变化的文件,随着运行系统的时间,这个文件会越来越大

[root@www sys]# ls /var/

account  cache(缓存)  db     games  gopher    lib    lock(锁文件)  mail  opt       run(存储进程,有pid    tmp (第二个临时文件目录) ypadm      crash  empty  gdm    kerberos  local  log(日志)   nis   preserve  spool  var

run里存放的有pid,这里存放的就是进程IP

 

/bin:可执行文件,用户命令

/sbin:管理命令

s可以理解成super,所以,这两个里面放的是程序,lib放的是库,这两个程序运行的时候可能依赖于这个/lib里面的库,每一个库就有可能用到配置文件,配置文件在哪里啊,就在/etc

 

/usr:这个不是user的简写,s表示的是shared r就是read-only

/usr表示的就是:全局的共享的只读文件

 /usr/bin

/usr/sbin

/usr/lib

为什么要多这么一个路径呢

/bin/sbin是跟系统启动相关的,而/usr/bin,和/usr/sbin是跟系统正常功能相关的,当然这只是方便大家认识做的分类,所以/usr/lib也是库文件存放路径

对于操作系统立场来讲,上面的是必须的,而下面的/usr/local/*就不是必须的,存放的是第三方软件的东西,但不影响系统的启用

/usr/local:

/usr/local/bin

/usr/local/sbin

/usr/local/lib

之前的目录没有了是不能正常启动的,但是第三方的路径下格式化了也是没有问题的,系统是可以启动的

 

命名规则:

1、长度不能超过255个字符;

2、不能使用/当文件名

3、严格区分大小写

Linux是没有注册表的概念

所以弄出的系统可以随时移植

 

 

我们运维的工作――这里对目录管理先作介绍

1.文件管理2.目录管理3.运行程序4.设备管理5软件管理6.进程管理7.网络管理

目录管理

之前讲过ls,cd,pwd

一、mkdir

     -p:自动也创建副目录    如  mkdir -p /aaa/bbb/ccc 即使bbb不存在也会一并创建

 -vverbose 表示的是详细信息,很多都是这个v是详细信息,如tar命令。

二、tree 查看文件系统树的

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

花括号展开(命令行展开),默认将逗号前后分成两个

波浪线展开 cd ~   自动进入当前用户的家目录

Linux重要的哲学思想之一:输出没有信息就是最好的信息

20160218自学Linux_根文件目录介绍+目录管理命令学习(mkdir,rmdir,tree,touch,stat,rm,nano,cp,mv,insatll)_第3张图片 

 

二、rmdir

rmdir remove direction

只能删除空目录,不是空目录它删不了

rmdir-p选项是一脉相传的才可以删除

意思:就是子目录删了,父目录只有你这个子目录(没有其他文件),父目录才会被删除

Linux下目录和文件都是文件,所以Linux下不允许一个目录叫a,一个文件也叫a,在cpmv命令下就要注意了,它没有隐藏扩展名之说

 

三、touch

touch 主要不是用来生产文件的,而是修改时间戳

时间戳:最近一次的访问时间,修改时间,改变时间

Access访问时间    modify修改时间    change改变时间

stat 显示文件的时间戳等信息---这个就是可以显示这三个参数

修改内容是access    修改属性是modify   修改改变是change

[root@www test]# touch -c c

改变一个文件的时间戳用touch---------黑客经常用   -a   -m  -t (直接修改指定的时间,具体看man touch )

改变时间戳的access-a参数

改变时间戳的modify-m参数  

直接指定某个时间戳的时间用-t

touch -c c  -c就是不创建c文件命令

 

为什么没有改变时间戳的改变时间的参数呢?因为改变accessmodify的话,他的change就会改变了,但是如果用-t直接修改时间戳的时间,那么change不会随着变化

[root@www test]# touch a

[root@www test]# stat a

Access: 2015-07-22 05:41:14.838002612 -0400

Modify: 2015-07-22 05:41:14.838002612 -0400

Change: 2015-07-22 05:41:14.838002612 -0400

[root@www test]# touch -a a

[root@www test]# stat a

Access: 2015-07-22 05:41:29.895888459 -0400

Modify: 2015-07-22 05:41:14.838002612 -0400

Change: 2015-07-22 05:41:29.895888459 -0400

[root@www test]# touch -m a

[root@www test]# stat a

Access: 2015-07-22 05:41:29.895888459 -0400

Modify: 2015-07-22 05:41:39.797278103 -0400

Change: 2015-07-22 05:41:39.797278103 -0400

这个命令还是挺常用的命令

文本编辑器:就是编辑纯ASCII

什么叫做ASCII:纯文本,没有任何字符,其他信息。

就是一个美国的标准,标准化,比如97就是a65就是A,规定了一定的规则

延生的说,我们中国的汉字也是有标准的,也就是国标GB18030GBK,GB2312,所以不同的国标标准翻译的东西可能是不一样的。

Unicode代码:实现全球化。全球的常用字符都保存在Unicode,方便全球化

 

四、Nano

    nano - Nano's ANOther editor, an enhanced free Pico clone

这个nano就是纯文本编辑的一个命令,但是功能非常小,所以以后我们会讲一个vim

 

五、rm

rm=删除

Type是查看命令类型,file是查看文件类型

[root@www test]# type cd

cd is a shell builtin

[root@www test]# type rm

rm is aliased to `rm -i'   避免误操作默认有-i参数,意思是“每次删除前提示”

如果不想它提示就用   \rm

使用命令自身的意思,而不是用别名,可以加\,当然针对没有别名的意义不大

-f 强行删除,  删除目录用-r

rm -rf 对于关于管理员,这种命令是非常致命的

 

 

08

六、cp

cp :copy

cp SRCFILE DESTFILE

cp file1 file2 file3(这种是不允许的,不能多个文件合并成一个文件,所以多个源目标文件,目的地一定是一个目录)

cp如果源是目录,那么目的地不能是已经存在的文件,可以是已经存在的目录

对于copy来说,只有一个目的地,一个文件到一个文件,多个文件到多个目录

wKioL1bFtuuiDf4zAABrD25Qlbg323.png 

第一条是复制到/tmp/下,名字依然是passwd

        所以通常我们的复制东西一个目录所有文件到另外一个目录,不需要先去创建这个目录,直接复制的时候就可以改名称为什么了

[root@www hahaha]# cp -r /etc/skel/ /tmp/nishishui

[root@www hahaha]# cd /tmp/nishishui

[root@www nishishui]# ls -a

.  ..  .bash_logout  .bash_profile  .bashrc

第二条是复制到/tmp/下,名字修改成test

20160218自学Linux_根文件目录介绍+目录管理命令学习(mkdir,rmdir,tree,touch,stat,rm,nano,cp,mv,insatll)_第4张图片

cp默认是不复制目录的,只复制文件

要复制整个目录用选项-r,或者是-R,都是递归,一样的

-r来复制目录

-f强行复制

-i就是默认的   别名:cp就是 -i

谁复制的,属主属组就是谁的,会随用户是什么就修改成什么,但是用-p就可以保留

如果是-p选项,就会保留了属组,不会改变属组             

cp -a 就是保留文件的所有的属性,比-p保留的更多

-a:归档复制,常用于备份东西,因为什么都保留了

记住 -a这一个选项,cp 的时候可以复制所有的属性

-L复制的如果是链接的话,复制出来的是文件,是链接指向的那个文件,而不是链接。默认不加-L的话也是这样子的。

-P 保持复制链接,而不是链接指向的文件

 

七、mv

mv :move ------------mv SRC DEST

移动文件,移动文件跟cp基本上是一样的

mv移动目录的时候不需要-r选项

 

不能拿一个目录  mv  到一个已存在名字的 文件 下

如果都是目录,他会mv到目录下,而不会覆盖掉目录的

[root@www tmp]# mkdir /tmp/abc

[root@www tmp]# touch /var/tmp/123

[root@www ~]# mv /tmp/abc/  /var/tmp/123 

mv: cannot overwrite non-directory /var/tmp/123’ with directory /tmp/abc/

[root@www ~]# mkdir /var/tmp/aaa

[root@www ~]# mv /tmp/abc/ /var/tmp/aaa

[root@www ~]# cd /var/tmp/aaa/

[root@www aaa]# ls

abc

mv 还可以重命令   mv abc aaa  可以直接操作目录,也可以直接操作文件

[root@www tmp]# type mv

mv is aliased to `mv -i'

-f强制进行覆盖

-t 先指定目标,再指定源

 

八、install

install 安装(我们之所以会讲这个是因为以后在rpm包制作的时候会用到这个命令,况且对于我们而言,这也是另外一种复制文件的方法)

install - copy files and set attributes

源是多个,目标只能有一个

其实这个跟我们的cp用法是一样的

install -d DIRECOTRY ... :创建目录   (-d选项是创建目录,默认是创建文件)

install的一个特性:用install复制的话,会复制成有执行权限的

wKiom1bFtomBtXs8AAAs9nT-Hm8320.png 

如果用-m选项可以指定权限,不指定就是上面的权限

install 没有-R,所以不像copy可以复制目录,所以一般来讲install只能copy文件的,也就是复制文件的,不能复制目录的,所以源只能是文件的

 

下一次课:文本处理命令

cat,more,less,head,tail,cut,sort,uniq,grep

管道和重定向> <  >>   << & 之类的

用户、组、权限

正则表达式

这些东西讲完了之后,我们会讲一下bash及其特性,然后引用shell编程


本文出自 “malinux学习” 博客,谢绝转载!

你可能感兴趣的:(linux,程序,配置文件,touch,显示器)