系统目录结构:
tree:直接输入tree命令就会自动以树形形式列出当前的目录的文件和文件夹,不加任何参数,它会列出当前目录下所有深度级别的文件和目录。
tree--hep显示常用选项
man(用来显示一个文件的帮助文档)使用格式为 :man (查看的命令)
一般情况下输入 tree 会显示:
[root@localhost ~]# tree
-bash: tree: 未找到命令
[root@localhost ~]#
这个时候我们需要安装tree命令,使用yum -y install tree 命令安装
然后就能得到如下所示(节选):
├── mail -> spool/mail
├── nis
├── opt
├── preserve
├── run -> ../run
├── spool
│ ├── anacron
│ │ ├── cron.daily
│ │ ├── cron.monthly
│ │ └── cron.weekly
linux下目录用途:
/:根目录
bin:存放常用命令(普通用户) sbin:也是存放常用命令(root用户)
boot:系统启动文件
dev:liux特有的设备文件 如光盘 硬盘 鼠标键盘等
etc:系统的一些配置文件
home:用户目录文件
lib, lib64:存放系统库文件
ldd 查看命令依赖的库
media:媒体目录,可移动媒体设备的挂载点
mnt:临时挂载目录
opt: 可选目录,常用于存放第三方软件包和数据文件
proc:系统启动进程
run:进程产生的临时文件(重启就会消失)
srv:一些服务产生的文件
sys:系统内核相关文件
tmp:系统临时目录 (所有用户都能拥有读写功能)
usr:用户的文件
var:系统进程产生的临时文件
LS命令:
ls命令用来显示目标列表,在日常使用中使用频率很高。在输出信息时可以进行彩色显示,用于区分不同类型文件。
使用格式:ls (选项) (参数)
选项:
-l:文件详细信息列出来
-a:查看目录下所有隐藏文件
-t:以时间顺序排序
-d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表
-R:递归显示目录下的所有文件
命令演示:ls -l:
[root@localhost ~]# ls -l
总用量 4
-rw-------. 1 root root 1116 5月 13 19:48 anaconda-ks.cfg
ls -a:
[root@localhost ~]# ls -a
. .. anaconda-ks.cfg .bash_logout .bash_profile .bashrc .cshrc .tcshrc
ls -t:
[root@localhost /]# ls -t
tmp etc dev var root sbin lib64 home mnt srv
run boot sys proc usr lib bin media opt
ls -d:
[root@localhost /]# ls -d
.
ls -R:(显示太多节选一下)
46dd5739b13afce458719954b8dfd9975a23a441-libselinux-python-2.2.2-6.el7-x86_64
4ba62a8c7589d0f1ebf1bb901209fe4f6991ff4d-libsoup-2.48.1-3.el7-x86_64
4efe380f354ccc9d721e1b922d6c967770227b6d-libpwquality-1.2.3-4.el7-x86_64
504b608371202607440582a9ff1bac2e5921c3f0-libsepol-2.1.9-3.el7-x86_64
alias命令:
alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号''将原来的命令引起来,防止特殊字符导致错误。
alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件/etc/bashrc中.
使用格式:alias (选项) (参数)
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'
自定义别名
alias xx=想替代的命令
unalias xx 取消别名
相对路径:相对你所在位置的路径
绝对路径:从根开始的都是绝对路径
pwd:显示当前目录
cd命令:
cd -:上次所在的目录
cd ~:
cd ..:返回上一级目录
mkdir:创建目录
mkdir -p :级联创建一串目录
rmdir:可以删除空目录(只能删除空目录)
rm:可以删除文件和目录
rm -f:强制删除不询问 (不能删除目录)
rm -r:删除级联目录
cp命令:cp 源 目标
cp -r:拷贝目录
mv命令:同目录可以改名字 使用格式:mv (源文件或目录) (目标文件或目录)
当目标文件是目录时,其存在与否,执行后的结果是不一样的。如果该目录存在。则会把源文件或目录移动到该目录中,如果该目录不存在,则会把源目录重命名给定的目标文件名。当目标文件是文件时,其存在与否,执行后的结果也是不一样的。如果该文件存在,则会询问是否覆盖。如果该文件不存在,则会把源文件重命名给定的目标文件。
接下来做一个创建删除 拷贝 移动实验:
(创建删除)
[root@localhost /]# mkdir wang
[root@localhost /]# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr wang
[root@localhost /]# rmdir wang
[root@localhost /]# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
(拷贝移动)
[root@localhost /]# cp -r wang lib
[root@localhost /]# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr wang
[root@localhost /]# cd lib
[root@localhost lib]# ls
binfmt.d games locale python2.7 sysctl.d wang
debug grub modprobe.d rpm systemd yum-plugins
dracut kbd modules sendmail tmpfiles.d
firewalld kdump modules-load.d sendmail.postfix tuned
firmware kernel polkit-1 sse2 udev
[root@localhost lib]# rmdir wang
[root@localhost lib]# ls
binfmt.d games locale python2.7 sysctl.d yum-plugins
debug grub modprobe.d rpm systemd
dracut kbd modules sendmail tmpfiles.d
firewalld kdump modules-load.d sendmail.postfix tuned
firmware kernel polkit-1 sse2 udev
[root@localhost lib]# cd ..
[root@localhost /]# mv wang lib
[root@localhost /]# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
[root@localhost /]# cd lib
[root@localhost lib]# ls
binfmt.d games locale python2.7 sysctl.d wang
debug grub modprobe.d rpm systemd yum-plugins
dracut kbd modules sendmail tmpfiles.d
firewalld kdump modules-load.d sendmail.postfix tuned
firmware kernel polkit-1 sse2 udev
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]#
环境变量 PATH:一个字符串变量,当输入命令的时候LINUX会去查找PATH里面记录的路径。比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命令根本不在这个两个目录下,事实上当你输入命令的时候LINUX会去/bin,/usr/bin,/sbin等目录下面去找你此时输入的命令,我们使用which命令就能找到命令的路径,如果没有PATH 那我们输入命令就必须输入命令的绝对路径。
Which命令:
which:查看文件所在路径 使用格式:Which xx :
[root@localhost /]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
文档查看命令:
cat命令:是一个比较常用的命令,用于查看一个文件的内容并把它显示在屏幕上。cat后面可以不加任何选项直接跟文件名。
-n:查看文件时把行号也显示在屏幕上,实例命令如下:
[root@localhost ~]# touch wang.txt
[root@localhost ~]# cat -n wang.txt
[root@localhost ~]# vi wang.txt
[root@localhost ~]# cat -n wang.txt
1 shdhshdhajdhsadnsdjshahdhsahdhahhj
2 d
3 s
4 d
5 s
6 d
7 sf
8
9
10 f
-A:显示所有内容,包括特殊字符实例命令如下:
[root@localhost ~]# cat -A wang.txt
shdhshdhajdhsadnsdjshahdhsahdhahhj$
d$
s$
d$
s$
d$
sf$
$
$
f$
tac命令:和cat命令一样(正好是cat的反序写法)也是把文件显示在屏幕上,只不过是先显示最后一行,然后显示倒数第二行,最后再显示第一行。实例如下:
[root@localhost ~]# vi wang.txt
[root@localhost ~]# tac wang.txt
sddsf
sds
wwew
sf
d
sds
sewedsds
d
s
d
shdhshdhajdhsadnsdjshahdhsahdhahhj
more命令:命令more也是查看一个文件的内容,后面直接跟文件名。当前文件太多不能一屏显示。用cat命令不能看到前面的内容,这时可以使用more命令,当看完一屏后敲击空格键可以继续看下一屏,看完所有内容后就会退出,按ctrl+d可以向上翻屏,按ctrl+f向下翻屏。退出按q键即可。
less命令:命令less和more一样,后面直接跟文件名,但less比more功能要多一些,按空格键可以翻页,按j键可以向下移动,按k键位可以向上移动,在使用more和less查看某个文件时你可以按一下/键,并输入一个字符串,然后回车,这样就能查找到这个字符串了。如果要查找多个字符串可以按n键显示下一个。另外也可以用?键来代替/键来搜索字符串,唯一不同的是/是向下搜索,而?是向上搜索。
命令head:命令head用来显示命令前10行,后面直接跟文件名。如果-n选项,则显示文件的前几行,如下所示:
[root@localhost ~]# head /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
选项-n后有无空格即可,也可省略字母n-后面直接跟数字如下:
[root@localhost ~]# head -3 /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
命令tail:和head命令相似,用于显示文件的最后10行,后面直接跟文件名,如果-n就显示文件的最后几行实例命令如下:
[root@localhost ~]# tail /etc/passwd
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:997:995: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
选项-n后有无空格即可,也可省略字母n-后面直接跟数字如下:
[root@localhost ~]# tail -3 /etc/passwd
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
-f选项也很常用,它可以动态显示最后10行,如果文件内容在不断的增加使用-f就十分方便直观。
文件的所有者所属组:Linux下的目录或文件,都会有一个所有者和所属组。我们可以通过ls-l命令查看当前文件时共有9列内容。
[root@localhost ~]# ls -l
总用量 8
-rw-------. 1 root root 1116 5月 13 19:48 anaconda-ks.cfg
-rw-r--r--. 1 root root 75 5月 14 01:06 wang.txt
第一列包含文件的类型、所有者、所属组以及其他用户对该文件的权限。d则表示该文件为目录
-则表示当前文件为普通文件
l表示该文件为链接文件
d表示该文件为块设备
c表示该文件为串行端口设备文件
s表示该文件为套接字文件,用于进程间的通信
文件类型后的9位,每三位为一组
r表示可读,w代表可写,x代表可执行,前三位为所有者的权限,中间三位为所属组的权限,后三位为其他非本群用户的权限。
第一列的最后一位“.”表示启用了文件或目录启用了selinux属性,+号则是启用了acl属性。
文件或目录权限:
r=4 w=2 x=1
rw-=6
--x=1
rw-r--r--=644
chmod -R :更改目录下所有文件权限
更改所有者和所属组:
chgrp:更改所属组
chown:更改所有者
chown -R:
接下来做一个授权目录权限演示:
[root@localhost lib]# ls -ll
总用量 36
drwxr-xr-x. 2 root root 6 11月 20 2015 binfmt.d
drwxr-xr-x. 3 root root 59 8月 12 2015 debug
drwxr-xr-x. 4 root root 4096 5月 13 19:44 dracut
drwxr-x---. 6 root root 65 5月 13 19:45 firewalld
drwxr-xr-x. 72 root root 8192 5月 13 19:46 firmware
dr-xr-xr-x. 2 root root 6 8月 12 2015 games
drwxr-xr-x. 3 root root 20 5月 13 19:45 grub
drwxr-xr-x. 6 root root 72 5月 13 19:43 kbd
drwxr-xr-x. 2 root root 54 5月 13 19:45 kdump
drwxr-xr-x. 3 root root 22 11月 20 2015 kernel
drwxr-xr-x. 2 root root 53 5月 13 19:44 locale
drwxr-xr-x. 2 root root 106 5月 13 19:45 modprobe.d
drwxr-xr-x. 3 root root 34 5月 13 19:45 modules
drwxr-xr-x. 2 root root 6 11月 20 2015 modules-load.d
drwxr-xr-x. 2 root root 48 5月 13 19:45 polkit-1
drwxr-xr-x. 3 root root 26 5月 13 19:44 python2.7
drwxr-xr-x. 4 root root 4096 5月 13 19:44 rpm
lrwxrwxrwx. 1 root root 30 5月 13 19:45 sendmail -> /etc/alternatives/mta-sendmail
lrwxrwxrwx. 1 root root 24 5月 13 19:45 sendmail.postfix -> ../sbin/sendmail.postfix
dr-xr-xr-x. 2 root root 6 8月 12 2015 sse2
drwxr-xr-x. 2 root root 49 5月 13 19:45 sysctl.d
drwxr-xr-x. 12 root root 4096 5月 13 19:45 systemd
drwxr-xr-x. 2 root root 4096 5月 13 19:45 tmpfiles.d
drwxr-xr-x. 11 root root 4096 5月 13 19:45 tuned
drwxr-xr-x. 4 root root 4096 5月 13 19:45 udev
drwxr-xr-x. 2 root root 6 5月 13 21:41 wang
drwxr-xr-x. 2 root root 77 12月 3 2015 yum-plugins
[root@localhost lib]# chmod 744 wang
[root@localhost lib]# ll
总用量 36
drwxr-xr-x. 2 root root 6 11月 20 2015 binfmt.d
drwxr-xr-x. 3 root root 59 8月 12 2015 debug
drwxr-xr-x. 4 root root 4096 5月 13 19:44 dracut
drwxr-x---. 6 root root 65 5月 13 19:45 firewalld
drwxr-xr-x. 72 root root 8192 5月 13 19:46 firmware
dr-xr-xr-x. 2 root root 6 8月 12 2015 games
drwxr-xr-x. 3 root root 20 5月 13 19:45 grub
drwxr-xr-x. 6 root root 72 5月 13 19:43 kbd
drwxr-xr-x. 2 root root 54 5月 13 19:45 kdump
drwxr-xr-x. 3 root root 22 11月 20 2015 kernel
drwxr-xr-x. 2 root root 53 5月 13 19:44 locale
drwxr-xr-x. 2 root root 106 5月 13 19:45 modprobe.d
drwxr-xr-x. 3 root root 34 5月 13 19:45 modules
drwxr-xr-x. 2 root root 6 11月 20 2015 modules-load.d
drwxr-xr-x. 2 root root 48 5月 13 19:45 polkit-1
drwxr-xr-x. 3 root root 26 5月 13 19:44 python2.7
drwxr-xr-x. 4 root root 4096 5月 13 19:44 rpm
lrwxrwxrwx. 1 root root 30 5月 13 19:45 sendmail -> /etc/alternatives/mta-sendmail
lrwxrwxrwx. 1 root root 24 5月 13 19:45 sendmail.postfix -> ../sbin/sendmail.postfix
dr-xr-xr-x. 2 root root 6 8月 12 2015 sse2
drwxr-xr-x. 2 root root 49 5月 13 19:45 sysctl.d
drwxr-xr-x. 12 root root 4096 5月 13 19:45 systemd
drwxr-xr-x. 2 root root 4096 5月 13 19:45 tmpfiles.d
drwxr-xr-x. 11 root root 4096 5月 13 19:45 tuned
drwxr-xr-x. 4 root root 4096 5月 13 19:45 udev
drwxr--r--. 2 root root 6 5月 13 21:41 wang
drwxr-xr-x. 2 root root 77 12月 3 2015 yum-plugins
umask:
一般格式
umask [选项] [掩码]
umask的作用
默认情况下的umask值是022(可以用umask命令查看),此时你建立的文件默认权限是644(6-0,6-2,6-2),建立的目录的默认权限是755(7-0,7-2,7-2),它是为了控制默认权限,不要使默认的文件和目录具有全权而设的。
命令格式为:umask xxx 如果要查看umask的值只要在命令输入umask回车即可如下所示:
[root@localhost ~]# umask
0022
若用户建立普通文件,则预设没有可执行权限,只有rw俩个权限。最大值为666
若用户建立目录,则预设所有权限均开放即777.
umask数值代表的含义为以上俩条规则中的默认值需要减掉的权限。