Day02-阿铭Linux-文件、目录管理

2.1 系统目录结构上

	[root@aming-01 ~]# ls /
	bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
	boot  etc  lib   media  opt  root  sbin  sys  usr


yum install  -y tree

		[root@aming-01 ~]# tree -L 1 /
		/
		├── bin -> usr/bin
		├── boot
		├── dev
		├── etc
		├── home
		├── lib -> usr/lib
		├── lib64 -> usr/lib64
		├── media
		├── mnt
		├── opt
		├── proc
		├── root
		├── run
		├── sbin -> usr/sbin
		├── srv
		├── sys
		├── tmp
		├── usr
		└── var


常用命令存放目录
	/usr/bin
	/usr/sbin
	/bin
	/sbin

/boot 系统启动相关文件
	grub
	grub2

		[root@aming-01 ~]# ls /boot
		config-3.10.0-693.el7.x86_64
		efi
		grub
		grub2
		initramfs-0-rescue-8c52e199b0324c32b27d6a9e03982bde.img
		initramfs-3.10.0-693.el7.x86_64.img
		initramfs-3.10.0-693.el7.x86_64kdump.img
		initrd-plymouth.img
		symvers-3.10.0-693.el7.x86_64.gz
		System.map-3.10.0-693.el7.x86_64
		vmlinuz-0-rescue-8c52e199b0324c32b27d6a9e03982bde
		vmlinuz-3.10.0-693.el7.x86_64


/dev   设备文件存放目录

/etc   系统配置文件存放目录

/home  用户家目录文件

系统库文件
	/lib
	/lib64

ldd /bin/ls    查看ls命令的依赖库文件

		[root@aming-01 ~]# ls /home
		[root@aming-01 ~]# useradd user1
		[root@aming-01 ~]# ls /home
		user1

2.2 系统目录结构下

/media  临时挂载目录,默认空的
/mnt    临时挂载目录,默认空的
/opt    默认空的
/proc   系统进程,不占用磁盘空间,运行在内存中,默认空的
/run    进程产生的临时文件,关机后会消失
/srv    存一些服务产生的文件
/sys    系统内核一些相关文件
/tmp    系统临时文件目录
/usr    系统用户会用到的一些命令
/var    /var/log  系统日志

常用目录
/usr/bin  /usr/sbin  /bin  /sbin  /etc  /var/  /usr/local

2.3 ls 命令

ls lh  -h人性化显示

ls -i   -i显示inode信息

ls -la   -a显示全部文件,.开头的文件是隐藏文件

ls -lta   -t以时间排序

ls -ld /root/  -d只显示root下的目录

		[root@aming-01 ~]# ls -lih
		总用量 8.0K
		33580930 -rw-------. 2 root root 1.4K 2月  24 22:22 anaconda-ks.cfg
		33580930 -rw-------. 2 root root 1.4K 2月  24 22:22 anaconda-ks.cfg.bak

		inode  文件类型  权限 selinux开启 有硬链接 所有者 所属组 占用空间 日期  文件名称


		[root@aming-01 ~]# which ls
		alias ls='ls --color=auto'
			/usr/bin/ls
		[root@aming-01 ~]# which ll
		alias ll='ls -l --color=auto'
			/usr/bin/ls

2.4 文件类型

d  目录
-  普通文件  可以使用cat查看
c  字符串设备
l  软连接文件 ,相当于Windows快捷方式
b  块设备
s  soket文件,通信功能

2.5 alias 命令别名

	[root@aming-01 ~]# alias
	alias cp='cp -i'
	alias egrep='egrep --color=auto'
	alias fgrep='fgrep --color=auto'
	alias grep='grep --color=auto'
	alias l.='ls -d .* --color=auto'
	alias ll='ls -l --color=auto'
	alias ls='ls --color=auto'
	alias mv='mv -i'
	alias rm='rm -i'
	alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

	[root@aming-01 ~]# alias aming='ls -lha'
	[root@aming-01 ~]# aming
	总用量 32K
	dr-xr-x---.  3 root root  202 2月  25 09:27 .
	dr-xr-xr-x. 17 root root  245 2月  24 22:55 ..
	-rw-------.  2 root root 1.4K 2月  24 22:22 anaconda-ks.cfg
	-rw-------.  2 root root 1.4K 2月  24 22:22 anaconda-ks.cfg.bak
	lrwxrwxrwx.  1 root root   15 2月  25 09:27 anaconda-ks.cfg.rbak -> anaconda-ks.cfg
	-rw-------.  1 root root 2.5K 2月  25 09:50 .bash_history
	-rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout
	-rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile
	-rw-r--r--.  1 root root  176 12月 29 2013 .bashrc
	-rw-r--r--.  1 root root  100 12月 29 2013 .cshrc
	drwx------.  2 root root   80 2月  25 00:40 .ssh
	-rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc
	[root@aming-01 ~]# unalias aming
	[root@aming-01 ~]# aming
	-bash: aming: 未找到命令

2.6 绝对和相对路径

绝对路径:从根开始的
	ls /etc/sysconfig/network-scripts/ifcfg-ens33
	ls /root/.ssh/

相对路径:相对于当前路径开始的路径
	ls .ssh/authorized_keys
	ls network-scripts/ifcfg-ens33

pwd  查看当前路径

2.7 cd 命令

-  返回上一次打开的目录
~  返回家目录 或 直接cd 功能一样
.  当前目录
.. 返回上级目录

2.8 创建和删除目录 mkdir rmdir

mkdir
	-p 递归创建目录
	-v 显示过程

	mkdir -p /tmp/aming/123

rmdir  删除非空目录

2.9 rm 命令,谨慎使用

-r 连续多级文件夹删除
-f 强制,直接删除不提示
-v 显示过程

	rm -rf /tmp/aming/123

	[root@aming-01 ~]# which rm
	alias rm='rm -i'
		/usr/bin/rm

2.10 环境变量 PATH

	[root@aming-01 ~]# echo $PATH
	/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

添加环境变量

	[root@aming-01 ~]# PATH=$PATH:/tmp/
	[root@aming-01 ~]# echo $PATH
	/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/

改回默认环境变量

	[root@aming-01 ~]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
	[root@aming-01 ~]# echo $PATH
	/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

2.11 cp 拷贝

-r 递归复制目录

     复制目录过程中,目标路径存在相同名称的目录,直接覆盖,不存在则自动创建这个名称的目录

		[root@aming-01 ~]# cp /etc/passwd /tmp/1.txt
		[root@aming-01 ~]# cp -r /etc/passwd/ /tmp/aming/
		[root@aming-01 ~]# ls /tmp
		1.txt
		aming

!$ 上一条命令的,最后一个参数
		[root@aming-01 ~]# tree !$
		tree /tmp
		/tmp
		├── 1.txt
		├── aming


	[root@aming-01 ~]# which cp
	alias cp='cp -i'
		/usr/bin/cp

2.12 mv 移动

移动并改名
	mv 目标文件 新文件名称
	mv 目标目录 新目录名称

移动到目标文件到目标目录
	mv 目标文件 目标目录

2.13 文档查看 cat more less head tail

cat 目标文件
	-A  行尾显示结束符
	-n  显示行号

tac 目标文件,倒序查看

more 多屏显示

less 查看文件时,可以上下滚动浏览

head 查看文件的头十行
     head -n 20

tail 查看文件的后十行
     tail -n 5
     tail -f /var/log/messages  动态显示日志

2.14 chmod 修改文件或目录权限

-R 递归更改文件夹内所有目录和文件的权限

rwx
r=4  w=2  x=1

chmod 700 2.txt
chmod u=rwx,g=r,o=r 2.txt
chmod a+x 2.txt
chmod ugo-x 2.txt

2.15 chown 更改所有者和所属组

chown -R username:group filename

-R 递归更改文件夹内所有目录和文件的所属

		[root@aming-01 tmp]# chown aming /tmp/yum.log 
		[root@aming-01 tmp]# ll /tmp/yum.log 
		-rw-------. 1 aming root 0 2月  24 22:17 /tmp/yum.log
		[root@aming-01 tmp]# chgrp user1 /tmp/yum.log 
		[root@aming-01 tmp]# ll /tmp/yum.log 
		-rw-------. 1 aming user1 0 2月  24 22:17 /tmp/yum.log

		[root@aming-01 tmp]# chown user1:aming /tmp/yum.log 
		[root@aming-01 tmp]# ll /tmp/yum.log 
		-rw-------. 1 user1 aming 0 2月  24 22:17 /tmp/yum.log

2.16 umask

创建文件默认权限 644
创建目录默认权限 755

	[root@aming-01 tmp]# umask
	0022

022 644 755
002 664 775

目录  777 - 022 = 755
文件  666 - 022 = 644   遇到奇数+1

2.17 lsattr chattr 隐藏权限

chattr  设置隐藏权限

	+i 不允许对文件进行任何操作,可以更改目录内文件的内容
	+a 可以对文件进行追加内容和修改时间,不能更改名字、删除、更改原有内容
	   可以对目录和目录里的文件进行修改内容和修改时间,不能更改目录名字、删除,可更改目录里内容

		[root@aming-01 tmp]# chattr +i 1.txt
		[root@aming-01 tmp]# lsattr 1.txt
		----i----------- 1.txt
		[root@aming-01 tmp]# mv 1.txt 3.txt
		mv: 无法将"1.txt" 移动至"3.txt": 不允许的操作

		[root@aming-01 tmp]# chattr -i 1.txt
		[root@aming-01 tmp]# mv 1.txt 3.txt

2.18 特殊权限 set uid

普通用户在执行带S权限的这个命令时,临时获得root的权限执行命令

		[root@aming-01 tmp]# ls -l /usr/bin/passwd
		-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd


		[aming@aming-01 ~]$ ls /root/
		ls: 无法打开目录/root/: 权限不够

		[root@aming-01 tmp]# chmod u+s /usr/bin/ls
		[root@aming-01 tmp]# ls -l /usr/bin/ls
		-rwsr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls

		[aming@aming-01 ~]$ ls /root/
		anaconda-ks.cfg  anaconda-ks.cfg.bak  anaconda-ks.cfg.rbak


		[root@aming-01 tmp]# chmod u=rws /usr/bin/ls
		[root@aming-01 tmp]# ls -l /usr/bin/ls
		-rwSr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls
		[root@aming-01 tmp]# chmod u+x /usr/bin/ls
		[root@aming-01 tmp]# ls -l /usr/bin/ls
		-rwsr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls

2.19 set gid

普通用户临时拥有所属组的权限,目录的所属组设置了S权限后,在这个目录下创建的子文件或子目录所属组和该目录的所属组相同

		[root@aming-01 tmp]# chmod g+s /usr/bin/ls
		[root@aming-01 tmp]# ls -l /usr/bin/ls
		-rwxr-sr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls

		[root@aming-01 tmp]# mkdir 234
		[root@aming-01 tmp]# chmod g+s 234
		[root@aming-01 tmp]# ls -ld 234
		drwxr-sr-x. 2 root root 6 2月  25 20:42 234
		[root@aming-01 tmp]# chown :user1 234
		[root@aming-01 tmp]# ls -ld 234
		drwxr-sr-x. 2 root user1 6 2月  25 20:42 234
		[root@aming-01 tmp]# touch 234/aminglinux
		[root@aming-01 tmp]# mkdir 234/am
		[root@aming-01 tmp]# ls -l 234/
		总用量 0
		drwxr-sr-x. 2 root user1 6 2月  25 20:44 am
		-rw-r--r--. 1 root user1 0 2月  25 20:44 aminglinux

2.20 特殊权限 stick_bit

chmod o+t /tmp/aming

带t特殊权限的目录,防止别人删除该目录里的文件

		[root@aming-01 tmp]# ls -ld /tmp/
		drwxrwxrwt. 13 root root 4096 2月  25 20:42 /tmp/

2.21 软连接文件

ln -s 源filename 目标filename 
ln -s 源dir  目标dir

		[root@aming-01 tmp]# ls -l /bin
		lrwxrwxrwx. 1 root root 7 2月  24 22:18 /bin -> usr/bin

软连接:节省空间,尽量使用绝对路径,源文件改名或者路径改名,会找不到,通过软链接,可以把文件占用空间转移到其他分区,inode不同

		[root@aming-01 tmp]# ln -s /tmp/yum.log /root/yum.txt
		[root@aming-01 tmp]# ls -l /root/
		总用量 8
		lrwxrwxrwx. 1 root root   12 2月  25 21:06 yum.txt -> /tmp/yum.log

2.22 硬链接

ln 源filename 目标filename

inode相同,目录不能硬链接,不能跨分区创建硬链接,删除源文件后文件本身还存在

	[root@aming-01 tmp]# ln 2.txt 5.txt
	[root@aming-01 tmp]# ls -lih
	总用量 12K
	16784510 -rw-------. 2 root  root    0 2月  25 19:25 2.txt
	17377740 -rw-r--r--. 1 root  root  887 2月  25 18:21 3.txt
	16784510 -rw-------. 2 root  root    0 2月  25 19:25 5.txt

2.23-24-25 find

	which  在环境变量里搜索
	whereis 搜索一个库,不全
	locate  yum install mlocate  , updatedb 更新库

-name
-type f\d\l\b\s\c
-atime 最近访问时间 Access
-mtime 最近更改时间 Modify    更改了文件内容,mtime和ctime一定会边
-ctime 最近改动时间 Change    更改了文件权限ctime改变,mtime不变
-o  或者,很少用
-mmin -60  分钟
-size   -10M   +10M

		[root@aming-01 tmp]# find /dev -type b
		/dev/sr0
		/dev/sda3
		/dev/sda2
		/dev/sda1
		/dev/sda

		[root@aming-01 tmp]# find /etc/ -type f -mtime -1  1天以内
		[root@aming-01 tmp]# find /etc/ -type f -mtime +1  1天以前

		[root@aming-01 tmp]# find /etc/ -type f -o -mtime -1

		[root@aming-01 tmp]# find /root/ -type f -mmin -120 -exec ls -l {} \;

		[root@aming-01 tmp]# find /root/ -type f -mmin -150 -exec mv {} {}.bak \;
		[root@aming-01 tmp]# find /root/ -type f -mmin -150
		/root/.lesshst.bak

		[root@aming-01 tmp]# find /root/ -type f -size -50k -exec ls -lh {} \;
		-rw-r--r--. 1 root root 18 12月 29 2013 /root/.bash_logout
		-rw-r--r--. 1 root root 176 12月 29 2013 /root/.bash_profile
		-rw-r--r--. 1 root root 176 12月 29 2013 /root/.bashrc
		-rw-r--r--. 1 root root 100 12月 29 2013 /root/.cshrc
		-rw-r--r--. 1 root root 129 12月 29 2013 /root/.tcshrc

		[root@aming-01 tmp]# find /root/ -type f -size +1k -exec ls -lh {} \;
		-rw-------. 2 root root 1.4K 2月  24 22:22 /root/anaconda-ks.cfg
		-rw-------. 1 root root 2.5K 2月  25 09:50 /root/.bash_history
		-rw-r--r--. 1 root root 1.3K 2月  25 00:17 /root/.ssh/authorized_keys
		-rw-------. 1 root root 1.7K 2月  25 00:34 /root/.ssh/id_rsa
		-rw-------. 2 root root 1.4K 2月  24 22:22 /root/anaconda-ks.cfg.bak

2.26 文件名后缀

2.27 Linux和Windows互传文件

[root@aming-01 tmp]# yum install -y lrzsz

sz filename   linux文件传输到Windows
rz 选择文件     Windows文件传输到linux