用户和用户组管理

用户管理常用命令

用户的角色是通过UID来识别的,且UID是全局唯一的。Linux用户可以分为三类。

  • root用户(超级用户):可以登录系统,系统唯一,可以操纵系统中的一切文件和执行一切命令,拥有最高权限。
  • 虚拟用户(伪用户、假用户):不可以登录系统,系统必不可少,比如bin、daemon、adm、ftp、mail。这类用户是系统自身拥有的,非后来添加,不过我们也可以添加虚拟用户。
  • 普通用户:可以登录系统,只能操纵用户根目录的内容,权限受到限制。这类用户由系统管理员添加。

    Linux用户管理常用命令有:用户添加命令useradd或adduser、用户修改命令usermod、用户删除命令userdel及用户口令管理命令passwd。

1.用户添加——useradd或adduser

useradd和adduser是等价的,都用于创建新的用户账号。命令格式如下:

useradd [option] [username]			#option为命令选项,username为用户名

执行该命令后,系统会做以下两件事

  • 在/etc/passwd文件中添加一行记录。
  • 在/home目录下创建新用户的主目录,并将/etc/skel目录中的文件复制到该目录中。

    使用该命令后,新建的用户还无法登陆,需要用passwd命令设置口令后才能登陆。用户的UID和GID是自动生成的,将/etc/passwd文件中的UID加1得到新建用户的UID,将/etc/group文件中的GID加1得到新建用户的GID。

常用useradd或adduser命令选项及其意义

选项 意义
-g [initial_grp 指定新建用户的私有组。若未指定-g参数,则该用户私有组的名称与新建用户账号同名
-G [grp...] 添加附属组
-D 显示或设置useradd命令使用的默认值
-d [directory] 指定用户主目录,如果此目录不存在,则同时使用-m选项来创建主目录
-m 使用的目录若不存在,则自动建立
-u UID 指定用户的用户号,若同时有-o选项,则可以重复使用其他用户的标识号。UID不能为负,预设为最小不得小于99而逐次增加。0~99一般保留给系统账号使用
$ sudo useradd wang					#新建一个用户wang
[sudo] password for jerring:
$ tail -1 /etc/passwd #查看passwd文件中添加的用户账号信息
wang:x:1001:2221::/home/wang:
$ sudo tail -1 /etc/shadow #查看加密后的用户账号及密码信息
wang:!:17241:0:99999:7::: #“!”表示还未指定密码

2.用户修改——usermod

usermod命令可用来修改用户账号的各种属性,包括用户主目录、私有组、登录Shell等内容,命令格式如下:

usermod [option] [username]			#option为命令选项,username为用户名

常用usermod命令选项及其意义

选项 意义
-d [directory] 修改用户登入时的目录
-e [days] 修改账户的有效期限,days表示天数
-g [group] 修改用户所属的群组
-l [login_name] 修改用户登录时的名称为login_name
-p [password] 修改用户密码
-s [shell] 指定用户登陆的Shell,若未设置,则选用系统默认的Shell

需要注意的是,不建议使用usermod -p修改用户密码。因为如果用useradd命令,则显示在/etc/shadow文件中的是明文密码,建议使用passwd命令修改密码。

$ sudo usermod -p 123456 wang		#修改用户wang的密码为123456
$ sudo tail -1 /etc/shadow #查看用户账号及密码信息
wang:123456:17241:0:99999:7::: #可以看到此时密码显示为123456,且是明文显示

还需注意,usermod不允许修改已登录用户的账号名称。当用户修改UID时,也必须确认这个用户没有正在运行的程序。

3.用户删除——userdel

命令格式如下:

userdel [option] [username]			#option为命令选项,username为用户名

常用的命令选项是-r,即userdel -r username,删除用户的同时一并删除主目录和邮件池。

4.用户密码管理——passwd

用户账号刚创建时是没有密码的,会被系统锁定,必须为其指定密码才能使用,这是需要使用passwd命令。命令格式如下:

passwd [option] [username]			#option为命令选项,username为用户名

常用的passwd选项及其意义

选项 意义
-l 锁定指定的账户
-u 解锁被指定账户
-d 删除指定账户的密码,需要有root权限

用户组管理常用命令

1.用户组添加——groupadd

命令格式如下:

groupadd [option] [groupname]		#option为命令选项,groupname为用户名

常用groupadd命令选项及其意义

选项 意义
-g GID 为新组使用GID
-o GID 允许创建有重复 GID 的组
-r 创建一个系统账户
-f 如果组已经存在则成功退出,并且如果 GID 已经存在则取消 -g
$ sudo groupadd -g 666 wangyq       #新建一个用户组wangyq,GID为666
$ tail -1 /etc/group #查看信息
wangyq:x:666:

如果调用groupadd命令时不设置GID,如下面的命令:

groupadd group1

则在系统中增加的新组的组标识GID是当前最大组标识加1

2.用户组修改——groupmod

命令格式如下:

groupmod [option] [groupname]       #option为命令选项,groupname为用户名

常用groupmod命令选项及其意义

选项 意义
-g GID 指定新的GID
-o GID 重复使用GID
-n 为群组改名
$ sudo groupmod -g 555 wangyq       #修改GID为555
$ tail -1 /etc/group #查看信息
wangyq:x:555:

3.用户组删除——groupdel

命令格式如下:

groupdel [option] [groupname]       #option为命令选项,groupname为用户名
$ sudo groupdel wangyq      #删除用户组wangyq
$ tail -1 /etc/group
guest-zlp0vy:x:999: #用户组wangyq已被删除

文件和目录操作

文件操作常用命令

1.文件清单——ls

ls是英文单词list的简写,作用是列出目录下的文件和子目录的信息。命令格式如下:

ls [option] [file or directory]

如果[file or directory]为目录,则ls命令列出该目录下的子目录和文件;如果[file or directory]为文件,则ls命令将列出文件名及相关信息。默认情况下,输出条目按字母顺序排序。当未给出目录名或是文件名时,就显示当前目录的信息。下面是常用ls命令选项及其意义

选项 意义
-a 显示指定目录下所有子目录和文件,包括隐藏文件
-A 显示指定目录下所有子目录和文件,包括隐藏文件,但不包含“.”和“..”
-b 对文件名中不可显示字符用八进制逃逸字符显示
-c 按文件的修改时间排序
-C 分成多列显示各项
-d 如果参数是目录,只显示其名称而不显示其下的各文件。往往与l选项一起使用,以得到目录的详细信息
-f 不排序,该选项使ls选项失效,使用aU选项有效
-i 在输出的第一列显示文件的i节点号
-l 显示文件详细信息。每行的信息依次是:文件类型与权限、链接数、文件属主、文件属组、文件大小、最近修改的时间、名字
-L 若指定的文件是一个符号链接文件,则显示链接所指向的文件
-m 输出按字符流格式,文件跨页显示,以逗号分开
-n 输出格式与l选项相同,只不过在输出文件属主和属组用UID和GID表示
-o 输出格式与l选项相同,只是不显示用户属组信息
-p 在目录后面加上“/”
-q 将文件名中的不可显示字符用“?”代替
-r 逆序显示
-R 递归地显示指定目录的各个子目录中的文件
-s 给出每个目录项所用的块数,包括间接快
-t 按修改时间排序,最近修改排在前面
-u 按访问时间排序,最近访问排在前面
-x 按行显示信息
$ ls -l     #显示当前目录下文件和目录的详细信息
-rw-rw-r-- 1 jerring jerring 1829 3月 16 13:31 ch01.md
-rw-rw-r-- 1 jerring jerring 5655 3月 16 23:00 ch02.md
-rwxrw-r-- 1 jerring jerring 21 3月 14 22:33 log.sh

2.文件复制——cp

cp命令把文件复制到目标文件或把多个文件复制到目标目录中。命令格式如下:

cp [option] [source] [destination]      #option为命令选项,source为源文件,destination为目标目录或目标文件

常见cp命令选项及其意义

选项 意义
-a 通常在复制目录时使用,它保留链接、文件属性,递归地复制目录
-d 复制时保留链接
-i 在覆盖目标文件之前将给出提示要求用户确认。
-p 不仅复制源文件,还复制修改时间和访问权限
-r 递归复制
-l 不复制,只是链接文件

3.文件移动或重命名——mv

mv命令将文件从一个位置移动到另一个位置,同时可移动多个文件。mv命令还可用于重命名,命令格式如下:

mv [option] [source] [destination]      #option为命令选项,source为源文件,destination为目标目录或目标文件

如果[destination]类型是文件时,mv命令将所给源文件或目录重命名为给定的目标文件,此时,源文件只能有一个(也可以是源目录);如果[destination]是已存在的目录名称,源文件或目录参数有多个,mv命令将各参数指定的源文件全部移至目标目录中。在跨文件系统移动时,mv先复制,再将原有文件删除,从而导致该文件的链接丢失。常用mv命令选项及其意义如下:

选项 意义
-i 交互方式操作。如果mv操作将覆盖已存在的文件时,则系统会询问是否覆盖
-f 强制操作。在mv将覆盖已存在的文件时不给出提示,直接覆盖。使用此选项,i选项将不起作用
-p 移动时保持权限

4.文件删除——rm

命令格式如下:

rm [option] [fileName or directoryName]     #option为命令选项,fileName or directoryName为文件名或目录名

常用rm命令选项及其意义如下

选项 意义
-f 忽略不存在的文件,从不给出提示
-r 递归删除
-i 交互式删除,即删除前会提示是否删除
-d 删除空目录

运用rm命令删除文件后文件是不能恢复的。如果不确定文件是否应被删除,可以加上-i选项,这样每次删除前都会给出提示。删除目录及目录里的内容加上-r,这样可以递归删除。此时也可加上-i选项,即rm -ri directoryName,这样在删除每个文件或目录前均会提示,避免删错。如果很明确整个目录需要被删除,可以加上-f,即rm -rf directoryName

目录操作常用命令

1.目录创建——mkdir

命令格式如下:

mkdir [option] [directoryName]      #option为命令选项,directoryName为需要创建的目录名称

运用mkdir命令创建目录时,要求创建目录的用户在当前目录中(directoryName的父目录中)具有写权限,并且directoryName不能是当前目录中已有的目录或文件名称。常用的mkdir命令选项及其意义如下:

选项 意义
-m 对新建目录设置存取权限
-p directoryName是一个路径名称,若路径中的某些目录不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
-v 每次创建新目录都显示信息
$ ls
ch01.md ch02.md log.sh
$ mkdir -m 777 tsk #创建目录,并指定权限
$ ls -l #显示信息
总用量 24
-rw-rw-r-- 1 jerring jerring 1829 3月 16 13:31 ch01.md
-rw-rw-r-- 1 jerring jerring 8671 3月 17 20:29 ch02.md
-rwxrw-r-- 1 jerring jerring 21 3月 14 22:33 log.sh
drwxrwxrwx 2 jerring jerring 4096 3月 18 10:05 tsk

上面的例子创建了一个名为tsk的目录,所有的用户都具有rwx权限(读、写、执行权限)

$ mkdir testdir/test        #testdir目录不存在,不带-p选项将报错
mkdir: 无法创建目录"testdir/test": 没有那个文件或目录
$ mkdir -p testdir/test #带上-p选项成功创建testdir目录及其子目录test
$ ls
ch01.md ch02.md log.sh testdir tsk
$ cd testdir
$ ls
test

在上例中,由于testdir目录是不存在的,不带-p选项创建testdir/test时产生错误;当带上-p选项后,mkdir能够成功创建testdir目录及其子目录test。

2.目录删除——rmdir

rm命令可以删除一个或多个目录,在删除目录时,目录必须为空,且必须拥有该目录的父目录的写权限。命令格式如下:

rmdir [option] [directoryName]

常用的rmdir命令选项为-p,即删除子目录时,若父目录为空,父目录也会被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统会在标准输出上显示相应的信息。rmdir -p a/b/c相当于rmdir a/b/c a/b a。由于rmdir只能删除目录中只包含空子目录的目录,如果目录中存在文件,则使用rmdirrmdir -p命令是无法删除该目录的,需要使用rm -r命令。

3.目录切换——cd

命令格式如下:

cd [directoryName]

该命令用于变换当前工作目录。其中,directoryName可以为绝对路径,也可以为相对路径。常用cd命令如下:

命令 说明
cd 切换到登录目录
cd ~ 切换到登录目录
cd / 切换到根目录
cd /root 切换到root用户(超级用户)的主目录,只有root用户才能访问该目录
cd /home 切换到home目录,home目录通常为用户登录目录的上一级目录
cd .. 切换到上一级目录
cd - 切换到上次的工作目录

在目录切换过程中,有三个比较重要的字符:. .. ~.表示当前目录,.. 当前目录的上一级目录,~表示用户的主目录。

文件和目录权限管理

Linux系统中的每个文件和目录都有访问许可权限,以此确定用户能以何种方式对文件和目录进行操作。文件或目录的访问权限分为读、写、可执行三种。文件或目录被创建时,所有者自动拥有对该文件或目录的读写权限(对目录还有可执行权限),以便用户进行阅读和修改。用户也可根据需要把访问权限设置为任何组合。

有三种不同类型的用户可对文件或目录进行访问:文件所有者、同组用户和其他用户。文件所有者一般是文件的创建者,他可以允许同组用户访问文件,还可以将文件的访问权限赋予系统中的其他用户,从而使系统中每一位用户都能访问该所有者拥有的文件或目录。

每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限,与属主同组的用户的读、写和执行权限,以及系统中其他用户的读、写和执行权限。

$ ls -l testdir
总用量 4
-rw-rw-r-- 1 jerring jerring 0 3月 18 10:36 data
drwxrwxr-x 2 jerring jerring 4096 3月 18 10:54 test

上例中,用ls命令显示目录下详细信息。第一个字符为-代表文件,第一个字符为d代表目录。权限字段r代表可读,w代表可写,x代表可执行。文件和目录都有三组权限。以data文件为例,第1组是rw,表示文件属主具有读写权限;第2组是rw,表示文件属主的同组用户具有读写权限;第3组是r,表示其他用户只有读的权限。test目录也是类似分析。

文件和目录权限管理依赖于两个重要的命令:chmod和chown。

1.文件(目录)权限更改——chmod

chmod命令用于更改文件或目录的访问权限,它有两种用法:一种是包含字母和操作符表达式的文字设定法,另一种是包含数字的数字设定法。

文字设定法的格式如下:

chmod [userType] [signal] [type] [fileName]

chmod命令的三种参数类型如下:

用户类型(userType) 数学符号(signal) 文件类型(type)
u 表示用户(user),即文件(目录)属主 + 添加 r 可读
g 表示同组(group),即与文件(目录)属主同组的用户 - 取消某个权限 w 可写
o 表示其他(others)用户 = 清空权限后赋予给定权限 x 可执行
a 表示所有(all)用户

下面运用chmod命令改变data文件的权限,将data文件的权限改为:属主可读可写可执行,同组用户和其他用户只可读,不能写和执行。

$ ls -l data                    #查看权限信息
-rw-rw-r-- 1 jerring jerring 0 3月 18 10:36 data
$ chmod u+x,g-w data #属主添加可执行权限,同组用户取消可写权限
$ ls -l data #再次查看权限信息
-rwxr--r-- 1 jerring jerring 0 3月 18 10:36 data

文字设定法我们已经知道了,那么什么是数字设定法呢?首先需要知道数字表示属性的含义,用3个二进制位表示文件权限,即???,从左到右依次表示可读可写可执行,当具有某个权限时,相应位为1。因此可用1个八进制数字表示可读可写可执行权限,可用3个八进制数字表示属主、同组用户、其他用户的权限,其顺序为u、g、o。

如刚才的chmod u+x,g-w data命令替换为chmod 744 data可以达到同样的效果。下面新建一个data2文件演示一下:

$ touch data2           #新建一个文件data2
$ ls -l data2
-rw-rw-r-- 1 jerring jerring 0 3月 18 13:14 data2
$ chmod 744 data2
ls -l data2
-rwxr--r-- 1 jerring jerring 0 3月 18 13:14 data2

2.文件(目录)属主更改——chown

利用chown命令可以改变文件或目录的属主。一般而言,这个指令只有系统管理员(root)才能使用,一般使用者没有权限改变别人的文件或目录属主,也没有权限将自己的文件属主更改为他人。它的命令格式如下:

chown [option] [owner] [fileName]

其中,option为命令选项,owner为改变后的用户属主,fileName为需要改变属主的文件或目录。常用chown命令选项及其意义如下:

选项 意义
-c 若该文件或目录属主确实已更改,显示更改动作
-h 改变符号链接文件的属主时不影响该链接所指向的目标文件
-f 若该文件或目录属主无法被更改也不要显示错误信息
-v 显示属主变更的详细资料
-R 对目录下的所有文件和子目录进行相同的属主变更(即递归地变更)

3.特殊权限——SUID和SGID

除了上面提到的基本权限以外,还有所谓的特殊权限存在。用户若无特殊需要,不应该打开这些特权,避免系统出现严重漏洞。但有时却需要没有被授权的用户完成某项任务,例如passwd命令,它允许用户改变密码,这就要求更改/etc/passwd文件,然而系统管理员决不允许普通用户拥有直接更改这个文件的权利。为了解决权限问题,SUID、SGID、SBIT应运而生,下面介绍这三个特殊权限的说明。

  • SUID:当一个设置了SUID位的可执行文件被执行时,执行者以文件所有者的身份运行该文件。如果所有者是root,那么执行者在执行文件时临时拥有root权限。
  • SGID:当一个设置了SGID位的可执行文件被执行时,执行者在执行过程中会获得该文件用户组的权限(相当于执行者临时加入了文件的用户组)。若一个目录设置了SGID,则所有被复制到这个目录下的文件,其用户组都会被设置为和这个目录的用户组相同,除非在复制文件时加上-p选项,才能保留原来的设置。
  • SBIT,只针对目录有效,当用户对目录拥有wx权限时,用户在该目录创建的文件或目录,只有自己与root才可以删除。最具有代表性的例子就是/tmp目录,任何人都可以在/tmp内增加、修改文件(因为权限全是rwx),但仅有该文件/目录建立者与root能够删除自己的目录或文件。 注意,SBIT对文件不起作用。

和之前所说的rwx权限类似,也有字符和数字两种命令格式。

#字符形式
chmod u+s [fileName] #设置SUID
chmod u-s [fileName] #去除SUID
chmod g+s [fileName] #设置SGID
chmod g-s [fileName] #去除SGID
chmod u+t [fileName] #设置SBIT
chmod u-t [fileName] #去除SBIT #数字形式
chmod ???? [fileName] #?代表八进制数字。第一个?表示这三个特殊权限,即代表的三位从高到低为SUID、SGID、SBIT。后面三个?代表普通权限。
#如果希望查找系统中所有具有特殊权限的文件,则可以通过命令find / -perm +7000 解决。

查看特殊权限的方法就是普通的ls命令:

  • SUID会在所属用户权限本应是x的地方显示s
  • SGID会在所属用户组权限本应是x的地方显示s
  • SBIT会在其它用户权限本应是x的地方显示t

上面的规则适用于文件或目录已被赋予x权限。如果首先没有被赋予x权限,那么这个特殊的权限就相当于一个空的权限,没有意义。相应的地方字母会变成大写,即s变为St变为T。如下例所示:

$ ls -l
总用量 0
-rwxr--r-- 1 jerring jerring 0 3月 18 10:36 data
-rwxr--r-- 1 jerring jerring 0 3月 18 13:14 data2
$ chmod u+s data #data设置SUID
$ ls -l
总用量 0
-rwsr--r-- 1 jerring jerring 0 3月 18 10:36 data
-rwxr--r-- 1 jerring jerring 0 3月 18 13:14 data2
$ chmod g+s data #data设置SGID
$ ls -l
总用量 0
-rwsr-Sr-- 1 jerring jerring 0 3月 18 10:36 data
-rwxr--r-- 1 jerring jerring 0 3月 18 13:14 data2
$ chmod o+x data2 #data2添加x权限
$ ls -l
总用量 0
-rwsr-Sr-- 1 jerring jerring 0 3月 18 10:36 data
-rwxr--r-x 1 jerring jerring 0 3月 18 13:14 data2
$ chmod o+t data2 #data2设置SBIT
$ ls -l
-rwsr-Sr-- 1 jerring jerring 0 3月 18 10:36 data
-rwxr--r-t 1 jerring jerring 0 3月 18 13:14 data2
$ chmod o+t data #data设置SBIT
$ ls -l
总用量 0
-rwsr-Sr-T 1 jerring jerring 0 3月 18 10:36 data
-rwxr--r-t 1 jerring jerring 0 3月 18 13:14 data2

文件查找——find

find命令是Linux系统查找文件的命令,格式如下:

find [路径] [选项] [操作]

路径是find命令所查找的目录路径。例如,用.表示当前目录,用/表示系统根目录。选项用于指定查找条件,可以指定按照文件属主、更改时间、文件类型等条件来查找。find命令的操作名称及其意义如下:

操作名称 意义
print 将匹配到的文件输出到标准输出
exec 对匹配的文件执行该参数所给出的Shell命令。相应命令的形式为command {} \;
ok 和-exec的作用相同,只不过以一种更安全的方式来执行参数给出的Shell命令:对于每一个匹配项,都会给出提示,让用户来确定是否执行命令

两个详细讲解find命令的例子如下:

Linux Shell编程第2章——Linux文件系统的更多相关文章

  1. Linux Shell编程第5章——文件的排序、合并和分割

    目录 sort命令 sort命令的基本用法 uniq命令 join命令 cut命令 paste命令 split命令 tr命令 tar命令 sort命令 sort命令是Linux系统一种排序工具,它将输 ...

  2. Linux Shell编程第3章——正则表达式

    目录 正则表达式基础 正则表达式的扩展 通配 grep命令 正则表达式基础 Linux Shell以字符串作为表达式向系统传达意思.元字符(Metacharacters)是用来阐述字符表达式意义的字符 ...

  3. Linux Shell编程第1章——Shell脚本编程概述

    目录 Linux和Shell简介 Linux是一套可免费使用和自由传播的类UNIX操作系统.Shell是一种具备特殊功能的程序,它提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令,并把它送 ...

  4. Linux Shell编程第4章——sed和awk

    目录 sed命令基本用法 sed命令实例 命令选项 文本定位 编辑命令 awk编程模型 awk编程实例 1.awk模式匹配 2.记录和域 3.关系和布尔运算符 4.表达式 5.系统变量 6.格式化输出 ...

  5. Linux Shell编程与编辑器使用详解

    <Linux Shell编程与编辑器使用详解> 基本信息 作者: 刘丽霞 杨宇 出版社:电子工业出版社 ISBN:9787121207174 上架时间:2013-7-22 出版日期:201 ...

  6. linux shell编程总结

    linux shell编程总结 本周学习了unix/linux shell编程,参考的是<LINUX与UNIX Shell 编程指南>,David Tansley著:徐焱,张春萌等译,由机 ...

  7. linux —— shell 编程(文本处理)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...

  8. linux —— shell 编程(编程语法)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 再识变量 函数 条件语句 循环语句 ...

  9. Linux Shell编程参考大全

    本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用. 本文主要分为以下几个部分: 一.Shell中的变量 任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基础的知识. ...

随机推荐

  1. 最纯粹的直播技术实战02-Camera的处理以及推流

    最纯粹的直播技术实战02-Camera的处理以及推流 最新实战教程.Android自己主动化刷量.作弊与防作弊.案例:刷友盟统计.批量注冊苹果帐号 这个系列的文章将会研究最纯粹的Android直播的实 ...

  2. idea传入HttpServletRequest时显示cannot resolve symbol的问题

    在使用idea ide的时候,在控制器中我需要获取HttpServletRequest这个request对象,编译时出现cannot resolve symbol的问题,然后网上查找资料,这里记录一下 ...

  3. JS 怎么刷新当前页面

    reload 方法,该方法强迫浏览器刷新当前页面. 语法:location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页 ...

  4. 【转】移动App测试中的最佳做法

    一说起软件测试,测试员想到肯定是去检查文件,功能,API,性能并确定软件是否安全,以及关于软件特定部分的其他事项.但是对于移动测试,测试员不得不基于用户移动使用模式考虑移动相关的功能. 本文是基于我的 ...

  5. win10执行shell脚本

    我们在win10如何执行以.sh文件的脚本呢? 开发步骤:1.写脚本b2q_goods.sh #!/bin/bashsql="select * from b2q.goods where go ...

  6. html 调用ActiveX

    html网页调用ActiveX控件时,要获取到ActiveX的ClassID,这个ClassID是注册到系统里的,而不是工程中的uuid,(下图为uuid). 正确的是在注册表的HKEY_CLASSE ...

  7. 【vijos】1768 顺序对的值(特殊的技巧)

    https://vijos.org/p/1768 之前不知道为什么,我yy了一个n^2的做法,但是没能写出来..sad 然后看了题解才发现这题好神.. 为什么一定要照着题意找两个点然后算呢?这就是问题 ...

  8. Android 消息处理源代码分析(2)

    Android 消息处理源代码分析(1)点击打开链接 继续接着分析剩下的类文件 Looper.java public final class Looper { final MessageQueue m ...

  9. Dependency Property 依赖属性

    依赖属性就是一种可以自己没有值,并能通过使用Binding从数据源获得值(依赖在别人身上)的属性.拥有依赖属性的对象称为“依赖对象”. WPF开发中,必须使用依赖对象作为依赖属性的宿主,使二者结合起来 ...

  10. SurvivalShooter学习笔记(三.敌人移动)

    1.敌人和玩家若存活,敌人始终朝着玩家所在位置移动,所以要给玩家物体一个Tag:Player从而找到玩家 2.敌人的自动寻路使用Unity自带的NavMeshAgent寻路组件寻路,要先把场景中不动的 ...