zoukankan      html  css  js  c++  java
  • linux 学习 (基于ubuntu)

    一.   在虚拟机中安装ubuntu

      可参考如下博客:   https://blog.csdn.net/u014337397/article/details/80751753

    二.  关于linux的发展史

    1.设计之初就是为了多用户使用的,所以每个用户对应进去看到文件都是不一样的,私有的,跟Windows有很大的差别,待会儿看到目录树就会清楚
    2.版本问题:内核只有一个,各种发行版本都是以内核版本为基础再分装各种功能的,就是发行版=内核+新的功能
    3.目录树下几个重要文件夹(/下面所有文件夹都不能动)
      a)   根目录(/)

          根目录是整个系统最重要的一个目录,因为所有的目录都是由根目录衍生出来的。只有root用户才具有在该目录下写权限。

       b)   /bin目录 – 用户二进制文件

          包含二进制的可执行文件,你需要的常见的Linux命令都位于此目录下。

       

       c)   /sbin目录 – 系统二进制文件

          这个目录下的命令通常由系统管理员使用, 对系统进行维护。

       

       d)   /etc– 配置文件

          包含所有程序所需要的配置文件,也包含用于启动/停止单个程序的起动和关闭shell脚本。

      

       e)   /dev-设备文件

          包含设备文件,包括终端设备、USB或连接到系统的任何设备,如网卡等。

       

      f)   /proc-进程信息文件

         这是一个虚拟的文件系统,包含有关正在运行的进程信息。

      g)   /var-变量文件

        包含目录下内容可变的文件,例如,系统日志文件(/var/log);包和数据库文件(/var/lib);电子邮件(/var/mail);打印队列(/var/spool);锁文件(/var/lock);多次重新启动需要的临时文件(/var/tmp)。

      h)   /tem-临时文件

         包含系统和用户创建的临时文件,当系统重启时,文件消失。

        i)   /usr-用户程序

            包含二进制文件、库文件、文档和二级程序的源代码。

            /usr/bin中包含用户程序的二进制文件。如果你在/bin中找不到用户二进制文件,到/usr/bin目录看看。例如:at、awk、cc、less、scp。
            /usr/sbin中包含系统管理员的二进制文件。如果你在/sbin中找不到系统二进制文件,到/usr/sbin目录看看。例如:atd、cron、sshd、useradd、userdel。
            /usr/lib中包含了/usr/bin和/usr/sbin用到的库。
           /usr/local中包含了从源安装的用户程序。例如,当你从源安装Apache,它会在/usr/local/apache2中

         j)  /home -HOME目录

            包含所有用户的个人档案,Linux是多用户的系统,所以用该目录保存各用户的信息。

         k)  /boot -引导加载程序

            包含引导加载程序相关的文件。

         l)  /lib -系统库

            包含支持位于/lib和/sbin下的二进制文件的库文件。

         m)  /opt -可选的附加应用程序

         n)  /mnt -挂载目录

      关于目录树:

      先看基本常用的命令   apt  的全称是Advanced Packaging Tool是Linux系统下的一款安装包管理工具。

    1.  sudo apt update  #更新可用软件列表

    2. sudo apt upgrade #更新已安装的软件

    3. sudo apt install 软件名 #安装软件

    4. sudo apt remove 软件名 #删除软件

    5. sudo apt autoremove 软件名 #用来自动清理不再使用的依赖和库文件

    6. sudo apt show 软件包名 #示软件包具体信息。例如:版本号,安装大小,依赖关系,bug报告等等。

    7. apt list --upgradeable:显示可升级的软件包。

    #sudo为获得管理员权限

       接下里操作一下在linux安装常用工具

        apt安装软件命令其实不需要记忆,当你在终端中输入软件名事,如果软件未安装,他会提示你安装的

    1.   sudo apt install ipython    #安装python

    2. sudo apt install ipython3

    3. sudo apt install python-pip

    4. sudo apt install python3-pip #安装python工具包

       安装远程登录 ssh服务器

    1.   sudo apt install openssh-server  #安装ssh服务器,安装之后才可以在其他系统中通过ssh工具远程登录

      接下来练习一下删除命令

    例:
    1. sudo apt remove libreoffice-commen #删除ubuntu系统内置的一个软件libreoffice

    2. sudo apt remove unity-webapp-commen   #删除亚马逊

      拓展:

    1.  apt和apt-get都是ubuntu下常用的安装软件命令
    2. apt
    -get是早期的使用方法,从ubuntu16开始,官方建议使用apt
    3. 这两个命令的使用方式非常相似

      另一种安装方式:Debian

      deb是Debian Linux的安装格式,在ubuntu中也可以使用,要安装dep包,需要dpkg这个中端命令

      格式:  这种安装方法首先要进入安装包所在位置才能执行

    sudo dkpg -i <package.dep>
    

       实战:看一下谷歌浏览器和搜狗输入法的安装

    1.  下载deb包
      对于谷歌Chrome32位版本,使用如下链接:
      wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb

      对于64位版本可以使用如下链接下载:
      wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
      必须下载正确的版本否则会出现问题


    2.  安装deb包
      sudo dpkg -i google-chrome-stable_current_amd64.deb

    3. 要是依赖出现问题(修复依赖关系)
       sudo apt-get -f install  #基本上所有软件都需要加上这步,依赖树来关联

    4.  运行chrome

       chrome

      

     #下载搜狗输入法的安装包
    
                下载地址为:http://pinyin.sogou.com/linux/ ,如下图,要选择与自己系统位数一致的安装包,我的系统是64位,所以我下载64位的安装包
    
    wget "http://cdn2.ime.sogou.com/dl/index/1524572264/sogoupinyin_2.2.0.0108_amd64.deb?st=tQdHKEaxh6PcyFVf4QfT1A&e=1539855246&fn=sogoupinyin_2.2.0.0108_amd64.deb"
     

      #要去西永设置的语言支持将输入法的系统设置为fcitx
    1. sudo dpkg -i sogoupinyin_2.1.0.0082_amd64.deb  
    2. sudo apt -f install
    3. 重启

     

      这边插入一个小方法:(关于在电脑中复制的文本没办法在ubuntu虚拟机中粘贴的问题)

    1.  sudo apt-get autoremove open-vm-tools
    2.  sudo apt-get install open-vm-tools
    3.  sudo apt-get install open-vm-tools-desktop
    4.  重启

    ##这边呀注意的是ubuntu默认输入法切换为Ctrl+ space

    三.   linux终端命令格式

    1. 终端命令的基本格式

    commond [options] [parameter]

      commond:命令名,相应功能的英文单词或者手缩写

      options:可选项,可对命令进行控制,也可省略

      parameter:传给命令的参数.可以是一个,也可以是多个

    2.   查看命令帮助信息

      先了解以下两种方法:

      1.  --help

    commond --help

      说明:

        显示command帮助信息

      2.  man

    man command

      说明:

        查阅command的使用手册

        man是manual的缩写,是linux提供的一个手册,包含绝大多数命令,函数的使用

     3.  常用linux命令

      这里要注意的是linux区分大小写:
    
      命令记不全的可以用tab键补全

      上面的删除文件命令rm其实也是删除文件夹命令,只不过要加选项
      删除文件夹 rm -r 文件夹名

    四.   有关文件和目录操作命令

    • 查看目录内容 

      ls

    •  切换目录

      cd

    •  创建和删除

      touch

      mkdir

      rm

    •  拷贝和移动

      cp

      rm

    •  查看文件内容

      cat

      more

      grep

    •  其他

      echo

      重定向 >  和 >>

      管道 I

    1.   终端命令使用技巧

    1. 自动补全: 在敲出文件/目录/命令名字前几个字母之后  按下tab键
    •  如果没有歧义,会自动补全    
    • 如果有歧义(就是有多个命令的前几个字母一样的) tab键再按一下,就会打印出命令前几个字母是你输得所有命令
    2. 按上/下键 可以在曾经输入的命令中切换
      如果想要退出选择,可以快捷键ctrl+c

    2.   ls命令说明

    ls是list的缩写,其功能是列出目录的内容,是最常用的命令之一,类似dos下的dir

      linux下文件和目录的特点

    • linux下文件或者目录名称最长256个字符
    • 以.开头文件为隐藏文件,需要 -a参数才能显示
    • .代表当前目录
    • ..代表上一层目录

      ls常用选项

         通配符的使用

     

    通配符 含义
    * 代表可以匹配任意个字符
    ? 代表匹配一个字符
    [] 代表匹配字符组中任意一个
    [abc] 代表匹配abc中任意一个
    [a-f] 代表匹配a-f范围任意字符中的一个

    3.  cd 切换目录 cd是change directory的简写,其功能为切换当前工作目录,也是最常用命令之一

      注意:linux下所有目录和文件名都是对大小写敏感的

     

    命令 含义
    cd 切换到当前用户主目录(/home/用户目录)
    cd~ 切换到当前用户主目录(/home/用户目录)
    cd . 保持当前工作目录不变
    cd .. 切换到当前目录的上一层目录
    cd - 可以在最近工作的两个目录切换(上下键)

      绝对路径和相对路径

    #在输入路径时候,最前面不是 / 或者 ~,表示相对当前目录所在的目录位置
    #在输入路径的时候,最前面是 / 或者 ~,表示相对当前根目录 /家目录开始的目录位置

     4.    创建和删除操作

      touch

    • 创建文件或者修改文件时间
    • 如果文件已经存在,可以修改文件末次次该时间
    • 同时创建福讴歌文件 touch file1.txt  file2.txt file3.txt

      mkdir

      

    • 创建新目录
    • 创建多个目录 mkdir -p {d1,d2,d4}
    • 递归创建多级目录 mkdir -p a/b/c/d
    选项 含义
    -p 可以递归创建目录

      rm

      删除文件或者目录

      注意rm命令的删除是一次性,永久性的,跟windows的回收站不一样

    选项 含义
    -f 强制删除,忽略不存在的文件,无需提示
    -r 递归删除目录下的内容,删除文件夹必须加ci参数

     5.  拷贝和移动文件

    序号 命令 对应英文 作用
    01 tree[目录名] tree 以树状图列出文件目录结构
    02 cp 源文件 目标文件 copy 肤质文件或者目录
    03 mv 源文件 目标文件   move 移动文件或者目录/文件或者目录重命名

      tree

    可以以树状图结构列出文件目录  #tree这个命令默认是没有的,需要自己安装 sudo apt install tree
    选项

    含义

    -d 只显示目录

      cp

    cp命令是将给出的文件或者目录拷贝到另一个文件或者目录中,相当于dos下的copy命令
    选项 含义
    -f  已存在的目标文件会直接覆盖,不会提示
    -i 覆盖前提示
    -r

    若给出的源文件是一个目录,则copy

    将递归复制该目录下所有子目录和文件,目标文件必须为一个目录名

      mv命令

    mv命令可以移动文件或者目录,也可以给文件或者目录重命名(移动到同一个文件夹就是,名字变化了,就是重命名)  #最好加选项-i
    选项 含义
    -i 覆盖前提示

      

      6.  查看文件内容

    序号 命令 对应英文 作用
    1 cat concatenate 查看文件内容,创建文件,文件合并,追加文件内容的功能
    2 more more 分屏显示文件内容,按百分比显示文件内容
    3 grep 搜索文本文件名 grep 搜索文本文件内容
    4 echo 选项 输出内容 echo 输出内容到控制台上面
    5 head -n num head 显示文件开头部分内容
    6 tail -n/f 文件 tail       输出文件尾部内容

      使用cat命令的选项

    • 查看文件内容,创建文件,文件合并,追加文件内容的功能
    • 一次性的全部展现出文本内容
    选项 含义
     -b  对非空输出航编号
     -n 对输出的所有行编号 

      linux中还有一个nl和cat  -b效果等价

      

      more选项

    • more命令可以分屏显示文件内容(百分比)
      
      
    • 适用于查看文件较大的文件
    选项 作用
    空格 向下一页
    Enter 一次滚动手册一行
    b 回滚一屏幕
    f 向前滚一屏
    q 退出
    /word 搜索word字符串

      grep

    • linux系统中grep是一种强大的搜索工具
    •  grep允许对文本文件进行模式查找,所谓的模式查找就是正则匹配
      •   

        grep nologin /etc/passwd # 过滤出/etc/passwd下面所有含有noloing的信息
        grep root /etc/passwd # 过滤出/etc/passwd下面root信息

      选项和作用

    选项  作用
    -n 显示匹配行及行号
    -v 显示不含匹配行的所有行(相当于求反)
    -i 忽略大小写

      常用的两种模式(注意:这里要查找的对象是行)

    参数 含义
    ^a 以a开头
    $b 以b结尾

      echo指令

    echo输出内容到控制台
    • 基本语法 echo [选项] [输出内容]
    • 应用实例 案例: 使用echo $PATH 指令输出环境变量

      head指令

    head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
    • 基本语法
    head 文件 (功能描述:查看文件头10行内容) head
    -n 5 文件 (功能描述:查看文件头5行内容, 5可以是任意行数)

      tail指令

    tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容
    • 基本语法
    1) tail 文件 (功能描述:查看文件后10行内容)
    2) tail -n 5 文件 (功能描述:查看文件头5行内容, 5可以是任意行数
    3) tail -f 文件 (功能描述:实时追踪该文档的所有更新)

       head和tail组合可以定位到我们要的文本内容

    想要显示/etc/passwd下面的第10行到第20行, 可以使用管道符进行二次过滤
    head -20 /etc/passwd | tail -1

     

      7.  其他

      

    1.echo 会在终端中显示参数指定的文字,通常会和重定向联合使用

    2. 重定向 > 和 >>
    •   linux允许命令执行结果重定向到一个文件当中
    •    将本应该显示在终端的内容 输出/追加 到指定的文件当中
      其中 > 表示输出,会覆盖文件原有的内容
      >> 表示追加,会将内容追加到已有文件的末尾
    3. 管道 |
    •   linux允许将一个命令的输出可以通过管道作为另一个命令的输入
    •    可以理解为现实生活中的管子,管子一头思塞进去,另一头取出来,这里 | 分为左右两端,左端写(输入),右端读(输出)

      常见的管道命令有:

    •   more : 分屏显示内容
    •    grep : 在命令执行结果的基础上查询指定的文本内容

     4. history   

      可以列出我们所有执行过的命令(会有相应的编号在命令之前)

      使用技巧:要重复执行就直接 !编号 就直接执行了

       关于重定向的扩展:

    #1.把输入内容重定向追加到另一个文件
    [root@qishi ~]# cat >> 1.txt << EOF
    > 这是键盘输入要追加
    > 然后经过cat查出来
    > 追加到1.txt
    > eof是结束符
    > EOF
    [root@qishi ~]# cat 1.txt
    这是键盘输入要追加
    然后经过cat查出来
    追加到1.txt
    eof是结束符
    
    
    
    #2.把输入内容重定向写入到另一个文件
    [root@qishi ~]# cat > 1.txt<<EOF
    > 这是输入写入
    > 而不是追加
    > eof
    > 还是结束符
    > EOF
    
    
    #3.从文件中读入内容写入另一个文件
    [root@qishi ~]# cat  > 2.txt  < 1.txt
    [root@qishi ~]# cat 2.txt 
    这是输入写入
    而不是追加
    eof
    还是结束符
    
    
    #4.从文件中读入内容追加另一个文件
    [root@qishi ~]# cat  >> 2.txt  < 1.txt
    [root@qishi ~]# cat 2.txt 
    这是输入写入
    而不是追加
    eof
    还是结束符
    这是输入写入
    而不是追加
    eof
    还是结束符

      

      

  • 相关阅读:
    python虚拟环境--virtualenv
    求导法则和高阶导数
    restful规范
    python协程--yield和yield from
    打印质数
    更改docker的存储位置
    同台ECS安装多个mysql
    jenkins + gitlab + harbor + k8s 部署项目
    jenkins 配置maven
    gitlab + jenkins 持续集成
  • 原文地址:https://www.cnblogs.com/tjp40922/p/10161735.html
Copyright © 2011-2022 走看看