《Linux从入门到精通》学习总结

原文地址:linux

https://blog.csdn.net/haima95/article/details/81287049 git

第1章 Linux概述
1 经常使用的国内Linux资源web

www.chinaunix.net : 国内最大的Linux/UNIX技术社区网站
www.linuxeden.com : Linux伊甸园,最大的中文开源资讯门户网站
www.linuxfans.org : 中国Linux公社,拥有本身的Linux发行版本Magic Linux
www.linuxsir.org : 提供Linux各类资源,包括资讯,软件,手册等
 算法

 

 

 

第2章 Linux安装shell

1 书中推荐的虚拟机为VMware。VMware面向企业和我的开发了多个版本,其中一些须要用户购买许可证,如VMware Workstation等。VMware Server则能够无偿使用。推荐使用VMare Server。windows

 

 

第3章 Linux基本配置
1 用户能够执行不带参数的su命令将本身提高为root权限,另外一个命令行工具是sudo,它能够临时使用root身份运行一个程序,并在程序执行完毕后返回至普通用户状态。bash

 

 

第4章  桌面环境
服务器

 

 

第5章  Shell基本命令 
1 Linux的命令和文件名都是区分大小写的网络

2 使用tab键,点击一次,若是以已键入的字符开头的文件只有一个,Shell会自动把文件名补全。若是不止一个,须要点击2次tab键,Shell会罗列出全部以已键入的字符开头的文件工具

3 Shell的通配符,有 " * " , " ? " , "  [ ] " 三种

星号( * ) 匹配任意长度的字符串
问号( ? ) 匹配一个字符
括号( [ ] ) 匹配全部出如今方括号内的字符,如 ls  text[1-3] 显示text1,text2和text3
4 命令pwd显示当前目录

5 回到用户主目录能够用命令单单一个cd  或  cd ~

6 命令 ls -F 里 -F选项会在每一个目录后面加上/,可执行文件后加*,连接文件后加@。以下

7 命令ls -a 则显示该目录下全部文件,包括隐藏文件

8 命令 ls -l 查看文件的各类属性

注:属性从左往右:文件的权限标志,文件的连接个数,文件全部者的用户名,该用户所在的用户组组名,文件的大小,最后一次被修改的日期,最后一次被修改的时间,文件名

9 查看文本文件:cat和more

cat 命令用于查看文件内容,后面跟文件名做为参数,也能够多个文件名做为参数,也可使用通配符。若是加上-n选项则会在每一行前显示行数,如 cat -n  xxx.txt
cat命令是将全部内容所有显示在屏幕上,但more命令是一页页显示。按下空格键向下翻一页,按Enter键向下滚动一行,按Q键退出。
10 阅读文件的开头和结尾:head和tail。能够再使用-n选项指定显示的行数,以下

              head  -n  2   xxx.txt      ## 显示头两行

              tail  -n  2   xxx.txt         ## 显示结尾两行

11 查找文件内容: grep,若是要搜索带空格的内容,能够用引号把搜索的内容包含进去

12 快速定位文件:locate

13 搜索:find

14 whereis命令查找程序文件,并提供这个文件的二进制可执行文件,源代码文件和使用手册页存放的位置

15 who 查看当前系统中有哪些账号登陆

16 man命令,寻求帮助,如man find

 

 

 

 

第6章  文件目录管理
1 和团队共享文件

建立一个用户组,将相关成员加入
建立一个目录,设置权限
将目录交给组长
2 建立目录:mkdir

mkdir  document  picture       ## 同时新建document,picture两个目录
mkdir -p  ~/tempex/job          ##  -p选项能够保证若是tempex目录自己不存在,会一块儿建立
3  touch命令建立的文件是个空文件,另外也能够用来更新一个文件的创建日期和时间,这种功能在自动备份和整理文件时很是有用。

4 mv能够在移动文件和目录同时对其重命名,加 -i 选项会有确认提醒

5 cp命令用来复制文件和目录,加 -i 选项会有确认提醒,加 -r 选项会将子目录连同其中的文件一块儿复制到另外一个目录中

6 rmdir命令用于删除目录,但只能删除空目录。rm能够删除目录和文件,加 -i 选项会有确认提醒,加 -r 选项会将子目录连同其中的文件一块儿删除,加 -f 选项则避免每一个文件删除的确认提醒等交互式操做。

7 文件/目录的权限样式如"-rwxr-xr-x" ,第一个字符表示文件类型,rwxr-xr-x是三组权限位,分别为属主(rwx),属组(r-x)和其余人(r-x)。

8 查看目录的权限可使用 ls -ld  /xxx/

9 chown命令改变文件的全部权,以下

            sudo chown  yyy:root   in.txt    // 修改属主为yyy,属组为root

            sudo chown  yyy    in.txt         //  只修改属主为yyy

            sudo chown  :root   in.txt        // 只修改属组为root

           sudo chown -R  yyy  dac        //  修改子目录及其的全部文件属主为yyy

10 chgrp命令只能修改文件的属组全部权

11 chmod命令修改一个文件的权限,命令使用"用户组+/-权限"的表达方式来增长/删除相应的权限。也能够经过“用户组=权限”的规则直接设置文件权限。也能够经过“用户组1=用户组2”将用户组1的权限设置跟用户组2同样。用户组包括属主(u),属组(g),其余人(o)和全部人(a),权限包含读(r),写(w)和执行(x),以下

            chmod  u+x   in.txt        // 给属主开通执行的权限

            chmod  a-x    in.txt       //  给全部人删除执行权限

            chmod  ug=rw , o=r   in.txt     // 给属主和属组读写权限,其余人读的权限

            chmod  o=u   in.txt         //   将其余人的权限设置为跟属主同样

12 文件权限的八进制表示,如 711 表示 rwx--x--x

13 文件类型,-表示普通文件,d表示目录,c表示字符设备文件,b表示块设备文件,s表示本地域套接口,p表示有名管道,l表示符号连接

14 符号连接(软链接)须要使用带-s参数的ln命令来建立,以下

             ln -s  TARGET LINK_NAME       // 给目标文件TARGET取了一个别名LINK_NAME

             ln -s  days    my_days          // 创建一个名为my_days的符号连接指向文本文件days

             ln -s   /usr/local/share/   local_share     // 创建一个名为local_share的符号连接指向目录/usr/local/share

还有一种硬连接,它跟符号连接的区别在于:硬连接是直接引用,即修改硬连接内容也会影响源内容。符号连接则经过名称进行引用。使用不带选项的ln命令就是创建硬连接。

             ln -s  days   hard_days   // 创建一个连接到days的新文件hard_days,硬连接   

15  输出重定向

             ls  >  ~/ls_out       ## 将输出内容输入到~/ls_out文件中   ##  若是ls_out不存在,输出重定向符" > " 会建立该文件,若是存在则删除原有内容,用新内容替代

注:若是不想覆盖文件原有内容,可以使用输出重定向符" >> "。

16 cat命令会将用户的每行输入会当即显示在屏幕上,直到使用Ctrl+D快捷键来结束,以下

17 经过使用输入重定向符号" < " 可让程序从一个文件中获取输入 ,如    $ cat  <  data.txt。cat命令能够经过接受参数来显示文件内容,如   $ cat  data.txt

18 另外一种输入重定向的例子为当即文档,使用操做符" << ",当即文档指定一个表明输入结束的分隔符,但shell遇到这个分隔符后就结束输入,以下

$  cat   <<   a

> d

> dfd

> dfd 

> aaa

> a           ### 结束分隔符

d

dfd

dfd 

aaa

$ cat  <<  END  > hello 

> Hello  World !

> ok

> END 

19 管道( | )将一条命令的输出链接到另外一条命令输入,如 ls  |  grep  ay,即将命令ls的输出发送给命令grep做为其输入

 

 

第7章  软件包管理
1 一些高级软件包管理工具如APT和yum能够自动搜寻依赖关系并执行安装

2 管理.deb软件包:dpkg

dpkg --install xxx 或dpkg -i xxx  安装软件
dpkg --force - 选项表示强制操做,切记不要轻易使用--force
dpkg -l  显示全部信息
dpkg --search xxx 或 dpkg -S xxx  显示软件包的信息
dpkg --remove xxx 或 dpkg -r xxx   卸载xxx软件包
3 管理RPM软件包:rpm

rpm -i xxx 安装软件包xxx
rpm -i -h -v  xxx 或 rpm -ivh xxx  安装软件包 , -v显示rpm当前正在执行的工做,-h经过打印一系列的“#”提醒用户当前的安装进度
rpm -i 一样也支持--force选项,强制安装
rpm -U xxx  升级软件包xxx,也能够加上-v和-h
rpm -q 查询当前系统中已经安装的软件包
rpm -e xxx  卸载软件包xxx
4 APT工具最经常使用的两个命令:apt-get和apt-cache

apt-get

$ sudo apt-get update       ###  更新软件包信息
$ sudo apt-get xxx            ###  安装软件包xxx
$ sudo apt-get install xxx   ### 下载并安装软件包
$ sudo apt-get upgrade     ### 下载并安装在本系统上已有的软件包的最新版本
$ sudo apt-get remove  xxx    ### 卸载软件包xxx
$ sudo apt-get source  xxx     ### 下载软件包xxx的源代码
$ sudo apt-get clean       ### 删除全部已下载的包文件
$ apt-get -h   ### 显示apt-get的完整用法
apt-cache 

$ apt-cache search xxx        ### 搜索带“xxx”字样的软件包
$ apt-cache depends xxx    ### 查询xxx的依赖关系
 

5 全部apt-get用于下载软件的地址,即安装源,都放在/etc/apt/sources.list中,以下

deb和deb-src:表示软件包的类型。Debian类型的软件包使用deb或deb-src。RPM软件包应该使用rpm或rpm-src
URL:表示指向CD-ROM,HTTP或FTP服务器的地址,从哪里能够得到所需的软件包
hardy等:表示软件包的发行版本和分类
 

 

 

 

第 8 章   磁盘管理 
1 文件系统是一种对物理空间的组织方式,一般在格式化硬盘时建立。在Windows下,有NTFS和FAT两种文件系统。

2 Linux的最经常使用的几种文件系统:

ext4fs文件系统:预留一块专门的区域来保存日志文件,当对文件进行写操做时,所作的修改将首先写入日志文件,随后再写入一条记录标记日志项的结束。完成后才会对文件系统作实际修改。这样系统崩溃时能够利用日志恢复文件系统。
ReiserFS文件系统:也是一种日志文件系统。
swap:它并非一种文件系统,swap被称为交换分区,是一块特殊的硬盘空间。当实际内存不够用时操做系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。windows不会为swap单独划分一个分区,而是使用分页文件实现相同功能,即为“虚拟内存”
3 挂载文件系统

$ sudo   mkdir    /mnt/cdrom          ###  新建一个目录

$ sudo   mount   /dev/cdrom   /mnt/cdrom/            ###  挂载光盘至这个新建的目录

mount:  块设备  /dev/scd0  写保护,以只读方式挂载

$ cd   /mnt/cdrom/

$ ls                  ###  查看光盘内容

$ cd  /                  ### 退出/mnt/cdrom目录

$ sudo umount     /dev/cdrom     ### 卸载光盘

注:卸载光盘前必须先退出光盘所挂载的那个目录,不然系统会提示设备忙并拒绝卸载

4 Linux下全部的设备都被看成文件来操做

5 在Linux中,每一个设备都被映射为一个特殊文件,这个文件被称做“设备文件”。对于上层应用程序而言,全部对这个设备的操做都是经过读写这个文件实现的,经过文件来操做硬件。Linux把全部的设备文件都放在/dev/目录下

这些文件中大部分是块设备文件和字符设备文件,块设备(例如磁盘)能够随机读写,/dev/hda1,/dev/sda2等就是典型的块设备文件。字符设备只是按顺序接受“字符流”,常见的有打印机等。

6 挂载文件系统:mount命令,也可使用 -t 选项明确指明设备所使用的文件系统类型,常见文件系统的表示方法

表示方法    描述
ext2    Linux的ext2文件系统
ext3    Linux的ext3文件系统
ext4    Linux的ext4文件系统
vfat    windows的FAT16/FAT32文件系统
ntfs    windows的NTFS文件系统
iso9660    CD-ROM光盘的标准文件系统
另外经常使用的选项是 -r 和 -w ,分别指定以只读模式和可读写模式挂载设备。 -w 是默认的

        $ sudo  mount -r  /dev/sda3  /mnt/vista

7 在启动的时候挂载文件系统: /etc/fstab文件

8 查看磁盘使用状况: df命令

df命令提供了 -t 参数用于显示特定的文件系统

9 检查和修复文件系统: fsck命令

$ sudo  fsck  /dev/sda1
$ sudo  fsck  -p     ### 读取fstab文件来检查文件系统
注:使用fsck命令检查并修复文件系统是存在风险的,特别是当磁盘错误很是严重时,修复前请记得备份

10 在磁盘上创建文件系统: mkfs命令,以下

        $ sudo  mkfs  -t  ext3   /dev/sdb1    ### 将/dev/sdb1分区格式化为ext4格式

        $ sudo  mkfs  -t  ext4  -c  /dev/sdb1    ### 能够用 -c 选项来检查指定设备上损坏的块

11 压缩文件:gzip,是目前Linux下使用常见的压缩工具

         $ gzip  xxx    ### 会将xxx压缩成xxx.gz ,源文件xxx就不存在

        $ gzip  -d   xxx.gz   或   gunzip  xxx.gz     ### 解压xxx.gz文件,xxx.gz就不存在,变成xxx

        $ gzip  -l  xxx.gz      ### -l 选择用于查看压缩效果,文件大小以字节为单位

        $ gzip  -tv   xxx.gz     ###  -t 选项用来测试压缩文件的完整性

12 更高压缩率:bzip2,压缩率高,压缩速度慢,使用方法跟gzip同样

        $ bzip2 xxx    ### 会将xxx压缩成xxx.bz2 ,源文件xxx就不存在

        $ bzip2  -d   xxx.bz2   或   bunzip2  xxx.bz2     ### 解压xxx.bz2文件,xxx.bz2就不存在,变成xxx

        $ bzip2  -l  xxx.bz2      ### -l 选择用于查看压缩效果,文件大小以字节为单位

        $ bzip2  -tv   xxx.bz2     ###  -t 选项用来测试压缩文件的完整性

bzip2能够识别的压缩文件格式包括 .bz2 , .bz , .tbz2 , .tbz 和 bzip2。

13 支持rar格式,  rar x  xxx.rar    ### 解压xxx.rar

14 Linux下的两个存档工具:tar和dd

文件打包:tar   

             tar  -cvf   shell.tar  shell/      ### 将shell目录连同其下的文件一同打包成文件shell.tar,tar不会删除原来的文件

    -c 选项指定tar建立归档文件,-v 选项显示命令的执行过程,-f 选项则用于指定归档文件的文件名

             tar  -xvf   shell.tar            ### -x 选项解开shell.jar 文件

     -w 选项用于提示确认。-z 选项会自动调用gzip程序,归档文件时最后会去调用gzip压缩归档文件;解开时会先调用gzip解压再解档,以下

             tar  -czvf   shell.tar.gz   shell/      ### 打包

             tar  -xzf     shell.tar.gz                 ### 解档

    -j 选项用于调用bzip2程序,用法跟-z选项同样

             tar  -cjvf   shell.tar.bz2   shell/      ### 打包

             tar  -xjf     shell.tar.bz2                 ### 解档

转移文件:dd,由于有了更好的dump和restore命令,dd如今不多用。if选项指定输入端的文件系统,of选项则指定其输出端。

         $ dd  if=/dev/cdrom  of=CD.iso

15 Linux中用于创建分区表的工具: fdisk。fdisk是一个交互式的应用程序。在执行完一项操做后,fdisk会显示一行提示信息,并给出一个冒号“ :”,等待用户输入命令。使用命令m能够显示fdisk全部的命令信息

16 备份文件系统: dump

       #  dump  -0u  -f   /dev/nst0    /web    ### 执行从/web到/dev/nst0的0级备份

-0 选项指定dump执行级别为0的备份。级别0表示完整备份。-u选项指定dump更新/etc/dumpdates文件,该文件记录历次备份的时间,备份级别和实施备份的文件系统。 -f 选项指定了用于存放备份的设备

       # rdump  -0u  -f  backup:/dev/nst0 /web    ### rdump命令用于将备份转储到远程主机

17 从灾难中恢复:restore,它是dump的配套工具,用于从备份设备中提取数据。在恢复前,首先要创建一个临时目录。

       # mkdir   /var/restore       ###创建用于恢复文件的临时目录/var/restore

       # cd  /var/restore

       # restore -i  -f    /dev/sdb3     ### -i 选项用于交互式地恢复单个文件和目录,-f 选项指定存放备份的设备

       # restore -r -f   /dev/sdb3     ###  -r 选项恢复整个文件系统

       # rrestore -i -f   backup:/dev/nst0    ### 从远程主机提取备份信息

18 cron 是一个可以定时执行命令的软件

 

 

 

第9章  用户与用户组管理
1 建立账户

        $  sudo   useradd  -m   xxx       ### 添加一个用户名为xxx的用户,并自动创建主目录

        $  sudo   passwd   xxx              ### 设置用户xxx的登陆密码

2 不带 -m 选项的useradd命令不会为新用户创建主目录,用户能够登陆到系统的shell,但不可以登陆到图形界面。

3 useradd命令的另外一个经常使用的选项是 -g , 该选项用于指定用户所属的组。以下

         $ sudo useradd -g users mike    ### 创建名为mike的用户账号,并指定其属于users组

4 添加组可使用groupadd命令,以下

         $ sudo  groupadd  newgroup

5 shell会记录用户的每一条命令,能够history命令查看

history会列出全部使用过的命令并加以编号,这些信息被存储在用户主目录的.bash_history文件中,这个文件默认状况下能够存储1000条命令记录。用以下命令能够列出最近n条

       $ history  10     ### 列出最近使用的10条命令

6 全部用户信息都登记在/etc/passwd文件中,而/etc/shadow文件则保存着用户的的登陆密码

7 删除用户:userdel

      $ sudo  userdel  mike      ### 删除用户账号mike,但不删除用户的主目录

      $ sudo  userdel -r mike   ### -r 选项会连同主目录一块儿删除

8 管理用户账号:usermod,经常使用的选项

-d : 修改用户主目录
-e :修改账号的有效期限,以公元月/日/年的形式表示(MM/DD/YY)
-g :修改用户所属的组
-l :修改用户账号名称
-s :修改用户登陆后所使用的Shell
$ sudo usermod -l mike -d /home/mike -e /12/31/13 jon   ###将john更名为mike,主目录改成/home/mike,并设置有效期至2013年12月31日

9 查看用户信息:id,查看用户的UID,GID以及所属的组,id以用户名为参数。没有用户名则显示当前登陆用户的信息

10 用户间切换:su

11 /etc/passwd文件内容预览

每一行由7个字段组成,字段间使用冒号分隔,各字段的含义以下:

登陆名
口令占位符
用户ID号(UID)
默认组ID号(GID)
用户的私人信息:包括全名,办公室,工做电话,家庭电话等
用户主目录
登陆Shell
12 MD5加密算法能够对任意长度的口令进行加密且不产生损失,加密后的长度都是一个固定值(34个字符)。

 

 

 

 

第10章 进程管理
1 建立shell脚本test,以下

#!  /bin/bash

while echo "I'm making files!!"

do

         mkdir adir

         cd adir

         touch afile

         sleep 2s

done

$ chmod +x test  

$  ./test   &      ### &表示后台运行

2 每一个进程都有一个ID号,即PID。全部进程都必须由另外一个进程建立(除了在系统引导时由内核自主建立并安装的几个进程),会有一个父进程的PID,即PPID

3 监视进程:ps命令

ps aux :显示当前系统上运行的全部进程的信息


ps lax:显示父进程ID(PPID)和谦让度(NI)


4 即时跟踪进程信息:top命令。使用命令q可退出

5 查看占用文件的进程:lsof ,查看某个文件被哪些进程使用

6  向进程发送信号:kill,标准语法以下:

                kill [-signal] pid

使用kill命令是否必定能够终止一个进程吗?答案是否认的。但有一个KILL信号能够在内核级别杀死一个进程,以下三种方式

         $ sudo kill  -KILL  pid

         $ sudo kill  -SIGKILL pid

         $ sudo kill  -9   pid

7 调整进程的谦让度:nice和renice,高谦让度意味着低优先级,谦让度值在-20 ~ +19 。

         $ nice -n  2  bc      ### 设置bc以谦让度增量2启动

         $ sudo nice -n  -3 bc     ### 设置bc以谦让度-3启动,但可能不得不用root权限启动

         $ nice bc      ### 不带 -n 选项,默认以谦让度0启动

         $ renice +12 -p 8567   ### renice命令能够在进程运行时调整谦让度,-p 选项指定进程的PID

 

 

 

第11章  网络配置
1 DSL是数字用户线路(Digital Subscriber Line)的缩写。目前国内主要使用的DSL技术分支是ADSL,A表明非对称,即上传和下载速度不一样。

2 ifconfig命令用于启动或禁用一个网络接口,同时设置其IP地址,子网掩码以及其余网络选项。以下

        $ sudo ifconfig eth0 192.168.1.14 netmask 255.255.255.0 up   ### 将网络接口eth0的IP地址设置为192.168.1.14,子网掩码为255.255.255.0,up表示同时启动这个网络接口

        $ sudo ifconfig eth0 down

3 使用route配置静态路由。Linux内核中维护着一张路由表,每当一个数据包须要被发送时,Linux会把这个包的目标IP地址和路由表中的路由信息比较。使用netstat -r命令能够看到当前系统中的路由信息

route命令用于增长或删除一条路由,以下

          $ sudo route add default gw 10.71.84.2

也能够手动设置路由信息,如但愿连接到一个网络地址为10.62.74.0/24的网络,在本地网络中有一台IP地址为10.71.84.51的主机可做为网关。

          $ sudo route add -net 10.62.74.0/24 gw 10.71.84.51 

4 DNS是一种肯定主机名和IP地址间的映射关系的方法。