第二章文件、目录管理
2.1/2.2 系统目录结构
2.3 ls命令
2.4 文件类型
2.5 alias命令
2.6 相对和绝对路径
2.7 cd命令
2.8 创建和删除目录mkdir/rmdir
2.9 rm命令
2.10 环境变量PATH
2.11 cp命令
2.12 mv命令
2.13 文档查看cat/more/less/head/tail
2.14 文件和目录权限chmod
2.15 更改所有者和所属组chown
2.16 umask
2.1/2.2 系统目录结构
ps:root用户的家目录再/root/下,普通用户username的家目录都在/home/username/下
yum install -y tree #tree是树形结构显示目录
tree -L 2 / #显示树状2层目录
man 命令 #显示命令的帮助文档
/bin/ #普通用户用的命令 /sbin/ #超级用户(root)用的命令
/boot/ #系统启动的相关文件 /dev/ #设备文件
/etc/ #系统的配置文件所在的路径 /home/ #用户的家目录
/lib/、/lib64/ #系统的库文件 /media/ #媒介目录(默认是空的)
/mnt/ #临时挂载目录(默认空) /opt/ #空目录
/proc/ #系统启动的进程 /run/ #进程产生的临时文件(一关机就会消失)
/srv/ #服务产生的文件(空) /sys/ #系统内核相关的文件
/tmp/ # 系统的临时目录 /usr/ #用户的一些文件
/var/ #很重要目录
很重要、常用目录
/usr/bin/ /usr/sbin/ /bin/ /sbin/ /etc/ /var/ /usr/local/
2.3 ls命令
ls -l #列出文件属性
[root@localhost ~]# ls -l
ls -lh #加h,自动变换单位
ls -d #列出文件目录
ls -ld #列出文件目录的属性
ls -la #查看目录所有文件(包括隐藏文件(带一个点 .))
ls -lta #加t,文件按时间排序,越早越排在下面
2.4 文件类型
权限第一个“-”的是普通文件,“d”指的是目录
ps:带颜色的文件是二进制编译过的,无法直接cat查看
/dev/:文件权限第一个表示“c”的为字符串设备是黄色的,“b”的为块设备文件 (光盘磁盘)
粉绿色的表示软连接文件
粉色的表示“s”的是用来通信的
2.5 alias命令
定义命令
alias 定义命令名='系统命令'
取消定义命令
unalias xin
ps: which 命令 #可以用来看命令的绝对路径
/usr/bin/ls #绝对路径 (ls所在的路径)
2.6 相对和绝对路径
绝对路径指的是从根目录开始的路径
相对路径是从当前目录开始的路径
pwd #查看当前目录(路径)
ps:
* 表示通配
history #查看最近使用的命令
!tree #从history中找最近使用tree的命令
!$ #使用上次命令行最后的参数
2.7 cd命令
cd #回到用户的家目录
cd - #返回上次所在的目录
cd ~ #~相当于/root
cd .. # 返回上层目录
2.8 创建和删除目录mkdir/rmdir
mkdir 目录名 #只能一层一侧目录创建
mkdir -p 目录名 #一次性创建多层目录
mkdir -pv 目录名 #+v可看目录创建过程
touch 文件名 #创建文件
touch 文件名1 文件名2 文件名3 #创建多个文件
rmdir 目录名 #只能删除空目录(里面没有文件和目录)
rmdir -p 目录名
#多个非空目录一起删除(很危险,只要非空都会把目录删除,所以一般不用这个命令)
2.9 rm命令
rm 文件名 #删除文件
rm -f 文件名 #强制删除文件(跳过询问)
ps: *.txt # 表示所有后缀为*.txt的文件 “*”为通配
rm -r 目录 #删除目录所有文件和目录(需要询问)
rm -rf 目录 #删除目录所有文件和目录
rm -rfv 目录 #加v可看删除过程
ps:rm -f #即使所选的文件不存在,也不会报错
2.10 环境变量PATH
#which 主要是从/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin这几个路径里面找的命令
echo $PATH #查看环境变量
临时加入PATH
[root@localhost ~]# PATH=$PATH:/tmp/
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/
设置永久环境变量
vi /etc/profile #系统或终端开机时都会通过这个文件加载命令
在最后一行写上PATH=$PATH:/tmp/即可
PATH的用法
#可以将自己定义的目录添加到PATH环境变量里,然后将原来的命令的绝对路径文件复制到定义的目录里重新命名命令名称,然后就能使用重新命名的命令了
恢复原来的PATH
2.11 cp命令
cp 原文件名 目标文件名 #若目标已存在,会问是否覆盖
[root@localhost ~]# cp /etc/passwd /tmp/1.txt
[root@localhost ~]# cp /etc/passwd /tmp/1.txt
cp:是否覆盖"/tmp/1.txt"? y
/usr/bin/cp 原文件名 目标文件名
#使用绝对路径可跳过询问,因为-i是安全参数
cp -r 原目录 目标目录
#如果目标目录存在,则将原目录复制到目标目录下;若不存在,则直接将原目录名改为目标目录名
不存在情况
存在情况
2.12 mv命令(移动)
mv 原文件 目标文件 #若目标已存在,会问是否覆盖;
目标不存在
目标存在
要想跳过询问,用mv绝对路径
mv 原目录 目标目录 # 如果目标目录存在,则将原目录复制到目标目录下;若不存在,则直接将原目录名改为目标目录名
目标存在
目标不存在
#如果原目标和目标都是在同一目录下,相当于改名字
2.13 文档查看cat/more/less/head/tail
cat用法
cat 文件名
cat -A 文件名 #显示所有的字符($表示文件行尾结束符)
cat -n 文件名 #显示行号
cat 文件名1 >> 文件名2 #将文件1的内容添加到文件2(从文件2内容结尾追加)
wc -l #可以查看文件的行数
[root@localhost ~]# wc -l /tmp/host.txt
19 /tmp/host.txt
more用法(看完后自动退出)
more 文件名
#一页一页显示 ;空格键往下翻页 CTRL+B往前看 CTRL+F往后看
less用法(看完不会自动退出)
less 文件名
# 一页一页显示;空格键往下翻页 CTRL+B往前看 CTRL+F往后看
#支持方向键 看到最后不会自动退出文件,要按Q键退出
#可以搜索(按/往后搜,按?往前搜);按n键往下搜索 ,按shift+n键(就是N)往下搜索
#按g定位到行首,按G定位到行尾
head用法
head 文件名 #查看文件开头10行
[root@localhost ~]# head /tmp/host.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
head -n 2 文件名 #查看开头前两行
[root@localhost ~]# head -n 2 /tmp/host.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
tail用法
tail 文件名 #查看文件行尾10行
[root@localhost ~]# tail /tmp/host.txt
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
tail -n 2 文件名 #查看结尾2行
[root@localhost ~]# tail -n 2 /tmp/host.txt
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
tail -f 文件名 #加f可以显示动态文件(看日志) #退出可按CTRL+C
例:先用tail -f 查看一个文件,然后通过xshell复制ssh渠道,出现一个新的会话窗口,在新的会话窗口往刚刚查看的文件追加内容,可以发现原来的会话窗口查看的文件多出了追加内容
tail -f /tmp/host.txt
复制SSH渠道,新建会话窗口
在新的会话窗口输入 cat 2.txt >> /tmp/host.txt ,开始的会话窗口fail更新了
2.14 文件和目录权限chmod
文件、目录权限
r #可读 r=4
w #可写 w=2
x #可执行 x=1
例如:-rw-r--r--=644 drw-r-xr-x=655
有11位,第一位是文档属性,其它三位一段,最后一位是一个点(有点说明sexLinux防火墙开启,没点就防火墙彻底关闭,改配置文件重启),
文档权限有三段,第一段是文档所有者,第二段是所属组,第三段是其他用户
设置权限
第一种方式:
chmod 700 文件/目录 #700=rwx,可读可写可执行
[root@localhost ~]# ls -l 2.txt
-rwx------. 1 root root 306 7月 26 19:04 2.txt
第二种方式:
a表示所有用户(文档所有者、所属组、其它用户)
a+x #该目标的三段权限都加上x(即可执行)
u+x #文档所有者加上x(即可执行)
g+x #所属组加上x(即可执行)
o+x #其它用户加上x(即可执行)
chmod u=rwx,g=r,o=r 文件/目录 #rwxr--r--=744
[root@localhost ~]# ls -l 3.txt
-rwxrwxrwx. 1 root root 0 7月 26 15:04 3.txt
[root@localhost ~]# chmod u-x,g-wx,o-x 3.txt
[root@localhost ~]# ls -l 3.txt
-rw-r--rw-. 1 root root 0 7月 26 15:04 3.txt
[root@localhost ~]# ls -l 3.txt
-rwxr--r--. 1 root root 0 7月 26 15:04 3.txt
[root@localhost ~]# chmod u-x 3.txt
[root@localhost ~]# ls -l 3.txt
-rw-r--r--. 1 root root 0 7月 26 15:04 3.txt
[root@localhost ~]# chmod g+wx 3.txt
[root@localhost ~]# ls -l 3.txt
-rw-rwxr--. 1 root root 0 7月 26 15:04 3.txt
[root@localhost ~]# chmod a+rwx 3.txt
[root@localhost ~]# ls -l 3.txt
-rwxrwxrwx. 1 root root 0 7月 26 15:04 3.txt
chmod -R 777 目录 #-R可改目录下的所有文件的权限为777
2.15 更改所有者和所属组chown
chown username 文件/目录 #更改文件/目录的文件所有者
[root@localhost ~]# ls -ld /tmp/xin3
drwxrwxrwx. 4 root root 26 7月 26 16:53 /tmp/xin3
[root@localhost ~]# chown xin /tmp/xin3
[root@localhost ~]# ls -ld /tmp/xin3
drwxrwxrwx. 4 xin root 26 7月 26 16:53 /tmp/xin3
chown -R 目录 #-R,指定目录下的所有文件目录一起改
chown username:group 目标 #更改所有者和所属组 (在所有者后面接“:”后面加所属组)
[root@localhost ~]# ls -ld /tmp/xin3
drwxrwxrwx. 4 xin user1 26 7月 26 16:53 /tmp/xin3
[root@localhost ~]# chown root:root /tmp/xin3
[root@localhost ~]# ls -ld /tmp/xin3
drwxrwxrwx. 4 root root 26 7月 26 16:53 /tmp/xin3
chgrp 组名 文件/目录 #更改所属组
[root@localhost ~]# ls -ld /tmp/xin3
drwxrwxrwx. 4 xin root 26 7月 26 16:53 /tmp/xin3
[root@localhost ~]# chgrp user1 /tmp/xin3
[root@localhost ~]# ls -ld /tmp/xin3
drwxrwxrwx. 4 xin user1 26 7月 26 16:53 /tmp/xin3
2.16 umask
umask #决定默认文件/目录的权限值
未改umask(默认0022)(开头第一个0默认省略)
drwxr-xr-x. 2 root root 6 7月 15 21:17 1 #目录权限=755
-rw-r--r--. 1 root root 0 7月 15 21:17 1.txt #文件权限=644
改umask=005
[root@xinlinux-01 ~]# umask 005
drwxrwx-w-. 2 root root 6 7月 15 21:20 1
-rw-rw--w-. 1 root root 0 7月 15 21:20 1.txt
目录权限=772
文件权限=662
计算修改后的目录权限=777(rwxrwxrwx)-005(------r-x)=(rwxrwx-w-)772
计算修改后的文件权限=666(rw-rw-rw-)-005(------r-x)=(rw-rw--w-)662