linux 学习主要内容整合

Posted on 2019-12-07 16:50  辉仔猿  阅读(353)  评论(0编辑  收藏  举报

linux操作系统的使用

shell:英文单词Shell可直译为"贝壳"。贝壳是动物作为外在保护的一种工具。

linux中的Shell就是linux内核的一个外层保护工具。

shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,

从而实现用户与操作系统的交互。

 

 

Shell的类型:

      Bourne Shell(简称sh):由AT&T贝尔实验室的S.R.Bourne开发,是UNIX

      的第一个shell程序,已成为一种工业标准。目前几乎所有的Linux系统都支持。

      缺陷:Bourne Shell的作业控制能力薄弱,且不支持别名与历史记录等功能。

      因此目前大多数操作系统将其作为应急Shell使用。

 

 

      C Shell(简称csh): 由加利福尼亚大学伯克利分校开发,csh脚本的编程

      风格类似于C语言,受到广大C程序员的拥护。

      缺陷:C Shell的健壮性不如Bourne Shell。

 

 

      Korn Shell(简称ksh):由David Korn开发,解决了Bourne Shell的用户

      交互问题,并克服了C Shell的脚本编程怪癖的缺点。

      缺陷:Korn Shell的使用需要许可证,导致它的应用范围不如Bourne Shell广泛。

 

 

      Bourne Again Shell(简称bash):同样由AT&T贝尔实验室开发,是Bourne Shell

      的增强版,已成为最流行的Shell。

 

 

Shell命令提示符的格式:

            username@hostname:direction$

             用户名   主机名   目录名

 

 

Shell命令格式:

      $ Command [-Options] Argument1 Argument2 ...

         指令      选项      参数1     参数2   ...

 

通常一条命令包含三个要素:命令名称、选项、参数。命令名称是必选项,
选项和参数是可选项。
1.一条命令的三要素之间用空格隔开
2.若将多个命令书写在一行,用分号将各命令隔开
3.如果一条命令不能在一行写完,在行尾使用反斜杠标明该条命令未结束
 ~ : 代表当前所在的路径为家目录
 / : 代表根目录
 whoami    查看当前用户名
 hostname  查看主机名
 pwd       获取绝对路径
绝对路径:文件在文件系统中的准确位置
相对路径:相对于用户当前位置的一个文件或目录的位置


linux基本命令
1  uname -r  查看内核版本号
2  打开终端 : ctrl + alt + t
               ctrl + shift + n
   补齐命令或者文件名: 使用tab键
3  关机命令: sudo shutdown  -h  now(时间) -halt(停止) 立刻关机 
              sudo shutdown  -r  now(时间) -reboot(重启) 重启
              sudo  reboot  now   重新启动
  查看系统时间  date  
  设置新时间    sudo  date  -s  1:19:18  
   更改时区     cp/usr/share/zoneinfo/Asia/Shanghai  /etc/localtime 
   

4  放大字体 : ctrl + shift + 加号
   缩小字体:  ctrl + 减号


5  清屏指令   clear
              ctrl + l
   查看shell命令历史记录 history 
   查看系统默认的历史记录的容量  echo $HISTSIZE
   临时修改容量 HISTSIZE=1000
   永久性修改历史记录容量:  vi .bashrc 
                             HISTSIZE=2000
   使配置生效:  source  .bashrc
 
5  ls 浏览目录
  ls  -l  文件以列表的形式呈现出来
  ls  -h  文件的大小,使用k,M
  ls  -a  列出所有的文件,包括隐藏文件


drwxr-xr--   2 wdl  wdl  4096  2007-09-17 2:23 Desktop
文件类型、文件访问权限 文件链接数目 文件所有者 文件所属组 文件大小,以字符为单位 
最后一次修改文件或目录的时间 文件或目录名称
第一组 rwx: 代表wdl用户权限  
第二组 rwx: 代表同组用户权限
第三组 rwx: 代表其他用户权限
文件类型 
  -               普通文件
  b (block)       块设备文件
  c (char)        字符设备文件
  d (directory)   目录文件
  l (link)        链接文件
  p (pipe)        管道文件
  s (socket)      套接字文件


文件和目录权限
r(read) 读权限   w(write) 写权限  x  执行权限


6  cd  改变工作路径 
    ~  home目录  
    .  当前目录
    ../ 上一次目录
    cd -    表示执行上一次cd命令操作

7 file  显示文件的类型
8 touch 创建一个新文件,改变文件的最后修改时间


9  mkdir 创建目录
       -p 嵌套的创建多层目录
  
10 rmdir 删除目录
11 cp     将文件和目录复制到另一个文件或目录中
      -a 递归地复制目录并保留链接和文件属性
      -r 递归地复制目录下的所有子目录和文件
12  mv    将文件或目录从源目录移动到目标目录中,重命名文件名
13  cat   读取指定文件的内容,并在标准输出设备上显示
14 head  显示文件开头 默认10行
   tail  显示文件结尾 默认10行
15 echo  用于在标准输出——显示器上显示一段文字,一般起到提示作用
      -n 不换行显示
16 diff  比较两个文件,将不同的显示出来 
   uniq  去掉文件中相邻重复的行
   grep "main"  ./*  -R  表示递归查找多级子目录下的内容
   wc  -w  file.txt  计算文件中单词的个数
   wc  -c  file.txt  计算文件中字符的个数
   wc  -l  file.txt  计算文件的行数
创建链接文件
链接文件类似于微软Windows的快捷方式,只保留目标文件的地址而不占用存储空间
linux中有两种类型的链接
硬链接:利用Linux中为每个文件分配的物理编号——inode建立链接,因此,
硬链接不能跨越文件系统。
软链接:利用文件的路径名建立连接。
ln   创建文件的链接文件 (缺省条件下建立硬链接)
  -s 创建文件的软链接
  

 

vi可以分为三种模式:底行模式、插入模式和命令行模式。
      1 命令行模式 :
              复制:yy , 4yy, 
              粘贴:p (粘贴到光标的下一行), P(粘贴到光标的上一行)
 剪切:先删除后粘贴
              删除:dd , 4dd
              删除一个字符: x,X
              替换一个字符: r, R(一直替换,直到按esc结束)
              删除一个字符, 并且进入插入模式 s
 移动光标:h,j,k,l 分别控制光标左、下、上、右移一格
 Ctrl+b 屏幕往上移动一页  Ctrl+f 屏幕往下移动一页
         G 移动到文件的最后一行  gg 移动到文件的第一行
         . 重复前一个操作
            
            2 插入模式
              i 在光标前面插入
              a 在光标后面插入
              I 跳到行首插入
              A 跳到行尾插入
              o 在光标的下一行,行首位置插入
              O 在光标的上一行,行首位置插入


            3 底行模式
              shift+: 4,10y
                    : 4,10d
              保存: w
              保存并且退出: wq , x , ZZ
 不保存修改退出: q
              强制性退出:  q!
 :w filename 文件无改动,不保存退出;文件已改动,保存后推出
 :r filename 读入另一个文件的数据追加到本文件末尾
 :n1,n2 w filename 将n1到n2的内容保存成filename文件
 :!Command  暂时离开vi到命令行模式下执行command的显示结果
 :set nu 显示行号
   替换: c$ 替换光标到结尾的所有的内容
          c0 替换光标到开头的所有的内容


   复制: y0 复制光标到开头的内容
          y$ 复制光标到结尾处的内容



 

Shell中的特殊字符
 通配符          含义                           实例
    *       代表匹配任意长度的字符串         rm  *.txt 
    ?      代表匹配一个长度的字符           rm  file?.txt
   []       代表匹配其中指定的一个字符       rm  file[12].txt
   [-]      代表匹配指定的一个字符范围       rm  file[1-4].txt   
   [^]      代表除了指定的字符,均可匹配     rm  file[^1].txt


管道:管道可以把一系列命令连接起来,第一个命令的输出作为第二个
命令的输入,通过管道传递给第二个命令,第二个命令的输出又作为
第三个命令的输入,以此类推。
   ls  ./  | wc -w  测试当前目录下的单词的个数


输入输出重定向:输入/输出重定向是改变Shell命令或程序默认的标准
输入/输出目标,重新定向到新的目标。
Linux中默认的标准输入定义为键盘,标准输出定义为终端窗口。
重定向符               含义                          实例
 > file   将file文件重定向为输出源,新建模式    ls ./ > log.txt
 >> file  将file文件重定向为输出源,追加模式    ls ./ >> log.txt
 < file   将fiel文件重定向为输入源             wc < file
 2>或&> 将由命令产生的错误信息输入到指定文件中 ls file 2> err.log


命令置换:命令置换是将一个命令的输出作为另一个命令的参数。
命令的格式如下所示:
command1 `command2`  ls `pwd` 显示当前目录的文件内容


流行的两种软件包管理机制
背景:最初,基于linux系统的开发者在完成应用程序的开发后,将很多
二进制文件发给用户,用户在使用之前需要将很多程序逐个安装。
    
1.Debian Linux首先提出"软件包"的管理机制——Deb软件包,将应用程序的
二进制文件、配置文档、man/inf帮助页面等文件合并打包在一个文件中,
用户使用软件包管理器直接操作软件包,完成获取、安装、卸载、查询等
操作。


2.Redhat Linux基于这个理念推出了自己的软件包管理机制——Rpm软件包。
采用自己的打包格式生成Rpm包文件,由Rpm包管理器负责安装、维护、
查询,甚至是软件包版本管理。
   
软件包的类型:
    1.二进制软件包:包含可执行文件、库文件、配置文件、man/info页面、
版权声明和其它文档。


    2.源码包:包含软件源代码、版本修改说明、构建指令以及编译工具等。
先由tar工具归档为.tar.gz文件,然后再打包成.dsc文件。


软件包管理工具分类
  类别              常见工具举例                           描述
                                           在命令行模式下完成软件包管理任务。
                                           为软件包的获取、查询、软件包的依
 命令行         dpkg-deb、dpkg、apt       赖性检查、安装、卸载等任务,
                                           需要使用各自不同的命令。


 文本窗口界面  dselect、aptitude、tasksel  在文本窗口模式中,使用窗口和菜 
                                              单可以完成软件包的管理任务。




 图形界面          synaptic                在x-windows图形桌面环境中运行,
                                           具有良好的交互性、可读性、易用性等特点。
命令行管理工具
1.dpkg是最早的Deb包管理工具。
2.APT系列工具室Deb软件包管理工具中功能最强大的。


dpkg是最早的Deb包管理工具,使用dpkg可以实现本地软件包的安装、编译、
卸载、查询,以及应用程序打包等功能。
缺陷:由于当时Linux系统规模和Internet网络条件的限制,没有考虑到现今
系统中软件包如此复杂的依赖关系,以及帮助用户获取软件包。因而,为了解决
软件包依赖性问题和获取问题,就出现了APT工具。


APT工作原理
APT(Advanced Packaging Tool)是Ubuntu LInux中功能最强大的命令行
软件包管理工具,用于获取、安装、编译、卸载和查询Deb软件包,以及
检查软件包依赖关系。
Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存放
在软件仓库中,进行有效组织和管理,然后将软件仓库置于许许多多的
镜像服务器中,为了使用户有选择的访问各镜像站点,在Ubuntu系统中,
使用软件源配置文件/etc/apt/source.list 列出最适合访问的镜像站点
地址,以便本地主机查询。这就是APT软件包管理器的工作原理。


 1)dpkg:本地安装软件包,不检查软件之间的依赖关系
     sudo dpkg -i rxvt*.deb     安装软件包
     sudo dpkg -s rxvt          查看软件的安装状态
     sudo dpkg -L rxvt file     列出软件的安装清单
     sudo dpkg -r rxvt          删除软件,但是配置文件保留
     sudo dpkg -P rxvt          全部删除,包括配置文件




  2)apt:在线安装软件包
     软件源配置文件: /etc/apt/sources.list 
     刷新软件源列表,建立软件索引文件: sudo apt-get update (要求ubutun虚拟机联网)


     sudo apt-get install  rxvt             在线安装软件
     sudo apt-get --reinstall install  rxvt 重新安装软件包 
     sudo apt-get check  rxvt               检查软件包之间的依赖关系
     sudo apt-get remove  rxvt              删除软件包,但是保留配置文件
     sudo apt-get --purge  remove rxvt      卸载软件包,包括它的配置文件
 
软件包的命名
软件包的命名遵循以下约定:
     Filename_Version-Reversion_Architectrure.deb
     软件包名称_软件版本-修订版本_体系结构



 

Shell基本系统维护命令
   关机命令: sudo shutdown  -h  now(时间) -halt(停止) 立刻关机 
              sudo shutdown  -r  now(时间) -reboot(重启) 重启
              sudo  reboot  now   重新启动
   passwd   修改当前用户的登录口令(超级用户可修改所有用户
            的登录口令,其他用户只能修改本用户登录口令)
   su       临时改变用户身份,具有其他用户的权限
   
   date     查看或更改系统时间
   sudo  date  -s  1:19:18   设置新时间
   cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 更改时区
   df       查看磁盘空间使用情况
   df  -Th  显示物理文件系统的文件格式类型和文件系统大小按兆
            字节为单位
   df  -aTh 显示物理文件系统的文件格式类型和使用情况及文件系统
            大小按兆字节为单位
   du       列出目录和文件所使用的磁盘块数,每块占512个字节
       -a   仅列出空闲的文件数
       -k   列出磁盘使用情况(kb)
       -s   列出总的空闲空间(kb)
用户管理
 vi /etc/passwd   存放用户密码相关信息
 vi  /etc/group   存放组有关信息
 vi /etc/adduser.conf  
   sudo adduser  u1              添加一个新的用户
   sudo deluser --remove-home u1 删除一个用户和用户的工作目录
 
进程管理
   ps(process snapshot)  进程快照,查看进程信息
       -A   列出所有的进程
       -aux 显示所有包含其他使用者的进程
进程快照列表的组成
%CPU     占用的CPU使用率
%MEM     占用的内存使用率
VSZ      占用的虚拟内存大小
RSS      占用的内存大小
STAT     进程的状态
STATRT   进程开始时间
TIME     执行的时间


进程的状态标志
D:不可中断的静止       R:正在执行中
S:阻塞状态             T:暂停执行
Z:不存在但暂时无法消除 W:没有足够的内存分页可分配
<: 高优先级的进程       N:低优先级的进程
L:有内存分页分配并锁在内存中
  top    监视进程,每3秒刷新一次(通常全屏显示,随着进程状态的变化不断更新)
       shift + >   向下翻页  shift + <  向上翻页  q   退出
  pstree     将所有进程以树状图显示
  kill   [-signal] PID  使用kill命令终止进程


  
文件压缩和归档
Ubuntu Linux默认安装图形化压缩工具是File Roller文件打包器,
被集成到Nautilus文件管理器中,同时具有归档、压缩、解压文件/目录
的功能。


shell归档和压缩工具
  gzip与gunzip
      gzip
      -l  查看压缩文件内的信息,包括文件数、大小、压缩比等参数
      -d  将文件解压,功能与gunzip相同
      -num 指定压缩比,num为1~9个等级
  zip与unzip
      两者区别在于gzip只能压缩一个文件,无法将多个文件压缩为
      一个文件,不具有归档的功能。
  tar
      -cjf -czf  将多个文件合并归档并压缩
      -xvf       将文件解压



 

Linux文件系统
文件系统:用于组织和管理计算机存储设备上的大量文件,并提供用户交互接口。
Linux具备完善的文件系统,用户既可以使用界面友好的Nautilus图形文件管理器,
也可以使用功能强大的Shell文件系统管理工具。


文件系统类型
目前Ext3是Linux系统广泛使用的一种文件格式,在Ext2基础上对有效性保护、数据完整性、
数据访问速度、向下兼容性等方面做了改进。
Linux是一种兼容性很高的操作系统,支持的文件系统格式很多,大体可分为以下几类:
     1)磁盘文件系统:本地主机中实际可以访问到的文件系统,包括磁盘、CD—ROM、
DVD、USB存储器、磁盘阵列等。常见文件系统格式有:autofs、coda、Ext(Extended
File System,扩展文件系统)、Ext2、Ext3、VFAT、UFS(Unix File System,Unix文件系统)
、FAT(File Allocation Table,文件分配表)、FAT16、FAT32、NTFS等
 
2)网络文件系统:可以远程访问的文件系统,这种文件系统在服务器端仍是本地的磁盘
文件系统,客户机通过网络远程访问数据。常见的文件系统格式有:NFS(Network File System,
网络文件系统)、Samba、AFP(Apple Filling Protocol,Apple文件归档协议)和WebDAV等
 
3)专有/虚拟文件系统:不驻留在磁盘上的文件系统。常见格式有:TMPFS(临时文件系统)、
PROCFS(Process File System,进程文件系统)和LOOPBACKFS(Loopback File System,回送文件系统)
 
文件系统结构
Linux文件系统就是一个树形的分层组织结构,将根(/)作为整个文件系统的唯一起点,其他所有
目录都从该点出发。
在Windows下,目录结构属于分区;在Linux下,分区属于目录结构。
    在Linux中,将所有硬件都视为文件来处理,包括硬盘分区、CD-ROM、软驱以及其它的USB移动设备等。
为了能够按照统一的方式和方法访问硬件资源,Linux提供了对每种硬件设备相应的设备文件。一旦
Linux系统可以访问到硬件,就将其上的文件系统挂载到目录树的一个子目录中。



 

基本目录结构
/bin   存放系统中最常用的二进制可执行文件
/boot  存放linux内核和系统启动文件,包括Grab、lilo启动器程序
/dev   存放所有设备文件,包括硬盘、分区、键盘、鼠标、USB、tty等
/etc   存放系统所有配置文件,如passwd存放用户账户信息,hostname存放主机名等
/home  用户主目录的默认位置
/lib   存放共享的库文件,包含许多被/bin和/sbin中程序使用的库文件
/media Ubuntu系统自动挂载CD-ROM、软驱、USB存储器后,存放临时读入的文件
/mnt   该目录通常用于作为被挂载的文件系统的挂载点
/proc  存放所有标志为文件的进程,它们是通过进程号后其他的系统动态信息进行标识
/root  超级用户的主目录
/tmp   存放用户和程序的临时文件,所有用户对该目录都有读写权限
/usr/bin      用户和管理员的标准命令
/usr/include  c/c++等各种开发语言环境的标准include文件
/usr/lib      应用程序及程序包的连接库
/usr/sbin     用户和管理员的标准命令
/usr/share    存放使用手册等共享文件的目录
/var/cache    应用程序缓存目录
/var/tmp      临时文件目录