Linux 就是一组软件,而软件分为操作系统软件和应用软件,当然 Linux 属于操作系统软件。 计算机是由一堆硬件组成的,为了有效的控制这些硬件资源,于是乎就有了操作系统的产生,操作系统除了有效的控制这些硬件资源的分配,并提供计算机运作所需要的功能(如网络功能)之外,为了要提供程序设计师更容易开发软件的环境,所以操作系统也会提供一 组系统调用的接口。而 Linux就是一款十分成熟的操作系统软件。 最早的操作系统软件:unix 操作系统软件就是具有以下功能的软件:windows mac (1)控制硬件资源 (2)提供计算机运作所需要的功能 (3)提供给程序员系统调用的接口,提供了更容易的开发环境。 意味着:控制使用计算机甚至可以利用计算机进行软件开发。
1、Linux 主要使用命令行操作系统,Windows 图形化界面 2、Linux 主要应用于服务器,Windows 是个人操作系统 3、Linux 属于开源项目,而 Windows 不开源 4、Linux 是多用户系统 ,Windows 是单用户系统 多用户多个人可以同时的操作计算机 单用户系统:只能由一个用户进行操作。
open-vm-tools 是 VMware Tools 的开源实施,由一套虚拟化实用程序组成,这些程序可增强虚拟机在 VMware 环境中的功能,使管理更加有效。open-vm-tools 的主要目的是使操作系统供应商及/或社区以及虚拟设备供应商将 VMware Tools 绑定到其产品发布中。
shutdown -h now 立刻关机 halt 关机 init 0 关机 halt 需要切换位管理员模式,并且关闭之后需要手动关闭虚拟机。 shutdown -r now 立刻重启 reboot 重启 init 6 重启
runlevel 查看系统运行级别 可以用 init 动态切换 0-6 共 7 个级别 ◼ 0 关机 ◼ 1 单用户模式 ◼ 2 多用户无网络服务 ◼ 3 完全的多用户 文本界面 ◼ 4 未定义或 自定义 ◼ 5 图形化界面 ◼ 6 关机
useradd newname 添加一个新的用户 newname 选项: -g 执行新用户的主组 -G 将新用户添加到副组 -s 指定新用户默认使用的 shell 终端 -d 指定新用户登录默认进入的目录 -m 默认家目录 如果没有-m ,需要在家目录下手动添加一个目录
从user用户切换到root用户:sudo su 然后输入root的密码就进入了root用户权限 切换到普通用户: su username 切换用户
1.易记 2.复杂 3.经常更换 密码再加密
userdel 删除用户时,首先确保该用户没有登录。userdel 默认仅删除用户,不会删除家目录 及家目录中的文件,若想删除用户的同时移除家目录, 那么使用 userdel -r username。
/etc/passwd /etc/shadow /etc/group /etc/gshadow 用户配置文件
用户名::口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序 (1)注册名(login_name):用于区分不同的用户。在同一系统中注册名是惟一的。在很多系统上,该字段被限制在8个字符(字母或数字)的长度之内;并且要注意,通常在Linux系统中对字母大小写是敏感的。这与MSDOS/Windows是不一样的。 (2)口令(密码)(passwd):系统用口令来验证用户的合法性。超级用户root或某些高级用户可以使用系统命令passwd来更改系统中所有用户的口令,普通用户也可以在登录系统后使用passwd命令来更改自己的口令。 现在的Unix/Linux系统中,口令不再直接保存在passwd文件中,通常将passwd文件中的口令字段使用一个“x”来代替,将/etc /shadow作为真正的口令文件,用于保存包括个人口令在内的数据。当然shadow文件是不能被普通用户读取的,只有超级用户才有权读取。 此外,需要注意的是,如果passwd字段中的第一个字符是“*”的话,那么,就表示该账号被查封了,系统不允许持有该账号的用户登录。 (3)用户标识号(UID):UID是一个数值,是Linux系统中惟一的用户标识,用于区别不同的用户。在系统内部管理进程和文件保护时使用 UID字段。在Linux系统中,注册名和UID都可以用于标识用户,只不过对于系统来说UID更为重要;而对于用户来说注册名使用起来更方便。在某些特 定目的下,系统中可以存在多个拥有不同注册名、但UID相同的用户,事实上,这些使用不同注册名的用户实际上是同一个用户。 不能重复。 0: 代表超级用户。 1-499: 代表系统用户。(伪用户) 500 ~ 65535 : 普通用户(我们使用的是从1000开始的) (4)组标识号(GID)初始组:这是当前用户的缺省工作组标识。具有相似属性的多个用户可以被分配到同一个组内,每个组都有自己的组名,且以自己的组标 识号相区分。像UID一样,用户的组标识号也存放在passwd文件中。在现代的Unix/Linux中,每个用户可以同时属于多个组。除了在 passwd文件中指定其归属的基本组之外,还在/etc/group文件中指明一个组所包含用户。 初始组: 主组 附加组: 副组 -c (5)用户名(user_name):用户的说明信息。包含有关用户的一些信息,如用户的真实姓名、办公室地址、联系电话等。在Linux系统中,mail和finger等程序利用这些信息来标识系统的用户。 (6)用户主目录(home_directory):该字段定义了个人用户的主目录,当用户登录后,他的Shell将把该目录作为用户的工作目录。 在Unix/Linux系统中,超级用户root的工作目录为/root;而其它个人用户在/home目录下均有自己独立的工作环境,系统在该目录下为每 个用户配置了自己的主目录。个人用户的文件都放置在各自的 主目录下。 (7)命令解释程序(Shell):Shell是当用户登录系统时运行的程序名称,通常是一个Shell程序的全 路径名,如/bin/bash。
我们可以先注意观察,shadow的权限的000,因为在其中存储真正的密码串,当然是加密好的/
9个字段,一个用户一行,密码复杂,经常修改,易记 用户名 同 /etc/passwd 文件的用户名有相同的含义。 加密密码 加盐 盐加密 这里保存的是真正加密的密码。目前 Linux 的密码采用的是 SHA512 散列加密算法,原来采用的是 MD5 或 DES 加密算法。SHA512 散列加密算法的加密等级更高,也更加安全。 注意,这串密码产生的乱码不能手工修改,如果手工修改,系统将无法识别密码,导致密码失效。很多软件透过这个功能,在密码串前加上 “!”、"" 或 “x” 使密码暂时失效。 所有伪用户的密码都是 “!!” 或 "",代表没有密码是不能登录的。当然,新创建的用户如果不设定密码,那么它的密码项也是 “!!”,代表这个用户没有密码,不能登录。 最后一次修改时间 此字段表示最后一次修改密码的时间,可是,为什么 root 用户显示的是 15775 呢?这是因为,Linux 计算日期的时间是以 1970 年 1 月 1 日作为 1 不断累加得到的时间,到 1971 年 1 月 1 日,则为 366 天。这里显示 15775 天,也就是说,此 root 账号在 1970 年 1 月 1 日之后的第 15775 天修改的 root 用户密码。 那么,到底 15775 代表的是哪一天呢?可以使用如下命令进行换算: [root@localhost ~]# date -d “1970-01-01 15775 days” 2013年03月11日 星期一 00:00:00 CST 可以看到,通过以上命令,即可将其换算为我们习惯的系统日期。 最小修改时间间隔 最小修改间隔时间,也就是说,该字段规定了从第 3 字段(最后一次修改密码的日期)起,多长时间之内不能修改密码。如果是 0,则密码可以随时修改;如果是 10,则代表密码修改后 10 天之内不能再次修改密码。 此字段是为了针对某些人频繁更改账户密码而设计的。 密码有效期 经常变更密码是个好习惯,为了强制要求用户变更密码,这个字段可以指定距离第 3 字段(最后一次更改密码)多长时间内需要再次变更密码,否则该账户密码进行过期阶段。 该字段的默认值为 99999,也就是 273 年,可认为是永久生效。如果改为 90,则表示密码被修改 90 天之后必须再次修改,否则该用户即将过期(或者按照后面的字段处理)。管理服务器时,通过这个字段强制用户定期修改密码。 密码需要变更前的警告天数 与第 5 字段相比较,当账户密码有效期快到时,系统会发出警告信息给此账户,提醒用户 “再过 n 天你的密码就要过期了,请尽快重新设置你的密码!”。 该字段的默认值是 7,也就是说,距离密码有效期的第 7 天开始,每次登录系统都会向该账户发出 “修改密码” 的警告信息。 密码过期后的宽限天数 也称为“口令失效日”,简单理解就是,在密码过期后,用户如果还是没有修改密码,则在此字段规定的宽限天数内,用户还是可以登录系统的;如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用。 比如说,此字段规定的宽限天数是 10,则代表密码过期 10 天后失效;如果是 0,则代表密码过期后立即失效;如果是 -1,则代表密码永远不会失效。 账号失效时间 同第 3 个字段一样,使用自 1970 年 1 月 1 日以来的总天数作为账户的失效时间。该字段表示,账号在此字段规定的时间之外,不论你的密码是否过期,都将无法使用! 该字段通常被使用在具有收费服务的系统中。 保留 这个字段目前没有使用,等待新功能的加入。
/etc/gshadow
第一字段:用户组名称; 也就是是用户组的名称,有字母或数字构成。同 /etc/passwd 中的用户名一样,组名也不能重复。 第二字段:用户组密码; 和 /etc/passwd 文件一样,这里的 “x” 仅仅是密码标识,真正加密后的组密码默认保存在 /etc/gshadow 文件中。 第三字段:GID 就是群组的 ID 号,Linux 系统就是通过 GID 来区分用户组的,同用户名一样,组名也只是为了便于管理员记忆。这里的组 GID 与 /etc/passwd 文件中第 4 个字段的 GID 相对应,实际上,/etc/passwd 文件中使用 GID 对应的群组名,就是通过此文件对应得到的。 第四字段:用户列表,每个用户之间用,号分割;本字段可以为空;如果字段为空表示用户组为GID的用户名;
目录 = 文件夹
/bin 存放常用命令 /boot 系统内核及启动有关的文件 /dev 存放设备文件 广义上的文件,键盘鼠标都可以抽象为文件然后获取消息。 /etc 存放系统配置文件 系统的运行相关的属性 参数等 /proc 这个目录是一个虚拟的目录,进程在内存中的信息映射成文件,到这个目录下。它是系统内存的映射,通过访问文件的形式访问内存信息。我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件 /mnt 临时挂载点 /lib 存放库文件 某个命令的实现。 /tmp 存放各种临时文件,是所有用户均可访问的地点 /usr 存放系统应用程序及文档,用户安装的软件,或者运行时不经常改变的文件 /var 存放系统运行中常改变的文件, 如系统日志 我们 /home 所有普通用户的家目录 /root 管理员用户的家目录 :权限更高
即用户当前所处路径。pwd显示当前路径。 .代表当前路径。
D:\Java\教案\Redis简明教程.docx 唯一标识了这个文件 绝对路径表示
是从系统根目录(“/”)开始到指定位置的路径 例如:以绝对路径表示 mai.c 的位置 /home/stu/main.c /home/snoopLiu/a.txt 以绝对路径表示桌面的位置 /home/stu/Desktop
相对路径 相对于D:\Java\教案路径去唯一标识的文件会把当前所处的目录当作你所相对的位置。 是从当前目录开始到指定位置的相对路径 例如: “.” 代表当前位置 “…” 代表当前位置的上一层目录 “./main.c” 表示当前位置下的 main.c 文件
cd 后面添加相对路径或者绝对路径。除此之外还有以下: 路径的地址 (可以添加绝对路径或者相对路径) 跳到指定目录 … 退回到上级目录 , 一个点表示的是当前目录, 两个点表示的是:上一级目录 - 跳到之前所在的目录 ~ 跳到自己的 home 目录 :
Linux 下所有的东西(包括内存、网卡、外部设备等等)都可以看做文件,Linux 将文件 分为以下五种类型: a. 普通文件 ‘-’ b. 目录文件 ‘d’ c. 管道文件 ‘p’ d. 链接文件 ‘l’ e. 设备文件(块设备 ’b’ 、字符设备 ‘c’ 、套接字设备 ‘s’ ) .mp4 .avi .txt linux只有通过命令才能查看出一个文件的类型:ls -l 、ll :能查出隐藏文件 Linux 上不以文件的扩展名区别文件类型,而是在文件属性中有一列专门记录文件类型。 这五种文件在 Linux 上的呈现如下图所示:
用户能够对其进行怎样的操作 a. r 读权限 值: 4 b. w 写权限 值: 2 c. x 执行权限 值: 1 d. - 无权限 值: 0 如何查看文件的权限:ls -l 、ll :能查出隐藏文件 a. u : 表示文件属主的访问权限 文件是谁建立的属主就是谁 b. g : 表示文件同组用户的访问权限 用户进行分组 c. o : 表示其他用户的访问权限 和创建文件的用户不是同一个组 一切皆文件。
chmod + u 表属主 g 同组人 o 其他人 a 所有人 + 增加权限 -去掉权限 文件路径/文件名 chmod u+w main.c
7=4+2+1;读权限+写权限+执行权限; 6=4+2;读权限+写权限; 4=4;读权限;
-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出) -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 -r 将文件以相反次序显示(原定依英文字母次序) -t 将文件依建立时间之先后次序列出 -A 同 -a ,但不列出 “.” (目前目录) 及 “…” (父目录) -F 在列出的文件名称后加一符号;例如可执行档则加 “*”, 目录则加 “/” -R 若目录下有文件,则以下之文件亦皆依序列出
touch + 文件路径/文件名 创建普通文件 文件路径:可以是相对路径也可以是绝对路径 mkdir + 目录路径/目录名 创建目录文件
rm + 文件路径/文件名 删除普通文件
删除空目录 rmdir + 目录路径/目录名 rm -r +目录路径/ 目录名 -r 是rm的参数 删除非空目录 rm -r +目录路径/ 目录名 注意:rm -rf * 禁用 rm -rf /*
语法: cp [options] source… directory • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。 • -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。 • -f:覆盖已经存在的目标文件而不给出提示。 • -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。 • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。 • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。 • -l:不复制文件,只是生成链接文件。
语法:mv [options] source… directory • -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件; • -f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;
cat查看文件内容
合并文件
往文件中写入数据, Ctrl+d 是结束输入
more 当一个文件的内容超过一个屏幕能显示的行数,使用 more 可以分屏显示文件内容。 使用方式: more filename less 文本内容查看器,查看文件内容,但是文件内容不会显示到界面上
head 显示文件前 n 行的内容 tail 显示文件后 n 行的内容
统计文件中单词个数(-w)、字符个数(-c)、行数(-l)
安装vim命令: sudo apt-get install vim-gtk
vim一共有三种模式,我们可以在不同的模式下做不同的操作。下来我们依次来看一下:
命令模式切换到插入模式:
a //进入到当前光标后开始编辑A //进入到当前光标所在行的行末开始编辑i //进入当前光标位置开始编辑I //进入当前光标所在行的行头开始编辑o //进入当前光标下一行开始编辑O //进入当前光标上一行开始编辑 命令模式切换到末行模式: //对文本的设置或保存工作/ //对文本进行全文向下搜索字符串 string? //对文本进行全文向上搜索字符串 string vi/vim 常用命令n dd //删除光标开始向下的 n 行n yy //拷贝光标开始向下的 n 行p //粘贴u //撤销上一次操作ctrl + r // 恢复上一次撤销操作r //替换一个字符shift + 6 //光标移动到当前行的行头shift + 4 //光标移动到当前行的行尾shift + g //光标移动到整个文本的最后一行 Ggg //光标移动到整个文本的第一行n shift + g //光标移动到第 n 行d n shift + g //删除光标到 n 行的内容y n shift + g //拷贝光标到 n 行的内容 3.4 末行模式下的操作:w //保存文本:q //退出编辑:wq //保存并退出:q! //强制退出:w newfile //另存为:set nu //显示行号:set nonu //取消行号: set hlsearch //设置高亮搜索: set nohlsearch //取消高亮搜索: n,m s/oldstring/newstring //替换整个文本每行的第一个 oldstring:n, m s/oldstring/newstirng/g //替换整个文本所有的 oldstring/string //向下搜索 string?string //向上搜索 string最后+g 替换的时候不询问 +c 替换的时候询问
ctrl + r 导入另外一个文件的内容: esc :r 文件名
在那个路径下查找文件 -以哪种方式查找文件 test 在目录树中搜索指定的文件,也可以指定开始的搜索位置 -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件 -amin n : 在过去 n 分钟内被读取过 -anewer file : 比文件 file 更晚被读取过的文件 -atime n : 在过去n天内被读取过的文件 -cmin n : 在过去 n 分钟内被修改过 -cnewer file :比文件 file 更新的文件 -ctime n : 在过去n天内被修改过的文件 -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写 -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写 -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。 -type c : 文件类型是 c 的文件。 d: 目录 c: 字型装置文件 b: 区块装置文件 p: 具名贮列 f: 一般文件 l: 符号连结 s: socket
在文件中过滤出包含指定字符串的行 -a 或 --text : 不要忽略二进制的数据。 -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。 -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。 -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。 -c 或 --count : 计算符合样式的列数。 -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。 -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。 -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。 -E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。 -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。 -F 或 --fixed-regexp : 将样式视为固定字符串的列表。 -G 或 --basic-regexp : 将样式视为普通的表示法来使用。 -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。 -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。 -i 或 --ignore-case : 忽略字符大小写的差别。 -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。 -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。 -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。 -o 或 --only-matching : 只显示匹配PATTERN 部分。 -q 或 --quiet或–silent : 不显示任何信息。 -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。 -s 或 --no-messages : 不显示错误信息。 -v 或 --revert-match : 显示不包含匹配文本的所有行。 -V 或 --version : 显示版本信息。 -w 或 --word-regexp : 只显示全字符合的列。 -x --line-regexp : 只显示全列符合的列。 -y : 此参数的效果和指定"-i"参数相同。
