1.文件和目录

根目录:文件的起点,可以理解为Windows 中的C盘
  Linux 的根目录是 '/'(只有一个根目录)

2.常用命令

1)pwd  查看当前所在目录路径(print work directory)
  2)cd 切换路径(change directory)  使用的时候后面跟上要切换的路径。 cd 空格 路径
  3)ls 查看当前路径下所有的目录和文件(list files)
        ls -al
        ll
  4)mkdir 创建文件夹(make directory)
  5)touch 创建文件   文件是不能cd的
        创建文件或修改文件时间
        用命令touch创建一个与源文件同名文件test,用法为touch test
        源文件为test,现在要创建与源文件同名的test文件,比较发现前后test文件除了时间改变,其他权限属性都没有更改。这是因为新的test文件把源文件覆盖,文件被改动了,导致文件时间改变了,但是内容不会变。
  6)绝对路径和相对路径
        绝对路径:路径路径是以根目录开始,一层一层往下找路径。
        . 当前目录
        .. 返回上级目录
  7)删除 rm(remove file)           rmdir(删除空目录)
        默认 rm 只能删除文件。 使用方式 rm 文件路径
        -f, --force 强制删除文件,不会弹出确认提示。
        -r 删除目录
        -v 显示被删除的文件
  8)文件重命名 mv(move file)
        如果两个文件都存在,会询问会不会覆盖(注意)
        mv 要修改的文件或文件夹   修改后的文件或文件夹
        文件剪切 mv
        注意: 文件夹不能剪切到文件中去。
  9)复制文件  cp(cp file)
        -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件
        1.cp 文件名 
        2.cp -r 源目录名 目录名
  10)查看文件
        cat  文件路径(concatenate  连接)      -n 或 --number:由 1 开始对所有输出的行数编号。
        more 文件路径 (有进度)
              more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似)
              +num 从第 num 行开始显示:
              eg:从第 20 行开始显示 testfile 之文档内容。      more +20 testfile
        less 文件路径      
              less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。less也是按页显示,空格换页,可以向看过的内容自由浏览。
        head -n 2 文件路径  查看文件的前2行内容。      head 文件路径   默认显示文件前10行
        tail -n 2 文件路径 查看文件的最后2行内容。      tail 文件路径   默认显示文件后10行
              注意 tail 还可以追踪文件,使用 -f 参数(查日志常用)
                    tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
                    tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
                    tail -f virtio_blk_affinity.log====》此命令显示 virtio_blk_affinity.log 文件的最后 10 行。当将某些行添加至 virtio_blk_affinity.log 文件时,tail 命令会继续显示这些行。 显示一直继续,直到您按下(Ctrl-C)组合键停止显示。
  11)find 搜索文件----是查文件名的。 比如: find / -name *lijin*(查找文件带有lijin的文件名)
        如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。 (直接打find,不加任何参数,会显示目录下所有子目录和文件,很多)
        -name  文件名(通过*可以模糊查询) : 文件名称符合 name 的文件,*表示所有。
        find后面要跟路径,视情况而定
  数据库方式查找 locate
        1. updatedb 更新本地数据索引
        2. locate 搜索内容即可。
        locate与find 不同: find 是去硬盘找,locate 只在/var/lib/slocate资料库中找。
        locate的速度比find快,它并不是真的查找,而是查数据库,一般文件数据库在/var/lib/yum/yumdb中,所以locate的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库。
  12)查找可执行文件路径 which
        如:which python

3.进阶命令

1)Vi,Vim编辑器
  使用vi 命令可以打开一个文件,如果这个存在,可以看到文件中的内容,如果文件不存在,那么会自动创建一个新文件。
        vi filename
  进入到文件,现在还不能编辑。现在【一般命令模式】
        • dd  删除光标所在行内容      
        • u 撤销操作
        • x 删除当前光标所在位置的字符
        • yy 复制1行内容
        • p 将复制的内容粘贴到下一行
        • ctrl+r 重做
        • :set nu 显示行号
        • nG  n为具体的数字, 跳转到第n行
        在文件中查找:/要查找的内容
        查找并替换      :1,$s/ram1/hello/g
              • 1,$s 从第1行开始到最后一行  $表示最后1行
              • /ram1/hello 查找ram1 替换为hello
              • /g 全局搜索
  进入到【编辑模式】 按下 【a】或者【i】    (append,insert)
        在编辑模式下可以输入内容。
  进入到【命令模式】,按下【ESC】 (insert状态消失)
        • :wq 保存并退出。
        • :q! 强制退出不保存。
  2)Linux 中的下载 
        wget(下载文件的地址)
        使用方式:wget downloadurl   # downloadurl 文件的下载地址
        比如下载 禅道      wget http://dl.cnezsoft.com/zentao/12.3/ZenTaoPMS.12.3.stable.zbox_old.64.tar.gz
  文件解压和压缩 
        Linux中常见的压缩文件tar, tar.gz 格式。
        tar 创建归档文件和解压归档文件。
        最常用的打包命令是 tar,使用 tar 程序打出来的包我们常称为 tar 包,tar 包文件的命令通常都是以 .tar 结尾的。生成 tar 包后,就可以用其它的程序来进行压缩了,所以首先就来讲讲 tar 命令的基本用法。
        创建归档文件      -c 是表示产生新的包,-f 指定包的文件名
          tar -cf 000.tar 01.log 02.log
              将01.log, 02.log文件存放到 000.tar 归档文件
              tar -cf all.tar *.jpg      这条命令是将所有 .jpg 的文件打成一个名为 all.tar 的包
        查看归档文件中的内容
              -t  列出文件的意思
              -v 显示所有过程(会显示文件细节)
  解压tar文件
        tar -xf 000.tar   -x解压      将000.tar文件解压。
  gzip 压缩文件
        gzip压缩tar文件。
        gzip 000.tar  ——————压缩之后,就是.gz格式的压缩包了
  unzip 解压zip文件(压缩文件后缀名为.zip)
        unzip不是Linux自带的命令,需要我们安装一下这个命令,安装方式为:yum install unzip -y
        解压zip文件命令
        unzip zip文件路径。
  3)文件上传与下载
        从Windows上传文件到Linux
              1. 安装命令 lszrz
                    yum install lrzsz -y
                    上传本地(windows)文件到服务器
                    rz命令 可以上传 (rz 命令只能在xshell 中使用):rz打了之后,会跳转到选择需要上传的文件界面
                    rz命令本地(自己的windows)上传文件到服务器:
                    从服务器下载文件到本地(windows)
                    sz 要下载的文件路径 ————这个命令打完之后,会让你选择该文件存储到本地文件的位置
              • scp:lrzsz只能用在xshell中应用,scp可以在cmd命令行执行
                Linux scp 命令用于 Linux 之间复制文件和目录。
                scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
                scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。
                上传:scp 上传文件的本地路径 root@服务器ip地址:/tmp   (有个冒号,一定要注意),是固定写法。            
                下载:
                      从远程复制到本地 
                      从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可	
                1.从服务器复制文件到本地:
                    scp root@49.234.89.81:/tmp/Testdata.csv /D:/lijin
                root@192.168.1.100   root是目标服务器(有你需要拷贝文件的服务器)的用户名,192.168.1.100是IP地址,后面紧跟的 “:” 不要忘记,/data/test.txt(多文件还有test1.txt,test2.cpp,test3.bin,test.a,test.c等) 是目标服务器中你要拷贝文件的地址,接一个空格,后面的 /home/myfile/ 是本地接收文件的地址。
                2.从服务器复制文件夹到本地:
                只需在前面加 -r 即可,就可以拷贝整个文件夹
                scp -r root@49.234.89.81:/tmp/Testdata.csv /D:/lijin
  4)部署禅道
        1. 看官网文档 安装文档: https://www.zentao.net/book/zentaopmshelp/90.html
        2. 文档下载地址: https://www.zentao.net/dynamic/zentaopms12.3-80217.html
        下载安装包
              可以将文件下载到 /tmp。            
                    cd /tmp
                    wget http://dl.cnezsoft.com/zentao/12.3/ZenTaoPMS.12.3.stable.zbox_old.64.tar.gz
              解压文件到 /opt 目录下
                    [root@VM_0_16_centos tmp]# tar -xf ZenTaoPMS.12.3.stable.zbox_old.64.tar.gz -C /opt      
              启动禅道
                    [root@VM_0_16_centos tmp]# /opt/zbox/zbox start
                    Start Apache success
                    Start Mysql success
              访问禅道
                    在浏览器中输入自己服务器的公网IP地址,
                    可以看到禅道的欢迎界面即可。
              点击【开源版】
                    输入用户名和密码 
                    禅道默认管理员帐号是 admin,密码 123456。登陆即可
              netstat -anpt
              /opt/zbox/zbox start      这两个命令很重要,关于禅道的打开
  5)查看系统资源使用
        top:Linux top命令用于实时显示 process 的动态。使用权限:所有使用者。
        ps :ps -ef      (显示所有命令,连带命令行) 查看所有的启动进程, 常和 | 管道命令 一起使用。
              • | 将上一个命令执行结果传递给下一个命令
              • grep 添加过滤条件,符合条件的数据显示出来。
        ps aux 显示进程信息更多一些      
        kill 终止进程:后面跟上 进程ID (PID), PID的查看方式可以使用 top 或者 ps 命令查看
              • -9 强制终止      -----跟上PID
              • -1 重启
        killall 终止进程
        lsof      • -i :80 查看80端口占用应用
  6)用户管理
        普通用户
        root 用户可以再创建一些普通用户。      
        根用户:root 账户, 最高管理权限。
        系统用户:系统运行时指定的必须有的用户,这个用户为系统用户。
        查看用户信息:
              • who
              • whoami
              • w   查看当前系统登陆的用户信息
        新增用户
              • useradd  用户名   添加新用户
              • passwd 用户名     为用户修改密码
        新建用户组
              • groupadd 用户组名  创建新的用户组
              • useradd -g 用户组名  用户名  (创建用户时指定用户组)
              • 设置密码也是一样的

        文件权限     ls -al 和 ll  一样(可以查用户权限)--  ls -al 查的更多(隐藏的也可以查)
              r	4	读取
              w	2	写入
              x	1	可执行
  7)配置Python环境
        1. 从官方网站下载 python源码 https://www.python.org/downloads/release/python-382/
        2. 将下载好的源码文件 上传到服务器。
              1. 使用rz 命令上传。
              2. 使用scp命令进行上传。scp 支持上传文件和下载文件;
        3. 解压tgz 文件
        4. 切换到Python-3.8.2 目录
        5. 执行配置 
              ./configure
              如果配置有误:安装C编译器 以及其它环境
              yum install -y gcc gcc-c++ zlib-devel
        6. 重新执行 ./configure  <配置>
        7. 编译  执行 make 命令
              make:编译完成。
        8. 安装
              make install      
  8)配置Java环境
        rpm 安装方式。
        1. 下载rpm 安装文件。 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
        2. 使用rpm 安装
              rpm -ivh jdk-8u251-linux-x64.rpm 
        3. 检验Java是否安装成功
              如果有输出,则表示 安装成功。
  9)配置apache服务器
        yum 安装
        yum install -y httpd
        在线自动下载安装。
        启动apache 服务
              service httpd start
        启动失败
              如果执行过程中发现 80端口被占用,使用lsof 查看被占用端口的情况
              lsof -i:80
        找到对应PID,使用kill 命令将其杀掉。
  10)安装mysql
  ①mysql官网:https://www.mysql.com/,downloads(企业版和社区版)
  ②MySQL Community (GPL) Downloads ====> MySQL Community Server ====> Archives ====> 最新版本 ====>选择对应的linux的centos版本,下载
  ③通过lrzsz中的rz上传压缩包
  ④解压,然后检查linux中有没有mysql:rpm -qa|grep mysql,如果有,需要卸载
  ⑤然后安装依赖:yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio libaio-devel,可能还要安装perl。若有缺少,根据具体提示
  ⑥安装mysql,顺序:common====>lib====>client====>server(一般按照顺序安装这四个即可)
  ⑦配置:
        初始化:mysqld --initialize --user=mysql
        查看mysql日志,默认密码:cat /var/log/mysqld.log
        启动mysql:systemctl start mysqld.service
              关闭mysql:systemctl stop mysqld.service
        登录账户名,密码:mysql -u root -p,然后输入密码
        改密码:登录进mysql之后,alter user 'root'@'localhost' identified by 'rootroot'
        查看默认端口号
              1、登录mysql
                          [root@localhost ~]# mysql -uroot -p
                          Enter password: 输入数据库密码;
              2、使用show global variables like 'port'; 命令查看端口号,
                          mysql> show global variables like 'port';
  ⑧navicat连接mysql报错:
        10060:阿里云服务器打开3306安全组规则
        1130:
              服务器登录上mysql
              >use mysql
              >update user set host='%' where user='root';
              >select host,user from user;
              >flush privileges;
        2059:
              在navicat链接mysql8以后的版本时,会出现2059的错误,这个错误出现的原因是在mysql8之前的版本中加密规则为mysql_native_password,而在mysql8以后的加密规则为caching_sha2_password。解决此问题有两种方法,一种是更新navicat驱动来解决此问题,一种是将mysql用户登录的加密规则修改为mysql_native_password。本文采用第二种方式。ALTER USER 'root'@'%' IDENTIFIED BY 'rootroot' PASSWORD EXPIRE NEVER; #修改加密规则
              ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'rootroot';  #更新一下用户的密码
              FLUSH PRIVILEGES; #刷新权限
        解决完这三个错误,就可以正常使用navicat登录了。