Linux
一、Linux要点
-
要在一个命令行上输入多条命令,可使用分号来分隔命令。比如 cd /etc; ls –l。
-
反斜杠“\”将一个较长的命令分成多行表达,换行后,shell自动显示提示符“>”,表示正在输入一个长命令,此时可继续在新行上输入命令的后续部分。
-
Linux命令由”命令+选项+参数“组成。
-
超级用示户的提符是#;一般用户的提示符是$。
-
Linux命令区分大小写
二、基础命令
-
注销:logout、ctrl+d、exit
-
关机和重启:–shutdown、halt、reboot、init
-
更改密码:passwd
-
显示系统文档中的man页内容:man passwd
-
是一个基于菜单的超文本系统:info passwd
-
用于查看当前登录到系统的用户信息:who
-
显示正在使用的Linux系统信息:uname
-
显示或设置系统的时间:date [+%adDhHjmMrSTwWy]
-
在屏幕上输出日历信息:cal [month] [year]
-
用于回显输入内容:echo strings
-
清除shell窗口中的内容:clear
-
切换到其他用户:su
-
退回到原来用户:exit
三、Linux文件系统
-
shell是命令解释器;shell是用户与操作系统内核打交道的接口;shell实际是一种独立于内核的软件;Linux默认使用Bash。
-
Linux文件系统采用树形结构,从根目录(/)开始。
-
Linux允许众多不同类型的文件系统共存,并支持跨文件系统的操作,这是由于虚拟文件系统(VirtualFile System,简称VFS)的存在。虚拟文件系统是Linux内核中的一个“软件层”,用于给“用户空间的程序”提供文件系统接口。
3.1、根文件系统
-
/bin:存放二进制可执行文件
-
/sbin:存放系统管理员的系统管理程序
-
/home:普通用户的宿主(家)目录
-
/lib:动态链接共享库文件
-
/etc:存放系统管理时要用到的各种配置文件
-
/dev:存放设备的文件名(并不是存放设备的驱动程序)
-
/usr:包含所有的用户程序(/usr/bin)、库文件(/usr/lib)、文档(/usr/share/doc)等,是占用空间最大的目录
-
/proc:虚拟目录,该目录中的文件是当前内存中的一个映射
-
/root:系统管理员的主目录
-
/var:存放系统产生的经常变化文件
-
/mnt:这个目录在一般情况下也是空的。可以临时将别的文件系统挂载在这个目录下
3.2、EXT文件系统
-
ext是第一个专门为Linux设计的文件系统(虚拟文件系统)
-
EXT3特点:高可用性、数据的完整性、文件系统的速度、数据转换、多种日志模式
-
EXT3三种日志模式:Journal模式、Ordered模式、写回(Writeback)模式
四、Linux文件系统操作命令
-
显示目录内容的命令:ls
-
切换工作目录命令:cd
-
显示工作目录命令:pwd
-
创建目录命令:mkdir
-m或--mode=MODE:对新建目录设置存取权限。
-p 或--parents:若所建目录的上层目录不存在,会一并建立。
-
删除目录命令:rmdir
-p或--parents,删除指定目录后,若该目录的上层目录已变成空目录,则其一并删除。
-
显示文件内容命令:cat -b或--number-nonblank:从1开始对所有非空输出行进行编号。 -n或--number:从1开始对所有输出行编号。 -s或--squeeze-blank:将连续两行以上的空白行合并成一行空白行。 提示:命令选项可以用长格式(用--作为前缀),也可以用短格式(用-作为前缀)
-
文件内容统计命令:wc
-c或--bytes:统计字节数。 q -m或--chars:统计字符数。 q -l或--lines:统计行数。 q -w或--words:统计字数。字是由空格字符区分开的最大字符串
-
显示文件内容命令:more
-num:指定一个整数,表示一屏显示多少行。 -d:在每屏底部显示提示信息,包括当前显示的百分 比,按键提示等。 +/pattern:定义一字符串,在文件中查找该字符串,从该字符串后开始显示。
(1)Space键 :默认显示文本的下一屏内容。 (2)Enter键:默认显示文本的下一行内容。 (3)d键或CTRL+D:向下显示文本半屏,默认为11行。 (4)b键或CTRL+B:默认显示文本的上一屏内容。 (5)q or Q or INTERRUPT键:退出more命令。
-
显示文件内容命令:less
-m或--long-prompt:显示读取文件的百分比。
-i或--ignore-case:搜索时忽略大小写,除非搜索串中包含大写字母。
-
显示文件内容命令:head
-c或--bytes=num:显示文件前面num个字节。 -n或--lines=num:显示文件前面num行,不指定此参数显示前10行。
-
显示文件内容命令:tail
-c或--bytes=num:显示文件最后面num个字节。 -n或--lines=num:显示文件最后面的num行,不指定此参数显示10行。
-
文本字符替换命令:tr
格式:tr [原始字符] [目标字符]
-
排序命令:sort
d或--dictionary-order:按字典顺序排序。
f或--ignore-case:忽略字母大小写。
r或--reverse:按逆序输出排序结果,默认排序输出时按升序的。
-o 文件名:将排序输出写到输出文件中而不是标准输出
将当前目录下的文件fruits按逆序排序后结果输出到文件fruitsort中。
-
去掉重复行命令:uniq
uniq [选项]... [输入文件 [输出文件]]
-
比较内容命令:comm
格式:comm [选项]… 文件1 文件2
-
比较内容命令:diff
格式:diff [选项] … 文件列表
-
创建空文件命令:touch
-a: 仅修改“读取时间”(atime) -m: 仅修改“修改时间”(mtime) -d: 同时修改atime和mtime
-
复制文件命令:cp
格式:cp [选项] 源文件或目录 目标文件或目录
-a 或--archive:等同于 –dpR。 q -d:复制符号链接时,把目标文件或目录也建立为符号链接, 并指向与源文件或目录链接的原始文件或目录。 q -f 或--force:强行复制文件或目录 q -i或--interactive:覆盖目标文件前需要确认。 q -n或--no-clobber:不覆盖已存在的目标文件。 q -p:复制源文件或目录内容的同时也复制文件属性 q -R,-r 或--recursive:递归复制目录,将源目录下所有文件及子目录都复制到目标位置。
-
删除文件命令:rm
-f 或 --force:强制删除文件或目录。 -i 或--interactive:删除文件或目录前提示要用户确认。 -r,-R, 或--recursive:递归删除指定目录及其下属各级子目录和相应的文件。
-
移动文件命令:mv
-i或--interactive:覆盖文件前需要确认。 -f 或--force:若目标文件或目录已存在,直接覆盖。 -n或--no-clobber:不覆盖已存在的文件。 -u 或--update:移动或更改文件名时,若目标文件已存在,且文件日期比源文件新,则不覆盖目标文件。
五、shell进阶命令
-
文本搜索命令:grep
格式:grep [选项] 查找模式 [文件…]
-i或--ignore-case:忽略字符大小写。 -n 或--line-number:在显示包含匹配字符串的行之前,标示出该行行号。 -v:反转查找,显示不包含匹配字符串的文本行。
-c或--count:计算符合匹配字符串的行数。
-
输入/输出重定向
输出重定向的一般形式为:command [参数] > 文件名
“>>”(追加)重定向符
cat 实现文件合并:
从键盘输入信息到当前目录下的文件testfile4中:Ctrl+D 存盘退出
错误重定向“2>”:可以把命令行出错的信息保存到指定的文件中去:
避免文件重写:Shell提供了一种称为noclobber的功能,该功能可防止 重定向时不经意地重写了已存在的文件
输入重定向的一般形式为:command [参数] < 文件名
“<<”为此处操作符(here operator),该操作符在从标准输入中读入,读到指定的字符串时,便停止读取,然后将所读的内容输出。
-
管道
六、shell编程
6.1、shell基础
-
执行过程
内置在其源代码中的命令,而不是文件系统中的可执行文件,执行速度快。不同的Shell内置命令有所不同。
-
type 来确定一个命令是否是内置命令:
-
命令的执行会启动一个新进程,shell进程睡眠,当命令执行完毕,shell被唤醒,显示提示符,等待下一个命令的输入。
-
特殊字符:
由单引号括起来的字符都作为普通字符出现。
由双引号括起来的字符,除“$”、“\”、“’”、和“””这几个字符仍是特殊字符并保留其特殊功能外,其余字符作为普通字符对待。
$:引用变量的值
\:是转义字符
反引号(`)括起来的字符串被shell解释为命令,在执行时,shell首先执行该命令,并以它的输出结果取代整个反引号(包括两个反引号)部分。
以字符“#”开头的行表示注释行。
-
别名
不加参数的alias命令执行结果将显示当前系统中定义的所有命令别名。
-
历史命令
若想重复执行命令历史中指定的命令,可使用如下格式:!命令编号
6.2、shell脚本
-
什么是shell脚本
1、用shell命令编写的文件
2、shell不需要编译链接成可执行的二进制程序
3、shell是按行一条接着一条地解释并执行shell脚本中的命令
-
执行方式
1、为脚本文件加上可执行权限,然后在命令行直接输入shell脚本文件名执行
2、sh shell脚本名
3、. shell脚本名
-
编写方式
基于bash的脚本编程,开头必须有#! /bin/bash
6.3、shell变量
七、用户管理
-
用户三种类型
超级用户:root (可以对系统做任何操作) 普通用户:由root创建的用户 特殊用户:与系统和服务相关的用户。注意:默认情况下特殊用户无法登录。
-
管理内容
(1)用户账号的增加、修改和删除。 (2)组账号的增加、修改和删除。 (3)用户账号属性信息的修改,包括登录shell,用主目录,用户注释信息等。 (4)组账号属性信息的修改,包括组内用户、组ID等。 (5)用户和组账号密码的设置与修改,包括密码有效期、更改密码等。
-
管理方法
(1)通过GUI方式管理(不介绍) (2)通过修改配置文件管理(了解) (3)通过系统管理命令管理(重点)
-
配置文件
(1)/etc/passwd文件:存放用户账号相关的信息
(2)/etc/shadow文件:存放用户的加密口令,只有root用户可以读取。(3)/etc/group文件:存放用户组相关的信息
(4)/etc/gshadow文件:存放用户组口令, 只有root用户可以读取。
-
用户和组管理相关命令 (1)useradd:添加用户
useradd [options] username 示例:# useradd lisi -d dir: 指定用户主目录 -u uid: 指定用户ID -g group:已存在一个组,新增用户要加入的主要组 -G group:已存在一个组,新增用户要加入的附加组 -c comment :用户的注释信息
(2)usermod:改变用户属性
usermod [-options] [arguments] username -d dir: 修改用户主目录 -u uid: 修改用户ID -g group:已存在一个组,修改用户要加入的主要组 -G group:已存在一个组,修改用户要加入的附加组 -s Shell :修改用户登录shell -e expire:修改用户的过期日期 -L 锁定用户密码,使密码无效,用户不能登录 -U 解除密码锁定
(3)userdel:删除用户
userdel [-r] username 选项“-r”是用来删除用户主目录以及目录中所有文件,不加“-r” ,则仅除用户账号,还必须手工清除用户的主目录。
(4)groupadd:添加组 (5)groupmod:修改组属性 (6)groupdel:删除组 (7)groups:查看自己属于哪个组
groupadd[-g gid] groupname, q groupmod[-g gid] [-n newgroupname] groupname q groupdel groupname q groups 查看自己属于哪个组