Linux运维基础知识

 

Linux命令行:
命令+空格+参数(可写可不写)+空格+文件,文件夹(可写可不写)
基本命令用法如上:1.一般情况下Linux命令的参数,都是可选的,可写可不写,不同的参数作用也不一样  2.Linux命令之间,必须得有一个或者多个空格

whoami 我是谁 ,显示当前登录的用户
hostname   显示当期机器的主机名
pwd  显示当前的工作目录绝对路径

[root@Luffycity opt] Linux的命令提示符含义分别表示 root:登录的用户  @:占位符  Luffycity:当前机器的名字   空格 opt:当前你所在的工作目录
  
Linux目录结构:
                                                                        /
 /dev 存放设备文件                                         dev                     boot           /boot存放内核与启动文件                 
 /lib存放系统库文件                                      lib                     bin           /bin存放二进制文件(可执行命令)binary 二进制的缩写含义 只要发现目录中有bin相关的字,说明这个文件夹里面存放可执行文件
 /sbin 存放特权级二进制文件                               sbin                       usr              /存放安装程序(软件默认目录)
/var 存放经常变化的文件(/var/log/ 日志存放 )                     var                mnt                /mnt文件挂载目录(U盘,光驱)
/home  普通用户目录                                          home                    root             /root特权用户目录
/etc 存放配置文件目录(/etc/nginx.conf 或者 etc/my.cnf)  etc                     opt                 /opt大型软件存放目录(非强制) 如;/opt/python36 /opt/mysql /opt/redis
/sys     系统文件                                                                srv             /服务相关数据
/run     里面的东西是系统运行时需要的, 不能随便删除. 但是重启的时候应该抛弃. 下次系统运行时重新生成
/proc    内存系统文件                                                            tmp                / 临时文件夹                                   


etc重要配置文件
/etc/sysconfig/network-scripts/ifcfg-ens33   (网卡配置文件)
/etc/profile.d用户登录后执行的脚本所在的目录


linux核心命令与文件管理:

Linux的命令参数可以简写 如 ls -l -h 等于ls -lh

cd命令 change directory的缩写 更改目录的意思
cd语法:cd   可选的参数    文件夹

几个特殊目录:
.当前的工作目录
..上一级的工作目录
-上一次的工作目录
~当前系统登录的用户家目录
.当前目录(或者隐藏文件)  /根目录 ./  当前目录下的某内容

************************************************************************************************************************************************************************************************************************************************************************************************************************


【ls命令】
list  列出文件夹中的内容
ls语法:ls  可选参数   可选的的文件夹对象
-a  all的意思显示所有的目录及隐藏目录        【】
-l 详细输出文件夹中内容                         【】
-h  以人类可阅读的方式输出文件大小           【】
--full-time  以完整的时间格式输出              【】
-t 根据最后修改的时间排序文件
-F 在不同的文件结尾,输出不同的特殊符号
  以/结尾的是文件夹  以*结尾的就是可执行文件 以@结尾的是软连接,快捷方式  普通文件类型,结尾什么都没有
-d显示文件夹本身信息,不输出其中的内容
-r reverse 逆转排序
-S 大写的S,针对文件大小进行排序,默认是从大到小
-i 显示出文件的inode信息(文件的身份证号,存储了文件的元信息,文件的大小,位置,权限等等)

pwd命令
print work directory 打印工作目录的意思
会输出当前所处的一个绝对路径



su命令  
su 命令用户切换
语法:su  -  用户名 # 完全的环境变量用户切换



logout  退出当前系统用户


【mkdir 】
make directory 【创建文件夹 】
语法 mkdir 文件夹名字
参数用法:
-p 递归创建文件 【】
mkdir -p  /opt/lodboy-linux/yuchao/chaoge # 递归创建文件夹,绝对路径是/opt/oldboy_linux/yuchao/chaoge


绝对相对路径与touch
/opt/lodboy/alex 从根目录开始寻找,就是绝对路径写法 ,只要不是从根目录开始寻找,就是相对路径./lodboy/alex

【touch 命令】
1用法:touch{选项}...文件...
将每个文件的访问时间和修改时间改为当前时间

touch有两个作用
1.创建普通文件,在Linux下文件的后缀格式仅仅是一个名字而已,通过touch创建的文件都是普通文件
1.修改文件的时间

不存在的文件将会被创建为空文件,除非使用-c 或-h 选项。
 
 touch {连续数字或者字母} 创建多个文件系列【】
如:touch {1..10} 或touch {a..z}

-c ,--no-create   不创建任何文件
-t STAMP            使用{{CC}YY}MMDDhhmm{.ss} 格式的时间代替当前时间
-r,reference=文件   使用指定文件的时间属性代替当前文件时间
touch -t   修改文件的时间 touch -t 2002010808  fangfang.txt


********************************************************************************************************************************************************************************************************************************************************************************************************************************
复制加粘贴
【cp命令】
用法:cp [选项]...[-T] 源文件  目标文件
  或:cp [选项]...源文件...目录
  或:cp [选项]...-t  目录 源文件...
 将源文件复制至目标文件,或将多个源文件复制至目标目录
 
 -r 递归式复制目录,即复制目录下的所有层级的子目录及文件    【】
 -p 复制的时候保持属性不变
 -d  复制的时候保持软连接(快捷方式)
 -a  等于-pdr
 -p   等于--preserve=模式,所有权,时间戳,复制文件时保持源文件的权限,时间属性
 -i,--interactive    覆盖前询问提示
 
案例
1.复制普通文件
cp命令  + 你想复制哪个文件  +  复制之后的文件名
2.复制普通文件,且改名,放入到另一个文件夹中
    #复制放入其他文件夹,保留源文件名
       cp. mjj.txt    ./oldboy/        
    # 复制文件放入其他文件夹,且改名
    cp. mjj.txt   ./lodboy/ mjj.txt2       
  
 3.一次性复制多个文件,放入另一个文件夹中
  cp   mjj.exe  mjj.gif    ./mjj/
 
  4.复制整个文件夹,必须加上-r参数   【】
    cp -r  mjj  mjj2
   
5.复制且保持文件属性不变,-p 参数用法
  cp -p  chaoge.txt  chaoge.txt.3
 
 6.拷贝软连接的时候,保持连接属性不变 -d 参数
 
 7.-i  参数的用法,覆盖文件前提示
   cp  -i  文件1  文件2  # 如果文件2已经存在,则会覆盖,-i会让用户进行输入y确认覆盖 备注:默认系统做了 alisa别名功能,让我们输入cp的时候,其实cp是 -i 参数
  
 【mv命令】
 mv命令就是move的缩写,作用是移动或是重命名文件
 用法:mv[选项]...[-t]...源文件 目标文件
   或:mv[选项]...源文件...目录
   或:mv[选项]...-t  目录 源文件...
将源文件重命名为目标文件,或将源文件移动至指定目录
-f,--forcr             覆盖前不询问
-i,--interactive       覆盖前询问
-t--                   将所有参数指定的源文件或目录移动至指定目录
案例:
1.移动文件到另一个文件夹 
mv   ./mjj.jj   ./oldboy   #把当前的mjj.jj文件 移动到oldboy文件夹中
 
2.移动多个文件,放到另一个文件夹中
mv luffy* ./oldboy/  #将当前目录所以以luff开头的文件,文件夹,都移动到oldboy目录下去

3.重命名用法
mv     旧的文件名   新的文件名
mv      mjj.txt     mjj.txxxt

4.-i参数的有用法,覆盖前询问
mv  在直接输入的时候,系统做了别名alias,其实敲的是mv -i
语法是:如果修改后的文件名,已经存在,则会询问,是否要覆盖该文件
mv    mjj.txt   mjj.exe    #如果mjj.exe 已经存在了,则会询问是否覆盖它

5.强制性覆盖  -f

【tree命令】以属性图结构显示目录下的内容
安装 yum install  tree -y
 
tree命令语法:

tree常用参数

-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在条目后加上文件类型的指示符号(* , /, = , @ , | ,其中的一个) 目录/


 【rm命令】
rm命令就是remove 的含义,删除一个或者多个文件,这是Linux系统的重要命令
-f,        --foree         强制删除,忽略不存在的文件,不提示确认
-i,                      在删除前需要确认
-T                    在删出超过三个文件或者递归删除前要求确认
-d,     --dir         删除空目录
-r,-R   --             递归删除目录及其内容    【】
        --help       显示此帮助信息并退出
        --version    显示版本信息并退出
       
案例:
1.删除普通文件,就是默认添加了-i参数,询问是否删除
rm  change.txt   ,删除前会提问,是否删除
2.一次性删除多个文件
rm  chaoge.txt.2  chaoge.txt.3  #删除多个文件,写入多个名字,【空格分隔】
3. 删除文件夹,必须给rm【添加-r参数】才行,默认rm只能删除文件类型
   rm -r mjj    #删除mjj文件夹以及里面内容
4.-d 参数,只能用于删除空文件夹
rm  -d  llovlinux/
5.强制删除文件,且不提示
rm -f mjj*  #强制删除以及mjj开头的文件,文件夹无法删除
6.强制删除所有文件和文件夹 【】
rm -f -r ./*   #一定要看清楚此命令,写的是否正确

【】
.当前目录  /根目录 ./  当前目录下的某内容
rm -rf / *     #强制性删除 根目录下所有内容,非常危险,严禁敲打,删除机器所有内容
 rm -rf ./*  #强制性删除,相对路径    ,当前目录下所有内容
 7.-v           参数,显示删除的过程
 [root@luffyycity opt]# rm -rfv ./* #强制性删除当前目录所有内容 ,且显示过程
 
 
 Linux帮助命令
 man 命令         --help                     info
 语法 :         
 如:man ls     如 :rm --help            如:info 命令
 
 
 Linux开关机命令
 shutdown 重启或者关机
 语法
 重启
 1. -r  #-reboot  :shutdown -r 10   或者10:30(时间)now立刻重启
 关机
 2.shutdown -h  10  十分钟后关机,0,now 立刻关机
 3.reboot 重启 poweroff 关机 int 0 切换运行级别为0 ,0 表示关机,6表示重启  logout注销退出当前用户  exit 注销快捷键ctrl+date
 
 
 ************************************************************************************************************************************************************************************************************************************************************************************************************************************
 
 
Linux的环境变量
查看Linux下的PATH环境变量
执行命令 echo $PATH
echo $PATH $符号后面跟上PATH,表示输出PATH的变量
PATH (一定是大写)这个变量是由一堆目录组成,分隔符是“:“,不同于Windows的”;“

 
 
 
 
*******************************************************************************************************************************************************************************************************************************************************************************************************************************************
 
 
 
 
                                                           【 vim的使用】
vi filename 进入命令模式,
vim 使用流程:
vim 默认机器是不安装的,需要手动安装这个工具命令
yum install  vim  -y  #通过yum软件管理工具,安装命令vim,且默认是yes,这个命令得保证机器能够上网
当vim 打开不存在的文件的时候,默认会创建文件
#语法:
1.vim 文件名 #打开文件
2.输入字母 i ,进入编辑模式,代表insert
输入字母o,在光标下一行开始编辑
3.写完代码之后,按下esc,退出编辑模式
4.此时输入冒号,进入底线命令模式,然后输入
:wq! 强制写入文件内容且退出vim,write  quit ! 强制的
:q! 不报错直接退出
5.注意输入的冒号得是英文输入法的状态

vim快捷键
vim 提供的上下左右
h向左 j向下  k向上  I右  光标移到本行开头home  移到本行末尾 end

移动光标的快捷键盘
w(e)移动到下一个单词
b 移动到上一个单词

数字0移动到行首
字符$移动到行尾
ctrl + f 下一页 ctrl+b 上一页
`. 移动光标到上一次的修改行

按下gg  移动到文章的开头 G移动到文章的结尾
按下H  移动到屏幕的开头 L移动到文章的结尾    M移动到屏幕的中间

命令模式的查找            【】
向下查找  语法: /+你要找的内容,
         如:  /love 我要查找love相关的信息,按下n跳转到下一个单词
          
向上查找    ?你要找的内容, 按下n 寻找下一个单词
*或者#      查找整个文档,匹配光标所在的所有单词,按下n查找下一处,N上一处
:n             把光标定位到文件的第n 行。
     
     
命令模式下的复制,粘贴,删除
   输入 yy  复制光标所在行
   输入 4yy 复制4行内容
   输入 p   打印粘贴的内容
   输入  dd  删除光标当前行
   输入  D   删除光标当前位置到行尾的内容
   输入  x   删除光标当前字符,向后删除
   输入   X  删除光标当前字符,向前删除        删除一行 dd ndd   删除一个单词 dw
   输入   u  撤销上一步的动作
   输入   .  重复上一次操作

 
 快捷操作
  删除光标所在位置,直到行尾内容,且进入编辑模式,输入大写C
  输入o  在当前光标的下一行开始编辑
  输入 A  快速进入行尾,且进入编辑模式
  输入 ZZ  快捷保存退出
   
 
 批量快捷操作【】
 步骤:
 1.输入ctrl+v  进入可是块模式
 2.用上下左右命令,选择你选操作的块
 3.选中块后,输入d ,删除内容
 
 快捷插入多行
 4.选中块后,输入大写的I,进行写代码
 5.按下esc两次,会自动生成多行代码
 
 行号
 :set nu 显示行号
:set nonu 关闭显示行号

注释添加与删除:
1.ctrl+v 进入可视化模式
2.移动光标上移或者下移,选中多行的开头
3.选择完毕后,按下大写I键,进入"insert"模式,输入要插入的注释符,如#
4.按下esc键,选择代码已被注释
5.选择按d 即是删除注释
 
··········································································
替换模式

命令行下按R键进入替换模式
退出
esc
替换
:s/old/new 只替换光标所在行的第一个old string
:s/old/new/g 将本行(光标)的所有old string替换为new string   g global  n代表一个行号
:%s/old/new/g 将本文中所有的old string替换为new string
:1,2s/old/new/g 替换1到2行中的old string为new string
:.,2s/old/new/g .代表光标所在行 当前行到第二行的
:2,$s/old/new/g 替换2到最后一行中的old string为new string

:!command 在vim编辑器中执行一条命令(不许要退出当前的编辑,可以在编辑器中执行命令,类似退出编辑器执行命令)
保存文档
可以用:n,mw filename 命令将第n 行到第m 行的文字存放的所指定的filename 文件中。

·································································································



vim  交换文件解决方法 ??????




【重定向符号】【】
       
        符号                                                   解释
重定向的的意思是,“将数据传到其他地方”
< 或者 <<                                                标注输入stdin,代码为0
 > 或者 >>                                                标注输出stdout,代码为1
 2>或者2>>                                                标准错误输出stderr ,代码为2
 
 
#解释 >/dev/null 2>&1 代表把所有输出信息重定向到黑洞文件
> 是重定向符号
/dev/null是黑洞文件
2>&1 代表让标准错误和标准输出一样

此命令表示将脚本执行的正常或者错误日志都重定向到/dev/null,也就是什么都不输出

>/dev/null 2>&1 等价于  1>/dev/null 2>/dev/null  等价于 &> /dev/null
 
 
 
 【案例】:
 1.读取文件内容,且写入到另一个文件夹中,覆盖写入文件内容
  cat  douyin.txt >  kuaishou.txt
 
  2.追加写入文件内容
  cat  douyin.txt  >>  kuaishou.txt
 
  3.重定向写入符
  cat < douyin.txt  #把文件中的数据,发送给cat命令去读取
 
 将文本内容拆分成多行
 xargs命令
 
 xargs  -n  4 <  shuzi.txt  #把文本内容拆成多行
  
 4.重定向追加写入符 <<
  可以结合cat命令使用
 
 
 
 
 
 
  【cat命令】 (用于看内容较少的纯文本文件)
  ---------------------------------------------------------------------------------------------
                   功能                                             说明
 查看文件内容                                         cat file.txt  (file文档,文件)
 多个文件合并                                        cat  file.txt  file.txt > file3.txt

                                                    cat >> file.txt <<EOF
非交互式编辑或追加内容                                 输入代码:
                                                    EOF

清空文件内容                                            cat/dev/null>file.txt #/dev/null是Linux系统的黑洞文件
 -----------------------------------------------------------------------------------------------
 
  参数
  用法:cat[选项]   [文件] ...
  将[文件]或标准输入组合输出到标准输出
 
  清空文件内容,不留空行 慎用【】
  1.> 文件名
  2.直接清空文件,留下一个空行
    echo >  gushi .txt
  3.清空文件内容
  cat/dev/null>file.txt     #/dev/null是Linux系统的黑洞文件
 
 
 
  -A,    --show-all                           等价于-vET
  -b,   --number-nonblank                     对非空行输出编号【】
  -e                                        等价于 -vE
  -E,    --show-ends                        每行结束处显示$
  -n,   --number                          对输出的所有行编号
  -s,    --ssqueeze-blank                   不输出多行空行
  -t                                        与-vT等价
  -T     --show-tabs                        将跳格字符显示为^I                            ??????????
  -u                                        被忽略
  -v,    --show-nonprinting                    使用^和M-引用,除了LFD和TAB之外
        --help                               显示此帮助信息并退出  
        --version                            输出版本信息并退出
        如果[文件]缺省,或者[文件]为,则读取标准输入
 
 案例:
 cat的功能参数用法
 1.查看文本内容,以及功能参数
  cat gushi.txt
 2.对非空行显示行号         所有行显示行号       
 cat -b gushi.txt            cat -n gushi.txt
 3.在每行结尾加上$符
 cat -n  -E gushi.txt
 4.减少空行数量,多个空行,减为一个
 cat  -s   gushi.txt
 
  tac命令
  tac命令查看文件结果与cat想反
 
 
 【 管道符】
  Linux提供的管道符“|”将两条命令隔开,【管道符左边命令会作为管道符右边命令的输入】
 
 常见用法:
#检查python程序是否启动
ps -ef|grep "python"

#找到/tmp目录下所有txt文件
ls /tmp|grep '.txt'

#检查nginx的端口是否存活
netstat -tunlp |grep nginx
  1.对字符串进行二次过滤
  查看gushi.txt文本的内容,且对内容进行二次过滤,找出有关know me 的行
输入:   cat gushi.txt   |  grep  "know me"
输出:   don't  you know  me
         don't  you  know me  by now

【grep 命令】        
过滤字符串的命令

【=命令和less命令】
分屏查看大文本内容的命令
 语法:
       more  文件名  #分屏显示文件内容
      
 参数:按下enter回车是下一行
        空格是向下滚蛋一个屏幕大小
        =显示当前行号
        按下q是退出more
       
#  【head和tail】
 head 命令用于查看文件开头的n行
 语法
 head -5 文件名      head 文件名 默认十行
 -c  参数,指定字符数量,显示字符数

 tail 是默认从后向前看10行,也可以指定行数  用法与head等同
 
 -f 实时刷新文件内容变化
  参数 tail -f  gushi.txt

  -F 不断打开文件,一般和-f 结合使用
 
【cut命令】
cut -在文件的每一行中提取片断
在每个文件FILE的各行中,把提取的片断显示在标注输出
语法
cut [参数]  [数值区间]  文件1
-b      以字节为单位分隔
-n      取消分隔多字节字符,与-b 一起用
-c      以字符为单位
-d      自定义分隔符,默认以tab为分隔符
-f      与-d一起使用,指定显示哪个区域
N-      第N个字节,字符或者字段 直至行尾
N-M     从第N到第M(并包括M)个字节,字符或字段
-M      从第1到第M(并包括第M)个字节,字符或字段

【案例】:
1.截取每一行的第四个字符
cut -c  4 alex.txt
2.截取 4到6个字符
cut -c  4-6 alex.txt
3,截取第5和7的字符
 cut -c 5,7  alex.txt
4.截取一个范围的字符,如第四个到结尾
cut -c  4-  alex.txt
5.截取一个范围的字符,如开头到第6个字符
cut  -c -6  alex.txt

6.指定分隔符,进行截取
cut -d ":" -f
  区域范围  alex.txt
找出第三个区域的内容【】
cut -d ":"  -f 3 alex.txt
找出开头到第三个区域的内容
cut -d ":"  -f  -3 
 
 
 【sort命令】
 sort命令将输入的文件内容按照规则【排序】,然后输出结果
 用法 :  sort  [选项] ...[文件]...
   或 :  sort  [选项]...--files0-from=F
串联排序所有指定文件并将结果写到标准输出
                                                
  -b,--ignore-leading-blanks                   忽略前导的空白区域
  -n,--numeric-sort                            根据字符串数值比较 【】
  -r,--reverse                                 逆序输出排序结果【】
  -u,--unique       去重排序       配合-c,严格校验排序;不配合-c,则只输出一次排序结果                    ??????????
  -t,--field-separator=分隔符      使用指定的分隔符代替非空格到空格的转换【】
  -k,--key=位置1[,位置2]            在位置1开始一个key,在位置2 终止(默认为行尾)
 
  案例:
  1.对文件第一个字符进行排序,默认从小到大
  sort  -n  file.txt
  2.对排序结果反转,从大到小排序
  sort -n -r file.txt
  3.对排序结果去重【】
  sort -u  file.txt
  4.指定分隔符号,指定区域进行排序,从小到大【】
  sort -n -t "." -k 4  ip.txt
 
【uniq命令】
uniq命令可以输出或者忽略文件的重复行,常与sort排序结合使用
 用法: uniq [选项]...[文件]
 从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出
 
 不附件任何选项时匹配行将在首次出现处被合并
 -c,    --count        在每行前加上表示相应行目出现次数的前缀编号
 -d,    --repeated     只输出重复的行
 -u,    --unique       只显示出现过一次的行,注意了,uniq的只出现过一次,是针对-c统计之后的结果
 
案例:
1.去除连续的重复
uniq  luffy.txt
2.结合sort使用,去重更精准
sort -n luffy.txt | uniq
3.统计每一行重复次数
sort -n luffy.txt |uniq -c
4.只找出文件中重复行,且统计出现次数【】
sort -n luffy.txt |uniq -d -c
5.找出只出现过一次的行
sort -n luffy.txt | uniq -c -u


【wc 命令】
wc 命令用于统计文件的行数,单词,字节数

-c,      --bytes打印字节数
-m,      --chars打印字符数 
-l,      --lines打印行数
-L,      --max-lines-length  打印最长行的长度
-w,      --words 打印单词数

语法: wc [参数] [文件名]

字符串结尾有一个$符,所以 echo "chaoge" |wc -m  输出7个字符数

w命令 查询几人登录机器

【tr命令】
tr命令从标准输入中【替换】,缩减或删除字符,将结果写入到标准输出
用法:tr [选项]...SET1  [SET2]
从标准输入中替换,缩减和/或删除字符,并将结果写到标准输出
字符集1:指定要转换或删除的原字符集
当执行转换操作是,必须使用参数“字符集2”;
但执行删除操作时,不需要参数“字符集2”
字符集2:指的是要转换成的目标字符集

-c 或 --complerment;取代所以不属于第一字符集的字符
-d 或 --delete;删除所有属于第一字符集的字符
-s 或 --squeeze-repeats ;把连续重复的字符以单独一个字符表示
-t 或 --truncate-set1:先删除第一字符集较第二字符集多出的字符
案例:
1.替换标准输入中的大小写
echo "my name is alex" | tr '[a-z]' '[A-Z]'
2.使用-d 删除参数
echo "my name is alex i an 999 years old"  |tr  -d 'a-z'
3.把文件当做标准输入,进行字符替换
tr 'a' 'A' < alex.txt 
4.把连续重复的字符以单独一个字符表示
echo "iii  am aaaaaaaalllllexxxxx"  | tr -s  'iaxl'  输出 i am  alex




【stat命令】
用于显示文件的状态信息,stat命令的输出比ls 命令的输出信息要更加详细
语法 sata 选项 参数

-L, --dereference   跟随链接
-f. --file-system   显示文件系统状态而非文件状态
-c, --dormat=格式   使用指定输出格式代替默认值,每用一次指定格式换一行新
    --printf=格式   类似 --format,但是会结束反斜杠转义符,不使用换行作输出结尾,如果您仍希望使用换行,可以在格式中加入 '\n'
-t  --terse         使用简洁格式输出

******************************************************************************************************************************************************************************************************************************************************************************************

【find 命令】
find 命令用来在指导目录下查找文件,任何位于参数之前的字符串都将被视为欲查找的目录名
如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件
并且将查找到的字目录和文件全部进行显示

find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

fmd处理符号链接      要查找的路径    参数        限定条件     执行动作
 find-H -L-P            PATH         options      tests       actions

语法 
1.find 查找目录和文件,语法:
 find 路径  -命令参数  [输出形式]   参数说明:路径--告诉find在哪儿找你要的东西
 

           参数                                                       解释                       【】【】【】
      pathname                   要查找的路径        
 
   options(选项)                    
 -maxdepth                   <目录层级>:设置最大目录层级
 -mindepth                   <目录层级>:设置最小目录层级  
 
     tests(模块)
  -atime                    按照文件访问access(访问时间)的时间查找,单位是天
  -ctime                    按照文件的改变change(更改时间)状态来查找文件,单位是天
  -mtime                    根据文件modify(修改时间)时间查找文件(最常用)
  -name                     按照文件名字查找,支持*?[]通配符(最常用)
  -gourp                    按照文件的所属组查找
  -perm                        按照文件的权限查找
                            按照文件的大小为n个由后缀决定的数据块,其中后缀为:b 代表512位元组的区块(如果用户没有指定后缀),则默认为b;
  -size n[cwbkMG]            c:表示字节数;k:表示kilo bytes (1024字节);w:字(2字节);M:兆字节;G:千兆字节
 
  -type                     查找某一类型的文件;b-块设备文件;d-目录;c-字符设备文件;p-管道文件;l-符号链接文件;f-普通文件;s-socket文件
  -user                     按照文件属性来查找文件
  -path                     配合-prune参数排除指定目录
     Actions模块
  -prune                    使用find命令不在指定的目录寻找
  -delete                   删除找出的文件
  -exec或 -ok               对匹配的文件执行响应的shell命令
  -print                    对匹配的结果标准输出
 
OPERATORS      
      !                      取反
-a -o                         取交集,并集,作用类似&&和\

案例:                                                            【】
1.根据名字查找
find -name "文件名"  -delete (找出且删除)


 Unix/linux 文件系统每个文件都有三张时间戳:
访问时间(-atime/天 ,-amin/分钟):用户最近访问时间(文件修改了,还未被读取过,则不变)
修改时间(-mtime,-mmin):文件最后一次修改时间(数据变动)
变化时间(-ctime,-cmin):文件数据元(例如权限)最后一次修改时间
备注:文件任何数据改变,change变化,无论元数据变动,或是对文件mv,cp等
       文件内容被修改时,modify 和change更新
       当change更新后,第一次访问该文件(cat,less),access time首次更新,之后则不会
touch -a :仅更新Access time (同时更新change为current time)
touch -m :仅更新modify time(同时更新change为current time)

2.find根据修改时间查找文件
一天以内,被访问access过的文件        一天以内,内容变化的文件           恰好在七天内被访问过的文件
find . -atime  -1                            find . -mtime -1                        find / -maxdepth  3 -type f -atime 7
时间说明:-1 一天以内  1 恰好一天  +1 超过一天 (一天以前)

find反向查找
find  . -maxdepth 1 -type d                 #在当前目录下 查找最大深度为1 文件夹类型的数据
find  . -maxdepth 1 ! -type d                 #加上感叹号,后面接条件,代表取除了文件夹以外类型

根据权限查找
 find . -maxdepth 2 -perm 755 -type f    #寻找权限类型是755 的文件
 
按照文件大小查
 find  . -maxdepth 2 -size +10M    #寻找超过10M大小的文件
 

 
 
 
 查找文件时忽略目录                                   
 find .-path "./conf.d" -prune -o -name "*.conf" -print
 
根据用户组匹配


使用-exec或是-ok再次处理  -ok比-exec更安全,存在用户提示确认     【】
# 找出以.txt结尾的文件后执行删除动作且确认
   find  /opt/luffy_boy  -type  f -name  "*.txt" -ok rm {} \;      【】【】     
   备注
  -exec跟着shell命令,结尾必须以;分号结束,考虑系统差异,加上转义符\;
    {}作用是替代find查阅到的结果 {}前后的有空格
   
#找到目录中所有.txt 文件,且将查询结果写入到all.txt文件中
 find ./mydj2/ -type  f - name "*.txt" -exec cat {} \; > all.txt
 
#把30天以前的日志,移到old文件夹中
 find . -type f -mtime +30 -name "*.log" -exec  cp {} old  \;
 
 【xargs命令 】
 xargs 又称管道命令,构造参数等
 是给命令传达参数的一个过滤器,也是组合多个命令的一个工具,它吧一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理
 简单来说就是 把其他命令给他的数据,传递给它后面的命令作为参数
 
 -d 为输入指定一个定制的分隔符,默认是空格
 -i 用{}代替传递的数据
 -I string用string来代替传递的数据-n[数字]设置每次传递几行数据
 -n 选项限制单个命令行的参数个数
 -t 显示执行详情
 -p 交互模式
 -P n 允许的最大线程数量为n
 -s[大小]设置传递参数的最大字节数(小于131072字节)
 -x[大小]设置的最大长度结束 xargs命令执行
 -0,--null项用null分割,而不是空白,禁用引号和反斜杠处理
 
 案例:
  把多行输入变单行   xargs < mjj,xtx
 
 -n参数限制没行输出个数 xargs -n [+个数] < mjj.txt  #每行最多输出三个
 
 自定义分割符 -d参数
  echo "alex ,alex,alex,alex,alex,"  | xargs -d ","  
  alex alex alex alex alex
 
 #定义分隔符后,限制每行参数个数
 echo "alex,alex,alex,alex,alex,"  |xargs -d ","  -n  [+个数]
 alex alex
 alex alex
 alex
 
 -i参数的用法,用{}替换传递的数据
 -I 参数用法,用string代替数字
 
  #找到当前目录所有的.txt文件,然后拷贝到其他目录下
   find . -name "*.txt" | xargs -i  cp {}  heihei/
   find . -name "*.txt" | xargs  -I data cp data  heihei/
  
   #找到当前目录所有的txt文件,然后删除
   find . -name "*.txt" |xargs -i rm  -rf {}
  
   利用反斜杆转义空格,创建携带空格的文件
  
  
  
   文件类型属性介绍
 file命令 
    可以通过ls -F给文件结尾加上特殊标识
    
     格式                                              类型
 ls -l 看第一个字符
  -                                      普通文件regular file   (二进制,图片,日志,txt等)
  d                                      文件夹类型directory
  b                                       块设备文件,/dev/sda1,硬盘,光驱
  c                                       设备文件,终端/dev/tty1,网络串口文件
  s                                        套接字文件,进程间通信(socket)文件
  p                                        管道文件pipe
  l                                        连接文件;link类型,快捷方式  (ln命令创建)
 
 
  file命令 显示文件的类型
  which命令 查找PATH环境变量中的文件,Linux内置命令不在path中   如:which python
  whereis命令用来定位指令的二进制程序,源代码文件和man手册页等相关文件的路径
  
  
 
 
 
 【tar 命令】 (在Linux系统里,可以实现对多个文件进行,压缩,打包,解包)
 tar  参数   你要压缩的文件名 你要压缩什么内容
 
 语法:
 -A 或 --catenate:新增文件到已存在的备份文件
 -B 设置区块大小;
 -c 或 --create:建立新的备份文件;
 -C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项【】
 -d 记录文件的差别;
 -x 或--extract或get;从备份文件中还原文件;
 -t 或--list:列出备份文件的内容
 -z 或者--gzip或--ungzip:通过gzip指令处理备份文件
 -Z 或者--compress或--uncompress,通过compress指令处理备份文件
 -f <备份文件>或--file=<备份文件>:指定备份文件;注意 f 必须放最后 【】
 -v 或--verbose:显示指令执行过程
 -r 添加文件到已经压缩的文件
 -u 添加改变了和现有的文件到已经存在的压缩文件
 -j 支持bzip2解压文件
 -l 文件系统边界设置
 -k 保留原有文件不覆盖
 -m 保留文件不被覆盖
 -w  确认压缩文件的正确性
 -p或--same-permissions;用原来的文件权限还原文件
 -P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”;不建议使用
 -N<日期格式> 或--newer=<日期时间>;只将较指定日期更新的文件保存到备份文件里
 --exclude=<范本样式>:排除符合范本样式的文件
 -h --dereference 跟踪符号链接,将它们所指向的文件档并输出
 
 案例:
 仅打包,不压缩
 #tar 参数   包裹文件名 需要打包的文件
 tar -cvf   alltmp.tar  ./*  
  
 打包后且用gzip命令压缩,节省磁盘空间
 tar -zcvf alltmp.tar  ./*
  【注】
*f参数必须写在最后,后面紧跟压缩文件名
*tar命令仅打包,习惯用.tar作为后缀
*tar命令加上z参数,文件以.tar.gz表示
 
 列出tar包内的文件
#根据tar包文件后缀,决定是否添加z参数,调用gzip
tar -ztvf alltmp2.tar.gz

拆开tar包
tar -xf alltmp.tar

拆开tar压缩包
tar -zxvf ../alltmp2.tar.gz  ./

拆除tar包中部分文件
#正常解压命令,单独加上你要拆除的文件名,指定路径
#先看下tar包中有什么内容,再指定文件解压
tar -ztcf ../alltmp2.tar.gz
tar -zxvf  ../alltmp2.tar.gz    ./kaixin

 指定目录解tar包
[root@luffycity tmp]# tar -xf alltmp.tar -C /opt/data/

排除文件解包
#注意--exclude 跟着文件名或是文件夹,不得加斜杠,排除多个文件夹,就写多个--exclude
 tar -zxvf  ../alltmp2.tar.gz  --exclude data

 打包链接文件
-h 参数能够保证,打包的不仅仅是个快捷方式,而是找到源文件  tar -hzcf test_link2 ./alex .txt
 
 打包/etc下所有普通文件                                                【 ????????】
  tar -zcvf etc.tar.tgz ~find  /etc  -type f~
  tar-tzvf etc.tgz
 
 
  【gzip】 tar用于打包,gzip用于压缩
  gzip通过压缩算法lempel-ziv算法(lz77)将文件压缩为较小文件,节省60%以上的存储空间,以及网络传输速率
 
 gzip (选项)(参数)
 -a或--ascii:使用ASCII文字模式
 -c或--stdout或--to-stoudt  把解压后的文件输出到标准输出设备
 -d或--decompress或uncompress;解开压缩文件                                【】
 -f或--force:强行压缩文件,不理会文件名或硬连接是否存在以及该文件是否为符号连接
 -h    在线帮助
 -l或--list;列出压缩文件的相关信息                            【】
 -L或--license:列出版本与版权信息
 -n或--name:压缩文件时,不保存原来的文件名称及时间戳记
 -N或--name:压缩文件时,保存原来的文件名称及时间戳记
 -q或--quiet,不显示警告信息;
 -r或--recursive;递归处理,将指定目录下的所有文件及子目录一并处理
 -s或<压缩字尾字符串>或----suffix<压缩字尾字符串>;更改压缩字尾字符串
 -t或--test;测试压缩文件是否正确无误
 -v或--verbose显示指令执行过程
 -V或--version;显示版本信息
 -<压缩效率>:压缩效率是 一个介于1-9 的数值,预设值为6,指定越大的数值压缩效率就会越高
 --best:此参数的效果和指定“-9”的参数相同
 --fast:此参数的效果和指定“-1”参数相同
 案例:
 #zip无法压缩文件夹,必须先tar对文件夹打包后,才可以gzip压缩
 
 gzip *. html  #gzip 压缩,解压都会删除源文件
 
列出压缩文件中的信息
gzip -l *.gz  #不解压缩显示压缩文件内信息,以及压缩率

解压缩且显示过程               解压缩
 gzip -dv *.gz              gzip -d*.gz

压缩保留源文件
#-c参数
gzip -c alltmp.tar  > alltmp.tar.gz

gzip 套件提供了许多方便的工具命令,可以直接操作压缩文件内容
*zcat ,直接读取压缩文件内容 
*zgrep
*zless
*zdiff

【zip命令】
zip命令是一个应用广泛的跨平台压缩工具,压缩文件的后缀为zip文件,还可以压缩文件夹
语法:
zip 压缩文件名  要压缩的内容

-A 自动解压文件
-c 给压缩文件加注释
-d 删除文件夹
-f 修复损坏文件
-k 兼容DOS
-m 压缩完毕后,删除源文件【】
-q 运行时不显示信息处理信息
-r 处理指定目录和指定目录下的使用子目录
-v 显示信息的处理信息
-x "文件列表"压缩时排除文件列表中指定的文件
-y 保留符号链接
-b<目录>指定压缩到的目录
-i<格式>匹配格式进行压缩
-L 显示版权信息
-t<日期>指定压缩文件的日期
-<压缩率>指定压缩率

案例:
#压缩当期目录下所有内容为alltmp.zip文件
zip alltmp.zip ./*

 压缩多个文件夹
 zip -r data.zip ./data ./data2
 
 【unzip命令用于解压】
 参数
 -l:显示压缩文件内所包含的文件
 -d<目录>指定文件解压缩后要储存的目录
 
 案例:
 #查看压缩文件内容
 unzip -l data.zip
 
 解压缩文件内容
 unzip data.zip

【date命令】
date命令用于显示当前系统时间,或者修改系统时间
语法: date 参数 时间格式

参数
-d,--date=STRING
    显示有STRING指定的时间,而不是当前时间
-s  --set=STRING 根据string设置时间
 -u.--utc,--universal 显示或设置全球时间(格林威治时间)
 
时间格式   ???


shred命令
用法:shred[选项]...文件...
多次覆盖文件,使得即使是昂贵的硬件探测仪器也难以将数据复原
-u ,--remove 覆盖后截断并删除文件
shred heihei.txt  随机覆盖文件内容,不删除源文件

案例:
彻底粉碎且删除文件
shred -u heihei.txt
 

                                                    【权限篇】

linux 系统的超级用户 ,uid为0,称之为root
  普通用户是有root创建,uid号码从1000开始,慢慢累积
  系统中的虚拟用户,uid在1-999之间,由操作系统创建
 
 shell解释器,解释的过程
 echo "hello world"  是通过解释器,进行翻译,在传达给操作系统
 
 
 用户的配置文件
 /etc/passwd,新创建的用户,信息会追加到这个文件结尾
 
 useradd  用户名 #创建普通用户,创建用户的同时,会创建一个用户组
 用户指定了/bin/bash解释器,代表可以登录机器,进行命令翻译
 /sbin/nologin  禁止登录机器

 /etc/shadow #存放用户加密后的密码【】
 /etc/group  #存放用户组信息

 【 用户管理的命令 】
 
        命令                          作用
useradd                     创建用户
usermod                     修改用户信息
userdel                     删除用户及配置文件
passwd                        更改用户密码
chpasswd                     批量更新用户密码
chage                           修改用户密码属性
id                             查询用户uid,gid组信息
su                           切换用户
sudo                           用root身份执行命令
visudo                       编辑sudoers配置文件

用户创建家目录过程
1.命令创建
useradd  用户名    #.bash_profile  用户个人的配置文件

2.   /etc/skel 此目录存放新用户需要的基础环境变量文件,添加新用户时,系统把/etc/ske1目录下的内容复制到创建的用户家目录 以点开头是隐藏文件【】
                                                                        cp /etc/skel/.bash*  /home/yuchao/                   
3.修改权限拥有者

 【useradd命令】
 useradd命令用于Linux中创建的新的系统用户
 useradd可用于建立用户账号,账号建好之后,再用passwd设定账户的密码,而可用userdel删除账号
 使用useradd指令所建立的账号,实际上是保存在/etc/passwd文本文件中
 
参数:
 -c<备注>:加上备注文字。备注文字会保持在passwd的备注栏位中
 -d<登入目录>:指定用户登入时的起始目录
 -D:变更预设值
 -e<有效期限>:指定账号的有效期限
 -f<缓冲天数>指定在密码过期后多少天即关闭该账号
 -g<群组>:指定用户所属的群组
 -G<群组>:指定用户所属的附加群组
 -m:自动建立用户的登入目录
 -M:不自动建立用户的登入目录
 -n:取消建立以用户名称为名的群组
 -r:建立系统账号
 -s<shell>:指定用户登入后所使用的shell
 -u:指定用户id
 passwd + 用户名 更改密码 【】
 
 创建用户流程
 1.useradd 用户名
 2.系统读取/etc/login.defs(用户定义文件),和/etc/default/useradd (用户默认配置文件)两文件中定义的规则和创建新用户
 3.向/etc/passwd和/etc/group文件中添加用户和组信息,向/etc/shadow和/etc/gshadow中添加密码信息
 4.根据/etc/default/useradd文件中配置的信息创建用户家目录
 5.把/etc/skel中所有的文件复制到新用户加目录中
 
 文件/etc/login.defs
 
 [root@pylinux ~]# grep -v "^#" /etc/login.defs |grep -v "^$"
MAIL_DIR    /var/spool/mail        #用户的邮件存放位置
PASS_MAX_DAYS    99999                    #密码最长使用天数
PASS_MIN_DAYS    0                            #更换密码最短时间
PASS_MIN_LEN    8                        #密码最小长度
PASS_WARN_AGE    7                            #密码失效前几天开始报警
UID_MIN                  1000        #UID开始位置
UID_MAX                 60000        #UID结束位置
SYS_UID_MIN               201       
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME    yes                    #是否创建家目录
UMASK           077            #家目录的umask值
USERGROUPS_ENAB yes
ENCRYPT_METHOD MD5            #密码加密算法
MD5_CRYPT_ENAB yes
 
 
 文件/etc/default/useradd
 [root@pylinux ~]# grep -v "^#" /etc/default/useradd | grep -v "^$"
GROUP=100       
HOME=/home                    #在/home目录下创建家目录
INACTIVE=-1                    #开启用户过期
EXPIRE=                            #用户终止日期
SHELL=/bin/bash            #新用户默认解释器
SKEL=/etc/skel            #用户环境变量文件存放目录
CREATE_MAIL_SPOOL=yes
 
 
 用户且指定uid和属组【】
 1.创建用户组
 groupadd -g 801 old
 
 2.创建新用户
 useradd -g old  -u 888 oldchao
 
 3.检查用户信息
 id oldchao
 
 
 -M -s参数用法【】
 #创建用户禁止登录,且不创建家目录
 useradd -M -s /sbin/nolongin oldyu
grep -w (过滤 -w必须全字符串匹配)oldyu /etc/passwd
ls /home/  #检查有没有oldyu

 
 多个参数用法,指定用户信息               ??????
 [root@luffycity ~]# useradd -u 789 -s /bin/sh -c learn_linux -G root,old -e "2019/10/18" -f 2 -d /tmp/luffychao luffychao

[root@luffycity ~]# id luffychao    #检查用户信息
uid=789(luffychao) gid=1004(luffychao) groups=1004(luffychao),0(root),801(old)
 
 
 
 
 -D参数用来修改配置文件/etc/deffault/useradd文件的默认值        【】
 useradd -D 参数选项
  -e default_expire_date  用户停止日期
  -s default_shell   用户登录后使用的解释器
 
 
 
 
 -D使用案例
 #检查默认创建用户的登录解释器
 grep -i "shell" /etc/default/useradd
 
 #修改默认解释为禁止登录
 useradd -D -s /sbin/nolongin 
 grep -i "shell" /etc/default/useradd
 
 
 grep -i "shell" /etc/default/useradd     #检查配置文件参数 
 
 
 【usermod】
 usermode 命令用于修改系统已存在的用户信息,只能修改未使用中的用户
 语法 :usermod(选项)(参数)
 
-c<备注>:修改用户账号的备注文字
-d<登入目录>:修改用户登入时的目录
-e(有效期限):修改账号的有效期限
-f(缓冲天数):修改在密码过期后多少天即关闭该账号
-g(群组)修改用户所属的群组
-G(群组)修改用户所属的附加群组
-l(账户名称)修改用户账号名称
-L 锁定用户密码,使密码无效
-U 解除密码锁定
-u(uid)修改用户ID
-s(shell) 修改 用户登入后所使用的shell


 
 【userdel】
 删除用户与相关文件
 建议注释/etc/passwd用户信息而非直接删除用户
 语法:
 userdel (选项 )(参数)
 
 -f:强删除用户,即使用户当前已登录
 -r:删除用户的同时,删除与用户相关的所有文件
  
   案例:
  userdel oldyu  #保留家用户
  userdel  -rf  oldchao   #强制删除与用户相关的所有文件
 
  
 【groupadd  命令】
 groupadd命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中
  语法:
  groupadd - 建立新群组
  groupadd [ -ggid [ -o ]] [ -r ] [ -f ] group [[ ]]

选项
-g:指定新建工作组的id;
-r:创建系统工作组,系统工作组的组ID小于500;
-K:覆盖配置文件“/ect/login.defs”;
-o:允许添加组ID号不唯一的工作组。
 
查看用户组信息
cat  /etc/group 
  
 案例
   groupadd -g 801 old
 
 【groupdel 命令】 删除用户组 例:groupdel 组名

【passwd命令】
passwd命令修改用户密码和过期时间等,root可以改普通用户,反之不可以
 passwd (选项)(参数)
  
   -d:删除密码,仅有系统管理者才能使用
   -f:强制执行
   -k:设置只有在密码过期失效后,方能更新
   -l:锁住密码
   -s:列出密码的相关信息,仅有系统管理者才能使用
   -u;解开已上锁的账户
   -i;密码过期多少天后禁用账户
   -x:设置x天后可以修改密码
   -n;设置n天内不得更改密码
   -e:密码立即过期,强制用户修改密码
   -w;用户在密码过期前收到警告信息的天数
  
   案例
   改自己密码                修改普通用户密码            
   passwd                        passwd 用户名
  
   列出用户密码信息
   passwd -s 用户名
  
   一条命令设置密码 企业常用【】
   echo "123123" |passwd  --stdin 用户名    #--stdin从标准输入获取123123
  
   passwd实际场景
   7天内用户不得改密码,60天后可以修改,过期前10天通知用户,过期30天后禁止用户登录
   passwd -n 7 -x 60 -w 10 -i 30  用户名
    列出用户密码信息 passwd -s  用户名
   
    批量更新密码命令
    1.查看当前机器的用户信息                2.批量改密码,ctrl+d 结束输入
    tail /etc/passwd                             chpasswd yu:123  py:456 ...
  
  
 用户查询相关命令
【id 命令 】
id命令用于检查用户和组以及对应的UID,GID等信息
 例uid: 显示id -u 用户名     显示 gid: id -g 用户名   
       显示用户名id -un 用户名;      显示组名 id -gu 用户名
  
   whoami,who,w,last,lastlong
  
  w 命令显示当前以登录的用户:
 
 [root@pylinux ~]# w
 04:15:01 up 15 days, 18:03,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    122.71.x5.xx     04:05    5.00s  0.07s  0.00s w

1.显示当前系统时间、系统从启动到运行的时间、系统运行中的用户数量和平均负载(1、5、15分钟平均负载)
2.第二行信息
user:用户名
tty:用户使用的终端号
from:表示用户从哪来,远程主机的ip信息
login:用户登录的时间和日期
IDLE:显示终端空闲时间
JCPU:该终端所有进程以及子进程使用系统的总时间
PCPU:活动进程使用的系统时间
WHAT:用户执行的进程名称

who
[root@pylinux ~]# who
root     pts/0        2018-07-12 04:05 (122.71.x5.xx)

名称      用户终端            用户登录的系统时间  从哪来的机器ip
 
 
 last 命令显示已登录用户列表和登录时间
  #last命令显示已登录的用户列表和登录时间
[root@pylinux ~]# last
root     pts/0        122.71.x5.xx     Thu Jul 12 04:05   still logged in
root     pts/0        122.71.x5.xx     Thu Jul 12 04:02 - 04:05  (00:02)
root     pts/1        122.71.x5.xx     Wed Jul 11 16:56 - 16:57  (00:00)

wtmp begins Sun Jul  8 06:23:25 2018
  
 lsatlog命令显示当前机器所有用户最近的登录信息 
  
  lastlog命令显示当前机器所有用户最近的登录信息

[root@pylinux ~]# lastlog
用户名           端口     来自             最后登陆时间
root             pts/0    122.71.65.73     四 7月 12 04:05:09 +0800 2018
bin                                        **从未登录过**

yu               pts/0                     四 7月 12 04:05:51 +0800 2018
epmd                                       **从未登录过**
rabbitmq                                   日 9月 29 03:42:01 +0800 2019
py               pts/0                     四 7月 12 04:06:02 +0800 2018
testyu                                     **从未登录过**
  
  
  Linux用户身份切换命令【】
  
  su命令
  
 语法
su(选项)(参数)
选项
-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;
-f或——fast:适用于csh与tsch,使shell不用去读取启动文件;
-l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;
-m,-p或--preserve-environment:变更身份时,不要变更环境变量;
-s<shell>或--shell=<shell>:指定要执行的shell;
--help:显示帮助;
--version;显示版本信息。
 
 visudo命令
 visudo命令 用于编辑/etc/sudoers文件,且提供语法检查,用于配置sudo命令
 
 给chaoge用户配置sudo使用权【】【】
 
 1.直接输入visudo命令,相当于打开vim /etc/sudoers
 
 2.添加你想执行的sudo命令用户
 
 3.保存退出,使用vim/vi的模式,此时已经可以用chaoge用户使用sudo命令
 
 
 普通用户不需要root密码即可用root权限执行命令
 
 语法
sudo(选项)(参数)
选项
-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s<shell>:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。
 
 
                【【通配符】】
    符号                                            作用
 
 *                                      匹配任意,0或多个字符,字符串
 ?                                        匹配任意1个字符,有且只有一个字符
 符号集合                               匹配一堆文件或文本
[abcd]                                     匹配abcd中任意一个字符,,abcd可以是不连续任意字符
[a-z]                                   匹配a到z之间任意一个字符,要求联系字符,也可以连续数字,匹配[1-9] 
[!abcd]                                 不匹配括号中任意一个字符,也可以书写[!a-d]
[^abcd]                                        同上
                特殊通配符
 
 [[:upper:]]                            所有大写字母
 [[:lower:]]                            所有小写字母
 [[:alpha:]]                            所有字母
 [[:digit:]]                            所有数字
 [[:alnumr:]]                            所有数字和字母
 [[:space:]]                            所有空白符号
 [[:punct:]]                            所有标点符号                           
                   
                    特殊引号  (在Linux系统中,单引号,双引号可以用于表示字符串)                               

单引号''                                所见即所得,强引用,单引号中内容会原样输出
双引号""                                弱引用,能过识别各种特殊符号,变量,转义符,解析后再输出结果
没有引号                                一般连续字符串,数字,路径可以省略双引号,遇见特殊字符,空格,变量等必须加上双引号
反引``                                      常用于引用命令结果,同于$(命令)
                    其他特殊符号                               
;                                        分号,命令分隔符或者是结束符
#                                       1.文件中的注释内容 2.root身份提示符
|                                        管道符,传递命令结果给下一命令
$                                        1.$变量,取出变量的值 2.普通用户身份提示符
\                                        转义符,将特殊含义的字符还原成普通字符
{}                                          1.生成系列 2.引用变量作为变量与普通字符的分隔    利用{}快速备份     例:    [root@pylinux tmp]# cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.ori}
               
                   
                    逻辑操作符 (逻辑操作符既可以在Linux系统中直接用,也可以在bash脚本中用)
命令                                                    解释
&&                                        前一个命令成功,再执行下一个命令
||                                      前一个命令失败了,再执行下一个命令                                                   
!                                        1.在bash中取反 2.在vim中强制性 3.历史命令中!ls找出最近一次以ls开头的命令           
&                                        后台执行 加在一条完整命令后面                                                       
                                                   
                                                   
                              Linux文件权限【】

r,read可读,可以用cat等命令查看          r    可以对此目录执行ls列出所有文件
w,write写入,可以编辑删除这个文件       w    可以在这个目录创建文件
x,executable  ,可以执行                  x    可以cd进入这个目录,或者查看详细信息
- , 没有权限

文件权限与数字化转换                         umask 002

rwx权限表示      严格顺序rwx
r read 读取 4
w  write 写  2
x  execute  执行 1
-           无权限  0       
       
                    文件权限与数字转化
格式:    chmod  777 file.txt   
                                   




【chmod】 change mode
chmod命令用来变革文件或目录的权限
符号链接的权限无法改变,如果用户对符号链接修改权限,其改变会作用在被链接的原始文件

权限范围
操作对象  u(user)文件属主权限 g(group)同组用户权限 o(other)其他用户权限 a(all)所有用户包括以上三种
权限设定  +增加权限;-取消权限;=唯一设定权限
权限类别  r读权限,w写权限,x执行权限 ,s文件属主和组id,i给文件加锁,使其他用户无法访问


案例:
设置data目录下所有资料,任何人可读取
[root@luffycity tmp]# chmod -R a+r data/               -R递归

rwx对于目录的权限
 权限                     效果
 r             可以浏览目录下的内容,如ls;
                没有x无法进入目录
                可以看到目录下文件名,无法访问文件信息(内容,权限)

w               有x权限前提下,文件夹有增加,删除,修改文件夹中文件名的权限

x               进入文件夹,如cd
                没有r无法查看列表
                没有w无法创建文件
               
【chown命令】
修改文件属主,属组信息                       
语法:
chown  alex  test,txt  #文件属于alex
chown :组  test.txt    #修改文件属组
chown  用户:组        #修改
参数:
      -R,--recursive   递归处理所有的文件及子目录
      -v,verbose       为处理的所有文件显示诊断信息     
                       
   
    【chgrp命令】
chgrp命令用来改变文件或目录所属的用户组
    其中组名可以是用户的组id,也可以是用户的组名

-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;


chgrp -R  alex  /data   #把/data目录下所有文件的属组改为alex

【umask】命令
    umask,命令用来限制新文件权限的掩码
也称之为遮罩码,防止文件,文件夹创建的时候权限过大
当新文件被创建时,其最初的权限有五年级创建掩码决定
每次用户注册进入系统时,umask命令都被执行并自动设置掩码改变默认值,新的权限会把旧的覆盖
 umask默认配置在/etc/profile 61-64行   
umask值就是指“Linux文件的默认属性需要减掉的权限”。
比如Linux普通文件的最大默认属性是666,目录文件的最大属性是777。但是我们不想要用户在新建立文件时,文件的属性是666或777,那么我们就要设置umask值。
Linux系统预置的umask值是022,那么用户在新建立普通文件时,普通文件的属性就是666-022=644,新建立目录文件时,目录文件的属性就是777-022=755。                
                       
计算umask文件权限
默认的文件、文件夹权限,减去umaks的值等于最终的权限值
文件最大777  文件夹最大777   

默认umask值,root与普通用户不一样
root用户umask 0022  普通用户umask 0002   
   
   
      语法参数

-S:以字符的形势显示当前的掩码。
-p:带umask开头以数字的形势显示当前掩码                   
                       
【chattr命令】
chattr命令用于更改文件的扩展属性,比chmod更改的rwx权限更底层                       
                       
    参数

 a:只能向文件中添加数据,不得删除
-R:递归更改目录属性
-V:显示命令执行过程

模式
+ 增加参数
- 移除参数
= 更新为指定参数
A 不让系统修改文件最后访问时间
a 只能追加文件数据,不得删除
i 文件不能被删除、改名、修改内容                   
                       
    【lsattr】   
lsattr命令用于查看文件的第二扩展文件系统属性,结合chattr一起用   
                       
-R
    递归地列出目录以及其下内容的属性.
-V
    显示程序版本.
-a
    列出目录中的所有文件,包括以`.'开头的文件的属性.
-d
    以列出其它文件的方式那样列出目录的属性, 而不列出其下的内容.
-v
    显示文件版本.                       
                       
案例:               
[root@localhost ~]# chattr +i nginx.conf                     #设置该文件不能进行任何形势的修改

[root@localhost ~]# mv nginx.conf nginx.conf_bak
mv: 无法将"nginx.conf" 移动至"nginx.conf_bak": 不允许的操作

[root@localhost ~]# lsattr nginx.conf                       #查看chattr设置的权限
----i--------e- nginx.conf

[root@localhost ~]# chattr -i nginx.conf                    #取消-i的权限设置
[root@localhost ~]# lsattr nginx.conf                      #查看chattr设置的权限
-------------e- nginx.conf                       
                                                   
                       
                                                   
 
 

posted on 2020-10-07 14:00  知我几分20728  阅读(396)  评论(0)    收藏  举报

导航