Linux达人养成计划(慕课网笔记)

一、Linux简介
1、Linux分为内核版和发行版
2、Window是与Linux的区别
(1)Linux严格区分大小写
(2)Linux中所有内容以文件形式保存,包括硬件
(3)Linux没有扩展名概念
         即Linux不靠扩展名区分文件类型(靠权限区分),但会有一些约定寻常的扩展名区分
              压缩包:“*.gz”、”*.bz2”、”*.tar.bz2”、”*.tgz”等
              二进制软件包:”*.rpm”
	      网页文件:”*.html”、”*.php”
	      脚本文件:”*.sh”
	      配置文件:”*.conf”
(4)Windows下的程序不能直接在Linux中安装和运行
         好处:病毒和木马不能执行
         坏处:要针对Linux单独开发
3、字符界面的优势
(1)字符界面占用系统资源少
(2)字符界面较少了出错、被攻击的可能性
二、Linux安装
1、虚拟机的安装(VMware)
http://www.vmware.com       7(Windows7装不了)、8
建议配置:
CPU:主频1GHz    内存:1GB以上      硬盘:8GB
2、虚拟机使用
VMware_install_cleaner   删除虚拟机
3、系统分区只分区与格式化
(1)分区:将硬盘逻辑上分为几个不同存储空间保存数据
(2)分区类型:(通用)
主分区:最多只能有四个
扩展分区:
    最多只能有一个
    主分区加扩展分区最多有四个
    不能写入数据,只能包含逻辑分区
逻辑分区
(3)格式化:只根据用户选定的文件系统(如FAT16(最大支持2GB分区)、FAT32(单个文件大小不能超过4GB,支持分区大小能达到16GB)、NTFS、EXT2、EXT3、EXT4等)
,在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间。
     首先将磁盘分为等大小的数据块(4kb一个),在分区列表里建立二维表格(ID号(I节点)、修改时间、权限、文件保存位置)
4、分区之分区设备文件名与挂载
分区,格式化,(起名Linux)、分配盘符
/:根目录
dev:硬件设备文件
hd:硬盘
sd:SCSI或SATA或USB硬盘
cdrom或hdc:光驱
fd:软盘
lp:打印机(25针)
usb/lp:打印机(USB)
mouse:鼠标
(1)设备文件名:例——/dev/sda1:第一块(a)SATA接口硬盘的第一个(1)分区
    sda1中1的位置上1、2、3、4只能给主分区命名,即使主分区只有两个,第一个逻辑分区也是5
(2)挂载点(Linux)=盘符(Windows)
挂载:给分区分配盘符的过程
必须分区:/(根分区)、swap分区(交换分区,内存2倍(内存4GB之内)、同内存相同(内存大于4GB)(虚拟内存))
推荐分区:/boot(启动分区,200M)(系统启动至少需要几十MB)
挂载:把盘符和分区连接在一起的过程
挂载点:目录
5、Linux安装
中文插件:zhcon
6、Xshell的安装和使用 
 
 
先设置地址
 
 
三、Linux常用命令
1、命令基本格式
命令  【选项】 【参数】(个别命令不遵循)
当有多个选项是,可以写在一起    -L和-a   可写成-aL
简化选项与完整选项    -a=--all
ls【选项】 【文件或目录】(操作对象)         (不加选项,不加文件也出现)
选项:
-a 显示所有文件,包括隐藏文件
-l 显示详细信息
-d 查看目录属性
-h 人性化显示文件大小
-i 显示inode(i节点)
权限:(10位)
-rw-r--r--:-文件类型(-文件、d目录、l软链接文件(快捷方式)、块设备文件、字符设备文件、套接字文件、管道文件。只要求掌握前三个,后四个特殊)
           除去第一位,后面每三位为一组,代表文件的(u)所有者、(g)所属组、(o)其他人三个身份。r读 w写 x执行
                  用户组:相同身份,相同权限的人
输入ls -l出现:
权限 .(ACL权限) 引用计数 文件所有者 所属组 文件大小(字节(-l变为-lh会变为XX K) 最后一次修改时间 文件名
若不加参数则是对当前文件进行操作
隐藏文件:系统文件若非必要不要操作,另一可能为病毒、木马
2、文件处理命令
建立目录:mkdir    mkdir -p【目录名】   (-p为递归创建建(创建多个目录))
切换目录:cd
        简化操作:cd ~、cd  进入当前用户的家目录          cd -    进入上次目录
                cd ..  进入上一级目录                    cd .    进入当前目录
相对路径,绝对路径
Tab键可补全目录或命令
pwd:显示当前所在位置
删除目录:-r 删除文件   -f 强制
         rmdir【目录名】(只能删除空白目录)
         rm -rf【目录名】强制删除所选目录
复制命令:cp
cp 【选项】 【源文件或目录】 【目标目录】
选项:
-r 复制目录
-p 连带文件属性复制
-d 若原文件是链接文件,则复制链接
-a 相当于 -pdr(复制文件和原文件一模一样)
mv 【原文件或目录】 【目标目录】
   也可以改名,当原文件和目标文件在同一个目录
3、常用目录的作用
/       根目录
/bin和/sbin   命令保存目录(普通用户就可以读取的命令)
/boot         启动目录,启动相关文件
/dev          设备文件保存目录
/etc          配置文件保存目录
/home         普通用户的家目录
/lib          系统库保存目录
/mnt          系统挂载目录
/media        挂载目录
/root         超级用户的家目录
/proc和sys    目录不能直接操作,这两个目录保存的是内存的过载点
/tmp          临时目录
/usr          系统软件资源目录
    /usr/bin/ 系统命令(普通用户)
    /usr/sbin/系统命令(超级用户)
/var          系统相关文档内容
4、链接命令:ln
ln -s [源文件][目标文件]       -s创建软连接
       硬连接特征:1、拥有相同的i节点和存储block块,可看做是同一个文件
                   2、可通过i节点识别
                   3、不能跨分区
                   4、不能针对目录使用
                  (类似于同一个教室的前后门)
        软连接特征:
                   1、类似Windows快捷方式
                   2、软连接拥有自己的I节点和Block块,但是数据块中只保存原文件的文件名和I节点号,并没有实际的文件数据
                   3、lrwxrwxrwx    l软连接 (软连接文件权限都为rxwrxwrxw)
                   4、修改任意文件,另一个都改变
                   5、删除原文件,软连接不能使用
做软连接原文件要写绝对路径,除非在同一路径下
5、文件搜索命令
(1)locate 【文件】
   在后台数据库中按文件名搜索,搜索速度快
   /var/lib/mlocate
   #locae命令所搜索的后台数据库(数据库每天更新一次)
   updatedb
   强制更新数据库
   缺点:只能按照文件名来搜索
   /etc/updatedb.comf配置文件(conf一般为配置文件扩展名)
   PRUNE_BIND_MOUNTS="yes"
   #开启搜索限制
   PRUNEFS=
   #搜索时,不搜索的文件系统
   PRUNENAMES=
   #搜索时,不搜索的文件类型
   PRUNEPATHS=
   #搜索时,不搜索的路径
(2)命令的搜索命令whereis与which
     —— whereis 命令名
          #搜索命令所在路径及帮助文档所在位置
           -b:只查找可执行文件        -m:只查找帮助文件
     ——which 文件名
         搜索命令的位置和别名,有的也不会显示
         cd:shell内置命令,不需要有独立执行文件
      PATH环境变量:定义的是系统搜索命令的路径
         【root@localhost ~】#echo $PATH
         /usr/lib/pt-3.3/bin:
         /ust/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
         执行自己写的脚本必须加绝对路径,否则要放在PATH环境变量中
(3)文件搜索命令find
     格式:find【搜索范围】【搜索条件】
     #搜索文件
     find / -name install.log
     #避免大范围搜索,会非常耗费系统资源
     #find是在系统当中搜索符合文件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配
            通配符:*——匹配任意内容      【】——匹配任意一个中括号内的字符       ?——匹配任意一个字符
     find /root -iname install.log   #不区分大小写
     find /root -ust root            #按所有者搜索
     find /root -nouser              #查找没有所有者的文件
          没有所有者的目录一般为垃圾文件,但是如果文件由内核产生,就没有所有者(proc,sys中),外来文件如U盘、光盘中的文件也没有所有者
    find /var/log/ -mtime +10      #查找10天前修改的文件
          -10:10天内修改文件      10:10天当天修改的文件     
          atime  文件访问时间            ctime 改变文件属性时间       mtime 修改文件内容时间
    find . -size 25k  #查找文件大小为25k文件
           -25k 小于25KB的文件        25k 等于25KB的文件     +25k 大于25KB的文件 (若是查找兆字节,必须用M,千字节用k)  size默认单位是数据块
           512字节)
    find . -inum 262422  #查找i节点是262422的文件
    find /etc/ -size +20k -a -size -50k   #查找/etc/目录下,大于20KB并且小于50KB的文件
                                          -a and 逻辑与   -o or 逻辑或
    find /etc -size +20k -a -size -50k -exec ls -lh {} \;    #查找/etc/目录下,大于20KB并且小于50KB的文件,并显示详细信息
                                                            #-exec/-ok命令{}\; 对搜索结果执行操作
 (4)字符串搜索命令grep
     grep 【选项】 字符串 文件名      #在文件中匹配符合田间的字符串
           选项:    -i 忽略大小写       -v 排除指定字符
 (5)find命令与grep命令的区别
      find:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
      grep:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配(包含字符的文件都能搜到)
      若搜索是文件名称,使用通配符,若搜索文件中内容,用正则表达式匹配
6、帮助命令
(1)man (manual的缩写) 
   man 命令   #获取指定命令的帮助
   例:man ls     #查看ls的帮助   
          /选项:寻找该选项的帮助
     man的级别:    1:查看命令的帮助      
                    2:查看可被内核调用的函数帮助
                    3:查看函数和函数库的帮助
                    4:查看特殊文件的帮助(主要是/dev(硬件)目录下的文件)
                    5:查看配置文件的帮助
                    6:查看游戏的帮助
                    7:查看其他杂项的帮助
                    8:查看系统管理员可用命令的帮助
                    9:查看和内核相关文件的帮助
     man -f 命令 相当于 whatis 命令             man -数字 打开相应等级
     man -k 命令 相当于 apropos 命令       只要包含关键字的有关文件全部显示
(2)其他帮助命令
    选项帮助:   命令 --help   #获取命令选项的帮助
    shell内部命令帮助和man差不多: help shell内部命令   #获取shell内部命令的帮助
                info命令
                  按 回车:   进入子帮助页面(带有*标记)
                  按 u:      进入上层页面
                  按 p:      进入上一个帮助小节
                  按 n:      进入下一个帮助小节
                  按 q:      退出
7、压缩与解压缩命令
    常用压缩格式:.zip    .gz    .rar  .bz2    .tar.gz     .tar.bz2
(1).zip格式压缩
    zip 压缩文件名(不一定要写后缀名) 源文件  #压缩文件        软件包为红色
    zip -r 压缩文件名 源目录    #压缩目录
    解压缩:unzip 压缩文件    #解压缩.zip文件
(2).gz格式压缩
     gzip 源文件                      #压缩为.gz格式的压缩文件,源文件会消失
     gzip -c 源文件 > 压缩文件        #压缩为.gz格式,源文件保留
     gzip -r 目录                     #压缩目录下所有的子文件,但是不能压缩目录
     解压缩:gzip -d 压缩文件         #解压缩文件
             gunzip 压缩文件          #解压缩文件
(3).bz2格式压缩
     bzip2 源文件              #压缩为.bz2格式,不保留源文件
     bzip2 -k 源文件           #压缩之后保留源文件
        不能压缩目录 
     解压缩:bzip2 -d 压缩文件  #解压缩,-k保留压缩文件
             bunzip2 压缩文件   #解压缩,-k保留压缩文件
(4)打包命令tar
     tar -cvf 打包文件名 源文件
         选项:   -c: 打包    -v: 显示过程    -f: 指定打包后的文件名
     解打包命令: tar -xvf 打包文件名    选项:-x 解打包
          .tar.gz格式是先打包为.tar格式,再压缩为.gz格式
    tar -zcvf 压缩包名.tar.gz 源文件    
          选项:  -z:压缩为.tar.gz格式
    tar -zxvf 压缩包名.tar.gz
          选项:  -x:解压缩.tar.gz格式
    tar -jcvf 压缩包名.tar.bz2 源文件
          选项:  -z:压缩为.tar.bz2格式
    tar -jxvf 压缩包名.tar.bz2
          选项:  -x:解压缩.tar.bz2格式
         解压缩目录在之后加   -C 目录  就能把压缩包放到所写目录里
         压缩多个目录在压缩包之前加绝对路径
    tar -ztvf 压缩文件     只查看不解压
8、关机和重启命令
(1) shutdown命令
root@localhost ~】#shutdown[选项]时间
选项:    -c:取消前一个关机命令    -h:关机     -r:重启     
时间:now    (加&表示将这条命令放在后台执行,因为这条命令后电脑将不在有反应)
Ctrl+c:取消命令     尽量避免远程关机(?)
(2)其他关机命令
[root@localhost ~]# halt
[root@localhost ~]# poweroff
[root@localhost ~]# init 0
但是不是太安全,不会在关机重启是正确保存文件
(3)其他重启命令
[root@localhost ~]# reboot
[root@localhost ~]# init 6   init:调用系统级别
(4)系统运行级别
0 关机
1 单用户:Windows中安全模式,启动最小程序,主要做系统修复
2 不完全多用户,不含NFS服务:字符界面    NFS:文件共享服务
3 完全多用户:字符界面
4 未分配 
5 图形界面
6 重启
[root@localhost ~]# cat/etc/inittab    修改系统默认运行级别  id:3(开机进入字符界面):initdefault
[root@localhost ~]# runlevel           查询系统运行级别    蹦出来的是前一个是之前的级别,后一个是现在级别
(5)退出登录命令
[root@localhost ~]#logout
9、其他常用命令
(一)挂载命令
(1)查询与自动挂载
[root@localhost ~]# mount     查询系统中已经挂载的设备
[root@localhost ~]# mount -a  依据配置文件/etc/fstab的内容,自动挂载
(2)挂载命令的格式
[root@localhost ~]# mout [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
  -t文件系统:加入文件系统类型来指定挂载的类型,ext3、4(标准文件系统)、iso9660(光盘默认文件系统)
  -o特殊选项:可以指定挂载的额外选项
参数                说明
atime/noatime    更新访问时间/不更新访问时间。范文分区文件时,是否更新文件的访问时间,默认为更新。
async/sync       异步/同步。默认为异步
auto/noauto      自动/手动,mount -a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认为自动
defaults         定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项
exec/noexec      执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec允许
remount          重新挂载已经过载的文件系统,一般用于指定修改特殊权限
rw/ro            读写/只读,文件系统挂载时,是否具有读写权限,默认是rw
suid/nosuid      具有/不具有SUID权限,设定文件系统是否具有SUID和SGID权限,默认是具有
user/nouser      允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂载分区
usrquota         写入代表文件系统支持用户磁盘配额,默认不支持
grpquota         写入代表文件系统支持组磁盘配额,默认不支持
(3)挂载光盘
建立挂载点
挂在光盘  mount -t iso9660 /dev/sr0  /mnt/cdroom(光盘挂载点)
       或mount /dev/sr0   /mnt/cdroom
(4)卸载命令
[root@localhost ~]# umount 设置文件名或挂载点
用完之后必须卸载
(5)挂载U盘
[root@localhost ~]# fdisk -l(查看系统中已识别硬盘)
[root@localhost ~]# mount -t vfat /dec/(U盘所在分区)/mnt/usb/(挂载点)
注:Linux默认不支持NTFS文件系统,所以不能直接挂载U盘
在系统中安装ntfs-3g,但是只读模式。
(二)用户登录查看
(1)w 用户名
USER:登录的用户名
TTY:登录终端
FROM:从哪个IP地址登陆
LOGIN@:登录时间
IDLE:用户闲置时间
JCPU:指的是个该终端连接的所有进程占用的时间。这个时间并不包括过去的后台作业时间,但包括当前正在运行的后台作业所占用的时间
PCPU:是指当前进程所占用的时间
WHAT:当前正在运行的命令
(2)who  用户名
命令输出:用户名    登录终端      登录时间(登录来源IP地址)
(3)last 
last命令默认是读取/var/log/wtmp文件数据
命令输出:用户名   登录终端   登录IP   登录时间   推出时间(在线时间)
/var/log/wtmp是二进制文件不能用vi打开,为了防止人为修改
(4)lastlog
lastlog命令默认是读取/var/log/lastlog文件内容
命令输出:用户名    登录终端   登录IP    最后一次登录时间
四、Shell基础
1、Shell概述
Shell是一个命令行解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统程序,用户可以用Shell开启动、挂起、停止甚至是编写一些程序。它还是一个功
能强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令
2、Shell的分类
Bourne Shell:从1979起Unix就开始使用Bourne Shell,主文件名为sh
C Shell:主要在BSD班的Unix系统中使用,其语法和C语言相似而得名
Shell的两种主要语法彼此不兼容。Bourne主要包括sh、ksh、Bash、psh、zsh;C主要包括csh、tcsh
Bash兼容sh、tcsh等
3、脚本执行方式
(1)echo[选项][输出内容]
输出有空格时,须加双引号
选项:-e  支持反斜线控制的字符转换
\a     警告音
\b     退格键,即左删除键
\n     换行符
\r     回车键
\t     制表符,即Tab键
\v     垂直制表符
\0nnn  按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数
\xhh   按照十六进制ASCII码表输出字符。其中hh是两位十六进制数
例:
echo -e “Hello\b world”(回车)
Hell world
 
echo -e “\x68\t\x65\t\x6c\n\x6c\t\x6f\t”(回车)
h    e    l
l    o
 
 
输出颜色:#30m=黑色   31m=红色   32m=绿色   33m=黄色    34m=蓝色  35m=洋红  36m=青色   37m=白色
\e代表调用颜色
命令格式:echo -e “\e[1;(颜色序号)XXXXX\e[0m”   [1表示开启颜色,[0表示关闭颜色
(2)第一个脚本
(3)脚本执行
赋予执行权限,直接运行
chmod 755 hello.sh
./hello.sh方向路径   或绝对路径
通过Bash调用执行脚本
bash hello.sh
4、Bash的基本功能
(1)命令别名与快捷键
alias:查看系统中所有的命令别名
alias 别名=‘原命令’      设定命令别名  临时生效,注销重启后就会还原
(2)别名永久生效与删除别名
vi ~/.bashrc   写入环境变量配置文件    环境变量配饰文件:所有定义操作环境的文件   重启才会生效
source  .bashrc  会立即生效    将文件内容调用一遍
unalias  别名   删除别名(临时删除)
(3)命令生效顺序:
第一顺位执行用绝对路径或相对路径执行的命令
第二顺位执行别名
第三顺位执行Bash的内部命令
第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令
PATH:用“:”分割的一些系统目录
(4)常用快捷键
ctrl+c:强制终止当前命令
ctrl+l:清屏
 
 
ctrl+a:光标移动到命令行首
 
 
ctrl+e:光标移动到命令行尾
 
 
ctrl+u:从光标所在位置删除到行首
 
 
ctrl+z:把命令放入后台
 
 
ctrl+r:在历史命令中搜索   出现(reverse-i-search)'vi':
 (5)历史命令
history[选项][历史命令保存文件]
选项:   -c 清空历史命令      -w 把缓存中的历史命令写入历史命令保存文件~/.bash_history
历史命令默认保存1000条,可以在环境变量配置文件/etc/profile中进行修改
HISTSIZE=      (数字)
(6)史命令的调用
使用上、下箭头调用以前的历史命令
使用“!n”重复执行第n条命令
使用“!!”重复执行上一条命令
使用“!字串”重复执行最后一条一该字串开头的命令
(7)令与文件补全
命令与文件补全,只要在输入命令或文件是,按“Tab”键就会自动进行补全
(8)输出重定向
把数据写进电脑叫输入,电脑显示出来叫输出
<1>标准输入输出:
设备           设备文件名       类型               文件描述符
键盘           /dev/stdin    标准输入              0
显示器         /dev/sdtout   标准输出              1
显示器         /dev/sdterr   标准错误输出          2
<2>输出重定向
正确输出是输出到显示器,输出重定向是指不在输出到显示器中,一般是输出到文件中
 类型                    符号                        作用
标准输出重定向        命令 > 文件                  以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中
                   命令 >> 文件                 以追加的方式,把命令的正确输出输出到指定的文件或设备当中
标准错误输出重定向    命令 2> 文件                 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中
                   命令 2>> 文件                以追加的方式,把命令的错误输出输出到指定的设备或文件当中
正确输出和错误        命令 > 文件 2>&1           以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
输出同时保存          命令 >> 文件 2>&1          以追加的方式,把正确输出和错误输出都保存到同一个文件当中
                   命令 &>文件                  以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
                   命令 &>>文件                 以追加的方式,把正确输出和错误输出都保存到同一个文件当中
                   命令 >>文件1 2>>文件2      把正确的输出追加到文件1中,把错误的输出追加到文件2中
<3>输入重定向
[root@loclhost ~]# wc [选项][文件名]     (统计命令)
选项:     -c统计字节数        -w统计单词数        -l统计行数
命令<文件把文件作为命令的输          文件<<标识符    标识符吧标识符之间内容作为命令的输入
<4>管道符
多命令执行符:
   ;       命令1;命令2     多个命令顺序执行,命令之间没有任何逻辑联系
   &&       命令1&&命令2     逻辑与    当命令1正确执行,则命令2才会执行,当命令1执行不正确,则命令2不会执行
   ||       命令1||命令2     逻辑或    当命令1执行不正确,则命令2才会执行,当命令1正确执行,则命令2不会执行

管道符:
    |        命令1 | 命令2     命令1的结果作为命令2的操作对象(此时命令2不用再写操作对象)
<5>通配符
   ?        匹配一个任意字符                   *         匹配0个或任意多个任意字符,即可以匹配任何内容
   []        匹配中括号中任意一个字符           ^         逻辑非,即去除所写的字符
<6>Bash中其它特殊符号
  ''   若将变量放在单引号中,任何字符没有特殊意义
  ""   双引号中只有“$”,“`(反引号)”,“\”有“调用变量的值”、“引用命令”和“转义符”的特殊含义,其他符号没有特殊意义
  ``(反引号)  aa=`ls`    表示先执行ls命令,然后将值赋给aa变量。也可用$(___)代替,两种表示相同。
 

猜你喜欢

转载自blog.csdn.net/qq_36791000/article/details/53586413