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
    退格(BS) ,将当前位置移到前一列    008
f    换页(FF),将当前位置移到下页开头    012

    换行(LF) ,将当前位置移到下一行开头    010

    回车(CR) ,将当前位置移到本行开头    013
	    水平制表(HT) (跳到下一个TAB位置)    009
v    垂直制表(VT)    011
\    代表一个反斜线字符'''    092
'    代表一个单引号(撇号)字符    039
"    代表一个双引号字符    034
    空字符(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 查看隐藏属性
查看当前目录所有文件及目录的隐藏属性
原文地址:https://www.cnblogs.com/angelyan/p/10685942.html