Linux基本使用

作者 糖一瓶 日期 2018-01-07
Linux基本使用

一、关于根目录介绍

1. /bin  //许多指令对应的可执行程序文件目录  例如,ls pwd init 等等
2./sbin        //改目录下的指令都是root可指令 init
3./usr         //Unix system resource (Unix系统资源文件目录)常用于安装各种软件    
4./dev         // 系统硬件设备目录  
        cdrom 光驱硬件    
5./home     //用户的家目录 创建的用户目录
        //~ 表示处于自己家目录  
        //cd ~ 快速切换到家目录    
6./root        //改目录是root管理员的家目录,root用户登录系统后首先进入该目录下    
7./proc        //内存映射目录,该目录可以查看系统的相关硬件信息
8./var        //该目录存储的文件经常会发生变动,经常用于不熟项目程序文件
9./boot        //系统启动核心文件目录,用于存储系统启动的文件
10./etc     //系统主要配置文件目录    
11./lib        //library 系统资源文件类库目录
12.selinux    //安全增强型Linux

二、目录的操作

1.创建 make directory
  > mkdir 目录名字
  > mkdir -p sheng/shi/qu 表示通过递归的方式来创建多级目录    
2.移动(move)
  > mv dir1 dir2  //将dir1移动到dir2目录下
  > mv dir1 dir2/dir3  //将dir1移动到dir2目录下
3.改名字
  > mv dir1 newdir  //将dir1名字改为newdir    
2,3的合并写法
  > mv dir1 ./newdir    //将dir1移动到当前目录下并改名为newdir
  > mv dir1 dir3    //将dir1移动到dir3并保持原名
  > mv dir2 dir2/newdir //将dir1移动到dir2下并改名为newdir    
4.复制(copy)
  文件的复制
  > cp file1 dir3    //将file1复制到dir3并保持原名
  > cp file2 dir2/newfile //将file1复制到dir2下并改名为newfile    
  目录的复制(需要-r参数  无视目录的层次)
  > cp -r dir1 dir3    //将dir1复制到dir3并保持原名
  > cp -r dir2 dir2/newdir //将dir1复制到dir2下并改名为newdir
5.删除(remove)
  > rm 文件
  > rm -r 目录
  > rm -rf 文件/目录  // 递归强制方式删除文件

三、文件的操作

1.查看文件内容
  > cat filename  //打印文件内容到终端
  > more filename // 通过敲回车方式逐行查看文件的各个行内容
          // 不支持回看  直接按q可以退出查看
  > less filename // 通过上下左右键查看文件的各个部分内容
          // 支持回看 
  > head -n filename    // 查看前n行内容
  > tail -n filename    // 查看后n行内容
  > wc    filename    //查看文件的行数    
2.创建文件
  > touch filename
  > touch dir/filename    
3.给文件追加内容
  > echo 内容 > 文件名称   //把内容以覆盖写的方式追加给文件 
              //如果文件不存在,将创建该文件
  > echo 内容 >> 文件名称  //追加内容到文件中

四、用户和组的操作(#在root级别操作)

- 用户操作 /etc/passwd
    1.创建用户 user add  
      >#useradd
      >#useradd xiaoming  //创建xiaoming用户的同事,会创建一个同名的组出来
      >#useradd -g gid组别编号 username //把用户的组别设置好,避免创建同名的组出来
      >#-g 组编号  -u 用户编号  -d 家目录  username
    2.修改用户 user modify
      >#usermod
      >#usermod -g 组别号 -u 用户编号 -d 家目录 -l 新名字 username
      (修改家目录时需要手动创建)
    3.删除用户 user delete
      >#userdel
      >#userdel -r username        //删除用户同时删除家目录
    4.给用户设置密码,使其登录系统
      >#password username
- 组别操作 /etc/group
    1.创建组 group add
      >#groupadd
    2.修改组 group modfiy
      >#groupmod
      >#groupmod -g gid -n 新名字 groupname 
    3.删除组 group delete
      >#groupdel groupname //如果组别下有用户是不可以删除的除非把用户移动到别的组中

五、查看指令可设置的参数

> man 指令
> man useradd 显示useradd可执行的指令

六、常用基础命令

> ls         //展示目录文件 (list缩写)
> ls -l 或ll    //以详细信息展示目录文件(list -list)
> ls -a     //查看目录全部文件,就是包括隐藏文件 (list -all)
> ls -al     //以详细信息展示全部文件目录,包括隐藏文件
> ls 目录     //查看指定目录下文件
> ls -i     //查看文件的索引号码

> cd         //切换路径
> cd ..     //向上一级目录切换

> pwd         //查看完整操作位置

> su - 或 su -root      //从普通用户切换到root用户
> su 用户名        // 切换普通用户
> exit         //退回到原用户

> whoami     //查看当前用户是谁

> init 3 命令界面    
> init 5 图形界面    //root用户才能切换、图形界面 与 命令界面的切换

># which 指令     //查看一个指令对应的执行程序文件在哪里
        //例如 which ls

> clear      //清屏操作

># ps -A     //查看系统活跃进程

># kill -9 pid     //杀死指定进程

># du -h 文件名    //查看文件占据空间大小  默认最小空间是4kb 超出4kb 就是8kb 占据空间大小比文件本身大小大

># date -s "2018-3-25 12:34:45" //给系统设置时间

># date     //查看时间

># df -lh    //查看系统分区情况

七、操作vi(vi是个编辑器)

> vi .txt 进入编辑器命令模式
> :q 退出编辑器
- 进入编辑模式:
    > a        //光标和所在字不发生变化
    > i        //光标和所在字符不发生变化
    > o        //光标另起一行
    > s        //删除光标所在字符
    > esc     //退出编辑模式进入命令模式
- 进入尾行模式(有两种方式)
    > :
    > /
    > esc     //退出尾行模式
    > esc(按两次) //快速退出尾行模式
    > 删除所有尾行内容  也会退出尾行模式       
- 尾行模式下操作命令
    > :q        //quit 退出编辑器
    > :w        //write  对修改的内容进行保存
    > :wq     //write quit 保存并退出 
    > :q!         //不保存强制退出编辑器
    > :w!    //强制保存
    > :wq!    //强制保存并退出编辑器
    > :set number 或nu  //设置行号
    > :set nonumber 或nonu    //取消行号
    > :/内容/ 或 /内容    //查找指定内容
    > n            //查找内容时n表示下一个
    > N            //查找内容时N表示上一个
     > :数字        //光标跳转到第几行
    > s/cont1/cont2/    //将cont1替换成cont2 替换光标所在行的第一个目标
    > s/cont1/cont2/g    //替换光标所在行的所有目标
    > %s/cont1/cont2/g    //替换文本中所有的目标

八、命令模式操作

1.移动光标  
字符级
> 上下左右移动  还可以对应jkhl移动
单词级
> w (word)移动到下个单词的首字母
> e (end)移动到下个单词的尾字母
> b (before)移动到上个单词的首字母
行级
> $ 移动到到行尾
> 0 移动到行首
段落级(翻屏)
> {  移动到上个段落或本段落的首部
> }  移动到下个段落或本段落的尾部
屏幕级(不翻屏)
> H  移动到屏幕首部
> L  移动到屏幕尾部
文档级
> G  移动到文档尾部
> 1G 移动到第一行
> nG 移动到文档的第n行
2.内容删除
> dd  删除光标当前行
> 2dd 包括当前行向后删除2行内容
> ndd 包括当前行向后删除n行
> x 删除光标所在字符
> c+w 删除光标所在字母到单词结尾并进入编辑模式
3.内容复制
> yy  复制光标当前行
> 2yy 包括当前行向后复制2行内容
> nyy 包括当前行向后复制n行
> p 对复制好或者删除的内容进行粘贴 粘贴到光标所在的下一行
4.相关快捷操作
> u   undo撤销
> J   合并上下两行 
> r   单个字符替换
> .   重复执行上次最近的指令 

九、权限操作 (用户针对文件是否拥有读、写、执行的权利)

权限设置
  chmod命令
 1.字母相对方式设置权限
  1)每个单元+、- 只能使用一个
  2) 可以同时给多个组同时设置权限
  3)都可以设置rwx相关权限
    >chmod u+rwx filename    //给filename文件的主人增加读、写、执行权限
    >chmod g-rx filename    //给filename文件的同族用户 删除读 执行权限
    > chmod u+/-rwx,g+/-rwx,o+/-rwx filename
    > chmod u+rwx,g-rx,o+rw filename  //给filename主人增加rwx权限 给同组用户删除rx权限 给其他组增加rw权限
    > chmod u+w,u-x filename    //给filename主人增加w权限删除x权限
    > chmod +/- filename        //无视组别,统一给全部的组设置权限
    > chmod +rw filename     //给filename的全部用户增加读、写的权限 
 2.数字绝对方式设置权限
  r读:4  w写:2  x执行:1
    0:没有权限
    1:执行权限
    2:写权限
    3:写,执行权限
    4:读权限
    5:读,执行权限
    6:读,写权限
    7:读,写,执行权限
    >chmod ABC filename     //ABC 分别代表主人,同组用户,其他用户
    > chmod 753 filename        //主人权限7  同组用户权限5  其他用户权限3权限使用
 文件的使用权限
  读:是否可以查看
  写:是否可以编辑
  执行:是否可以执行二进制文件和shell脚本文件
 目录的使用权限
  读:是否可以查看该目录内部的文件信息
  写:是否可以给该目录创建、删除文件
  执行:指定用户是否可以cd进入该目录

十、权限针对文件强制操作

!强制操作
1,对文件有w权限,没有r权限,强制写保存会覆盖文件原内容
2,对文件米有w权限,可以强制写保存
3,非主人用户,没有w权限,强行写保存或许成功,或许不成功
  1)该文件的上级目录针对该修改者没有开放w权限,强行写保存不成功
  2)该文件的上级目录针对该修改者有开放w权限,强行写保存成功
  3)强制修改成功后,文件的主人,组别变为修改者的主人和组别

十一、在文件中查找内容

># grep 被搜索内容 文件        //在passwd文件中搜索被搜索内容 会把被搜索内容所在行的内容打印到终端  
># grep hello passwd
># grep jinnan /etc/group 

十二、管道(前者的输出是后者的输入参数)

可以作为管道指令的命令
grep head tail wc ls
 查看文件内容操作命令
  > head -n filename    // 查看前n行内容
  > tail -n filename    // 查看后n行内容
  > wc    filename    //查看文件的行数

 > ls -l | head -5  //查看ls -l信息的前五行
 > grep hello passwd | wc //查看grep hello passwd 打印出的信息中的文件行数
 > ls -l | head -10 | tail -6  //ls -l结果就是查看4-10行的结果
 >grep hello passwd | grep world  在passwd中查找hello行然后在这个数据中查找world

十三、文件查找

find 查找目录 选项 选项值 选项 选项值 ...
1)-name 根据名字进行查找
> find / -name passwd        //递归遍历系统 目录极其内部深层目录,寻找passwd文件
> find / -name "p*"        //模糊查找名字是p开头的文件
> find / -name "*p"        //模糊查找名字是p结尾的文件
> find / -name "*p*"        //模糊查找名字中间有p的文件
2)限制查找的目录层次  -maxdepath  -mindepath
   -maxdepath  限制查找的最深目录
   -mindepath 限制查找的最浅目录
> find / -maxdepath 4 -name passwd     //寻找名字为passwd 层次在4个以下的文件
3)-size 根据大小为条件进行查找
  -size +/-数字
+:表示大小大于某个范围
      -:表示大小小于某个范围
      什么也不加表示等于某个范围
  大小单位: -size 5  //单位是512字节 5*512字节
       -size 5c //单位是字节 5字节
       -size 3k //单位是千字节 3*1024字节
             -size 2m //单位是1024*千字节 2M兆字节
4)根据文件权限进行查找
  > find ./ -perm 764    //查找权限为764的文件
5)根据文件类型进行查找
  > find ./ -type f  //查找文件类型
  > find ./ -type d  //查找目录类型
6)根据主人查找
  > find ./ -user zhoudong  //查找主人为zhoudong的文件
7)根据组别查找
  > find ./ -group root     //查找组别为root的文件

十四、软链接和硬链接

1.软连接 
1)类似windows系统的快捷方式,作用就是可以对硬盘空间进行合理分配
2)如果软连接文件与源文件不在同一级目录,则源文件需要设置为“觉得路径”,否则为无效的软连 接文件
3)软连接文件要占据一点空间大小,具体大小根据路源文件路径长度决定
> ln -s 源文件 软连接文件  //创建软连接
> ln -s an.txt a.txt        //在当前文件下为an.txt创建软连接文件a.txt
2.硬链接 
1)系统里面文件的名称(引用)就是硬链接
2)给文件增加名称(引用)的过程就是创建硬链接(一个文件有多个名称,他们都是同一个文件实体的硬链接)
3)创建硬链接不用设置绝对路径
4)只有文件可以设置硬链接目录不可以,目录的硬链接是系统自动设置的
5)同一个源文件的所有硬链接文件必须在同一个硬盘,同一个分区里边
> ln [-d] 源文件 硬链接

十五、任务调度指令

规定系统在指定的时间完成指定的任务过程
可以同时设置多个任务调用指令
> crontab -e    //编辑任务调度指令
> crontab -l     //查看任务调度指令

十六、文件主人,组别设置

change owner
 针对文件操作
 > chown 主人 filename  
 > chown tang tiancai.txt    //修改tiancai.txt的主人为tang
 > chown .tang tiancai.txt    //修改tiancai.txt的组别为tang
 > chown tagn.tang tiancai.txt   //前两个综合
 针对目录操作
 > chown -R 主人.组别 dir    //通过递归方式设置属组信息

十七、配置网络

1.进入后修改相关配置,参考截图网络配置
  > cd /etc/sysconfig/network-scripts
  > cp ifcfg-eth0 ./ifcfg-eth0.bak  网卡修改前先做备份
2.修改配置后需要重新启动网络
  >service network restart
3.修改虚拟机网卡桥接模式 (参考截图网卡桥接)
4.Linux可以ping通本机 (ping通之后可以互相进行通讯)
  > ping 192.168.0.56(本机的ip地址)

十八、关于SecureCRT 连接配置

端口22
协议是ssh
(类apache走80端口 协议是http)

十九、光驱的挂载

光驱使用,其挂载是手动的
1)创建一个普通目录
2)找到光驱硬件设备(/dev/cdrom)
3) 使得普通目录与光驱硬件设备进行联系(挂载)
准备:
在光驱里边放入光盘
找到光驱设备文件 /dev/cdrom
具体的挂载指令:
 > mount 硬件 挂载点目录(普通目录)    //挂载动作
 > mount /dev/cdrom /home/tang/rom    //把光驱挂载到rom目录
 > umount 硬件或挂载点            //卸载动作
 > umount /dev/cdrom            //硬件卸载光驱
 > umount /home/tang/rom        //挂载点卸载光驱
 > eject                //弹出光盘

二十、Linux系统软件的安装

1.二进制码软件安装:

1)方式1:rpm方式
 进入挂载点rom文件  进入其中的Package目录中
  安装vsftp
  > rpm -i[vh] 软件包全名  //安装rpm软件
  > rpm -q 软件包名        //query查看rpm安装情况
  > rpm -qa 软件包名        //查看系统里边全部rpm安装的软件
  > rpm -e 软件包名       //卸载软件
  > rpm -qa |grep ftpd(部分名)//模糊查找指定ftpd是否有安装
2)方式2:yum智能方式  

使用ftp软件

走ftp协议 占用21端口
  > service vsftpd start    //启动ftp软件
  > service vsftpd stop    //关闭ftp软件
  > service vsftpd restart //重启ftp软件
  > ps -A |grep ftp    //查看ftp的服务进程

 使用ftp之前测试本机与Linux的ftp端口21是否通畅
  在Windows dos命令行中输入
   > telnet 192.168.0.13 21检测21号端口是否正常使用 如果窗口没有提示 220(vsftpd)则不通畅
 不通畅的解决方法:
  关闭系统防火墙
   > setup  进入将防火墙关闭

 使用ftp 需要安装一个客户端 winscp 
  安装连接服务器 (登录提示失败)
  解决登录失败:关闭selinux
   >vi /etc/selinux/config  完成编辑并reboot重启系统,并启动ftp服务
  selinux:安全增强型Linux 对系统起着安全保护作用
  编辑/etc/selinux/config 把enforcing改为disabled  禁用selinux

 创建tar目录将安装包文件导入tar中  并给tar创建其他组用户创建w权限才可以向里面复制东西

ftp两个优化

1,ftp服务可以在配置文件中做设置,设置用户对ftp的使用权限
  两个文件对用户进行了限制  在这两个文件中设置权限默认root用户是不能访问htp服务的 
  /etc/vsftpd/user_list
  /etc/vsftpd/ftpusers
  配置文件修改后要重启ftp服务
2,限制普通用户访问根目录
  /etc/vsftpd/vsftpd.conf
  修改97,99行  将97行打开  将99行打开再修改
  /etc/vsftpd/chroot_list 这个文件需要创建,将只允许访问自己家目录的用户添加进这个文件

2.源码编译方式安装软件

1)首先安装gcc编译软件
gcc编译器安装(翻译c语言为二进制码内容)
在挂载磁盘的rom文件夹中找到gcc
使用rpm的方式安装 
安装失败原因,需要安装额外的依赖(软件依赖或者软件内部功能模块的依赖)
 2)安装步骤
先解压安装包 在解压出的文件夹中配置configure文件
1,设置./configure    //在解压软件目录内部执行
        //相关参数配置,软件安装位置,依赖软件设置,软件依赖检查等        
        //例如--prefix是设置软件的安装位置
  >#./configure --help //查看当前软件可以设置的各种参数
2,make    //编译,根据configure的配置信息生成二进制文件
3,make install  //把生成的二进制文件复制到系统指定目录(本质与rpm安装软件一致)    
make && make install 合并执行2、3

安装包放置于tar文件目录中了(按顺序安装所需软件)

  1,zlib(对许多其他软件的编译代码起着优化、压缩的作用)\
    ># ./configure
  2,apache
    ># ./configure --prefix=/usr/local/http2 \
    > --enable-modules=all \
    > --enable-mods-shared=all \
    > --enable-so(可以识别so后缀的模块文件)
    开启apache(第一次启动有服务提示)
    进入/usr/local/apache2/bin
    ># ./apachectl start
    解决服务提示的方法:修改apache配置文件httpd.conf ,找到ServerName去除前面的#即可

enable-mods-shared=all //模块共享型 要把全部的功能模块代码内容都编译到apache本身软件内部 特点:apache本身软件会稍显臃肿,但是在调用相关模块的时候速度回很快
相对应类型:static 静态类型 apache内部要被编译进许多模块代码,其他模块代码都独立存在,需要什么模块,就立即include引入值 特点:apache软件本身会非常小巧,其运行速度回很快
3,安装PHP前安装依赖  xml
  ># ./configure --prefix=/usr/local/libxml2 \
  > --without-zlib
4,jpeg8
  ># ./configure --prefix=/usr/local/jpeg \
  > --enable-shared --enable-static 
5,png
  ># ./configure 
6,freetype
  ># ./configure --prefix=/usr/local/freetype
7,GD库
  ># ./configure --prefix=/usr/local/gd \
  > --with-jpeg=/usr/local/jpeg \
  > --with-png --with-zlib \
  > --with-freetype=/usr/local/freetype
8,php
  > ./configure --prefix=/usr/local/php \
  > --with-apxs2=/usr/local/http2/bin/apxs \
    apache的支持,其作用:
1,给apache生成php模块
2,修改/usr/local/apache2/bin/httpd.conf的配置文件,使其引入php模块

  > --with-mysql=mysqlnd \
  > --with-pdo-mysql=mysqlnd \
  > --with-mysqli=mysqlnd \
mysqlnd表示会激活本地的mysql驱动

  > --with-freetype-dir=/usr/local/freetype \
  > --with-gd=/usr/local/gd \
  > --with-zlib --with-libxml-dir=/urs/local/libxml2 \
  > --with-jpeg-dir=/usr/local/jpeg \
  > --with-png-dir \

  > --enable-mbsting=all \
表示宽字节函数库对php的支持

  > --enable-mbregex \
正则表达对php的支持

  > --enable-shared

配置PHP

 复制php.ini指定文件到指定目录
 ># cp php.ini-development /usr/local/php/lib/php.ini
PHP安装完成, 会使得/usr/local/apache2/conf/httpd.conf把对应的php模块给引入进来
文件修改后重启apache

配置apahce使其支持PHP

1,在httpd.conf中增加如下语句,是apache遇到PHP文件对齐进行解析
 : AddType application/x-httpd-php .php (见图文件配置修改)    
2,修改usr/local/php/lib/php.ini 配置时区(见图配置时区)


9.mysql
    1,安装cmake(更先进的configure)
      ># ./bootstrap(这是源码编译方式,不要用这种方式)
      >rpm -ivh cmake(用rpm方式安装) 

    2,编译安装mysql
          ># cmake \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_DATADIR=/usr/local/mysql/data \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci

配置mysql

1,复制一个配置文件    
>cp support-files/my-medium.cnf  /etc/my.cnf //给mysql
2,配置并初始化mysql
  ># useradd mysql //创建一个mysql用户
 ># chmod +x /usr/local/mysql

如果数据库用户不小心删光了:
 1)删除/usr/local/mysql/data目录
 2)同时删除旧的mysql服务
  >ps -A | grep mysql
  killall mysqld 或 kill -9 mysql进程号码
 3)从这开始再执行一遍下边的指令

 >shown -R mysql.mysql/usr/local/mysql //为mysql设置组名和组别

初始化mysql数据库(创建系统默认数据mysql/test等)
 ># /usr/local/mysql/script/scripts/mysql_install_db \
 > --user=mysql \
 > --basedir=/usr/local/mysql \
 > --datadir=/usr/local/mysql/data &    

把mysql安装文件(除了data)的主人都改为root,避免数据库恢复为出厂设置
 ># chown -R root /usr/local/mysql
 ># chown -R mysql/usr/local/mysql/data

后台运行mysql
 ># /usr/local/mysql/bin/mysqld_safe --user=mysql &

查看mysql是否有启动
 ># ps -A | grep mysql

 测试数据库
 ># /usr/local/mysql/bin/mysql -u root
 mysql>show databases

设置mysql账号密码

mysql>use mysql;
mysql>UPDATE user SET Password=password('123456') WHERE user='root';
mysql>flush privileges;

二十一、解压压缩包命令

> tar zxvf 压缩包.tar.gz  //解压.tar.gz格式
> tar jxvf 压缩包.tar.bz2 //解压.tar.bz2格式

二十二、删除安装后的文件

1,删除安装后的文件(有指定安装目录情况/usr/local/http2)
2, 删除解压后的目录
3,重新解压,重新configure,重新make,重新make install

二十三、二进制码和源码安装的取舍

1.软件安装后使用的用户非常少,(如ftp,gcc)则使用二进制码安装
2.软件安装后使用的用户非常多,(如php,apache,mysql)则使用源码安装