Linux下基础(基于Ubuntu16.04)

一、常用命令

tab  快速补全健  (严格区分大小写) 
1、cd   进入指定的目录 
  cd .. 回到上一级目录
2、ls   查看当前目录下的所有的目录与文件名
3、touch  文件名    表示创建一个文件
4、mkdir  目录名    表示创建一个目录
5、rm     文件名    表示删除一个文件
rm -rf   目录名     表示删除改目录及其所有的子级目录文件一同删除 
rm -rf  */     * 代表所有,   表示删除所有的目录      
6、rmdir  目录名    表示删除一个空的目录
7、man    帮助命令,查看命令的用法
       如: man rm
8、help     帮助命令,查看命令的用法
命令 --help

9、ctrl+c :   强制终止,  不会终止进程 
9、ctrl+z :   强制终止,  终止进程
10、clear      清除命令行终端中的内容
11、ctrl+l  :   快捷键,  快速清除终端中的内容
12、查看ip地址:  ifconfig

在线linux命令帮助手册(中文版)
http://man.linuxde.net/

**linux下软件的安装
1.命令的形式安装
ubuntu下 apt -get(老版本) install 应用名

apt install 应用名 
或:sudo apt install 应用名   权限不足时使用,建议默认使用

center os

yum  intall 应用  

2.原码的形式安装

1、获取源码 
	将软件的源码下载至/usr/local/或者自定义路径,并解压。
2、查看INSTALL与README文件 
	解压后查看INSTALL与README文件,这两个文件中详细介绍了软件的安装方法和注意事项。
3、创建Makefile文件 
	执行configure命令,生成Makefile文件。
4、编译 
	执行make clean;make命令将源码编译成二进制文件。 
	PS:make clean命令用来清除上一次编译生成的目标文件。这个步骤可有可无,但为了确保编译的成功,还是加上为好。防止由于软件中含有残留的目标文件导致编译失败。
5、安装 
	执行make install命令将上一步编译好的二进制文件安装到指定的目录中去。

第二部分、Ubuntu详解

一、系统目录

  1、cd /  : 进入根目录
  2、每个Linux版本的根目录可能有细微差别
  3、Linux中有一个概念:将所有的东西当成文件来处理(鼠标,键盘,文件,U盘等会被抽象出一个文件来处理)
  4、bin:可执行的二进制文件,通常放的是系统自带的文件
  5、dev:Device,设备,通常系统的硬件被抽象成一个文件存放在dev中
  6、initrd.img:开机启动时的图片
  7、lost+found:异常关机时存放错误信息的文件
  8、opt:Options,存放开发者自己开发并安装的软件
  9、run:系统运行时需要的文件
  10、srv:存放服务启动后需要访问的文件数据
  11、**usr:存放与用户直接相关的文件目录
  12、boot:启动配置文件,启动时需要的核心文件
  13、etc:配置文件(系统中各种所需要的配置文件)
  14、lib、lib64:库,系统内置的库文件,自己安装的各种软件的动态或静态的链接,windows中的dll很相似。
  15、media:媒体,存放是系统外接设备,如U盘,硬盘
  16、proc:系统文件
  17、sbin:系统管理员特用的二进制文件(root用户)
  18、sys:系统文件
  19、**var:存放日志信息(启动日志,软件日志)
  20、cdrom:挂载入口
  21、****home:家,每个用户都会在home目录下有一个自己的文件夹,这个文件夹的名称与用户名一致
  22、mnt:挂载点,临时安装的挂载
  23、root:超级管理员的目录
  24、snap:全新的管理软件包的方式
  25、tmp:临时文件
  26、vmlinuz:软连接到boot下的一个vmlinuz...文件下

2.文件的颜色

  白色:表示一个普通的文件
  蓝色:表示一个目录
  绿色:表示一个可执行文件   
  红色: 表示一个压缩包文件
  浅蓝色: 表示一个链接文件 
  红色闪烁:表示一个链接文件,但是连接的文件有错误
  黄色: 通常是设备(硬件)文件
  灰色: 其他文件..

3、常用命令-获取系统信息

  1、lshw: 查看硬件信息
  2、lscpu:查看cpu信息
  3、lsusb:查看usb信息 
  4、uname:  查看当前系统名
     uname -a :   查看当前系统的所有信息
          查看当前系统的信息
   ---------------
  5、arch:查看系统的架构  x86 表示32位   x86_64表示64位
  6、df: 查看磁盘空间
    df -h : 可以直观的查看磁盘的空间.. 
  7、date:查看当前的时间
  8、cal:查看当月日历
  9、hostname: 查看主机名
  10、ifconfig:查看ip信息 ...
  11、who: 查看当前用户信息
  12、free: 查看当前内存的使用情况
          free -h  可以直观的查看当前的内存使用情况  
  13、ps: 查看当前文件的进程   
        进程号
  14、kill:杀死
       kill  进程号  杀死一个进程
       kill -9 强制杀死某个进程 
  15、top:根据消耗的资源,从上之下排序
  16、 pwd查看当前完整路径

4、常用命令-关机或重启命令

  1、poweroff: 立即关机
  2、shutdown -h now :  立即关机
  3、systemctl poweroff:  立即关机
  4、shutdown -h +5: 5分钟之后自动关机
  5、shutdown -c :  取消自动关机  
  6、reboot:   重启
  7、shutdown -r now: 重启
  8、systemctl reboot:  重启

6、用户系统
1.用户的分类
作用:区分权限

 1.普通用户: 我们自定义的一个用户,通常完成一些普通的工作
     
 2.超级管理员用户:系统会自带一个root用户,root用户什么都能操作,(慎用)
 
 3.普通用户当作超级管理员来使用: 
    sudo 命令 以超级管理员身份来运行命令
	sudo !!  执行上一个命令  需要密码

2.使用超级管理员帐户 root(默认就有)
安装的系统的时候,没有设置root密码,安装完系统后的第一件事就是设置root 密码

  1.切换到root用户  
      su
输入密码

  2.设置root 密码
      格式: sudo passwd root
需要重复2次输入  (321)
  
  3.exit:退出root账号

  4.切换账号
     格式: su 用户名

  5.修改用户的密码
    格式:  passwd 用户名
    如果不写用户名,默认是当前用户
    说明: 1. root用户可以修改任何一个用户的密码,且格式随意
        2.sudo 情况下也可以修改任何用户的密码
        3.在普通用户下只能修改当前用户的密码
     
  6.**linux下的每个用户都必须设置密码.只有输入了登陆密码后才可以进入系统

7.用户和组
用户: 一个用户就是一套可以登录到系统的账号和密码, linux中可以同时登陆多个用户,且每个用户之间是隔离的
组: linux可以对用户进行分组,而每个组会有特定的权限

1 用户:

1.增加一个用户

 1.图形化界面创建
 点击 设置 --->system setting --->user account -->右上角的unlock -->认证 --->左下角 + 号--->设置用户名---add即可


 2.命令行创建:
   格式:  useradd(选项)(参数)   
    选项:
    -m  自动建立用户的登入目录   
         参数: 用户名   
   
   例: useradd -m aa  注:会自动的在 /home目录下创建一个与用户名相同名字的目录名
    设置密码:
    passwd  用户名 

2.删除一个用户

userdel(选项)(参数)
选项: -f:强制删除用户,即使用户当前已登录;
                 -r:删除用户的同时,删除与用户相关的所有文件。   --- 默认情况只删除用户,但不删除用户的文件
   参数: 用户名
     
     例:  userdel -r aa

3.修改一个用户信息

usermod(选项)(参数)  
选项: -l 修改账号的名称
      -L 锁定账号
      -U 解除锁定
   参数:用户名

   例:修改用户名   格式:  usermod -l 新用户名 老用户名    注意:不会修改对应的目录名

4.查询一个用户信息
查询已经存在的用户: 进入到 /home 目录 就可以看到

 2.组:
   1.创建一个组
        groupadd(选项)(参数)
  选项: -g 指定新建工作组的id;          id默认会自动分配
  参数: 组名 
  例:groupadd 组名   

   2.修改一个组
       groupmod(选项)(参数)
  选项: -n 修改群组的名字
  参数: 组名 

       修改群组名称:例:  groupmod -n  新的名字   原名字


   3.查询组信息 
       cd /etc/ 目录
 查看 group目录  例: cat group
 group文件中存放了该系统所有的组,
 格式:  组名:组的密码: 组的id  

   4.删除某个组
      groupdel (参数)
      参数:组名
例: groupdel 组名

3.将用户添加到一个组

1.查看用户的组
    格式: groups 用户名
     结果格式:  用户名:主组名 附加组1 附加组2
     注: 在linux中创建用户的时候,如果没有指定组名,linux会自动的创建一个与用户名同名的组,并自动的将该用户加入到该组
2.创建用户的时候指定组名
     格式:  useradd(选项)(参数)   
    选项:
    -m  自动建立用户的登入目录  
    -g  指定用户所属的群组(主)
    -G  -G<群组>:指定用户所属的附加群组;
         参数: 用户名   
 例1:
  格式: useradd -g 组名 用户名
  在linux中,一个用户只能添加到一个主组中, 但是可以添加到多个附加组中
  添加到了多个附加组,就可以拥有多个组的权限
 作业: 附加(次要)组可以直接删除,要删除主要的组之前必须先删除主组中的所有用户
  
3.修改组
       usermod(选项)(参数)  
选项: -g<群组>:修改用户所属的群组;
                 -G<群组>;修改用户所属的附加群组;
   参数:用户名

8.文件的权限

1.在linux中通过设置文件的权限来设置各个用户及组的权限
2.查看文件的权限的表现形式:  ll  即可看到
   drwxr-xr-x   10个字母用来表示一个文件的权限
   d rwx r-x  r-x
     第1个字母:表示的是文件的类型
               d   代表当前是目录
               l   代表当前是一个链接文件
       	   -   代表当前是文件
     第2-4个字母: 表示的的是当前用户的权限
               r 表示可以读该文件
         		w 表示可课写该文件
         		x  表示可以执行该文件
        		-   表示不可以对应位置的取现
     第5-7 个字母: 表示当前组的权限
     第8-10 个字母: 表示其他组的权限          
3.设置文件权限
  格式: chmod [ugoa][+-=][rwx-]  文件名
   例1:  将自己改成可执行
      chmod  u+x  aa.txt
         例2: 将所有用户的权限都改成只可读
      chmod a=r aa.txt
          例3: 将自己和自己所在的组添加一个可执行权限
      chmod ug+w aa.txt
          例4: 将自己修改为rwx权限
      chmod u=rwx aa.txt
         
   ugoa
         u user 代表当前用户    
         g group 代表当前组
   o other 代表其他组
   a all   代表全部 ugo
         
   +  添加某个权限
   -  去掉某个权限
   =  重新设置权限
         

   r 表示可以读该文件
   w 表示可课写该文件
   x  表示可以执行该文件
        

   4.数值修改法:
     将权限用一个值表示:
	    x          1
	    w          2
	    wx         3
	    r          4   
	    rx         5
	    rw         6
	    rwx        7
        格式: chmod  值1值2值3 文件名
		  值1是当前用户
		  值2是当前组
		  值3其他
		例: 将所有用户的权限都改成只可读写执行
		      chmod 777 aa.txt     

第三部分、常用操作(vim、tar等)

1.文件/目录的常规操作
1.切换目录的操作

 1. cd  目录名  切换到对应的目录下  ---相对路径
 2. cd  完整的路径名      ---绝对路径   
 3. cd ~      ~ 相当于    /home/当前用户 
 4. cd   表示直接切换到    /home/当前用户
 5.cd ..  返回上一级目录
 注: linux是 /   window:\

2、linux中 . 的作用

  1.  .. 在路径中表示父级目录 
  2.   .  在路径中表示当前目录下
  3.   . 文件名前, 表示该文件为隐藏文件  

3.查看/查找目录中的文件

 1.展示目录下的所有的目录及文件
    ls  展示当前目录下的所有目录及文件
    ls 目录名    展示指定目录下的所有目录及文件   
    ls -a  展示目录下的所有的目录及文件,包含隐藏文件  简写:la
    ls -l  以列表的相识展示目录及文件的详细信息  简写:ll
 2.tree 以树状结构展示目录中的文件及目录    
        格式: tree 目录名
        第一次使用的时候需要安装: sudo apt install tree

 3.获取当前目录的绝对路径
   pwd   会展示当前目录的绝对路径
 
 4.find 命令  查找一个文件
   格式: find(选项)(参数)
  例: find  -name 文件名   表示在当前目录下查找指定文件位置
  例: find  路劲  -name 文件名    表示在指定目录下查找指定文件位置
       例:当前目录及子目录下查找所有以.txt和.pdf结尾的文件
        find . \( -name "*.txt" -o -name "*.pdf" \)
       匹配文件路径或者文件
       例:find /usr/ -path "*local*"
基于正则表达式匹配文件路径
       例: find . -regex ".*\(\.txt\|\.pdf\)$"
 5.whereis 查找系统中的一些程序文件
    whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
 6.查看文件的类型
    file 文件名/目录名

4.目录的操作

1.创建一个目录
    mkdir 目录名  直接创建一个目录
    mkdir -m 700 目录名   创建一个目录,并设置权限
    mkdir -p  目录名   如果创建的目录对应的父级目录不存在,连同父级目录一同创建
                       默认情况下,如果父目录不存在,则不能正常创建
2.删除一个目录
    rmdir 目录名  删除一个空目录
    rm -rf   目录名  删除一个目录及该目录下的所有目录及文件
             -r 递归遍历
       		 -f  强制删除

3.修改
   1.修改目录/文件 名
    mv file1 file2   将目录/文件 file1改名为file2 (移动)
    mv file1 目录名 将文件移动到某个目录下

5.文件的操作
1.创建文件

1.创建一个文件
   touch  文件名 创建一个文件
   vi
   vim
2.删除文件
   rm  文件名
  	 -f   强制删除
3.复制命令  
   cp 源文件位置  目标位置
    例1:  cp 文件位置  目录位置 表示将一个文件复制到目标目录下
    例2:  cp 文件位置  目录位置/new文件名  表示将一个文件复制到目标目录下并更名为new文件名
    例3:  cp  -r 目录名  目录位置    表示将一个目录复制到某个目录下

2.连接文件

1.文件的存储形式
   1.window中文件的存储形式
       1.直接存储一个对应的文件数据
       2.以快捷方式的形式存储,存储的是文件的路径
   2.linux下的存储方式  
       文件名  ---> 文件节点  --->存储文件数据 
2.连接  
     1.硬连接
       特点:1.修改硬连接文件或者源文件, 硬连接文件或者源文件都会发生变化
           2.删除硬连接文件或者源文件中任意一个, 真正的数据不会删除,没有删除的硬连接或者源文件任然可以访问文件
              
     使用:ln 文件名  硬连接名  硬连接是白色的文件名
     **2.软连接**
         软连接是浅蓝色的
         使用: ln -s  文件名  软连接名   
    特点:1.修改硬连接文件或者源文件, 硬连接文件或者源文件都会发生变化
        2.删除硬连接文件,真正的数据会删除,软连接会变成红色表示该连接有错
        3.如果删除软连接文件,源文件不受影响  
         推荐使用,相当于window的快捷方式

如图:图片来源:https://blog.csdn.net/bobyuan888/article/details/78874913 Linux下基础(基于Ubuntu16.04)

3.打包/解包 压缩/解压缩

1.打包  
    tar   -cvf   打包后的文件名  目录名    默认将打包后的文件放在当前目录下 
          -v或--verbose:显示指令执行过程;  
          -f 指定备份文件;
          -c 指定备份文件
   例:tar -cvf  yy.tar  yy
      一般打包文件的格式为.tar
      打包文件的颜色是红色
2.解包
    tar -xvf 已经打包的文件     表示在当前目录下解包
    tar -xvf  已经打包的文件    -C  指定目录  表示在指定目录下解包
     
3.压缩  
    tar -zcvf  压缩后的文件名  目录名
        -z或--gzip或--ungzip:通过gzip指令处理备份文件;
    例: tar -zcvf  yy.tar.gz   yy
     一般打包文件的格式为.tar
      打包文件的颜色是红色
4.解压缩
     tar -zxvf  已经压缩的文件    表示在当前目录下解压
     tar -zxvf  已经压缩的文件  -C  指定目录   表示在指定目录下解压
   
  注: 文件的的扩展名(.xxx)不会影响文件中的原数据,扩展名是方便程序去处理文件,识别文件类型的

4.linux中的文本编辑

1.linux 默认自带 vi, 用升级版 vim
2.第一次使用需要安装vim  
   sudo apt install vim
3.vim的三种模式: 
     1.普通模式 ---当vim打开的时候就直接进入普通模式,在普通模式下可以进入命令,插入模式

2.插入模式 ---可以通过普通模式进入插入模式, 插入模式可以编辑文本
3.命令模式----可以通过普通模式进入命令模式,命令模式可以设置文本的保存退出方式
4.三种模式的切换
  1.普通模式---> 插入模式     i ,a , o
  2.普通模式--->命令模式    :
  3.插入模式--->普通模式    esc 
  4.命令模式 --->普通模式   删除 :
5.使用
   1.vim 打开文件
      格式: vim 文件名    打开一个可编辑文件
                   注:如果文件名不存在,会自动创建一个空的文件,并打开
   2.普通模式 ---> 插入模式
       1. i  进入插入模式,按下i之后,光标不动,插入文本的时候,在原光标   前面  插入文本内容
       2. a   进入插入模式,按下a之后,光标向后移动一位,插入文本的时候,在原光标   后面  插入文本内容
       3. I    进入插入模式,按下I之后,光标会移动该行的起始位置,插入文本的时候,在行首位置开始插入内容
 	   4. A    进入插入模式,按下A之后,光标会移动该行的末尾位置,插入文本的时候,在行末尾置开始插入内容
       5. o     进入插入模式,按下o之后,会先在该行创建一个空的下一行,且光标在下一行的行首,直接会再下一行的行首插入内容
	   6. O   进入插入模式,按下O之后,会先在该行创建一个空的上一行,且光标在上一行的行首,直接会再上一行的行首插入内容
  
    3.普通模式下的命令
	      G :将光标移至最后一行行首
	      nG :将光标移至第n行行首
	      n+ :将光标下移n行
	      n- :将光标上移n行
	      n$ :光标下移至第n行行尾
	      0(数字零) :将光标移到所在行的行首
	      $ :将光标移到所在行的行尾
	      ^ :将光标移动所在行的第一个字符(非空字符)
	      h,j,k,l :分别用于光标左移,下移,上移,右移一个字符
	      H :将光标移至当前屏幕首行的行首
	      M :将光标移至屏幕显示中间行的行首
	      L :将光标移至当前屏幕最低行的行首
	      x :删除光标处的字符
	      dw :删除一个单词
	      **dd  :删除光标所在行
	      **yy :复制光标所在行
	      **p :粘贴
	      **/str :向右进行搜索
	      **?str :向左进行搜索
	      n :向相同的方向查找
	      N :向不同的方向查找
    4.命令模式的命令
	     1.wq  保存并退出
	     2.q  退出
	     3.q!  强制退出

5.查看文件内容 查看文件内容时尽量不要用vim

1.cat 文件名   直接查看文件内容
  cat -n  文件名    显示文件内容,并显示行号,空白行算
  cat -b  文件名   显示文件内容,并显示行号,空白行不算
2.tac 文件名  倒叙查看文件内容
3.head 文件名  直接查看文件内容    默认查看文件的最上面的10行
  head  -n 文件名  显示文件开始的n行内容  
4.tail 文件名  倒叙查看文件的内容  默认查看文件的最后的10行
  tail  -n 文件名  显示文件末尾的n行内容  
5.more 文件名  当文件内容过多的时候,分页显示内容,  按空格进行翻页
6.wc 文件名   统计一个文件中各种数据的数量 
      计算文件的Byte数、字数或是列数,

6.异常终止了再次打开时会报错
通常会报 源文件名.swp的文件已经存在,原因: 当我们编辑文件的时候,系统为了安全,会自动的生成一个文件名为 原文件名.swp的文件,用来保证源文件出错时,可以及时的恢复
如果出现了异常,再次打开时,会直接打开swp文件, 可以删除,覆盖,修改…通常直接删除del,

如有错误请及时评论,方便改正,谢谢。