文件目录管理

Posted jack的网络日志

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件目录管理相关的知识,希望对你有一定的参考价值。

  系统目录结构

 查看目录含义

man hier

查看网络信息

netstat -nltp

1.ls就是list的意思,列举目录或者文件

2.home目录是家目录,每个用户都有一个家目录

3.root用户的家目录是根root,普通用户的家目录在/home/下   例如/home/sunyuju

4.useradd 添加普通用户,用useradd命令创建的普通用户,在/home目录下都有一个对应的用户名文件及是用户的家目录

为什么配置密钥登录的时候要配置到/root/.ssh/authorized_keys文件中?

答:因为ssh的配置文件中指定了这个文件 /etc/ssh/sshd_config

5.如果某个命令没有安装用yum 命令安装

例如:tree 命令没有安装 yum install -y tree

6.tree命令是以树形展示目录结构,查看命令怎么用 tree --help

7.man命令是显示命令的帮助文档 man tree

8.想查看目录的两层用 命令 tree -L 2

9.bin sbin  usr/bin  usr/sbin  目录下保存的都是常用命令 例如 ls  tree  vi 

为什么我们能直接用这些命令呢,因为PATH环境变量的作用

bin目录下的命令和  sbin下的命令有什么区别?

sbin下面的命令都是root用户用的 普通用户没有权限用

bin下是普通用户用的命令 

10 .boot是启动目录

11.dev目录是设备文件目录 鼠标 键盘

12.etc目录是配置文件目录

13.home目录是用户的家目录

14.lib 和lib64目录是系统的库文件,相当于Windows下面的dll文件

15.查看一个命令依赖那些库? 用ldd /bin/ls

16.media 媒见目录 mnt挂载目录 opt  proc进程

17.root 目录 root用户的家目录

18.run 进程目录

19.srv服务产生的文件

20.sys目录系统内核相关的文件

21.tmp 系统的零时目录

22.usr 用户相关的目录 通常将apach放到这里

23.var目录 日志相关的放在这里

ls命令

 ls 

inode:储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。

 

1.-rw-------表示权限   1 有多少个文件用同一个inode  

 

2.ls -i 查看inode号 

3.- 代表文件类型   root 表示所有者,后面的root表示所有组 1422 表示文件大小,单位是b 后面是时间和文件名

4.ls -a 查看所有文件,包括隐藏文件。

5.

这三个目录的inode号是一样的

6.ls -alt 

t表示正序排2.

别名alias

1.which  ll    查看ll命令的路径

2.alias  查看系统哪些命令有别名

3.创建:alias aming=\'ls -lah\' 

4.删除:unalias

相对和绝对路径

1.绝对路径:从根开始的都是绝对路径

/root/   /usr/

2.相对路径是,相对当前所在位置的路径

相当于.根的路径

cd命令

1.cd 的意思是 change directory

2.cd - 回到上一目录

cd .. 到上一目录

cd  ~ 到家目录

mkdir和rmdir

mkdir创建目录,目录不存在不能创建用 -p 参数强制创建目录

-v 参数显示创建目录的过程

rmdir的用途是删掉目录。他的功能比较鸡肋,它只能删除空的目录。

rm

1.rm -f 强制删除文件

2.rm -r级联的删除目录和文件

3.rm -v查看删除过程

 

4.!su 表示执行最近执行的已su开头的命令

环境变量$PATH

1.环境变量指$PATH

[root@sunyujun01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@sunyujun01 ~]# 

2.为什么我们可以执行ls命令,就是因为ls位于环境变量下面的某个文件下面,下面例子中ls命令位于/usr/bin/目录下

 

[root@sunyujun01 ~]# which ls
alias ls=\'ls --color=auto\'
    /usr/bin/ls

 

 3.临时增加命令,将ls1命令放到dir目录下并将dir目录添加到环境变量中,然后测试ls1命令和ls命令完全一样。

[root@sunyujun01 ~]# ls
anaconda-ks.cfg  dir           
[root@sunyujun01 ~]# cp /usr/bin/ls ./dir/ls1          
[root@sunyujun01 ~]# PATH=$PATH:dir/   将某个目录添加到环境变量中
[root@sunyujun01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:dir/
[root@sunyujun01 ~]# ls1
anaconda-ks.cfg  dir

4.永久加ls1命令编辑profile文件在文件尾加上PATH=$PATH:/root/dir/

[root@sunyujun01 ~]# vi /etc/profile

 

5.删除ls1命令 直接重新设置环境变量,第二种删除profile文件中的PATH=$PATH:/root/dir/

[root@sunyujun01 ~]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

cp命令 

 1.copy 拷贝文件或目录

[root@sunyujun01 ~]# cp anaconda-ks.cfg dir/
[root@sunyujun01 ~]# ls dir/
a  anaconda-ks.cfg  ls  ls1

2.拷贝目录用-r 参数

[root@sunyujun01 ~]# mkdir dir1
[root@sunyujun01 ~]# ls
anaconda-ks.cfg  dir  dir1
[root@sunyujun01 ~]# cp dir dir1
cp: 略过目录"dir"
[root@sunyujun01 ~]# cp -r dir dir1
[root@sunyujun01 ~]# ls
anaconda-ks.cfg  dir  dir1
[root@sunyujun01 ~]# cd dir1/
[root@sunyujun01 dir1]# ls
dir

3.!$上条命令的最后一个参数,以空格分割

[root@sunyujun01 dir1]# ls dir
a  anaconda-ks.cfg  ls  ls1
[root@sunyujun01 dir1]# tree !$
tree dir
dir
├── a
│   └── b
│       └── c
├── anaconda-ks.cfg
├── ls
└── ls1

3 directories, 3 files

4.-i 表示 安全参数,会问是否创建

[root@sunyujun01 dir1]# which rm
alias rm=\'rm -i\'
	/usr/bin/rm

5.拷贝目录的时候如果目标目录已存在,会将拷贝的目录放到目标目录下面

mv命令

1.移动文件或目录,如果在同一目录下是重命名

2.移动同时改名字

[root@sunyujun01 ~]# mv dir/ls1 dir1/ls2
[root@sunyujun01 ~]# tree
.
├── anaconda-ks.cfg
├── dir
│   ├── a
│   │   └── b
│   │       └── c
│   └── anaconda-ks.cfg
└── dir1
    ├── dir
    │   ├── a
    │   │   └── b
    │   │       └── c
    │   ├── anaconda-ks.cfg
    │   ├── ls
    │   └── ls1
    ├── ls
    └── ls2

3.mv命令也有i选项,所以当移动的文件在目标目录已经存在则会询问是否覆盖

[root@sunyujun01 ~]# which mv
alias mv=\'mv -i\'
	/usr/bin/mv

文档查看cat_more_less_head_tail

1.cat命令:查看文件内容,加-n选项 显示行号

2.tac命令 和cat命令相反,倒序查看文件内容

3.more命令查看文件内容,只是显示一屏,按空格键显示剩下的,按ctr+b往上翻,ctr+f往下翻

 

4.wc -l 显示文件行数

5.将一个文件的内容追加到另一个文件内容后

6.less命令和more命令类似,支持方向键往上看,可以在文件中用/+(?加关键字搜索是从后往前搜)关键字进行搜索,对搜索的内容按n查看下一个,按shift+n看上一个

7.按小g定位到行首,大g定位到行尾

8.head命令查看文件的头10行,指定查看几行用 -n +行数

9.tail命令查看文件的尾10行,可以查看动态文件 用 tail -f  文件名

文件或目录权限chmod

1.rw-r--r--(644)   rwx:读写执行,rw-:所有者 r--:所属组 r--  其他用户的权限 r用数字4 w用数字2 x 用数字1表示

2.chmod命令更改文件权限,有的目录或文件权限后面有一个.这个点号表示文件受制于selinux,关闭selinux之后再创建文件就不会有这个点了。

3.零时关闭selinux: setenforce 0,开启selinux:setenforce 1 查看selinux状态:getenforce 彻底关闭selinux编辑/etc/selinux/config,将SELINUX=enforcing改为disabled,然后重启selinux

4.chmod 命令更改目录权限只是针对目录本身,目录里面的文件的权限还是之前的权限,如果想将文件内部的文件也同时更改权限可以用 -R 选项 chmod -R 777 目录名,也可以用u、g、o改权限

更改所有者和所属组chown

1.chown修改文件所有者,将dir目录的所有者有root改为了sunyujun

2.修改文件的所属组chown sunyujun:sunyujun  dir 或者用chgrp命令,chown命令也支持 -R 参数 chown -R sunyujun:sunyujun  filename

umask

1.umask 决定了我们默认建立一个文件或者目录的默认权限755  664。

2.umask u=, g=w, o=rwx 执行该命令以后,对于下面创建的新文件,其文件主的权限未做任何改变,而组用户没有写权限,其他用户的所有权限都被取消,
应注意:操作符“=”在umask命令和chmod命令中的作用恰恰相反。在chmod命令中,利用它来设置指定的权限,而其余权限则被删除;但是在umask命令中,它将在原有权限的基础上删除指定的权限。

不能直接利用umask命令创建一个可执行的文件,用户只能在其后利用chmod命令使它具有执行权限。假设执行了命令umask u=, g=w, o=rwx,虽然在命令行中,没有删去文件主和组用户的执行权限,但默认的文件权限还是640(即 rw-r-----),而不是750(rwxr-x---)。但是,如果创建的是目录或者通过编译程序创建的一个可执行文件,将不受此限制。在这种情况 下,会设置文件的执行权限。 也可以使用八进制数值来设置mode。由于在umask中所指定的权限是要从文件中删除的,所以,如果该文件原来的初始化权限是777,那么执行命令umask 022以后,该文件的权限将变为755:如果该文件原来的初始化权限是666,那么该文件的权限将变为644。

目录:rwxrwxrwx 减去 ----w--w- = rwxr-xr-x。 777 - 022 = 755

文件没有执行权限,为rw-r--r--所以就是644了。 666- 022 = 644

1.touch命令创建文件默认权限为644  mkdir 创建目录默认权限为755

2.root 的umask的值为0022

3.特殊情况umask设置为003,创建文件。

4.特殊情况umask设置为003,创建目录

隐藏权限lsattr_chattr

1.chattr设置隐藏权限,用ls -l 是看不到的,

2. chattr + i 文件 :设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。

3.lsattr是查看文件权限的。

4.用chattr -i 是减去i权限 

5.chattr +a 权限是只能追加和修改时间信息,不能删除,不能修改,只能往后追加内容,

6.chattr -a 去掉权限 

7.给一个目录加了i权限或a权限,目录下面的文件可以写

8.lsattr -R 列出目录多层结构,不加-R只是列出一层。

9.lsattr -a 可以看到隐藏的文件

特殊权限set_uid

作用是保证普通用户临时拥有root用户的身份,文件必须是二进制文件。

1.

2.切换到某个用户下

[root@sunyujun01 ~]# su - sunyujun

3.当用户sunyujun想看root目录下文件时权限时不够的,这是我们可以用set_uid命令

这时/usr/bin/ls也变红了,也可以用chmod u=rws /usr/bin/ls修改

再切换到sunyujun目录这是就可以查看了

4.去掉set_uid权限 chmod u-s /usr/bin/ls

特殊权限set-gid

和set-uid相识普通用户临时拥有所属组的身份

 

1.当给一个目录设置了set-gid权限之后,再在目录里创建目录或文件,目录或文件的所属组为设置的所属组

 

特殊权限stick_bit

1.(防止别人删除自己的文件)root除外,权限中的t是防删除位 tmp目录下的文件可以修改,但是没有删除权限

2.一个目录的权限是777,他下面的文件及时用户没有执行的权限也可以删除,因为能不能删除不是看到对文件的权限而是,文件所在的目录的权限,用上stick_bit之后用户就不能删除了。

软链接文件

1.软连接相对与Windows中的快捷方式,支持对文件和目录做软连接,命令为ln -s  源文件   目标文件

2.给dir目录下的123.txt文件创建软连接 ln -s  /dir/123.txt  123

3.注意的是做软连接尽量使用绝对路径

硬链接

1.不支持对目录做硬链接,只支持对文件做硬链接,命令格式为ln 源文件  目标文件

2.硬链接创建的文件两个文件的inode信息一样,删除文件另一个文件不受影响,还是存在的,硬链接也不会占用多余的空间。

3.不能跨分区做硬链接

find命令

1.查找相关命令  whereis   ls   locate ls   which ls

2.find命令格式find  目录路径(不指定默认为当前目录) -type  f(文件)  d(目录) -name  “字符串”

3. find -name "*.php" -exec grep \'sunyujun\' -H {} \\; 查找所有包含sunyujun字符串的php文件并将文件目录和文件名列出来

3.stat 命令查看文件的具体信息

4.访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。

 修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。

 变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

5.查找一天以内更改过的文件

6.-o 是或者的意思 -size  文件大小

7.查找inode号和dir文件相同的文件(硬链接)

8.查找一小时以内修改过的文件

9.格式 find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \\;

查找当前目录下的所有文件并列出来 find ./ -type f -exec ls -l {} \\;

 

以上是关于文件目录管理的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )(代码片段

python常用代码片段总结

使用 Git 来管理 Xcode 中的代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

如何使用tablayout和片段管理java文件[关闭]