20180727 第二章预习2.1-2.16
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 系统目录结构
[root@zhang-01 ~]# ls / ls其实是list缩写
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[root@zhang-01 ~]# ls /root/ root用户的家目录,每个用户都有一个家目录,widows也有在C盘有个家目录,存它的配置文件,
anaconda-ks.cfg
像这个[root@zhang-01 ~]# ls /root/.ssh/authorized_keys
/root/.ssh/authorized_keys
如果想在普通用户设置登录的密钥文件,我们也需要在普通用户的家目录下创建一个/.ssh/authorized_keys的文件
[root@zhang-01 ~]# useradd zhang 新增用户
[root@zhang-01 ~]# ls /home/zhang/ 加目录在这里
[root@zhang-01 ~]# useradd user1
[root@zhang-01 ~]# ls /home/user1/
如果我们创建用户必须在这个下创建/.ssh/authorized_keys的文件并且路径和文件名都是固定的 这样创建密钥文件。是谁规定的必须这个名字和目录呢 ?是sshd的配置文件规定的。
tree工具看目录下的文件,先安装
[root@zhang-01 ~]# yum install -y tree
[root@zhang-01 ~]# tree / 太多了我们必须中断了
[root@zhang-01 ~]# tree --hep
[root@zhang-01 ~]# tree --help都是看常用的一些选项
[root@zhang-01 ~]# man tree
是tree的文档。
比如说想指定最大深度为2的文档[root@zhang-01 ~]# tree -L 2 /
/usr/bin/ /usr/sbin/ /bin/ /sbin/ 这几个都是存的我们的命令文件像 ls tree man vi mkdir 等之前用的所有的命令都在这几个文件里面。
/bin/和/sbin/区别是 / sbin/ 下面的命令都是root用户的命令,普通用户不能用
/bin/是普通用户的命令当然root也可以用
[root@zhang-01 ~]# ls /
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
boot是系统启动相关的文件 像我们用的grub
[root@zhang-01 ~]# ls /boot/
config-3.10.0-514.el7.x86_64
grub
grub2
initramfs-0-rescue-3a80cadf85474b3e9e4967cbe84a1e31.img
initramfs-3.10.0-514.el7.x86_64.img
initramfs-3.10.0-514.el7.x86_64kdump.img
initrd-plymouth.img
symvers-3.10.0-514.el7.x86_64.gz
System.map-3.10.0-514.el7.x86_64
vmlinuz-0-rescue-3a80cadf85474b3e9e4967cbe84a1e31
vmlinuz-3.10.0-514.el7.x86_64
/dev/存的是我们的设备文件像光盘也好 鼠标也好
[root@zhang-01 ~]# ls /dev/
agpgart port tty24 tty6
autofs ppp tty25 tty60
block ptmx tty26 tty61
bsg pts tty27 tty62
btrfs-control random tty28 tty63
bus raw tty29 tty7
cdrom rtc tty3 tty8
char rtc0 tty30 tty9
console sda tty31 ttyS0
core sda1 tty32 ttyS1
cpu sda2 tty33 ttyS2
cpu_dma_latency sda3 tty34 ttyS3
crash sg0 tty35 uhid
disk sg1 tty36 uinput
dmmidi shm tty37 urandom
dri snapshot tty38 usbmon0
/etc/系统的一些配置文件所在的路径
像[root@zhang-01 ~]# ls /etc/sysconfig/network-scripts/ifcfg-ens33就是
[root@zhang-01 ~]# ls /etc/ssh/sshd_config也是在他下面
/home/用户的家目录文件
[root@zhang-01 ~]# ls /home/
user1 zhang
/lib/和/lib64/是存系统的库文件的,很多命令依赖于库文件像ls . 库文件类似于widows下的.dll
怎么看这些命令依赖于哪些库呢
[root@zhang-01 ~]# ldd /bin/ls
linux-vdso.so.1 => (0x00007fffbb7f3000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f4165428000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007f4165223000)
libacl.so.1 => /lib64/libacl.so.1 (0x00007f4165019000)
libc.so.6 => /lib64/libc.so.6 (0x00007f4164c58000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f41649f7000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f41647f2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4165657000)
libattr.so.1 => /lib64/libattr.so.1 (0x00007f41645ed000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f41643d1000)
下面绿色的都是库文件,蓝色的大部分是软连接,

2.2
从centos7开始就不再区分32位64位,全部都是64位不存在32位了
最大的 区别是识别的内存不同,早起的32位的只识别3个多G的内存,即使有8G的内存也是识别3个多G,
[root@zhang-01 ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
/media/媒介目录,默认的都是空的, mnt也是临时挂载的目录,默认也是空的。我们可以把光驱,新增加的硬盘挂载到mnt目录下,
opt也是空目录。proc 系统启动的进程 会生成一个pID 每个进程下面几乎都有这样的目录
[root@zhang-01 ~]# ls /proc/1/
attr cmdline environ io mem ns pagemap schedstat stat timers
autogroup comm exe limits mountinfo numa_maps personality sessionid statm uid_map
auxv coredump_filter fd loginuid mounts oom_adj projid_map setgroups status wchan
cgroup cpuset fdinfo map_files mountstats oom_score root smaps syscall
clear_refs cwd gid_map maps net oom_score_adj sched stack task
[root@zhang0-01 ~]# ls -l /proc/19/
ls: 无法读取符号链接/proc/19/exe: 没有那个文件或目录
总用量 0
dr-xr-xr-x. 2 root root 0 5月 28 03:00 attr
-rw-r--r--. 1 root root 0 5月 28 03:00 autogroup
-r--------. 1 root root 0 5月 28 03:00 auxv
-r--r--r--. 1 root root 0 5月 28 03:00 cgroup
--w-------. 1 root root 0 5月 28 03:00 clear_refs
-r--r--r--. 1 root root 0 5月 28 01:21 cmdline
-rw-r--r--. 1 root root 0 5月 28 03:00 comm
-rw-r--r--. 1 root root 0 5月 28 03:00 coredump_filter
-r--r--r--. 1 root root 0 5月 28 03:00 cpuset
lrwxrwxrwx. 1 root root 0 5月 28 03:00 cwd -> / 进程在哪儿运行的
-r--------. 1 root root 0 5月 28 03:00 environ
dr-xr-xr-x. 5 root root 0 5月 28 03:00 net
dr-x--x--x. 2 root root 0 5月 28 03:00 ns
-r--r--r--. 1 root root 0 5月 28 03:00 numa_maps
-rw-r--r--. 1 root root 0 5月 28 03:00 oom_adj
-r--r--r--. 1 root root 0 5月 28 03:00 oom_score
-rw-r--r--. 1 root root 0 5月 28 03:00 oom_score_adj
-r--r--r--. 1 root root 0 5月 28 03:00 pagemap
-r--r--r--. 1 root root 0 5月 28 03:00 personality
-rw-r--r--. 1 root root 0 5月 28 03:00 projid_map
lrwxrwxrwx. 1 root root 0 5月 28 03:00 root -> /
root 是root目录的家目录
/run/是一些进程产生的一些临时文件,是一重启或关机就会消失的一些文件。
/srv/其实是sevice的缩写,默认的是空的,会存服务产生的文件
/sys/内核产生的文件,平时我们不会去动的。
/tmp/系统的临时目录,权限比较大,任何用户都可以在tmp下写改文件,有个特殊权限,像普通用户user1 和user2自己的文件自己有权限,别的用户搞不了
/usr/用户的一些文件会放在这,很重要的目录
/var/.我们经常用/var/log 会存一些日志 像系统的总日志/var/log/messages.
ls /var/run/一些进程的pid经常在这个文件下
root home 虽然很重要我们比较少去碰他,
2.3 ls命令
[root@zhang-01 ~]# ls -l
总用量 4
-rw-------. 1 root root 1265 5月 27 20:19 anaconda-ks.cfg
第一个权限 ,第二个有多少个文件使用了相同的inod,第三个是所有者,第四个是所属组, 1265是文件的大小单位是B字节。创建时间,名字
[root@zhang-01 ~]# ls -lh
总用量 4.0K
-rw-------. 1 root root 1.3K 5月 27 20:19 anaconda-ks.cfg
更形象的大小
[root@zhang-01 ~]# ls -i
33574979 anaconda-ks.cfg
这就是这文件的iNode存的文件的属性 大小时间权限等存在磁盘的哪个块上哪个区上。如果两个文件iNode一样那这两个文件存在磁盘位置一样。
[root@zhang-01 ~]# ls -la 隐藏的文件包括了
总用量 28
dr-xr-x---. 3 root root 147 5月 27 23:21 .
dr-xr-xr-x. 17 root root 224 5月 28 01:07 ..可以变相的认为这个下面有几个子目录这个目录就是几,像这有17个
-rw-------. 1 root root 1265 5月 27 20:19 anaconda-ks.cfg
-rw-------. 1 root root 1803 5月 28 03:57 .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 48 5月 28 01:35 .ssh
-rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
[root@zhang-01 ~]# ls -ld /root/ 有三个iNode号是一样的和这个目录
dr-xr-x---. 3 root root 147 5月 27 23:21 /root/
[root@zhang-01 ~]# ls -i /root/
33574979 anaconda-ks.cfg
[root@zhang-01 ~]# ls -i .
33574979 anaconda-ks.cfg
[root@zhang-01 ~]# ls -i .ssh/.. 实际就是root目录
33574979 anaconda-ks.cfg
[root@zhang-01 ~]# ls -lta 以时间顺序排序,时间越早的越靠下
总用量 28
-rw-------. 1 root root 1803 5月 28 03:57 .bash_history
drwx------. 2 root root 48 5月 28 01:35 .ssh
dr-xr-xr-x. 17 root root 224 5月 28 01:07 ..
dr-xr-x---. 3 root root 147 5月 27 23:21 .
-rw-------. 1 root root 1265 5月 27 20:19 anaconda-ks.cfg
-rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
[root@zhang-01 ~]# ls -ld /root/ 只列目录本身。
dr-xr-x---. 3 root root 147 5月 27 23:21 /root/
更多用法可以用[root@zhang-01 ~]# man ls
-l详细信息,-i是iNode -a全部包括隐藏的 -t按时间顺序排序 -h 和l一起可以自动变换单位 -d列目录本身
ll=ls -l
[root@zhang-01 ~]# which ll 别名
alias ll='ls -l --color=auto'
/usr/bin/ls
[root@zhang-01 ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
2.4 文件类型
[root@zhang-01 ~]# ls -la
总用量 28
dr-xr-x---. 3 root root 147 5月 27 23:21 .
dr-xr-xr-x. 17 root root 224 5月 28 01:07 ..
-rw-------. 1 root root 1265 5月 27 20:19 anaconda-ks.cfg
-rw-------. 1 root root 1803 5月 28 03:57 .bash_history
第一位像d是文件的类型目录,-普通的文件
cat anaconda-ks.cfg /bin/ls
虽然都是-号的文件,普通的文件可以查看,命令文件是个二进制文件不能查看。
[root@zhang-01 ~]# ls -l /dev/
总用量 0
crw-rw----. 1 root video 10, 175 5月 28 01:21 agpgart
crw-------. 1 root root 10, 235 5月 28 01:21 autofs
drwxr-xr-x. 2 root root 140 5月 28 01:21 block
c是字符串设备类型。像键盘鼠标
lrwxrwxrwx. 1 root root 15 7月 5 16:08 stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 7月 5 16:08 stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 7月 5 16:08 stdout -> /proc/self/fd/1
l软连接文件。
brw-rw----. 1 root disk 8, 0 7月 5 16:08 sda
brw-rw----. 1 root disk 8, 1 7月 5 16:08 sda1
brw-rw----. 1 root disk 8, 2 7月 5 16:08 sda2
brw-rw----. 1 root disk 8, 3 7月 5 16:08 sda3
b块设备,像光盘磁盘
找文件类型s 就是 SOCKET
[root@zhang-01 ~]# find / -type s
/dev/log
/run/dbus/system_bus_socket
/run/udev/control
/run/systemd/shutdownd
/run/systemd/private
/run/systemd/journal/socket
/run/systemd/journal/stdout
/run/systemd/cgroups-agent
/run/systemd/notify
/var/spool/postfix/private/tlsmgr
[root@zhang-01 ~]# ls -l /var/spool/postfix/public/showq
srw-rw-rw-. 1 postfix postfix 0 5月 28 01:22 /var/spool/postfix/public/showq
socket文件,同一个机器两个进程之前通信用这种文件
两台机器之间一种是tcIP协议,想IP+端口的形式。
总结 d 目录-普通文件包括文本文档和二进制 ,C字符串设备鼠标键盘,b块设备,s socket 文件,l软连接文件
2.5 alias命令
[root@zhang-01 ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@zhang0-01 ~]# which ll
alias ll='ls -l --color=auto'
/usr/bin/ls
[root@zhang0-01 ~]# which man
/usr/bin/man
[root@zhang0-01 ~]# which yum
/usr/bin/yum
系统的alias
[root@zhang-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@zhang0-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@zhang-01 ~]# alias zhang='ls -lha'
[root@zhang-01 ~]# zhang
总用量 28K
dr-xr-x---. 3 root root 147 5月 27 23:21 .
dr-xr-xr-x. 17 root root 224 5月 28 01:07 ..
-rw-------. 1 root root 1.3K 5月 27 20:19 anaconda-ks.cfg
-rw-------. 1 root root 1.8K 5月 28 03:57 .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 48 5月 28 01:35 .ssh
-rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
[root@zhang-01 ~]# which zhang
alias zhang='ls -lha'
/usr/bin/ls
[root@zhang-01 ~]# unalias zhang
[root@zhang-01 ~]# zhang
-bash: zhang: 未找到命令
2.6 相对和绝对路径
[root@zhang0-01 ~]# ls /etc/sysconfig/network-scripts/ifcfg-ens33
/etc/sysconfig/network-scripts/ifcfg-ens33
[root@zhang0-01 ~]# ls /root/anaconda-ks.cfg
/root/anaconda-ks.cfg
[root@zhang0-01 ~]# ls /etc/hostname
/etc/hostname
从跟开始这些都是绝对路径
相对是所在位置的一个路径,下面就是相对路径
[root@zhang0-01 ~]# pwd
/root
[root@zhang0-01 ~]# ls .ssh/authorized_keys
.ssh/authorized_keys
[root@zhang0-01 ~]# cd /etc/sysconfig/
[root@zhang0-01 sysconfig]# ls network-scripts/ifcfg-ens33
network-scripts/ifcfg-ens33
[root@zhang0-01 sysconfig]# pwd
/etc/sysconfig
cd=change directory
2.7 cd命令
[root@zhang0-01 ~]# cd -
/etc/sysconfig
[root@zhang0-01 sysconfig]# pwd
/etc/sysconfig
[root@zhang0-01 sysconfig]# cd -
/root
[root@zhang0-01 ~]# pwd
/root
所以cd -表示上次所在的目录在哪里。
[root@zhang0-01 ~]# cd
[root@zhang0-01 ~]# pwd
/root
cd当前用户的家目录
[root@zhang0-01 ~]# cd ~
[root@zhang0-01 ~]# pwd
/root
cd ~用户家目录
[root@zhang0-01 ~]# cd ..
[root@zhang0-01 /]# pwd
/
cd ..上一级目录
[root@zhang0-01 /]# man cd可以看到全面选项 看不懂的用有道字典翻译。
2.8 创建和删除目录mkdir/rmdir
mkdir= make directory
[root@zhang0-01 /]# mkdir /tmp/zhang0
[root@zhang0-01 /]# ls -ld /tmp/zhang0
drwxr-xr-x. 2 root root 6 5月 28 14:46 /tmp/zhang0
[root@zhang0-01 /]# mkdir /tmp/zhang0/1/2
mkdir: 无法创建目录"/tmp/zhang0/1/2": 没有那个文件或目录
[root@zhang0-01 /]# mkdir -p /tmp/zhang0/1/2 -p可以创建一串目录
[root@zhang0-01 /]# mkdir -pv /tmp/zhang0/2/3
mkdir: 已创建目录 "/tmp/zhang0/2"
mkdir: 已创建目录 "/tmp/zhang0/2/3"
-v可以看到创建目录的过程
rmdir == remove directory
[root@zhang0-01 /]# rmdir /tmp/zhang0/2
rmdir: 删除 "/tmp/zhang0/2" 失败: 目录非空
因为2下面有个三目录所以不能删掉
[root@zhang0-01 /]# rmdir /tmp/zhang0/1/2 是可以的
有目录的时候不能删除,有文件的时候可以删除吗?也不能删除下面证明。
[root@zhang0-01 /]# touch /tmp/zhang0/2/3/1.txt
[root@zhang0-01 /]# tree /tmp/zhang0/
/tmp/zhang0/
├── 1
└── 2
└── 3
└── 1.txt
3 directories, 1 file
[root@zhang0-01 /]# rmdir /tmp/zhang0/2/3
rmdir: 删除 "/tmp/zhang0/2/3" 失败: 目录非空
如果就像删除这个文件
[root@zhang0-01 /]# rmdir /tmp/zhang0/2/3/1.txt
rmdir: 删除 "/tmp/zhang0/2/3/1.txt" 失败: 不是目录
后面会用到rm 命令
[root@zhang0-01 /]# mkdir -p /tmp/zhang0/4/5
[root@zhang0-01 /]# rmdir -p /tmp/zhang0/4/5
-p可以删除一串的目录,前提是空把4 5 删掉了,这个我们一般不用比较危险。
所以rmdir只能删除目录并且是空的。
2.9 rm命令
rm可以删除文件 ,可以删除非空的目录
[root@zhang0-01 /]# tree /tmp/zhang0/
/tmp/zhang0/
├── 1
└── 2
└── 3
└── 1.txt
3 directories, 1 file
[root@zhang0-01 /]# rm /tmp/zhang0/2/3/1.txt
rm:是否删除普通空文件 "/tmp/zhang0/2/3/1.txt"?y
[root@zhang0-01 /]# tree /tmp/zhang0/
/tmp/zhang0/
├── 1
└── 2
└── 3
可不可以不让他问直接删掉
[root@zhang0-01 /]# touch /tmp/zhang0/2/3/1.txt
[root@zhang0-01 /]# touch /tmp/zhang0/2/3/2.txt
[root@zhang0-01 /]# rm /tmp/zhang0/2/3/*
rm:是否删除普通空文件 "/tmp/zhang0/2/3/1.txt"?n
rm:是否删除普通空文件 "/tmp/zhang0/2/3/2.txt"?n
都会问会很麻烦,如果不想让问加-f
[root@zhang0-01 /]# rm -f /tmp/zhang0/2/3/*
[root@zhang0-01 /]# tree /tmp/zhang0/
/tmp/zhang0/
├── 1
└── 2
└── 3
下面是命令历史最后使用过的tree命令
[root@zhang0-01 /]# !tree
tree /tmp/zhang0/
/tmp/zhang0/
├── 1
└── 2
└── 3
[root@zhang0-01 /]# history
1 mkdir /root/.ssh
2 chmod 700 /root/.ssh
3 vi /root/.ssh/authorizde_keys
4 setenforce 0
5 ifconfig
6 ls /root/.ssh/
7 chmod 700 /root/.ssh
8 vi /root/.ssh/authorized_keys
9 setenforce 0
10 ls /root/.ssh/
11 cd /root/.ssh/
12 rm -rf authorizde_keys
13 vi /root/.ssh/authorized_keys
[root@zhang0-01 /]# rm /tmp/zhang0/2/3
rm: 无法删除"/tmp/zhang0/2/3": 是一个目录
[root@zhang0-01 /]# rm -r /tmp/zhang0/2/3
rm:是否删除目录 "/tmp/zhang0/2/3"?y
创建一些文件目录
[root@zhang0-01 /]# tree /tmp/zhang0/
/tmp/zhang0/
├── 1
└── 2
[root@zhang0-01 /]# tree /tmp/zhang0/
/tmp/zhang0/
└── 2
└── 3
├── 1.txt
└── 2.txt
2 directories, 2 files
[root@zhang0-01 /]# rm -rfv /tmp/zhang0/2/3/
已删除"/tmp/zhang0/2/3/1.txt"
已删除"/tmp/zhang0/2/3/2.txt"
已删除目录:"/tmp/zhang0/2/3/"
加上-f删除没有的目录也不会提示信息。
2.10 环境变量PATH
[root@zhang0-01 /]# which rm
alias rm='rm -i'
/usr/bin/rm
[root@zhang0-01 /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
find是从目录里都找了一遍,而which很快找到是因为他就在这几个目录里找。
命令其实也是一个命令文件。
[root@zhang0-01 /]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@zhang0-01 /]# cp /usr/bin/ls /tmp/ls2
[root@zhang0-01 /]# /tmp/ls2
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[root@zhang0-01 /]# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[root@zhang0-01 /]# ls2
-bash: ls2: 未找到命令
[root@zhang0-01 /]# PATH=$PATH:/tmp/
[root@zhang0-01 /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/
[root@zhang0-01 /]# ls2
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[root@zhang0-01 /]# which ls2
/tmp/ls2
另外打开一个终端再敲ls2不生效了,
[root@zhang0-01 ~]# ls2
-bash: ls2: 未找到命令
想每次都生效,需要把环境变量改成永久的
[root@zhang0-01 /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/tmp/
root@zhang0-01 /]# vi /etc/profile 最后加一行
PATH=$PATH:/tmp/
然后再重新打开一个终端
[root@zhang0-01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/tmp/:/root/bin
[root@zhang0-01 ~]# ls2
anaconda-ks.cfg
生效了,
如果不想让他生效了
[root@zhang0-01 /]# PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@zhang0-01 /]# ls2
-bash: ls2: 未找到命令
如果从开终端也不生效那就
[root@zhang0-01 /]# vi /etc/profile删掉刚才添加的
2.11 cp命令
[root@zhang0-01 /]# cp /etc/passwd /tmp/1.txt复制文件
[root@zhang0-01 /]# cp -r /tmp/zhang0/ /tmp/zhang复制目录需要加-r
[root@zhang0-01 /]# tree /tmp/zhang0
/tmp/zhang0
├── 2
└── zhang0
└── 2
3 directories, 0 files
[root@zhang0-01 /]# tree /tmp/zhang
/tmp/zhang
├── 2
└── zhang0
└── 2
cp时候建议所有的目录都加/即使目录不存在,因为后面会有加不加不同的情况
[root@zhang0-01 /]# cp -r /tmp/zhang0/ /tmp/zhang1/
[root@zhang0-01 /]# tree !$
tree /tmp/zhang1/
/tmp/zhang1/
├── 2
└── zhang0
└── 2
3 directories, 0 files
[root@zhang0-01 /]# tree /tmp/zhang0/
/tmp/zhang0/
├── 2
└── zhang0
└── 2
[root@zhang0-01 /]# which cp
alias cp='cp -i'
/usr/bin/cp
加-i是表示会问,提高安全
[root@zhang0-01 /]# cp /etc/passwd /tmp/1.txt
cp:是否覆盖"/tmp/1.txt"? ^C
[root@zhang0-01 /]# /usr/bin/cp /etc/passwd /tmp/1.txt
cp 源文件 目标文件
cp -r 源目录 目标目录
2.12 mv命令
同一个目录下move文件相当于改名字, 不同目录下是改一下地方
[root@zhang0-01 tmp]# mv 1.txt /root/2.txt更改位置并且改名字
[root@zhang0-01 tmp]# mv ls2 zhang/
[root@zhang0-01 tmp]# ls zhang/
2 ls2 zhang0
和其他几个也一样有个-i提示
[root@zhang0-01 tmp]# touch ls2
[root@zhang0-01 tmp]# mv ls2 zhang/
mv:是否覆盖"zhang/ls2"? n
[root@zhang0-01 tmp]# which mv
alias mv='mv -i'
/usr/bin/mv
[root@zhang0-01 tmp]# /usr/bin/mv ls2 zhang/
2.13 文档查看cat/more/less/head/tail
[root@zhang0-01 tmp]# cat /etc/passwd
[root@zhang0-01 tmp]# tac /etc/passwd顺序倒过来
[root@zhang0-01 tmp]# cat -A /etc/passwd
[root@zhang0-01 tmp]# cat -n /etc/passwd 会显示行号
[root@zhang0-01 tmp]# more /etc/passwd
没显示全,按空格键继续显示
[root@zhang0-01 tmp]# wc -l yum.log
0 yum.log
可以看一个文件的行数
anaconda-ks.cfg这个文件是系统自带的装系统的文件。如果平时用不到可以随便修改
[root@zhang0-01 ~]# cat /etc/passwd >>2.txt
前面的增加到后面文件的内容
[root@zhang0-01 tmp]# wc -l 2.txtm
可以按空格一行行的显示 用more 2.txt
空格向后 ctrl+b向前看
less ctrl+b向上看 ,空格向下看,支持一行业的方向键,Ctrl+f向后看
看到最后并不会向more那样自动退出需要按一个q键
搜索/root 按n下一个,shift +n上一个
搜索?root n从后往前看
g定位到行首 shift+g也就是G是在行尾
head 头十行
tail 后十行
[root@zhang0-01 ~]# head -n 2 2.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@zhang0-01 ~]# tail -n 2 2.txt
zhang0:x:1000:1000::/home/zhang0:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
[root@zhang0-01 ~]# tail -f 2.txt时刻更新文件看
[root@zhang0-01 ~]# head -n 2 /etc/passwd >>2.txt
2.14 文件和目录权限chmod
[root@zhang0-01 ~]# ls -l
总用量 16
-rw-r--r--. 1 root root 9497 5月 28 16:33 2.txt
-rw-------. 1 root root 1265 5月 27 20:19 anaconda-ks.cfg
第一段rw-是所有者,是否可写 可读可执行
第二个是所属组
第三个是其他用户
r=4 w=2 x=1
chmod==change mode
[root@zhang0-01 ~]# chmod 700 2.txt
[root@zhang0-01 ~]# ls -l
总用量 16
-rwx------. 1 root root 9497 5月 28 16:33 2.txt
-rw-------. 1 root root 1265 5月 27 20:19 anaconda-ks.cfg
前十位后面都有1个点是什么意思呢,都使至于selinux.
[root@zhang0-01 ~]# getenforce
Enforcing 开启
[root@zhang0-01 ~]# setenforce 0
[root@zhang0-01 ~]# getenforce
Permissive 开启不会彻底关闭
真正关闭在[root@zhang0-01 ~]# vi /etc/selinux/config配置文件里
[root@zhang0-01 tmp]# ls -l zhang2
总用量 0
drwxr-xr-x. 2 root root 6 5月 28 15:32 2
-rw-r--r--. 1 root root 0 5月 28 15:58 ls2
drwxr-xr-x. 3 root root 15 5月 28 15:32 zhang0
[root@zhang0-01 tmp]# chmod -R 770 zhang2
[root@zhang0-01 tmp]# ls -l zhang2
总用量 0
drwxrwx---. 2 root root 6 5月 28 15:32 2
-rwxrwx---. 1 root root 0 5月 28 15:58 ls2
drwxrwx---. 3 root root 15 5月 28 15:32 zhang0
批量改权限
[root@zhang0-01 tmp]# chmod u=rwx,g=r,o=r zhang2
[root@zhang0-01 tmp]# chmod a+x zhang2
[root@zhang0-01 tmp]# chmod a-x zhang2
2.15 更改所有者和所属组chown
chown ==change owner
[root@zhang0-01 tmp]# cat /etc/passwd
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
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-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
zhang0:x:1000:1000::/home/zhang0:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
两个自己创建的普通用户可以使用
改所属主
[root@zhang0-01 ~]# ls -l /tmp/yum.log
-rw-------. 1 root root 0 5月 27 20:15 /tmp/yum.log
[root@zhang0-01 ~]# chown zhang0 /tmp/yum.log
[root@zhang0-01 ~]# !ls
ls -l /tmp/yum.log
-rw-------. 1 zhang0 root 0 5月 27 20:15 /tmp/yum.log
chgrp== change group
改组、
[root@zhang0-01 ~]# chgrp usr1 /tmp/yum.log
[root@zhang0-01 ~]# chgrp zhang0 /tmp/yum.log
[root@zhang0-01 ~]# !ls
ls -l /tmp/yum.log
-rw-------. 1 zhang0 zhang0 0 5月 27 20:15 /tmp/yum.log
其实chown既可以改主也可以改组
[root@zhang0-01 ~]# chown zhang0:root /tmp/yum.log
[root@zhang0-01 ~]# ls -l /tmp/yum.log
-rw-------. 1 zhang0 root 0 5月 27 20:15 /tmp/yum.log
chown 也可以只改他的所属组
[root@zhang0-01 ~]# chown :zhang /tmp/yum.log
[root@zhang0-01 ~]# ls -l /tmp/yum.log
-rw-------. 1 zhang0 zhang0 0 5月 27 20:15 /tmp/yum.log
-R也是同样用于
[root@zhang0-01 ~]# chown -R zhang:zhang /tmp/zhang2/
[root@zhang-01 ~]# ls !$
ls /tmp/zhang2/
2 ls2 zhang0
[root@zhang0-01 ~]# ls -l /tmp/zhang2/ls2
-rwxrwx---. 1 zhang zhang 0 5月 28 15:58 /tmp/zhang2/ls2
2.16 umask
[root@zhang-01 ~]# touch 11.txt
[root@zhang-01 ~]# mkdir 123
[root@zhang-01 ~]# ls -l
总用量 16
-rw-r--r--. 1 root root 0 5月 28 17:11 11.txt
drwxr-xr-x. 2 root root 6 5月 28 17:11 123
为什么创建一个目录的权限是755 创建一个文件的权限是644
[root@zhang-01 ~]# umask
0022
这是系统root用户的umask值
我们把这umask的值改掉,创建一个文件的权限是664 目录的权限是775
[root@zhang-01 ~]# umask
0022
[root@zhang-01 ~]# umask 002
[root@zhang-01 ~]# umask
0002
[root@zhang-01 ~]# touch 1.txt
[root@zhang-01 ~]# mkdir 456
[root@zhang-01 ~]# ls -l
总用量 16
-rw-r--r--. 1 root root 0 5月 28 17:11 11.txt
drwxr-xr-x. 2 root root 6 5月 28 17:11 123
-rw-rw-r--. 1 root root 0 5月 28 17:14 1.txt
-rwx------. 1 root root 9497 5月 28 16:33 2.txt
drwxrwxr-x. 2 root root 6 5月 28 17:14 456
总结下umask 022 目录755 文件644
umask 002目录775 文件664
目录等于777-022=755
文件666-022=644
如果umask变成002
那目录等777-002=775
666-002=664
貌似是这样的规律其实不一定对,如果我们umask 变成003
[root@zhang-01 ~]# umask 003
[root@zhang-01 ~]# umask
0003
[root@zhang-01 ~]# touch 1.txt
[root@zhang-01 ~]# mkdir 2
[root@zhang-01 ~]# ls -l
总用量 4
-rw-rw-r--. 1 root root 0 5月 28 17:24 1.txt
drwxrwxr--. 2 root root 6 5月 28 17:24 2
-rw-------. 1 root root 1265 5月 27 20:19 anaconda-ks.cfg
文件变成664 目录变成774 应该777-003=774
666-003=663
其实我们应该这样算
666=(rw-rw-rw-)-(-------wx)=rw-rw-r--=664
777=(rwxrwxrwx)-(-------wx)=rwxrwxr--=774
所以umask是用来决定默认的文件和目录权限的。

浙公网安备 33010602011771号