Linux环境和基本命令(2)


复习:Linux环境和基本命令
1、简述Linux在虚拟机中安装步骤(不包括放入iso镜像文件后的步骤)。
 处理器设置、内存、磁盘(分区)、网络等

2、查看Windows和Linux系统的IP地址命令?
 Windows: ipconfig
 Linux/Unix: ifconfig      Unix: ifconfig -a   a表示all 所有的

3、登录Linux/Unix有哪些方式?
1)本地登录  在主机面前,之间操作
A. 字符界面   特点:使用大量的命令来操作和管理OS
B. 图形界面   好处:直观   缺点:费资源

2)远程登录  通过网络,在其它机器远程登录 telnet   
A. 字符界面  (最常用) 好处:省资源,随处可用
B. 图形界面   缺点:需要在客户端安装特殊的软件 更麻烦

结合小工具: SSH

4、命名的基本组成?  Linux/Unix 区分大小写  -F   -f
                          Windows中命令 不区分大小写
 命令    [选项]     [参数]
 ls        -l
 ls        -F
 ls        -al
javac     -d        .      Hello.java       JDK命令
cat                   Hello.java

5、写出一些Linux命令:
1)配置IP地址:  netconfig
2)重启网络服务:service network restart
3)查看网络是否连通:ping  id地址
4)停止当前进程组合键:ctrl + c  (Windows中也支持)
    前提:在控制台中使用
    原理:在控制台中执行ping命令,会启动一个进程,占据当前终端,通过ctrl+c 即可结束当前进程,恢复终端。

5)挂起当前进程的组合键:ctrl + z  也能交出终端
6)关闭防火墙命令:iptables -F
    重新启动Linux,还需要关闭   
7)我是谁? 查看当前登录用户信息: who am i
  (Linux/Unix是基于用户权限保证环境的安全,认清身份)
8)查看当前已登录的所有用户:who (Linux/Unix多用户系统)
9)我在哪儿?查看当前工作目录 pwd
10)查看目录下的资源(文件和目录):ls  -l (linux简写 ll)
11)改变工作目录:cd
  cd ..   退回上一次目录
  cd 目录名  进入下一层目录
  cd 决定路径  直接进入某个目录

一、软硬件体系结构
1、硬件体系:
                  (I/O进行交互)
  输入设备 -------  主机  ------输出设备
(鼠标、键盘等)                   (显示器、打印机等)
                 (CPU  内存  硬盘)

2、软件体系:以主流的B/S架构系统为例,三层架构
  Client   -----  Application Server  ----- DB Server
客户端浏览器          应用服务器              数据库服务器
 Windows             Linux/Unix               Linux/Unix
                       分开部署,减轻DB的负担,增加并发量       
                      _____________________________
                                 AUT 被测系统

二、Linux/Unix系统基本层次结构
从外到内:
  应用程序  <->  Linux操作系统  <-> 硬件
                 (Shell <-> Kernel内核)
1、Shell (直译:外壳)  命令解释器 (翻译、解释命令)
介于 用户 和 内核之间,提供与系统的命令交互。
shell本身也是一个进程,表示形式:终端、命令行风格
常见的shell类型:bash  csh   sh  (都是命令 可执行文件)
类似于Windows: cmd 命令行窗口
   对应:C:/windows/system32/cmd.exe  就是一个可执行文件

查看当前是什么shll, 使用命令:ps (查看当前部分进程)
进程id 伪终端号          启动的命令
  PID TTY          TIME CMD
 2648 pts/0    00:00:00 bash   当前shell进程
 3089 pts/0    00:00:00 ps

可以在不同shell之间切换:
 csh   
 sh
 bash

不同的shell,理解命令的方式略有差异,比如csh偏向于C语言语法
推荐使用bash,比较方便
shell层层创建(原理:创建子进程,exit可返回上一层)
登录系统后,有默认shell: 登录shell (login shell) 目前bash
此时exit,则推出登录

  PID TTY          TIME CMD
 3118 pts/0    00:00:00 bash
 3153 pts/0    00:00:00 bash
 3174 pts/0    00:00:00 csh
 3194 pts/0    00:00:00 sh
 3195 pts/0    00:00:00 ps

2、Kernel 内核,和硬件打交道,比较底层。
 (把硬件管理起来,将硬件屏蔽掉)
管理内容:交换区 swap space、文件系统 File System等。
Linux内核实现了五大功能:
1)进程/处理器管理
2)内存管理
3)接口管理
4)文件管理
5)设备管理

查看当前版本:uname -r        2.4.20-8
内核版本的组成:主版本号.次版本号.修订次数
       次版本号为奇数,版本相对不稳定   2.5.10
       次版本号为偶数,版本相对稳定     2.6.10

3、File System 文件系统:对Linux/Unix中的文件进行管理。
文件:包括文件、目录,以及外部设备也当做文件来管理。
      原因:以文件方式管理比较简便,一视同仁

三、Linux的通用特性
1、支持多用户
2、支持多任务
3、支持用户界面  (良好的交互)
4、硬件的支持
5、网络连接
6、可安装网络服务
7、应用程序的支持

四、Linux/Unix的基本命令
1、执行命令,就会执行一个可执行文件,会启动一个进程。
 比如 ps    ls
      sleep  5   启动sleep进程,睡觉5秒   单位:秒

 ctrl + c 结束当前进程,交回终端
 ctrl + z 挂起当前进程

2、man 命令 (相当于帮助文档 手册)
 Linux/Unix中针对各种命令提供手册,manual 帮助手册
 查阅ls命令的功能:
 man  ls        
 控制方式: 空格 --- 翻页
              回车 --- 跳行
               q    --- 退出 quit

3、ls命令  查看目录下的内容
1)ls -l  以长格式显示文件(use a long listing format)
         linux中可简写为ll

文件类型 权限   属主   属组   文件大小 最后一次修改时间
-rw-r--r--   1 root   root    16012  9月 23 22:28 abc.txt
            硬链接数                                  文件/目录名
           (不要求)
文件类型:
 - 普通文件
 d 表示目录

除了文件名之外的所有信息:文件的属性
属主:由哪个用户user创建的文件   owner 拥有者
属组:属于哪个用户组  group
文件大小:单位 字节Byte

2)ls -a   a就是all的意思
          显示目录下所有内容,包括隐藏文件和目录。
          隐藏文件:以 . 开头的文件

3)ls -al  选项可以组合搭配使用 (功能叠加)

4)ls -R  文件全部展开 (当前目录及子目录的资源分布)

5)ls -t   按照实际先后(文件/目录的最后一次修改时间)

6)ls -lt   结合长列表方式、按照时间排序

7)ls -F   可以查看文件类型
          普通文件      无后缀显示   
          目录           /结尾
          可执行文件    *结尾

cd到/usr/bin目录下,查看文件类型

4、clear  清屏    Windows: cls     Sqlplus: clear screen

Linux/Unix发展和厂商的产品介绍:
                          1969 Unix
                             |
   ------------------------------------
   |              |               |                  |
IBM AIX   Sun Solaris     HP UX             BSD

   Minix好比小型的Unix (Linux好比山寨版Unix)
   Linus 1991   1994  Linux(Linux is not Unix) 吉祥物:企鹅
                               |
  -------------------------------------
  |                    |                |             |
Red Hat红帽   Red Flag 红旗    S.U.S.E      Ubuntu 乌班图
  开源                             起源于德国
提供图形界面
提供大量服务来盈利

五、Unix和Linux操作系统的版本:
1、Unix: IBM-AIX、Oracle Sun-Solaris、HP-UX、Minix

2、Linux: Red Hat、Red Flag、SUSE、Ubuntu

六、Linux操作系统分区
1、Linux中,所有的设备、分区都以 系统文件 形式存在。
优点:文件可读、可写、可设定权限,高透明的管理

2、Swap分区: 交换分区、虚拟内存
作用:将磁盘空间当做内存使用,扩展内存空间,但速度明显下降
应用场合:当Linux的物理内存不够时,在磁盘中开辟一块空间,放置内存中的数据。(安装Linux时指定:2G左右,一般为物理内存的2倍,VM内存 1G)
1)如果适当使用,属于正常系统状态
2)如果大量使用swap空间,说明系统内存严重不足

3、磁盘文件命名规则:
hda1:
1) hd -- IDE硬盘
2) a  -- 第一块硬盘
3) 1  -- 第一个分区

sdb3:
1) sd -- SCSI硬盘
2) b  -- 第二块硬盘
3) 3  -- 第三个分区

4、挂载点:就是目录。系统中相应的设备文件要挂载到相应目录中,才能继续使用。
(比如:光盘、U盘、硬盘、都被看做文件,需要挂载)
 mount命令 用来挂载

5、每一块硬盘最多4个主分区(包括扩展分区)
比如:  1     2     3      4
     主分区  扩展  扩展   扩展

比如:  1     2     3      4
     主分区 主分区  扩展   扩展

1)主分区:可以拿来直接使用
用途:计算机用于启动操作系统,系统启动程序、引导程序,放于主分区中。
细节:Linux规定主分区(扩展分区)占用1~16号码的前4个
      SCSI硬盘: sda1  dsa2  sda3  sda4
     剩下sda5~sda16 逻辑分区占用

2)扩展分区:不能直接使用,需要进行逻辑分区后再使用

6、文件:包括文件 和 目录(文件夹)
                 File    Directory
   目录也是一种特殊的文件:可以有子目录和其它文件

七、Linux/Unix常用命令
1、查看磁盘空间  fdisk  -l
应用场合:当系统突然变慢或性能不佳,可以查看Linux服务器的磁盘空间,确定是否磁盘瓶颈(空间不足)。

练习:查看磁盘空间是否占满
Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        13    104391   83  Linux
/dev/sda2            14       268   2048287+  82  Linux swap
/dev/sda3           269      1044   6233220   83  Linux

Blocks: Data Block 数据块
Id: idle 表示空闲的磁盘  83%的空间可用

2、mount 挂载 显示有效磁盘分区的挂载情况

/dev/sda3 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/sda1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)

3、查看文件的内容: cat  (适合查看小文件)
# cd /root
# ls
# cat install.log
# date   查看日期
# cal    查看本月日历
# cal  2014   本年日历
# cal  10 2014  某年某月

平时命令执行的结果默认向 终端 输出。(终端-标准输出)
>  输出重定向:将输出的结果重新导向到文件中,而不是终端
# date > 1.txt
  将date的结果写入1.txt文件中
# ls -l
# cat 1.txt
# cal > 1.txt
# cat 1.txt

>    输出重定向,新的会覆盖旧的
>>   输出追加重定向,向原有文件追加内容

# date >> 1.txt
# cal 10 2014  >> 1.txt
# cat 1.txt

4、自动补全功能:Tab键
# cat  1       Tab 会补充完整的文件名
# cat  1.txt

5、目录常见概念
1)绝对路径:表示从/开始到具体的目录或文件的路径
     /etc/passwd
2)当前路径:表示当前所在的目录的路径   pwd查看
     /etc
3)相对路径:相对于当前路径下的简短路径
     passwd
     ../root/1.txt  (..回到 /下   root进入其中,找到1.txt)

比如目前在/root下  (当前路径)
需要表示/etc/passwd ?
  1)绝对路径: /etc/passwd     (特点:/ 开头)
  2)相对路径: ../etc/passwd

4)主目录:用户登录到Linux/Unix系统后,默认所在的目录
   Home Directory (家目录)
该目录下用户拥有大量的操作权限,出了此目录,则处处受挫
主目录:在创建用户时分配 目录名
 一般每个用户在/home目录下,存在一个与用户名相同的目录名。

root:x:0:0:root:/root:/bin/bash
root用户         主目录  登录shell

技巧:想快速回到主目录
    cd 回车    或    cd ~

说明:~ 代替主目录
    echo  ~      echo 回声
    echo abc

5)当前目录:  .      cd .       ./1.txt
6)上一层目录:  ..   cd  ..    退回上一层目录

6、创建目录:mkdir  目录名
# cd    回到主目录
# mkdir  test   创建一个test目录
# ls -l
# cd test
# ls         什么都没有
# ls -la     只有 .  和  ..

练习:在test目录中继续创建其它目录层次
# mkdir  dir1/dir2
mkdir: 无法创建目录‘dir1/dir2’: 没有那个文件或目录
注意:Linux/Unix中,需要加 -p选项,才可创建一个目录层次
# mkdir  -p  dir1/dir2    一气呵成
# ls -R  查看目录层次
回到test下
# cd ~/test
# mkdir dir3 dir4 dir5  依次创建三个目录,空格分隔
在主目录下新建一个game目录
# mkdir  ~/game

7、切换到图形界面: startx
# startx  在虚拟机中启动图形化界面,观察目录结构

切换回字符界面:点击红帽子 -> 注销

8、新建文件: touch  文件名
说明: 如果文件名不存在,创建一个新的、空的文件
    如果文件名存在,只会修改文件的最后一次修改时间

# cd
# cd test
# date > 1.txt    通过重定向生成一个1.txt文件
# ls -l  1.txt
# touch 2.txt      创建一个空文件
# ls -l  2.txt
# touch 1.txt
# ls -l 1.txt       1.txt最后一次修改时间 更新了
# cat 1.txt         文件内容不变

9、Linux/Unix文件、目录的命名规则
1)区分大小写
2)除了/以外的的字符
3)包含空格,需要\ 转义 或 双引号 " "
4)以.开头的名称,具备隐藏属性  (隐藏文件、目录)
5)Windows用后缀来区分不同的文件类型 *.txt  *.exe  *.doc
 Linux/Unix则不需要,后缀只属于文件名的一部分,主要用于提示文件类型(见名知意)
 比如:文本文件 file1   file1.txt   file1.abc
        f1.sh  (shell脚本文件 可执行)

10、新建文件 my file
在~/test目录下
# touch my file    会依次创建两个空文件
# touch my" "file  创建带有空格的文件
# touch my\ file1  使用转义符

11、查看包含空格的文件名  " "  \
# cat my" "file
# cat my\ file1
# cat my  file      依次显示my 和 file文件的内容

12、创建隐藏文件,文件名:  .news
# touch  .news
# ls -l
# ls -a
# ls -la

13、Linux系统的目录结构  (FHS标准)
/ 根目录 (必须存在)
  /bin     大量可执行文件 (命令  ls  pwd  cd ...)
  /sbin    系统管理员命令
  /boot    启动目录
  /root    root用户 主目录 (特殊:root用户才具备操作权限)
               root的家(皇帝的家)
  /home   普通用户的主目录  (寻常百姓家)
  /usr     用户应用程序的安装目录
  /etc     存放配置文件
              比如/etc/passwd  用户账户信息
                  /etc/shadow  保存账户密码 (加密MD5)
  /dev     设备文件
  /tmp     临时文件 (程序员使用较多)
  /lib       库文件   library
  /var      数据、日志、临时文件
  /mnt     挂接其它文件系统   mount

目录或文件其它操作:
cp   拷贝文件或目录  (copy)
# cp 1.txt   11.txt     将1.txt备份为11.txt

mv  移动文件或目录  (move)
#  mv 11.txt  22.txt     重命名
本质:改变文件的绝对路径名
  源文件名:/root/test/d1/11.txt
  改后:     /root/test/d1/22.txt

练习:在~/test下,新建d1和d2目录
 d1目录下新建1.txt  文本内容:hello    echo hello > 1.txt
 将1.txt文件拷贝到 d2目录中

# cd
# cd test      或 cd ~/test
# mkdir d1
# mkdir d2       或 mkdir d1  d2
# cd d1
# echo hello > 1.txt      会新建1.txt文件 写入hello
# cp  1.txt   11.txt    当前目录下拷贝一个11.txt
# ls -l
# cp  1.txt   ../d2/1.txt   拷贝新文件由自己命名
# cp  1.txt   ../d2          新文件继续使用原文件名

当前在test下:
# cd ~/test
# cp d1/1.txt  d2/2.txt
如果当前在d2下:
# cd ~/test/d2
# cp ../d1/1.txt   .        拷贝到当前目录
# cp ../d1/1.txt   3.txt   拷贝成当前路径下的3.txt
# cp ../d1/1.txt   ./3.txt

如果使用绝对路径:
# cp  /root/test/d1/1.txt   /root/test/d2/3.txt

将d1下的1.txt移动到d3中
# mkdir d3
# cd ~/test/d1
# mv  1.txt   ../d3

本质:就是改变文件的绝对路径名
 /root/test/d1/1.txt  -->   /root/test/d3/1.txt
 
将d1下的11.txt 重命名 为22.txt
# cd ~/test/d1
# mv  11.txt  22.txt

本质: /root/test/d1/11.txt  -->   /root/test/d1/22.txt

14、拷贝命令cp 和 移动/改名命令mv 的区别:
1)1个文件 cp 之后变为 2个文件  (备份)
2)1个文件 mv 之后还是 1个文件  (本质:改变绝对路径名)

15、删除文件或目录
1)rm 文件名     删除文件
 rm -f  关闭交互

# rm *.txt     * 通配符,匹配所有字符
                 删除以.txt为结尾所有文件

2)rmdir  删除空目录

3)rm  -r   目录名    删除一个非空目录
    rm -rf   关闭交互,删除非空目录

作业:
1、使用一个命令将多个文件合并成一个大文件
2、练习:创建目录、创建文件、删除文件/目录、拷贝、移动文件
   (文件系统中常用的命令--重点)

复习:
1、什么是Linux/Unix的Shell,请举例,并说明shell之间如何切换。
 Shell 命令解释器,主要用来接收并解释命令,介于用户和内核Kernel之间,本身就是一个可执行的文件,运行后就是一个进程。
 在系统登录成功后,系统会默认启动登录shell进程 (login shell),Linux常用的是bash.
 常用的shell: bash  csh   sh
 Shell间的切换:之间执行shell命令的名称。
 本质:在当前shell中,启动子进程

2、请分析以下磁盘的风格和分区情况。
 /dev/sda1
 /dev/sda2
 /dev/sda3
 /dev/sdb1
 /dev/sdb2
思路:Linux/Unix将文件、目录、设备都当作文件来管理
      (File System 文件系统)
共有2块SCSI硬盘,第一块硬盘有3个分区;第二块硬盘2个分区
 (a b) sd              1  2  3                  1  2

3、Linux/Unix常用命令 (Commond)
1)查看命令帮助手册:man  命令名       回车、空格、q
2)查看目录下的资源: ls
 ls -l  (ll)   ls -al     ls -F      ls -R    ls -lt
 ls -ld  查看当前目录的属性,无需回上一层再  ls -l
3)清除屏幕:clear
4)查看当前磁盘分区情况:fdisk -l     df -k
5)查看小文件:cat 文件名
6)查看日期:date
7)查看日历:cal
8)输出重定向: >  覆盖     >> 追加
9)创建目录: mkdir 目录名
10)创建文件:touch  文件名
11)拷贝文件:cp  原文件  新文件
12)移动文件(重命名):mv 原文件名  新文件名(所在目录)
      本质:更改原文件的绝对路径
13)删除文件:rm 文件名
           rm -f  关闭交互
14)删除目录:rmdir  目录名  (只能删除空目录)
           rm -r 删除非空目录
           rm -rf 删除非空目录,关闭交互

作业:
1、使用一个命令,将三个小文件合并成一个大文件
# cd
# cd test
# echo hello > f1
# date > f2
# cal > f3
# cat f1 f2 f3 > f5

2、练习:创建目录、创建文件、拷贝文件、移动文件、删除文件/目录。
# cd ~/test/dir1
# mkdir d1
# mkdir d2
# cd d1
# touch f1
# cal >> f1
# touch f2
# date >> f2
将d1下的f1拷贝到d2目录中:
# pwd     /root/test/dir1/d1下
# cp   f1   ../d2
# cd   ../d2
# ls
将d1下的f2移动到d2下:
# pwd    /root/test/dir1/d2下
# mv     ../d1/f2   .
# rm  -f  f1
# rm  -f  f*
# cd ..
# rmdir d2     空目录
# rm -rf d1    非空目录

注意:如果用root登录,在/目录下,千万不能:
   rm  *  会删除所有文件和目录
技巧:平时少用root登录,root拥有最高权限,为了防止误操作。

一、用户和组的管理
Linux/Unix是多用户系统
(root是超级用户、管理员,拥有最高权限。其它用户及权限由root来管理)
比较Windows系统:
 控制面板 -> 管理工具 -> 计算机管理 -> 本地用户和组
    右击某用户 -> 属性 -> 隶属于(属于哪个组)

1、添加用户:useradd  用户名    (只能由root操作)
# useradd xiaohong
  (不写组,会自动形成一个组,组名就是用户名)

2、创建密码:passwd 用户名
# passwd  xiaohong

# who am i   必须为root
# useradd xiaohong    添加用户
# passwd  xiaohong    输入密码: 123    123

查看/home 增加一个用户的主目录:xiaohong

3、切换用户(改变身份): su  用户名
# su xiaohong
注意:从root切换到普通用户不需要密码,但从普通用户切换到root或其他用户,需要密码。

练习:从root切换到xiaohong,从xiaohong切换到root

who am i  : 查看最初登录身份
whoami : 查看当前的身份
id:     查看当前的详细身份(用户id 用户名 组id  组名)

直接变为root:  su 即可

二、案例:
1、添加boys组: groupadd  boys
2、添加girls组: groupadd  girls
3、查看组信息: cat  /etc/group    组管理配置文件

# groupadd boys
# groupadd girls
# cat /etc/group

组名  组id(gid)
root:x:0:root
...
xiaohong:x:500:
boys:x:501:
girls:x:502:

4、添加用户tom到boys组:useradd  -g boys  tom
# cd  回到主目录
# useradd -g  boys  tom
# passwd  tom       密码: 123

passwd -d  用户名    由root来清口令

5、同理,添加用户alice和rose到girls组:
# useradd -g girls  alice
# passwd alice    密码: 123
# useradd -g girls  rose
# passwd rose    密码: 123

6、查看用户账户基本信息: /etc/passwd
# cat /etc/passwd

用户名:口令占位符:uid:gid:描述信息:用户主目录:登录shell
root:x:0:0:root:/root:/bin/bash
...
xiaohong:x:500:500::/home/xiaohong:/bin/bash
tom:x:501:501::/home/tom:/bin/bash
alice:x:502:502::/home/alice:/bin/bash
rose:x:503:502::/home/rose:/bin/bash

uid: 用户id
gid: 组id

补充:/etc/shadow    用户口令(密码)文件
root有查看权限,小红等权限不够  cat /etc/shadow
但是:密码经过加密 MD5算法

7、用alice用户身份,在其主目录下创建1.txt文件
# who am i   是root
# su alice    不用密码
# cd          到alice主目录  /home/alice
# touch 1.txt  创建空文件
# ls -l

8、使用vi编辑器,编辑1.txt   (vi初步使用)
1)vi  1.txt     处于命令模式
2)敲 i 键,切换到输入模式   (左下角显示 插入  INSERT)
3)输入 I am alice!
4)敲Esc键,由输入模式 -> 命令模式
5)敲 : 键,进入底行模式(冒号模式)
6)在冒号后输入: wq 回车,表示保存并退出 (write 和 quit)
7)注意:如果保存文件出现问题,可以强制不保存退出
   冒号模式: q!

9、尝试让tom去查看并修改1.txt文件?
# su tom   密码 123
# ls -l    权限不够
# cd ..  
# ls -l

文件类型 权限  属主    属组                      目录名/文件名
drwx------ 2 alice    girls        4096  9月 25 11:33 alice
drwx------ 2 rose     girls        4096  9月 25 10:47 rose
drwx------ 2 tom      boys         4096  9月 25 10:43 tom

文件类型: - 普通文件   d 目录

三、文件/目录的权限:
1、user   所有者(属主 owner  文件的创建人 u)
2、group  所有者所在的组  g
比如:useradd -g girls  alice        alice属于girls组
       useradd  xiaohong       默认xiaohong组名就是xiaohong
       alice和rose同在girls组中
3、other  其他  o   既不是user,也不在同一组中

ls -l 开始的10个字符:
   文件类型          文件/目录权限
   -  文件         ---    ---    ---
   d  目录        所有者 所在组  其他

4、三种访问权限:可读r、可写w、可执行x
 rwx --- ---   出现的位置固定 rwx 缺失使用-代替
 r 可读     r--    100   4
 w 可写    -w-    010   2
 x 可执行  --x    001   1

 - rw- r-- r--   普通文件: 权限 644  权限的数字表达法 简洁
 自己:可读、可写  同组:只读   其他:只读

 d rwx r-x r-x   目录: 权限 755
 自己:可读、可写、可执行  
   同组:可读、可执行  其他:可读、可执行

 - rwx rwx rwx   可执行文件  777
  对所有用户:可读、可写、可执行

权      权限的数字表达法
421
000  0     ---
001  1     --x
010  2     -w-
011  3     -wx
100  4     r--
101  5     r-x
110  6     rw-
111  7     rwx

5、归纳文件和目录的各种权限规律:
1)文件的权限:r 可读    可以使用vi、cat查看文件内容
                  w 可写    可以修改后保存
                  x 可执行  可以直接运行  命令就是可执行文件

2)目录的权限:r 可读     ls 目录,能查看到内容
                  w 可写    可以修改目录内容,如新建、删除目录
                  x 可执行  可以cd进去

6、修改文件/目录权限的命令:chmod
角色:u 拥有者   user
       g 同组     group
       o 其他     other
       a 所有的  all
用法:
# chmod u+x  1.txt  针对自己添加可执行权限
# chmod u-x  1.txt  针对自己去除可执行权限
# chmod g+w  1.txt  针对同组增加可写权限
# chmod a+r,g+w  1.txt   所有用户都可读,同组的可写
# chmod 777 1.txt   数字表达法
     rwx  rwx  rwx
# chmod 644 1.txt

前提:只有文件的拥有者、root用户可以改权限

案例:由root或alice修改alice主目录权限:
 针对o + rx,其他用户xiaohong可以进入alice主目录,并可以使用ls -l查看目前下的内容.
 由root或alice针对1.txt文件修改权限,o+w xiaohong即可修改文件。 644  ->     646
  rw- r-- r--     rw- r-- rw-
 chmod  646 1.txt

练习:
1)将may、lucy用户加入a组,andi和james加入b组;
2)andi在主目录中新建f1文件,文件中写入一句话,保存退出 vi
3)如何实现让may, james进行查看并修改文件f1.
4)删除用户和组
    userdel  用户名
    groupdel 组名

由root操作:
# groupadd  a
# groupadd  b
# cat /etc/group
# useradd  -g  a  may
# passwd  may    密码123
# useradd -g  a  lucy
# passwd  lucy     密码123
# useradd -g  b  andi
# passwd  andi     密码123
# useradd -g  b  james
# passwd  james   密码123

# su andi
$ cd       回到andi主目录    因为/root下没有创建文件权限
$ vi  f1     编辑I am andi! 保存退出

新建终端模拟其它用户登录 分别may 和 james
andi:
  cd /home
  chmod a+x  andi     所有的都具备可写权限

may:
james:
  都可以cd 进入andi
  ls -l    权限不够

andi:
  chmod a+rx  andi   所有用户都有 r 和 x权限
    700 -> 755   rwx r-x r-x

此时:may和james都可以查看andi目录下资源
  ls -l

andi:
  cd  andi
  chmod  a+w  f1   让所有用户都可修改f1文件
        644 -> 666   rw- rw- rw-
  chmod 666 f1

此时:同组的james、其他的may都可以进入andi主目录,并查看目录中资源,打开f1文件,并修改f1文件内容保存。

准备一个可执行文件:  针对f2设置为 x权限,就可直接运行
andi:
$ vi  f2
编辑: date
        sleep 10
        cal
如果多条语句写一行,分号隔开: date; sleep 10; cal
保存退出  f2脚本中命令会依次执行
$ f2   命令找不到
$ ./f2   找到了,但没有可执行权限
$ chmod u+x  f2   让自己具备可执行权限
$ chmod a+x  f2   任何用户进入当前目录都可执行f2

四、查看文件的方式总结   cat   more  vi   head  tail
1、cat  适合看小文件,不可翻页,不可编辑
    可以将多个小文件合并成一个大文件:
    cat  f1  f2  f3 > newfile

2、more 适合看大文件,可以翻页,不可编辑。
   空格   翻屏
   回车   滚动行
   b      向前一屏   back
   f      向后一屏   forward
   h      求助        help
   q      退出        quit
   /      查找文本
   n      继续查找

将/etc/passwd文件拷贝到andi的主目录下:
cp /etc/passwd  ~

cat passwd
more passwd

3、vi  功能强大文本编辑器(Unix/Linux)  vim等都是对vi的加强版
关注三种模式:如何切换

                回车                 i a o O
    底行模式  ---->   命令模式   ---->  输入模式
               <----   (初始模式) <----
              :  /  ?                  Esc

常用的操作命令:
          O
      i  光标 a
          o          变为输入模式,光标停留位置不同
  向上  k
  向下  j
  向左  h
  向右  l    用小键盘方向键也可
  到行首  ^
  到行尾  $
  到第5行   5G
  屏首       H
  屏尾       L
  屏中央     M
  前翻页    ctrl + b    backward
  后翻页    ctrl + f    forward

  x     删除一个字符
  dw    删除当前词
  3dw   删除3个单词
  dd    删除当前行
  5dd   删除5行 (当前行开始)
  :5, 10d   冒号模式,删除5~10行

  r    替换一个字符
  cw   替换一个单词
  cc    替换一行
  C     替换从光标到行尾

  yw    拷贝词
  yy    拷贝行 (Y)   5yy    拷贝5行
  p      粘贴
  :1,2co3  拷贝行1,行2到行3之后
  :4,5m6   移动行4,行5到行6之后   剪切

  :w               存盘 write  (类似Windows中 ctrl + s)
  :w  新文件名    另存为新文件
  :wq              存盘退出 或  ZZ  (shift + z + z) 或:x
  :q!               强制退出不存盘

其它命令:
  ~    大小写转换
  J    把当前行和下一行连起来
  u    撤销上一步  undo
  :set number   显示行号   :set nu
  :set nonumber 取消行号   :set nonu
  :21    光标跳到指定行
  21G   到21行      G表示文件为   1G第一行
  /字符串    从当前行往下查找
  ?字符串    从当前行往上查找
  n          继续向下查找
  N         反方向继续查找
  :r  file2   在光标所在位置插入另一个文件 (合并)
  :1,$s/旧串/新串/g     替换全文
   说明:s表示替换  g表示全部替换 global
  将所有: 换成@
  :1,$s/:/@/g

练习:使用vi编辑一段Java程序   vi LaoGong.java
写一个类 LaoGong  单例模式(饿汉式)
package day01;
public class LaoGong{
   private static LaoGong lg = new LaoGong();
   private LaoGong(){}
   public static LaoGong getInstance(){
       return lg;
   }
}

4、head和 tail
head -n  文件名   前n行
tail  -n  文件名   后n行

tail  -f  f5    能够监控日志文件   动态实时刷新

五、常用技巧
1、过滤:grep  过滤出n行
2、统计:wc    统计:行、单词、字符  的字数
3、管道:|    (piping)
管道符用于连接两个命令:前一个命令的输出,作为后一个命令的输入。
比如:将/etc/passwd的头10行,写入文件f6
# head -10 /etc/passwd > f6

将/etc/passwd的头10行排序后,写入文件f8   sort命令
# head -10 /etc/passwd | sort > f8

常见用法:
1)管道more:  分屏显示   ls -l  /etc
 ls -l /etc | more

2)管道grep: 过滤    ls -l  /etc
 ls -l /etc | grep ssh
 cat /etc/passwd | grep james

james:x:507:504::/home/james:/bin/bash

六、进程管理
1、查看当前所有进程
 ps  -ef  以全格式显示当前系统所有的进程
     -e  所有进程
     -f  全格式

UID    PID  PPID  C STIME TTY          TIME CMD
root     1     0  0 09:05 ?        00:00:03 init

Uid      用户id
Pid      进程id
PPid     父进程id
C        cpu占有率
Stime   开始时间
TTY     开始此进程的终端号
Time    此进程运行的总时间
CMD    该进程对应的命令名

启动sleep进程:sleep 1000

2、kill命令:根据进程id杀死进程
 kill 进程号
 某些情况下,kill会出现信号丢失:
 kill -9  进程号   强制杀死进程(绝杀)

3、pkill命令:根据进程命令名杀死进程
 pkill sleep

关机:halt       halt: must be superuser.
重启:reboot    rebot: must be superuser.
必须是超级用户root才可操作!

猜你喜欢

转载自blog.csdn.net/qq_36330733/article/details/80719360