< 独立项目 - 文本挖掘 > - 2016/10/25 第一更 -

< 独立项目 -  文本挖掘 >

项目立项的相关背景介绍,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 这个命令是退出编辑器。

  

     

  

  

  

  

上一篇:前端MD5加密【单向加密】


下一篇:第二章 ConcurrentHashMap源码解析