Linux进阶知识和命令

一.Linux目录结构

目录

说明

/lost

found系统修复

/bin

二进制命令所在的目录。

/boot

系统引导程序所需的文件目录。安装系统分区的时候一般单独要分一个boot分区,大小可谓128-256M,该分区数据增长神效

/dev

(Device flies)设备软件目录,比如磁盘、光驱…..

/etc

系统配置,启动程序

/home

普通用户的家,目录默认数据存放目录

/lib

启动系统和运行命令所需的共享库文件和内核模块存放

/mnt

临时挂载存储设备的挂载点, u盘直接插入光驱无法使用,要先挂载后使用

/opt

额外的应用软件包

/proc

操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录是虚拟文件系统的挂载点,proc并不是真正的文件系统,它的定义可以参见/etc/ fstab,系统运行很多信息都在这个目录下。

/proc/loadavg

<==系统负载(系统繁忙程度)

/proc/memrino

<==系统内存信息

/proc/cpuinfo

<==系统cpu信息

/proc/mounts

  <==系统挂载信息。

/root

Linux超级用户root的家目录:root类似win32管理员administrator

/sbin

和管理系统相关的命令(超级管理员用)

/tmp

(Temporary files)临时文件目录, 这个目录可以被用作回收站使用

/usr

用户或系统软件应用程序目录

/var

这个目录的内容是经常变动的。是个用来存放系统日志的目录,系统日志的路径/var/log/messages; /var/lib用来存放一些库文件

 

/etc系统初始化及设置相关重要文件

/etc/sysconfig/network-scripts/ifcfg-eth0  #网卡配置文件

/etc/resolv.conf                       #Linux系统DNS配置文件

/etc/sysconfig/network                 #CentOS-6主机名配置文件

/etc/hostname                          #CentOS-7主机名配置文件

/etc/syscconfig/i18n                   #CentOS-6字符集配置文件

/etc/locale.conf                       #CentOS-7字符集配置文件 

/etc/hosts                             #ip地址与域名快速解析的文件

/etc/fstab                             #配置开机设备自动挂载的文件

/etc/rc.local                          #存放开机自启动程序命令的文件

/etc/inittab                           # centos7设定运行级别等配置的文件

/etc/systemd/system/default.target     #centos7设定运行级别等配置的文件

/usr/lib/systemd/system/runlevel*.target  #centos7运行级别

/etc/profile及/etc/bashrc             #配置系统的环境变量/别名等的文件

/etc/profile.d                         #用户登录后执行的脚本所在的目录

/etc/issue和/etc/issue.net            #配置在用户登录终端前显示信息的文件

/etc/init.d                            #软件启动程序所在的目录

/etc/motd                              #配置用户登录系统之后显示提示内容的文件

/etc/redhat-release                    #声明RedHat版本号和名称信息的文件

/etc/sysctl.conf                       #Linux内核参数设置文件

网卡配置文件详解

systemctl   restart    network
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
UUID=30126a53-c912-4552-a7fe-af1925bd4d2f    #网卡uuid克隆虚拟机需要删除。
HWADDR=00:0c:29:fe:f9:8a                     #mac地址,网卡唯一标识,克隆虚拟机要删除。
NM_CONTROLLED=no                             #要不要被网络管理器控制,选no
USERCTL=no                                   #USER ConTrol普通用户是否可以管理网卡,no
PEERDNS=yes                                  #要不要覆盖/etc/resolv.conf文件(DNS客户端文件)
IPV6INIT=no                                  #是否支持ipV6
DEVICE=eth0                                  #网卡设备的名字,eth0是第一块。
ONBOOT=yes                                   #开机时,是否和系统一起启动
TYPE=Ethernet                                #以太网
BOOTPROTO=none                               #启动协议.dhcp(动态主机配置协议).static/none(静态ip)
IPADDR=10.0.0.200                            #IP地址
NETMASK=255.255.255.0                        #子网掩码(也可以是24)
GATEWAY=10.0.0.2                             #网关
DNS1=223.5.5.5                               #第一个DNS
DNS2=223.6.6.6                               #第二个DNS

配置DNS的配置文件

/etc/sysconfig/network-scripts/ifcfg-eth0
配置方法:DNS1=xxx.xxx.xxx.xxx   DNS2=xxx.xxx.xxx.xxx
/etc/resolv.conf
配置方法:nameserver   xxx.xxx.xxx.xxx    nameserver   xxx.xxx.xxx.xxx

CentOS-7系统修改主机名

hostnamctl   set-hostname    新的主机名
修改配置文件/etc/hostname

修改字符集

echo $LANG #查看
export LANG=zh_CN.UTF-8 #临时修改
localectl set-locale LANG=en_US.utf8 #需重新加载,永久生效
CentOS-6修改配置文件/etc/syscconfig/i18n
CentOS-7修改配置文件/etc/locale.conf
source    配置文件

运行级别

CentOS-6

runlevel #查看

#修改级别
init  级别   /  或者修改运行级别配置文件/etc/inittab 
0   关机状态  (不要把运行级别永久设置为0)
1   单用户模式  root密码忘记  故障 
2   多用户模式  (不能使用NFS软件)
3   完全的多用户模式  文本模式 命令行模式 
4   没有使用 
5   桌面模式 X11 
6   重启     (不要把运行级别永久设置为0)

CentOS-7

systemctl   get-default  #查看
systemctl  set-default  #修改

别名与环境变量

#查看系统中已经定义的别名
alias      #alias  命令
#命令设置 (临时生效,重启系统之后失效)
alias  rm=' echo rm command bny'
#配置文件修改
vim   /etc/profile| /etc/bashrc (别名所有用户可用)#国法 
vim   ~/.bashrc| ~/.bash_profile(别名当前用户可用)#家规
#生效(永久生效)
source  配置文件名
#取消别名
unalias   有别名的命令
env #查看环境变量

#命令设置(临时生效,重启系统之后失效)
export  TEST=123   #环境变量统一大写(普通变量随意),名称不要与系统中已经定义好的变量冲突
echo   $TEST #查看

#配置文件定义  
vim     /etc/profile(所有用户可用)#国法 
vim     ~/.bash_profile(当前用户可用)#家规
#生效(永久生效)
source   配置文件
#取消环境变量
unset   TEST
#对系统的小优化
cat >>/etc/profile.d/color.sh<<"EOF"
alias ll='ls -l --color=auto --time-style=long-iso'
PS1='\[\e[32;1m\][\u@\h \W]\$ \[\e[0m\]'
EOF
source  /etc/profile

/var目录下的路径知识

    /var/log              #记录系统及软件运行信息文件所在的目录
    /var/log/messages     #系统级别日志文件
    /var/log/secure       #用户登录信息日志文件
    /var/log/dmesg        #记录硬件信息加载情况的日志文件

/proc目录下的重要路径知识

    /proc/meminfo       #系统内存信息
    /proc/cpuinfo       #关于处理器的信息,如类型,厂家,型号,性能等
    /proc/loadavg       #系统负载信息,uptime的结果
    /proc/mounts        #已加载的文件系统的列表

/dev目录下的路径知识

    /dev/sd*                        #磁盘设备
    /dev/sr0或者/dev/cdrom         #光驱设备文件
    /dev/zero                      #写0设备,作用:1.清空磁盘数据 2.产生空设备文件
    /dev/null                      #黑洞设备,作用:销毁操作系统输出信息使用

 

二.软件安装

yum  install  -y  tree  xxxx            #安装软件
yum  grouplist                      #查看已安装的软件包            
yum  groupinstall                       #安装指定的软件包
yum  provides                           #查询命令属于哪个软件包
yum  remove   sl   -y               #删除一个软件包
-ivh   rpm –ivh              #软件包  
-e     rpm –e               #卸载软件包 
-qa    rpm –qa              #查询所有软件包
-ql    rpm –ql               #查看软件包里的文件列表
-qf    rpm –qf              #查询命令或文件属于哪个软件包
-qc    rpm  -qc           #查询软件的主配置文件
#编译安装三部曲
./conflgure             #编译参数选项
make                  #开始编译
make install            #开始安装

三.Linux文件类型

-rw-------. 1 root root 4434 May 30 13:58 ks.cfg
-rw-------. ①:文件类型与权限
1           ②:硬链接次数
root        ③:所属用户
root        ④:所属组
4434        ⑤:文件大小
May30 13:58 ⑥⑦⑧:最新修改的时间与日期
ks.cfg      ⑨:文件或目录名称
Linux下扩展名只是方便用户记忆,对文件类型不影响
.txt                    #文本文件
.log                    #日志文件
.conf .cfg .configure .xml   #配置文件
.sh .bash               #shell脚本
.py                     #python脚本
ls -l 文件名 //看第一个字符
格式         说明
-           普通文件(文本, 二进制, 压缩, 图片, 日志等) 
d           目录文件
b           设备文件(块设备)存储设备硬盘 /dev/sda1, /dev/sda2
c               设备文件(字符设备)打印机,终端 /dev/tty1, /dev/zero
s               套接字文件, 进程间通信(socket)
p           管道文件
l               链接文件

文件及目录查找命令

file  [文件]     #查看普通文件类型
which   [命令] #显示命令的全路径
whereis  [命令]    #查看命令及其相关内容
作用:查找目录下文件 
find /oldboy –maxdepth 1 –type f –name “*.txt” -size +1M
-maxdepth      #最大查找多少层,一定放在最前面,1是该目录下一层
-type          #类型 f d l
-iname         #名字 (忽略大小写)
-name          #名字 
-size +1M(大于1M)-100k(小于100k ) #根据大小查找文件 
-mtime +7(7天以前) -7(7天以内)     #根据时间查找文件
示例:
find /root/  -type f  -iname "*.txt" |xargs  cp -t /tmp/
cp   $(find /root/  -type f  -iname "*.txt")   /tmp/
find  /root/  -type f  -iname "*.txt" -exec cp {} /tmp/  \;
find  /root/  -type f  -iname "*.txt" | xargs -i  cp {} /tmp/
seq 10 >ett.txt
xargs -n5 <ett.txt
-n   分组
主要配合find命令使用

压缩包管理

#创建压缩包
[root@oldboy ~]# tar zcvf  /tmp/etc.tar.gz     /etc/
把/etc/打包压缩 压缩包放在/tmp/etc.tar.gz
tar 参数 zcvf
z 表示通过gzip软件进行压缩
c 表示创建压缩包
v 表示显示创建压缩包和解压的过程
f 表示指定压缩包(f一定要放在这几个参数的最后)
t 查看压缩包内容
tar  tf   /tmp/etc.tar.gz
#解压
x 表示解压
解压时进入到tmp 下 cd/tmp
tar  xf  /tmp/etc.tar.gz
/tmp/etc.tar.gz 解压到 /opt 
tar  xf /tmp/etc.tar.gz  -C  /opt/

排除  --exclude
#压缩文件
zip    test.zip   test.log

#压缩目录
zip  -r  test.zip    test
-q   #静默模式

#解压
unzip  test.zip

#解压到指定目录
unzip  -d     /opt scripts.zip

#解压的其他参数
-l   只看一下zip压缩包中包含哪些文件,不进行解压缩
-v   查看显示的文件列表还包含压缩比率
-t   检查zip文件是否损坏

date 显示与设置系统时间

date  显示或设置系统时间
显示日期以2018-09-30 显示 
[root@oldboyedu /etc]# date +%F
2018-09-30
[root@oldboyedu /etc]# date +%Y-%m-%d 
2018-09-30
显示日期,不显示世纪
[root@oldboyedu /etc]# date +%y-%m-%d 
18-09-30
显示时间以10:30:12 显示
[root@oldboyedu /etc]# date +%T
10:30:12
[root@oldboyedu /etc]# date +%H:%M:%S
10:31:23
date +格式  
#%Y  year 
#%m  month 月 
#%d  day   日期
#%H  hour  小时 
#%M  minute 分钟 
#%S  sec  秒 
#+%F  === %Y-%m-%d 2018-09-30
#+%T  === %H:%M:%S 
#+%w      周几 (0周日)
date  参数
-d         根据你的描述显示日期
-s       修改日期
#同步时间
ntpdate  ntp1.aliyun.com 

四.Linux系统角色

Linux 系统中,UID以如下的方式划分:
0            表示管理员(root)
1 - 500      表示系统虚拟用户
501 - 65535  表示普通用户
不同的Linux发行版,这些数字可能不一样

用户及用户组相关命令

useradd           添加用户
-u                  给用户指定UID
-s              指定用户的shell命令解释器
-M          表示不创建家目录,创建虚拟用户使用
-g          指定用户组
-c              添加说明信息
passwd           设置密码
--stdin      非交互式设置密码
echo 123456 | passwd --stdin  用户名
whoami            我是谁,显示当前用户
su              切换用户
su -            切换用户的时候更新环境变量
-c              切换到另一个用户,运行一个命令,   su - maple -c "pwd"
id                  查看用户的uid,gid及归属的用户组
userdel           删除用户,默认不删除用户的家目录和邮箱
-r              删除与用户有关的所有信息
usermod           修改用户信息
-s        修改用户使用的shell 
-g        修改属于的用户组,主要组
-u        修改UID
-c        修改用户说明
groupadd           创建用户组
-g      指定用户组并指定GID
groupdel           删除用户组,不能删除还有用户归属的主用户组

        

文件的权限

列表的列定义如下:
[权限属性信息] [连接数] [拥有者] [拥有者所属用户组] [大小] [最后修改时间] [文件名]
权限属性列表为10个字符:
    第一个字符表示文件类型,d为目录 -为普通文件 l为连接 b为可存储的接口设备 c为键盘鼠标等输入设备
    2、3、4个字符表示所有者权限,5、6、7个字符表示所有者同组用户权限,8、9、10为其他用户权限
    第二个字符表示所有者读权限,如果有权限则为r,没有权限则为-
    第三个字符表示所有者写权限,如果有权限则为w,没有权限则为-
    第四个字符表示所有者执行权限,如果有权限则为x,没有权限则为-
    第五个字符表示所有者同组用户读权限,如果有权限则为r,没有权限则为-
    第六个字符表示所有者同组用户写权限,如果有权限则为w,没有权限则为-
    第七个字符表示所有者同组用户执行权限,如果有权限则为x,没有权限则为-
    第八个字符表示其他非同组读权限,如果有权限则为r,没有权限则为-
    第九个字符表示其他非同组写权限,如果有权限则为w,没有权限则为-
    第十个字符表示其他非同组执行权限,如果有权限则为x,没有权限则为-

文件的修改时间属性

mtime    modify time    修改时间 (文件内容变化)
ctime    change time    属性改变的时间(文件属性;变化;大小;权限;inode;所有者用户硬链接数量)
acime    access time    访问时间(cat)
怎样查看:
    stat命令

硬链接与软连接

#硬链接用法
ln [原文件] [目标文件]
#硬链接
1.具有相同inode的不同文件名
2.删除硬链接或者原文件之一,文件实体不会被删除
3.删除所有硬链接,数据会在被磁盘检查或者新数据写入时候删除回收。
4.可以给文件设置硬链接防止误删
5.通过ln [原文件] [目标文件]设置硬链接
6.通过rm –f 删除硬链接
7.文件目录不可创建硬链接,因为硬链接无法跨区
#软连接用法
ln –s [原文件] [目标文件]
#软连接
1.    软链接类似于快捷方式,存放原文件路径,执行原文件
2.    删除原文件,软链接依然存在,但是失效
3.    执行ln –s [原文件] [目标文件]完成创建
4.    软链接和原文件是不同类型文件,inode不同
5.    rm –f 删除软链接
6.    可以创建目录和文件的软链接,即可以跨区
#硬链接与软连接的区别
1.从定义:linux系统中,链接有两种,一种被称为软链接,类似于快捷方式,存放指向原文件inode的信息,与原文件inode不同。一种是硬链接,与原文件有相同的inode,可以指向数据block。
2.从创建方式:硬链接命令 ln [原文件] [目标文件],软链接命令ln –s  [原文件] [目标文件]
3.从创建对象:ln命令不能对目录创建硬链接,但是可以对目录创建软链接。因为软链接可以跨越文件系统,,硬链接则不能。对目录和为客户创建的文件软链接经常用到。
4.删除软链接文件,对硬链接和原文件无影响。
5.删除文件硬链接,对原文件及软链接文件无影响
6.删除原文件,对硬链接读取数据无影响,软链接则失效。会出现红底白字状。
7.同时删除原文件和硬链接,原文件才会被真正删除
8.很多硬件设备中的快照原理,类似于硬链接原理

五.Linux通配符与特殊符号

*
匹配任意(0个或多个)字符或字符串,包括空字符串
{}
生成序列
引用变量作为变量与普通字符分隔
?
匹配任意1个字符,有且只有一个字符
[abcd]
匹配abcd中任何一个字符,abcd也可是其他任意不连续字符
[a-z]
匹配a到z之间的任意一个字符, a到z表示范围,字符前后要连续,-表示范围的意思,也可以用连续数字[1-9]
[!abcd]
同[^abcd],表示不匹配括号里面的任何一个字符,也可为[!a-d]
~    用户的家目录,超级用户为/root,普通用户为/home
-    代表上一次(相对于当前路径)用户所在的路径
.    代表当前目录(点号还有很多其它含义,暂且不表)
..    代表上一级目录
''    单引号,所见即所得,即输出单引号内容时会将单引号内的所有内容都原样输出,或者描述为单引号里面看到的是什么就会输出什么,被称之为强引用。
""    双引号,输出双引号内的所有内容时;如果内容中有命令(要反引下)、变量、特殊转义符等,会先把变量、命令、转义字符解析出结果,然后在输出最终内容来,推荐使用,被称为弱引用。
``    反引号,一般用于引用命令,执行的时候命令会被执行,相当于$(),赋值和输出都要将命令用``引起来。
空    赋值时,如果变量内容有空格会赋值不完整。而在输出内容时,会将含有空格的字符串视为一个整体输出,如果内容中有命令(要反引下)、变量等,会先把变量、命令解析出结果,然后输出最终内容,如果字符串中带有空格等特殊字符,则有可能无法完整的输出,因此需要改加双引号,一般连续的字符串、数字、路径等可以不加任何引号赋值和输出,不过无引号的情况最好用双引号替代之,特别是变量赋值时。
#重定向符号
0          表示标准输入(stdin),配合<或<<使用,数据流从右向左
1          表示标准输出(stdout),配合>或>>使用,数据流从左向右
2          标准错误(stderr),配合>或>>使用,数据流从左向右
0<或<      标准输入重定向,清空已有内容,数据从文件流向处理的命令
0<<或<<    追加输入重定向,追加内容到底部,数据从文件流向处理命令
1>或>      标准输出重定向,正常输出重定向到文件,会清空已有内容
1>>或>>    标准输出追加重定向,将内容追加到文件底部,不清空已有内容
2>         错误输出重定向,将标准错误内容重定向到文件,如文件存在内容则清空
2>>        错误输出追加重定向,将标准错误内容追加到文件底部,不会清空已有内容
;    表示一个命令的结束,也是命令间的分隔符
#    (1)表示是注释内容,给管理员看的注释部分,系统不会执行井号开头的内容;(2)root用户的命令提示符
|    表示管道,将一个命令处理后的内容输出给下一个命令继续处理
$    (1)字符串前加$符号,代表字符串变量内容;(2)普通用户命令提示符
\    逃脱符,即将有特殊含义的字符还原成字符本意,例如\$仅代表美元符
&    将程序放入后台运行符,例如:/bin/sh /scripts/oldboy.sh &(后文会讲)
#逻辑操作符号
&&    与,and
||     或,or
!      非,opppsite

六.正则表达式

POSIX规范将正则表达式分为两种:

基本正则表达式(BRE,basic regular expression);

扩展正则表达式(ERE,extended regular expression)——高级功能。

+    一般与[]进行配合 把各种连续的东西取出来
|     或
( )    一个整体 后向引用-sed
{ }    0{n,m}    前一个字符至少连续出现n次,最多连续出现了m次
?     前一个字符连续出现0次或1次
BRE:^ $ ^$  . * .* []  [^] \
ERE:+ | () {} ?
BRE:grep/sed/awk
ERE:egrep/grep -E/sed -r/awk
$
^$空行 cat -A    取出文件中的空行或包含#或只有空格的行
.(点)
\(撬棍)
[abc]
[^abc]
|(竖线)
()
#表示重复连续出现
+
*
a{n,m}
?
#查看资料
man sed/grep/awk
info grep/sed/awk
#转义字符
转义字符    意义    ASCII码值(十进制)
\a    响铃(BEL)    007
\b    退格(BS) ,将当前位置移到前一列    008
\f    换页(FF),将当前位置移到下页开头    012
\n    换行(LF) ,将当前位置移到下一行开头    010
\r    回车(CR) ,将当前位置移到本行开头    013
\t    水平制表(HT) (跳到下一个TAB位置)    009
\v    垂直制表(VT)    011
\\    代表一个反斜线字符''\'    092
\'    代表一个单引号(撇号)字符    039
\"    代表一个双引号字符    034
\0    空字符(NULL)    000
\ddd    1到3位八进制数所代表的任意字符    三位八进制
\xhh    1到2位十六进制所代表的任意字符    二位十六进制

七.Linux系统12位权限体系

rwx含义
read       可读
write      可写
execute    命令  or  脚本
rwx 权限位表示
r    read        读           4
w    write        写           2
x    execute        执行         1
-                 没有权限     0
权限位计算
-rwxr-xr-x        755
-r-x------         500
-rw-------        600
-rw-r--r--        644
-rwxrwxrwx        777

644        rw-r--r--    
755        rwxr-xr-x
400        r--------
650        rw-r-x---
404        r-----r-- 
403        r------wx
#chmod命令
chmod:change mode,修改权限,-R 递归修改
#用户的表示方法
u-user(文件的所有者-主人)
g--group(用户属于的组-家人)
o-others(其他人 隔壁老王-陌生人)
#权限授予
+添加权限
-去掉某一个权限
=先去掉原有的权限,然后在赋予新的权限 chmod u=rx test.sh
#权限对应的数字
r---   4
w----  2
x----- 1
- ==== 0
#使用数字授予权限
rwxr-xr-x 755
chmod 755 test.sh
#chown命令
chown change own,修改属主属组,-R 递归修改
r 是否能查看文件内容 
w 是否能修改文件的内容,需要r权限配合 rw 
  只有w的时候vim强制修改文件内容,会导致源文件内容清空
x 是否能运行命令或脚本的权限,需要r权限配合
root 默认对文件rw权限,默认没有执行权限
#linux系统默认权限控制命令umask
临时:umask 022 #默认为022
永久:修改/etc/profile文件
#chattr 授予隐藏属性
授予文件或目录隐藏的权限
a (append 只能追加) 如果设置了这个权限 只能追加 不能删除 不能修改
i( immutable 无敌) 无法修改 无法删除
#lsattr 查看隐藏属性
查看当前目录所有文件及目录的隐藏属性

 

posted @ 2019-04-10 20:35  Maple_feng  阅读(595)  评论(0编辑  收藏  举报