• < 独立项目


    < 独立项目 -  文本挖掘 >

    项目立项的相关背景介绍,TODO方向。

    一、Ubuntu环境配置

      主机系统:Windows 7 SP1   64位操作系统 | i5-4210 CPU | 16GB RAM  

      VirtualBox虚拟环境:GUN VitrualBox

      Linux系统:Ubuntu 15.10(ubuntu-15.10-desktop-i386) 

    二、Linux Ubuntu 基础知识

      使用Ctrl+Alt+[F1~F6],可以切换到1~6号控制台。使用Ctrl+Alt+F7返回图形界面。Ctrl+Alt+BackSpace将图形界面关闭。

    命令提示符

      user@ubuntu:~$为命令提示符。@之前的部分为当前用户ID,@与:之间的部分,为主机名称,:与$之间的部分,为当前的路径。

    退出系统

      可在中断或控制台中输入命令:sudo halt,系统会提示输入正确密码,便可以退出系统。

    分区概念

      硬盘分区的存在,是由硬盘的物理特性决定的,并不会因为不同的操作系统而有所改变。请把硬盘想象为一本书,所有的书都是相同的结构,通常包括 书名、索引和正文。如果需要Linux,首先需要找到一本名为《Linux》的书,书名相当于硬盘中的MBR,也就是主引导记录。MBR可以使几个书名合在一起,类似于《XX合订本》。而正文,就是硬盘中记录的数据。索引相当于硬盘中的分区表,书中的每一个章节,相当于硬盘中的一个分区,它起始和结束的页次,都可以再索引中找到。如果没有分区表,操作系统也不能够在硬盘上定位数据的位置。在Linux中,分区是这样表示的:

      /dev/hda  /dev/hda1  /dev/hda2  /dev/hda5/  /dev/sdb1

      以/dev/hda5为例:因为在linux中,每一个设备都是用/dev/文件夹下的一个文件来表示,所以/dev/hda5中,/dev/表示的是根目录下的dev目录,来看剩下的部分hda5.前两位的字母hd表示这是一块IDE硬盘,如果是sd,则代表SATA硬盘,或闪存等外设。第三位的字母a表示这是该类型接口上的第一个设备。同理,b、c、d......分别代表该类型接口上的第二三四个...设备。例如hdc表示第二个IDE接口上的主硬盘(每个IDE接口上允许一个主设备和一个从设备)。第四位的数字5,并不表示这是该硬盘中的第5个分区,而是第一个逻辑分区。因为在Linux中,为了避免不必要的混乱,分区的顺序是不能改变的,分区标识则由它们在硬盘中的位置决定,系统又要为所有可能的主分区预留标识,所以1-4一定不会是逻辑分区,5则是第一个逻辑分区,以此类推。

    Shell

      在Linux下,所有的程序都可以通过命令运行。虽然Linux也有GUI,但并不比Windows的GUI更优秀!使用CLI还有更多的好处,之后慢慢体会。

    命令

      Linux命令行具有补全功能,非常实用。例如command path/file命令,如果只有一个以c起始的命令,键入c,再按一次tab键,系统将自动补全命令余下的部分。如果不只一个c起始的命令,可以按两次tab键,系统会列出所有符合条件的选项。路径和文件名也可以通过tab键来补全。还有一种遍历补全的方式。

      接下来了解命令的语法结构,这一部分相当重要!以我们的中文为例:

      我们郑重地推荐您Ubuntu/Linux!

      这个句子的语法尽管简单,却是大部分的命令行采用的句型,看下句子里的结构都有些什么?

      我们:主语,Linux命令的执行者只有一个,所以主语一概省略。

      推荐:动词,作为谓语存在。Linux命令中,谓语是必须的。这这是不同命令之间最根本的区别方式。所以通常作为命令名,写在最前面。例如,键入date命令,可以查看当前的时间日期。

      郑重地:状语,用来修饰谓语。Linux命令可以使用参数来精细调节程序的行为。为了与命令的操作对象相区别,参数前通常要加-或--符号。建议在命令行后直接跟参数。

      您Ubuntu/Linux:这两个部分都是宾语。它们是命令的操作对象。大部分的命令只有一个操作对象,也有一些命令是双宾语结构。具有一个直接宾语和一个间接宾语,比如拷贝这个命令cp(copy)

      分隔符:Linux命令中使用空格作为分隔符。cp a /home表示把当前目录下的a文件,拷贝到/home目录下。(命令的不同部分使用空格分隔,连续的空格视为一个空格)。

      上面的中文例子,翻译成Linux命令,应该是这个样子的:

      推荐 --郑重地 您 Ubuntu/Linux(按照传统,“-”后跟简写为单个字母的参数,“--”后跟完整单词的参数,但是也有例外)。

    Linux程序、进程

       其实Linux的命令,运行的是Linux系统中的程序。只要已安装了程序,就可以通过命令来运行它,并且可以使用参数来精细的调整它的运行状态。举一个例子:mplayer -shuffle -loop 3 -playlist mymp3.list

      上面命令汇总,mplayer调用mplayer播放器程序。参数-shuffle表示随机播放,-loop表示循环播放,后面的3为循环的次数,如果为0,则一直播放。-playlist表示播放列表中的曲目。可以把mp3的路径放到mymp3.list文件中,让mplayer来播放它们。

      进程:为运行中的程序,是程序在内存中的镜像。

    路径

      路径分为绝对路径和相对路径。绝对路径的起始点为根目录 / ,例如/usr/local/bin就是绝对路径,指向系统中一个绝对的位置,不受其他因素影响。

      相对路径的起始点为当前目录,如果现在位于/usr目录,那么相对路径 local/bin所指示的位置为/usr/local/bin。相对路径所指示的位置,除了相对路径本身,还受到当前位置的影响。

      例如Linux系统中常见的目录/bin、/usr/bin、/usr/local/bin,如果只有一个相对路径 bin,anemia它所指示的位置可能是以上三个目录中的任意一个,也可能是其他目录。只有当前位置确定,相对路径所指示的位置才能够确定。

      在相对路径中 . 表示当前目录, .. 表示当前目录的上一级目录。例如安装了一个程序,它的主程序没有被放置到上面三个bin目录中的任何一个,或者其他系统能够找到的地方,就得告诉系统,它的可执行文件在哪里。可以使用绝对路径,例如 /home/usr/bin/可执行文件。或者定位到/home/usr/bin目录,使用相对目录来定位它 ./可执行文件。如果定位到了它的子目录,比如 /home/usr/bin/gui,可以使用 .. 来表示它的上级目录, ../可执行文件。

    路径相关命令

      cd(change directory)更改目录。

      pwd(print working directory)显示当前路径。

      ls(list)显示当前目录中的文件列表。

      cd /etc 进入/etc目录,这里使用的是绝对路径。

      pwd 显示当前路径,这个命令返回结果/etc。

      cd .. 进入上一级目录/etc

      cd ../home  /etc目录的上一级目录为/,它的子目录home为/home。

      cd - 回到上一次的目录,在/etc目录跳转到/home目录,所以这次是回到/etc目录。

      cd ~ ~代表当前用户的$HOME目录,也就是/home/{用户名}目录。

      ls 在任何时候,都可以使用ls命令,来了解当前目录下都有哪些文件。

      远程路径:

      远程路径的表示方法为  协议://用户名:密码@位置/路径:端口

      大多数的远程路径可以使用默认端口匿名访问,由此用户名、密码、端口通常不需要写。

    软件

      Linux中没有注册表这个概念。安装软件,理论上讲,只要拷贝所有相关文件,并运行它的主程序就可以。

      Bin  可执行文件,程序的可执行文件通常在这个目录下。在环境变量中设定搜索路径,就可以直接执行,而不需要定位其路径。

      Etc  配置文件,大部分系统程序的配置文件保存在/etc目录,便于集中修改。

      Lib  库文件,集中在一起,方便共享给不同程序。

      Share  程序运行所需的其他资源。例如图标、文本。这部分文件是专有的,不需要共享。

    配置方式

      Linux下没有类似注册表的系统,系统和软件都可以通过纯文本的配置文件进行设置。例如,修改主机IP地址,可以使用ifconfig这个程序,执行下面的命令:ifconfig eth0 192.168.0.1

    隐藏文件

      Linux下,名称中第一个字符为 . 的文件或文件夹,系统默认情况下将它们隐藏起来。

      cd ~ 进入用户目录;

      ls 查看当前目录下的文件列表;

      ls -a 查看所有文件的文件列表(包括隐藏文件)。  

      只查看隐藏文件,而不包括这两个特殊目录,可以使用ls命令的参数 -A。

      每个目录下都包含两个特殊目录 . 和 .. 。 . 代表当前目录, .. 代表上一级目录。目录是一种特殊类型的文件!

    文件类型

      Linux主要根据文件头信息来判断文件类型,扩展名并非决定因素。使用ls -l命令,查看详细信息格式的文件列表:

      共显示了七列信息,从左至右依次为:权限、文件数、归属用户、归属群组、文件大小、创建日期、文件名称。其中特别留意第一列:drwxr-xr-x,一共有10个位置,可以分为4组:d  rwx  r-x   r-x。

      第一组只有一个字符:a 文件夹  - 普通文件  l 链接  b 块设备文件   c 字符设备文件。

      剩下的3组分别为归属用户、归属群组、其他用户或群组对于该文件的权限。格式为:rwx  rwx  rwx,r 可读,w 可写, x 可执行。它们的顺序不能颠倒,某一位置为空(-),则表示不具有相应的权限。

      Linux下的可执行文件并不是由扩展名决定的,而是由其可执行权限位决定。

    权限

      文件的权限分为r、w、x三种类型,而一个文件可以针对归属用户,归属群组,其他用户或群组分别设定权限。使用chmod梦里更改文件的权限,使用chown更改文件的归属。例如:

      chmod 755 xxx

      chmod a+x xxx

      chown user:group xxx  用来更改文件的归属用户,也可以同时更改其归属群组。

      chgrp group xxx  用来更改文件的归属群组。

      上面命令中的755和a+x是两种类型的表达方式。后面详细介绍权限管理、用户管理。

    执行命令的权限

      有一些命令,普通用户也可以执行,但是只有root用户才能执行成功。

    执行命令的身份

      默认情况下,命令提示符末位为$,这表示将以普通用户的身份执行命令。可使用su(switch user)命令来切换其他用户。

      例如 su root,切换到root用户。如果su命令后面没有切换的目标,那么这个命令默认切换到root用户。在执行su命令时,系统会提示输入管理员的密码。之后会发现命令提示符末位变成了#,将以root用户的身份执行命令。

      Ubuntu系统默认会随机设定系统的root密码,这样更安全一些。这时候可以执行sudo命令,输入当前用户密码后,暂时以root用户的身份执行命令。(前提是sudoer列表中要包含你的ID。在安装Ubuntu系统时创建的用户,默认具有sudo权限)。如果能够执行sudo命令,那么你也就拥有了root权限。

    Shell、Console、Terminal

      Linux系统中,图形界面和控制台的分辨率通常不一致,所以切换时要有一个延时。对于中文用户来讲,控制台下中文的显示也比较麻烦。而且控制台显示内容通常不如终端显示的全面。推荐使用终端来执行命令。

    rxvt-unicode

      可以使用 sudo apt-get install rxvt-unicode 命令来安装  urxvt 终端。urxvt启动它。

      rxvt-unicode 还支持“服务器/客户端”的运营模式:

      urxvtd 启动一个守护进程daemon(支持控制台),urxvtc 启动客户端client。多个客户端可以同时连接到一个urxvtd,以达到节省系统资源的目的。

    在线帮助系统

      使用命令 man 或 info 来阅读Linux命令的在线文档。命令的格式:man xxx。说明:在使用“man”浏览器的时候,一些快捷键可能会用到:

      Ctrl+f(orward)向下翻一页   Ctrl+d(own)向下翻半页

      Ctrl+b(ackward)向上翻一页  Ctrl+u(p)向上翻半页

    bash

      使用wget这个程序,首先找到一个可下载地址,复制链接,在终端窗口内点击鼠标中键,把它粘贴进去。按下Ctrl+a组合键,光标移动到了行首,输入wget 和 空格。回车后,终端出现一些信息,下载便完成。

      使用 Ctrl+a 组合键就不需要使用方向键来移动光标,方向键每次只能移动一个字符,没有效率。还可以使用 Ctrl+f 向前移动光标,Ctrl+b 向后移动光标,Ctrl+e 将光标移动到末行。

      在Linux图形界面中,鼠标中键通常执行“粘贴”的操作,如果没有中键,可以左右键同时按下。

    中止正在运行的程序

      若一个命令持续时间很长,以至于不能够进行其他操作,可以使用 Ctrl+c 来强行中止它。

    Ctrl+s

      出于意外,有时会按下 Ctrl+s 组合键,Shell便被冻结,尝试使用 Ctrl+q 组合键,看能否恢复正常。

    通配符

      使用 ? 代表任意单个字符。使用 * 代表随意几个任意字符。可以将遍历补全和通配合结合使用,以提高效率。

      例如:cd */ 则遍历补全只补全文件夹。 chmview *.chm 则遍历补全只补全chm文件。

    任务管理

      &   在命令的末尾加上一个 & 符号,表示背景任务。

      ;     使用 ; 将多个命令连接起来,则表示任务按顺序执行。

      &&  使用 && 将多个命令连结起来,则表示只有前面的命令执行成功,后面的命令才能得以执行。

      ``    `<命令>`,如果一个命令中包含以``(Esc键下方的按键)括起来的子命令,那么子命令将被优先执行,执行结果被代入上一级命令继续执行。例如创建一个以当前时间命名的文件:touch `date+%m%d_%H:%M%S`。touch命令能够创建一个文件,它的操作对象为,date+%m%d_%H:%M%S命令的输出。我们创建了一个名为时间格式的文件。

    ctrl+z

      将当前Shell中的任务挂起。

    管道、重定向

      >  重定向符号,它的作用是将命令的输出重定向到一个文件中,比如想把命令ls的结果保存为FileList文件,作为一个清单,可以使用重定向符号来完成它:ls -l >FileList

      >>  作用于>基本相同,不同点在于,>>以追加的方式,将命令的输出写入文件的末尾。

      <  是从文件到命令的重定向,将文件的内容作为命令的输入。

      |   为管道符号,它的作用是将前一个命令的输出,作为下一个命令的输入。假设一个目录下的文件太多,使用ls命令不能够在屏幕中完全显示,这个时候可以将ls命令的输出,通过管道符号,作为浏览器less的输入。就可以使用浏览器的功能翻页、查找: ls -al | less

    脱字符

      Shell中的一些功能是通过特殊符号作为控制符来实现的。这产生一个问题,如果一个文件名中,刚好包含了这些字符,就很难对它进行操作 。这是因为Shell将文件名中的 ; 解析为按顺序执行命令。或者文件名以空白起始,而在shell中,无论多少个空格,都将被解析为一个分隔符。这个时候就需要使用脱字符 了。它能够将一个具有特殊涵义的字符转换为普通字符。上面的两个任务,可以再文件夹名中每个特殊符号前加一个 ,像这样:

      less ;xxx

      less \xxx

      less ;\&xxx

      说明:也可以使用 " 将文件名括起来,例如 less ";&xxx"。很多情况下,这样甚至更方便。

      脱字符在shell中也可以作为换行符,在一个命令的末尾添加一个 ,然后回车,在下一行继续输入命令剩余的部分,将一个命令拆分为多行且不影响它的执行。事实上换行符也符合脱字符的定义。回车键有两个涵义。一个是  执行 Enter,另一个 换行(折线箭头)。在shell中它作为控制字符 执行,使用脱字符后,它便代表排版字符 换行 了。

    Fish

      the firendly interactive shell。Fish是一款非常友好的shell。大力推荐!使用命令sudo apt-get install fish安装。完成后,运行命令fish,exit返回bash。

    设置默认的Shell

      如果拥有root权限,可以直接修改 /etc/passwd 文件,Tip:可以使用 whereis xxx 命令,来查看xxx程序的安装位置。

    设定命令的搜索路径

      使用echo $PATH,可以显示$PATH变量,它是一个环境变量,代表执行命令时,shell的搜索路径。执行一个命令时,shell会到$PATH变量定义的路径去搜索,并运行与命令同名的可执行文件。如果程序、脚本等可执行文件并不在上面的路径中,就必须使用绝对路径或者相对路径定位可执行文件。

      可以修改 /etc/environment文件来设定你的命令搜索路径,找到PATH起始的行 PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin",在双引号中添加你的自定义路径,并以 : 分隔。

    三、Ubuntu系统简介

    Ubuntu系统目录结构

      以下为Ubuntu目录的主要目录结构,稍微了解它们包含哪些文件即可。

    / 根目录

    |

    |-boot/ 启动文件。所有与系统启动有关的文件都保存在这里。

    |  grub/Grub  引导器相关的文件

    |

    |-dev/ 设备文件

    |-proc/ 内核与进程镜像

    |

    |-mnt/ 临时挂载

    |-media/ 挂载媒体设备

    |

    |-root/ root用户的$HOME目录

    |-home/

    |  |-user/ 普通用户的$HOME目录

    |

    |-bin/ 系统程序

    |-sbin/ 管理员系统程序

    |-lib/ 系统程序库文件

    |-etc/ 系统程序和大部分应用程序的全局配置文件

    |  |-init.d/ SystemV 风格的启动脚本

    |  |-rcX.d/ 启动脚本的连接,定义运行级别

    |    |-network/ 网络配置文件

    |  |-X1/ 图形界面配置文件

    |-usr/

    |  |-bin/ 应用程序

    |  |-sbin/ 管理员应用程序

    |  |-lib/ 应用程序库文件

    |  |-share/ 应用程序资源文件

    |  |-src/ 应用程序源代码

    |  |-local/

    |  |  |-soft/ 用户程序

    |

    |-var/ 动态数据

    |

    |-temp/ 临时文件

    |-lost+found/ 磁盘修复文件

    启动流程

      Linux系统主要通过以下步骤启动:

      1、读取MBR的信息,启动 Boot Manager  Windows使用NTLDR作为Boot Manager。如果系统中安装多个版本的Windows,需要在NTLDR中选择你要进入的系统。Linux通常使用功能强大,配置灵活的GRUB作为Boot Manager。

      2、加载系统内核,启动init进程  init进程是Linux的根进程,所有的系统进程都是它的子进程。

      3、init进程读取 /etc/inittab 文件中的信息,并进入预设的运行级别,按顺序运行该运行级别对应文件下的脚本。脚本通常以start参数其中,并指向一个系统中的程序。

      4、根据 /etc/rcS.d/ 文件夹中对应的脚本启动Xwindows服务器.xorg。Xwindow为Linux下的图形用户界面系统。

      5、启动登录管理器,等待用户登录。

    更改运行级别

      在 /etc/inittab 文件中找到如下内容:

      #The default runlevel.

      id:2:initdefault:

      这一行中的数字 2,为系统的运行级别。默认的运行级别含义如下:6 关机,1 单用户维护模式 , 2~5 多用户模式 ,6 重启。

    常用系统服务

      acpi-support  高级电源管理支持。acpid acpi  守护程序。这两个用于电源管理,非常重要。

      alsa  声音子系统  alsa-utils

      ......

    重要配置文件

      !无论任何情况下,修改配置文件之前,先备份它!

      建议使用这个命令:sudo cp xxx xxx_`date+%y%m%d_%H:%M`。可以新建一个名为bak的文件,内容如下:

      #!/bin/bash

      sudo cp $1$1_`date+%y%m%d_%H:%M`

      把它放在你能够记住的目录下,比如/home,执行命令 sh /home/bak xxx,就可以将当前文件夹下的文件xxx另存为xxx_yymmdd_HH:MM的格式。

    全局配置文件

      系统初始化

      /etc/inittab  运行级别、控制台数量

      /etc/timezone  时区

      /etc/inetd.conf  超级进程

      文件系统

      /etc/fstab  开机时挂载的文件系统  

      /etc/mtab  当前挂载的文件系统

      用户系统

      /etc/passwd  用户信息

      /etc/shadow  用户密码

      /etc/group   群组信息

      /etc/gshadow  群组密码

      /etc/sudoers Sudoer 列表

      Shell  

      /etc/shell  可用Shell列表

      /etc/inputrc ReadLine  空间设定

      /etc/profile  用户首选项

      /etc/bash.bashrc bash  配置文件

      系统环境

      /etc/environment  环境变量

      /etc/updatedb.conf  文件检索数据库配置信息

      /etc/issue  发行信息

      /etc/issue.net  

      /etc/screenrc  屏幕设定

      网络

      /etc/iftab  网卡MAC地址绑定

      /etc/hosts  主机列表

      /etc/hostname  主机名

      /etc/resolv.conf  域名解析服务器地址

      /etc/network/interfaces  网卡配置文件

      用户配置文件

      /etc/目录下的文件,只有root用户才有权修改。应用软件的全局配置文件,通常普通用户也不能修改。

    四、软件安装

    DPKG

      Linux系统中,软件通常以源代码或者预编译包的形式提供。Ubuntu系统中,软件常以deb格式的包文件发布,是一种预编译软件包。deb包含已编译的软件,还包括软件的拷贝路径、对其他软件包的依赖关系、通用的配置文件以及软件的描述、版本、作者、类别、占用空间等信息。

    APT

      APT软件包管理系统。APT可以自动的检查依赖关系,通过预设的方式来获得相关软件包,并自动安装配置它。推荐使用APT软件包管理系统。APT系统主要包括 apt-get 和 apt-cache 等命令。通常是复合命令,包含若干个子命令。

      apt-get install xxx  安装xxx

      apt-get remove xxx  卸载xxx

      apt-get update   更新软件信息数据库

      apt-get upgrade  进行系统升级

      apt-cache search  搜索软件包

      说明:建议经常使用 sudo apt-get update 命令来更新你的软件信息数据库。

    APT系统修复

      由于各种意外,APT系统可能会出现问题,使用如下命令,尝试进行修复:apt-get -f install

    源码包

      对于大多数软件建议使用APT系统安装它。也可以通过编译源代码的方式安装它。

      首先需要下载软件的源码包,并且将它解包为一些源代码文件。建议将下载的源码包移动到 /usr/local/src/ 目录下,并在这里解包。

      sudo mv xxx.tar.gz /usr/local/src  移动源码包

      cd /usr/local/src  进入/usr/local/src/ 目录

      sudo tar -xzvf xxx.tar.gz  解包源码

      cd xxx_ver/  进行接报后的源码目录

      源码目录中通常有一个configure脚本,用来配置即将开始的编译过程。可以执行它

      sudo ./configure [-prefix=/usr/local/xxx....]

      现在执行make命令,系统会根据Makefile文件中的设定,通过make工具调用编译器和所需资源文件,将源代码编译成目标文件。

      sudo make

      执行 make install 命令,make工具会自动连接目标文件和库文件,将最终生成的文件拷贝到Makefile文件设定的路径中,并且完成更改文件的属性,删除残留文件等活动。

      sudo make install

      现在,编译安装已经完成,为了更方便的使用它,需要给程序的可执行文件作一个符号链接。

      sudo ln -sf /usr/local/xxx/可执行文件 /usr/local/bin/可执行文件

      注意:为了顺利进行编译,至少需要安装build-essential软件包。

      sudo apt-get install build-essential

    Xwindow简介

      Xserver  

      Xclient  

      Xprotocol

     

    五、系统管理

    一些细节

      Linux是大小写敏感的系统,所有命令、路径、参数、变量都区分大小写。

      使用TAB键补全命令。

      Shell的功能键能协助更高效的编辑命令,尽量使用它。

      命令由 命令名、分隔符、参数、操作对象构成。

      需要对多个对象进行操作时,可以使用空格分隔符将它们隔开。

      使用空格分隔的多个对象,视为一个整体,作为命令的一个操作对象。

      递归,表示在子层次中重复相同操作。例如递归复制某目录,不但赋值当前目录及其下的所有文件,而且对当前目录的子目录,也进行递归复制的操作。

    格式约定

      使用[]表示可选项。

      ls [-al]  ls是必须项,参数不需要以方括号括起来。

      使用<>表示必须项,实际输入为尖括号中的内容。

      使用 | 表示 或,以 | 分隔的项目不能同时使用。

    六、系统信息

    uptime

      联机信息-时间:当前系统时间  系统运行时间  当前在线用户数  系统负荷  1分钟前  5分钟前  15分钟前。

    w

      联机信息-已登录用户

    uptime 信息

      用户名  登录方式  来源地址  登录时间  发呆时间  资源占用  当前任务。

    who

      联机信息,常用参数

    whoami

      显示当前用户名

    last

      最近用户登录信息,-<数字>使用数字作为参数,控制显示条目。例如 last -10 显示10条记录。

    uname

      系统信息。-s 内核名称(默认参数);-a 全部;-p CPU信息;-h 主机名;-r 内核发型信息;-v 内核版本信息

    date

      显示、设定系统时间。-u 显示格林尼洛时间UTC。MMDDhhmm 设定时间,需要管理员权限。+[%X] 设定显示格式,以下为date默认输出格式:

      date+%Y年%m月%d日%A%H:%M:%S%Z

    cal

      显示日历

    七、文件管理

    一些细节

      / 目录为文件系统根目录,所有目录都是它的子目录。

      绝对路径以 / 起始,相对路径以当前所在的目录起始。

      目录是一种特殊类型的文件,如果没有特别指明,文件包括文件和目录。

      .. 表示上一级目录,. 表示当前目录,它们是两个特殊的目录。

    链接

      为当前文件建立在其他路径中的访问方法。

    ls [路径]

      显示当前目录文件列表。

      --color  不同属性以不同颜色显示(默认参数)。

      -a   全部显示  -i  显示inode值  -l  详细信息。

      -F  显示文件类型后缀  目录/链接@ 可执行文件 * 端口文件=管道文件。

      -A  显示隐藏文件  -R  递归显示子目录文件列表  -S  按文件大小排序。

      -t  按修改时间排序  -u  按访问时间排序  -d  只显示目录,不递归显示目录下的文件。

    cd[目录路径]|[特殊路径]

      切换目录。目录路径可以使用绝对路径或者相对路径特殊路径:

      ~$HOME 目录(默认值)  - 上一次目录  .. 上一级目录  . 当前目录

    pwd

      显示当前路径。

    file <文件名>

      显示文件类型。-i 显示mime类型。

    du [路径]

      计算文件或目录空间占用。-h 人性化显示,自动以G、M、K为单位显示占用空间大小。-l 重复计算硬连接文件大小。-L 计算符号连接文件大小。-a 显示当前目录子目录中的文件。-c 显示文件数。

    less <文件名>

      浏览文件,使用VI和Emacs两种风格的键绑定。

    touch <目标文件>

      触碰,在不修改文件的前提下,更改其时间属性。通常用来创建一个空文件。

    make<文件夹>

      创建文件夹

      -p <多级目录>按路径创建多级目录    -m<数字权限值> 设定权限

    cp<源文件><目标目录|文件>

      将源文件复制为目录文件,或者将源文件复制到目标目录,多个源文件使用空格分隔。

    cp<源目录><目标目录>

      将源目录复制到目标目录中,如果复制多个源目录,需要使用 -R 参数。

      -a 相当于 -dpr参数    -d 保留链接    -f 强制复制,覆盖目标文件    -i 覆盖时询问用户    -p 保留修改时间和访问权限    -r-R 递归赋值    -l 创建链接   -v 显示过程

    rm<目标目录|文件>

      删除

      -r -R 递归删除    -f 强制删除(无需确认,直接删除,慎用!)    -i 交互式删除(询问yoghurt)

    rmdir<目标目录>

      删除目录时,建议使用“rm -f”命令。

    mv<源文件><目标目录|文件>

      相当于cp后删除源文件,也可以作为“重命名”使用。

    mv<源目录><目标目录>

      -r -R 递归

    ln<源文件><链接>

      链接

      -s 符号链接    -f 强制链接,覆盖目标文件    -i 覆盖前询问用户

    八、文件操作

    nano

      轻便文本编辑器,类似Emacs风格的键绑定。

    split<源文件>[目标文件名前缀]

      将源文件按一定规则分割成若干个目标文件。默认文件名前缀为x。

      -<行数> 按行数分割文件    -l<行数>同上    -b<字节>按大小分割文件。可使用b、k、m做单位,默认单位为b。  -C<字节> 按大小分割文件,并尽量保持每行的完整。

    cat<文件名>

      输出文件内容。用空格分隔多个文件名。可以将多个文件内容链接到一起输出。使用重定向合并为一个文件。

      -n 在输出中添加行号    -b 在输出中添加行号,空行不编号    -s 将两行或以上的空行,合并为一个空行

    sort[-o<输出文件>][-t<分隔字符>][+<起始字段>-<结束字段>][文件]

      对文本内容排序

      -m 合并文件    -c 检查文件是否已按规则排序    -b 忽略行首空格字符    -u 忽略内容重复行    -f 忽略大小写    -l 忽略非打印字符    -M 作为月份比较

      -d 按字典顺序排序,按照字母、数字、空格、制表符排序    -r 逆序输出

    more

      查看文件内容,建议使用less。

    diff<文件名>

      比较文件

    九、权限管理

    一些细节

      一个文件主要包含下列属性,ls -l

      - rwx rwx rwx user group date filename

      其中,第一组为归属用户的权限,第二组为归属群组的权限,第三组为其他用户群组的权限。user为文件的归属用户,group 为文件的归属群组,date为日期信息,filename为文件名。

      对于文件夹,必须拥有它的可执行权限,才能够使用cd命令进入该文件夹;拥有可读权限,才能够使用ls命令查看该文件夹的文件列表。root用户拥有最高权限。

      可以使用3位的二进制数字来描述一组权限,某一权限对应的数字为1,则表示具有该种权限,为0,则不具有该种权限。使用二进制数字来描述一组权限,虽然非常直观,但是3组权限需要用9位数来表示,使用不够方便。因此将三组权限使用3位8进制数字来表示。他们的对应关系为:

      r 100 4

      w 010 2

      x 001 1

      将这三位8进制数字相加的结果,就可以表示改组权值的具体内容,例如:

      7=4+2+1=rwx

      5=4+1=rx

      755=4+2+1 4+1 4+1=rwx r-x r-x

      还可以使用a、u、g、o表示归属关系,使用=、+、-表示权限变化,使用r、w、x表示权限内容。

      a 所有用户  u 归属用户   g 归属群组  o 其他用户

      = 具有权限  + 增加权限  - 去除权限

      r 可读权限  w 可写权限  x 可还行权限

      例如:a+x 给所有用户增加可执行权限;go-wx 将归属群组和其他用户的可写、可执行权限去掉; u=rwx 归属用户具有可读、可写、可执行权限。

    chmod<权限表达式><文件|目录>

      更改文件的权限。权限的表达式可以使用三位8进制数字表示,或使用augo+-=rxw-s来表示。

      -R 递归    -v 显示过程    -c 仅显示更改部分

      示例:chmod -R a+x path     chmod -Rv  755 path

    chown<归属用户>[:归属群组]<文件|目录>

      更改文件的归属用户。可以使用用户名或者UID

      -R 递归    -v 显示过程    -c 仅显示更改部分

      示例:chown user:admin path  chwon -R user:admin path  chown user path

    chgrp<归属群组><文件|目录>

      更改文件的归属群组,可以使用群组名或者GID

    lsattr[路径]

      查看文件的特殊属性。

      -a 全部显示   -d 只显示目录  -R 递归  

    chattr+|-|=<属性><路径>

      更改文件特殊属性。-R 递归    -V 显示过程。

    十、压缩解压

    tar -c|x|u|r|t[z|j][v] -f <归档文件>[未打包文件]

      将多个文件打包为一个归档文件,可以再打包的同时进行压缩。支持的格式为tar(归档)、gz(压缩)、bz2(压缩率更高,比较耗时)。

      -c 创建  -x 解包  -u 更新  -r 添加  -t 查看  -d 比较压缩包内文件和文件  -A 将tar文件添加到归档文件中  

      -z 使用gz压缩格式  -j 使用bz2压缩格式  -v 显示过程  -f<文件名> 归档文件的文件名  -C<解压路径>将压缩包中的文件解压到制定目录。

      [未打包文件] 创建、更新时必须填写

      示例: tar -zcvf xxx.tar.gz xxx/xxx1 xxx2 xxx3 多个代打包文件以空格分隔

      tar -zcvf xxx.tar.gz /home/user/xxx/  使用绝对路径打包,解包也使用绝对路径

      tar -zcvf xxx.tar.gz 按相对路径解包当当前目录,或按绝对路径解包

      tar -zcvf xxx.tar.gz xxx | split -b 1m 打包后,使用split分割为1m大小的多个文件

      其他参数:-P 使用绝对滤镜压缩时,保留根目录  -W 校验  -p 还原文件权限  -w 询问用户  --totals 统计

      -T<表达式> 处理符合条件的文件  -X<表达式> 排除符合条件的文件

    zip[参数]<压缩包><源文件>

      使用zip格式打包文件

      -r 递归,将指定目录下的所有文件和子目录一并处理  -S 包含系统和隐藏文件  -y 直接保存符号连接,而非该连接所指向的文件

      -X 不保存额外的文件属性  -m 将文件压缩并加入压缩文件后,删除源文件  -<压缩级别>1~9,数字越大,压缩率越高

      -F 尝试修复已损坏的压缩文件  -T 检查备份文件内的每个文件是否正确无误  -q 不显示指令执行过程

      -g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件  -u  更新压缩包内的文件  -f 更新压缩包内文件

      -$ 保存第一个被压缩文件所在磁盘的卷标  -j 只保存文件名称及其内容  -D 压缩文件内不建立目录名称  ......

    unzip[参数]<压缩文件>[压缩包中将被释放的文件]

      解压zip压缩包文件。

    7z|7za<子命令>[参数]<压缩包>[文件]

      子命令:a 添加  d 删除  e 解压  x 带路径解压  l 列表查看  t 测试  u 更新

    rar<子命令>[参数]<压缩包>[文件|文件列表|路径]

    十一、搜索

    whereis<程序名称>

      查找软件的安装路径。-b 只查找二进制文件  -m 只查找帮助文件  -s 只查找源代码  -u 排除制定类型文件  -f 只显示文件名  -B<目录>在制定目录下查找二进制文件  -M<目录>在指定目录下查找帮助文件  -S<目录>在制定目录下查找源代码

    locate<文件名称>

      在文件索引数据库中搜索文件。-d<数据库路径> 搜索制定数据库

      updatedb 更新文件索引数据库

    find[路径]<表达式>

      查找文件。

      -name 根据文件名查找文件    -iname 根据文件名查找文件,忽略大小写  -path 根据路径查找文件  -ipath 根据路径查找文件,忽略大小写 ....

    grep<字符串>|"<正则表达式>"[文件名]

    十二、其他

    echo<字符串>

      回显。较复杂的字符串,可以使用''括起来。-n 输出内容不换行  -E 不解析脱字符  -e 解析脱字符

      控制字符

      | 反斜线  a 警告  b 退格  n 换行  r 回车  t 水平制表符

    clear

      消除屏幕

    alias<输入内容><实际内容>

      别名,为命令制定一个别名,以简化输入。

    export<变量名称>

      将变量导出为环境变量,常写变量赋值一同使用,例如:

      export PATH="$PATH:xxx"

      其中,$PATH表示变量PATH原值。

    shutdown

      关闭计算机,向跟进程init发送信号,更改runlevel为0(halt)

      -h 关闭电源   -r 重启  -n 强行关机,不向init进程发送信号  -k 模拟关机,向登陆者发送关机警告  -t<秒>N秒后关机

      time<时间> 定时关机  -c[说明信息] 取消关机  -f 重启时忽略检测文件系统  -F 重启时强制检测文件系统

    halt

      关闭计算机。调用shutdown -h,结束系统京城,同步文件系统,停止内核。

      -n 不同步文件系统  -w 模拟关机,写/var/log/wtmp记录  -f 不调用shutdown,强行关机  -p 默认选项,关机时调用poweroff  -i 关机前断开网络

    reboot

      重新启动计算机,参数与halt类似。

    chroot<路径>

      Change Root更改根目录,重新定义会话的运行环境。

     

    十三、用户管理

    一些细节

      root用户为根用户,也就是系统管理员拥有的全部权限。一个用户只能拥有一个GID,但是还可以归属于其他附加群组。

      用户管理的重要配置文件:

      /etc/passwd  用户名  密码位  UID  归属  GID  姓名  $HOME  目录  登录  shell

      /etc/shadwo  用户名  已加密密码  密码改动信息  密码策略

      /etc/group  群组名  密码位  GID  组内用户

      /etc/gshadow  群组密码相关文件,不重要

      /etc/sudoers  用户名  权限定义  权限

    su [用户名]

      切换到其他用户,默认切换到root用户。提示密码为将切换用户密码

      -f 快速切换,忽略配置文件  -l 重新登录  -m,-p 不更改环境变量

      -c<命令> 切换后执行命令,并退出切换

    sudo [命令]

      以其它用户的身份执行命令,默认以root的身份执行。提示密码为当前用户密码

      -s 切换为root shell  -i 切换为 root shell ,并初始化  -u<用户名|UID> 执行命令的身份  -l 显示自己的权限

    passwd [用户名]

      设定用户密码

      -d 清楚密码  -l 锁定用户  -e 使密码过期,在下次登录时更改密码  -S 显示密码认证信息  -x<天数> 密码过期,最大使用时间   -n<天数> 冻结密码,最小使用时间  -s 更改登录Shell  -f 更改用户信息

    usermod <用户名>

      修改用户账号。-d<目录> 设定$HOME目录  -m 设定$HOME目录时自动建立  -s<Shell> 修改用户登录Shell  -l<新用户名> 修改为新用户名  -u<UID>修改用户UID  -g<群组名>修改用户归属群组

    useradd<用户名>

      新建用户。新建用户规则保存于 /etc/login.defs文件中。

    userdel<用户名>

      删除用户。-r 删除用户相关文件和目录。

    finger[用户名]

      显示用户信息。

    十四、进程管理

      进程一般分为交互进程、批处理进程和守护进程三类。守护进程总是活跃,在系统启动时通过脚本自动启动,或由root启动,通常在后台运行。一个进行可以拥有子进程。当父进程终止时,它的子进程也随之终止;而子进程终止时,父进程通常可以继续运行。

      init 进程为根进程,所有进程都是它的子进程。

    ps

      显示进程信息,参数可省略。aux 以BSD风格显示进程  -efH 以System V风格显示进程  -e,-A 显示所有进程

      a 显示终端上所有用户的进程  x 显示无终端进程  u 显示向下进程  f 树状显示  w 完整显示信息  l 显示长列表

      示例:

      ps alx 另一种常用输出格式

      ps aux |less 将输出通过管道,使用less查看

      ps aux | grep<关键字> 通过关键字查找进程

      输出字段:

      USER 进程所有者  PID 进程ID  PPID 父进程  %CPU CPU占用率  %MEM 内存占用率  NI 进程优先级。数值越大,占用CPU时间越少  VSZ 进程虚拟大小  RSS 页面文件占用  TTY 终端ID  STAT 进程状态  D 不可终端  R 正在运行,或在队列中的进程  S 处于休眠状态  T 停止或被追踪  Z 僵尸进程  ......

    pstree

      树状显示进程信息。-a 显示完整命令及参数  -c 重复进程分别显示  -c 显示进程ID PID  -n 按PID排列进程

    pgrep<进程名>

      显示进程的PID。

    xkill

      在图形界面中点杀进程。在窗口中点击左键杀死进程,右键取消。

    pkill<进程名>

      结束进程族。如果结束单个进程,请用kill。

    kill[信号代码]<进程PID>

      根据PID向进程发信号,常用来结束进程,默认信号为-9。

    top

      动态、交互式进程管理器。

    jobs

      显示背景任务。

    bg[任务编号]

      将挂起的任务背景执行。

    fg[任务编号]

      将背景任务调到前台执行。

    十五、磁盘和内存管理

      Linux中,设备用/dev/目录下的文件表示。例如:/dev/hda1 第一块硬盘的第一主分区。/dev/hdb5 第二块硬盘的第一逻辑分区。

      /dev/sda4 第一块SATA硬盘的第四主分区,或者扩展分区。/dev/null 黑洞设备。

    free

      查看内存、缓冲区、交换空间的占用。-b 以字节为单位显示数值  -k 以千字节为单位显示数值  -m 以兆字节为单位显示数值

      -g 以吉字节为单位显示数值  -l 显示内存占用峰值  -o 不现实缓冲区占用  -t 统计结果  

    ......

    十六、网络和硬件管理

    ifconfig

      配置网路接口。-a 显示所有网路接口。ifconfig<网卡>up|down 激活|禁用网卡。

    ip

      配置网络。

    ping<IP地址>

      向目标地址发送ICMP封包,常用来测试网路。-b<广播地址>ping整个网段  -c 发送封包次数  -s<封包大小>默认为64字节。

    netstat

      网络连接状态。

    十七、简明VIM教程

    命令

      使用vim编辑文件:

      vi [文件名]

      vim [文件名]

      教学模式:vimtutor [语言]

      vimtutor en。

      使用Vim比较文件区别:vimdiff [文件1] [文件2] [其它文件]......

    配置文件

      Vim的全局配置文件为/etc/vim/vimrc,用户配置文件为~/.vimrc,“起始的行为注释行。我们提供的配置项,直接加入配置文件就可以。

      可以先对Vim进行一些简单配置:

      "设定文件编码

      set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936

      "开启语法加亮

      syntax on

      "配置风格

      colorscheme pablo

      "设定行距 GUI界面中生效

      set linespace=4

      "设定Tab键缩进的空格数

      set tabstop=4

      "设定编辑器将多少空格视为一个缩进

      set shiftwidth=4

      。。。。。。

    模式介绍

      Vim常见的模式有:普通模式、插入模式、命令模式以及可视模式。

      Vim启动时进入普通模式,或者在其他模式下,按下Esc键,便可以回到普通模式。

      按下i键,编辑器底部出现了 --插入 -- 或者 -- insert --。进入了插入模式。在普通模式下,按下:,在编辑器底部出现了一个:,进入了命令模式。

      :q 这个命令是退出编辑器。

      

         

      

      

      

      

  • 相关阅读:
    2017.12.16 扫雷小游戏未完成
    2017.12.15 计算机算法分析与设计 枚举
    2017.12.14 Java实现-----图书管理系统
    2017.12.13 Java中是怎样通过类名,创建一个这个类的数组
    2017.12.12 基于类的面向对象和基于原型的面向对象方式比较
    2017.12.11 String 类中常用的方法
    2017.12.10 Java写一个杨辉三角(二维数组的应用)
    2017.12.9 Java中的排序---冒泡排序、快速排序、选择排序
    spring boot compiler 版本实践
    spring boot 首次请求Controller慢
  • 原文地址:https://www.cnblogs.com/pythonMLer/p/5998860.html
Copyright © 2020-2023  润新知