shell:人机交换接口
内核功能:进程管理、内存管理、文件系统、网络功能、硬件驱动、安全机制
历史:
1、GE,BELL,MIT弄了一个Multics,汇编弄得
2、Ken制作了Space Travel,但这个游戏只能在Multics上运行,就自己整了一个Unics
3、Ken和他同时在B语言的基础上开发了C语言,用C重写了Unics
4、伯克利学生学习,加了些功能,出了BSD
5、BSD和BELL打官司
6、80年代,PC机到来,但是Unix不能在PC上运行
7、美国教授开发CP/M(贵)
8、微软成立,弄了个DOS,运行在PC上
9、微软弄了Windows
10、FreeBSD(运行在PC上),OpenBSD(安全),NetBSD(服务)
11、Andrew:Minix
12、Linus:Linux
13、80年代,GNU:GNU is Not Unix;GPL(宣言):General Public License;gcc:GUN C Complier;GNU/Linux
linux基本原则:
#:管理员root
$:普通用户
命令格式:
命令 选项 参数
选项:短选项:-;长选项:--word
GUI:Gnome:C;KDE:C++;XFace
CLI:sh,bash,csh,zsh,ksh,tcsh
su:switch user
pwd:printing working directory
文件类型:
文件权限:9位,每3位一组,每一组:rwx(读,写,执行)例如:r--,文件智能被读
文件硬链接的次数
文件的属主(owner)
文件的数组(group)
文件大小(size),默认单位是字节
时间戳(timestamp):最近一次被修改的时间
-l:长格式
-h:做单位转换
-a:显示以.开头的隐藏文件,.表示当前目录,..表示父目录
-A:显示隐藏文件,不显示.和..
-d:显示目录自身属性
-i:index node,inode,文件号
-r:逆序显示
-R:递归显示
家目录,主目录,home directory
cd:回到家目录
cd ~:回到家目录
cd -:返回上一次目录
cd ~username:进入其他用户家目录
内置命令(shell内置)
外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件
硬件时钟,系统时钟
内部命令:help command
外部命令:command --help
命令手册:manual
man command
man一般用来查看外部命令,使用man来查看内部命令时,报错。
man分章节
whatis command:查看一个命令在哪个章节
1.用户命令(/bin,/usr/bin,/usr/local/bin)
2.系统调用
3.库用户
4.特殊文件(设备文件)
5.文件格式(配置问价你的语法)
6.游戏
7.杂项
8.管理命令(/sbin,/user/sbin,/usr/local/sbin)
man:
<>:必选
[]:可选的
...:可以出现多次
|:多选一
{}:分组
翻屏:
查找:
q:退出
在线文档:
info command,用的比较少
文档:/usr/share/doc
1.echo是内部命令还是外部命令
2.其作用?
3.输出内容换行
根文件系统
/boot:系统启动相关的文件,如内核,initrd,以及grub(bootloader)
/dev:设备文件
/etc:配置文件,纯文本文件
/home:家目录,每一个用户的家目录通常默认为/home/username
/root:管理员的家目录
/lib:库文件
/media:挂载点目录,移动设备
/mnt:挂载点目录,额外的临时文件系统
/opt:可选目录,第三方程序的安装目录
/proc:伪文件系统,内核映射文件
/sys:伪文件系统,跟硬件设备相关的属性映射文件
/tmp:临时文件
/var:可变化的文件
/bin:可执行文件,用户命令
/sbin:管理命令
/usr:只读文件,shared,read-only
/usr/bin
/usr/sbin
/usr/lib
/usr/local:
/usr/local/bin
/usr/local/sbin
/usr/local/lib
-p:mkdir x/y/x -p,
-v:verbose,显示创建时候的详细信息
创建1/2/3/x,1/2/y
mkdir 1/2/{3/x,y} -pv
命令行展开:
创建a_b,a_c,d_b,d_c
mkdir {a,d}_{b,c} -pv
touch:本来是修改文件的时间戳的,文件不存在的时候,会默认创建一个
touch -a改变访问时间--默认为当前时间
touch -m改变修改时间--默认为当前时间
文件的改变时间不能自己该。
touch -t改变修改时间---自己设定时间
创建文件,可以使用文本编辑器
word不是文本编辑器
nano:功能少
-i:删除时给提示
-f:不提示,直接删除
-r:递归删目录
cp scr dest(目标只能有一个)
一个文件到一个文件/目录
将一个文件复制到一个文件,如果文件已存在,则会覆盖文件的内容
cp hy.txt hy.py
hy.txt的内容到hy.cp,hy.py文件名不变。
如果目标文件不存在,则会自动创建一个。
多个文件到一个目录
cp file1 file 2 file3将file1和file2复制到目录file3下
复制目录
cp -r
-p 保留文件的mode,ownership,timestamps等属性;默认哪个用户复制的文件,文件就属于哪个用户。hy复制的root的文件,复制后的文件就属于hy的。
mv src dest
移动文件夹不用加-r,和cp不同。
src和dest在同一个目录下,就是重命名。
install src dest:复制文件,复制后的文件有执行权限
install -r directory:创建目录
目录管理:
ls,cd,pwd,mkdir.rm,tree
文件管理:
touch,stat,file,cp,mv,mano
cat,more,less,head,tail,cut,sort,uniq,grep
查看文本:
cat、tac、more、less、head、tail
cat:连接并显示
tac:从后往前输出
more:空格向后翻
less:光标上下滑动
head:查看文件的前n行,默认为10
tail:查看文件的后n行,默认为10
-n
tail -f:查看文件尾部,不退出,等待显示后续追加至此文件的新内容。
测试的时候怎么tail -f没效果,换成tail -F有效果。
文本处理:
cut,join(用的不多),sed,awk
cut:
-d:指定字段分隔符,默认是空格,不能使tab键
-f:指定要显示的字段
-f 1,3,显示第1和第3个字段
-f 1-3,显示1-3个字段
文本排序: sort
只影响显示次序,不影响源文件,默认按照ascii进行排序。
-n:数值排序
-r:降序
-t:指定字段分隔符
-k:以哪个字段为关键字进行排序
-u:排序后去掉重复行
-f:排序时忽略字符大小写
uniq
uniq中,只把相邻的重复的行认为是一样的,行内容相同,不相邻时,不认为一样。
-d:只显示重复的行
-D:把所有重复的行都显示出来
-c:显示文件中行重复的次数
显示一个文本有多少话,多少个单词,多少个字节
-l:只显示行
-w:只显示单词数
-c:只显示字节数
-m:显示字符数
-L:显示最长的一行的字符数
tr 'ab' 'AB':将小写a,b转换为大写A,B
tr 'a-z' 'A-Z':将小写转换为大写
tr -d:删除字符集中所有出现的字符,
例如:tr -d ‘ab’,把出现的a和b都删除。
GUI:Gnome,KDE,Xface
CLI:sh,csh,ksh,bash,tcsh,zsh
shell,子shell,在bash中打开bash
bash:
1.命令历史
2.管道,重定向
3.命令别名
4.命令行编辑
5.命令行展开
6.命令行通配
7.支持变量
8.支持编程
光标跳转:
Ctrl+a:调到命令行首
Ctrl+e:调到命令行尾
Ctrl+u:删除光标至命令行首的内容
Ctrl+k:删除光标至命令行尾的内容
Ctrl+<:光标左移一个单词
Ctrl+l:清屏
命令历史:
history
-c:清空命令历史
-d:删除某个历史 -d 500;-d 500 10删除500开始的10条命令
家目录下有一个.bash_history文件,保存的缓存命令
环境变量“
PATH:命令搜索路径
HISTSIZE:命令历史缓冲区大小
命令历史使用技巧
!n:使用第n条历史命令
!-n:执行命令历史中倒数第n条命令
!!:执行上一条命令
!strings:执行命令历史中最近一个以指定字符串开头的命令
!$:引用前一个命令的最后一个参数
Esc, .:引用前一个命令的最后一个参数,先按下Esc,再按.,不要同时按
Alt+.:引用前一个命令的最后一个参数,同时按
命令补全 :两下Tab键,显示所有可选命令
路径补全
alias 命令别名='原命令名[options] [arguments]'
alias cls = clear
在shell中定义的别名仅在当前shell生命周期中有效;别名的有效范围仅为当前shell进程;
如果要定义永久别名的话, 就要更改bash的配置文件
alias:显示当前定义的别名
unalias 命令别名:取消命令别名
有些命令别名是命令加选项,如果要使用原命令:\command
命令替换:$(command),`command`(和波浪线相同的那个反引号)
把命令中某个子命令替换为其执行结果的过程
创建某个文件,以当前的时间命令
bash中支持的引号:
``:命令替换
“”:弱应用,可以实现变量替换
'':强应用,不完成变量替换
文件名通配,globbing
通配符不是万能的
*:任意长度的任意字符
?:任意单个字符
[]:匹配指定范围内的任意单个字符,例如[0-9],[a-z],[a-zA-Z]
[:space:]:空白字符
[:punct:]:标点符号
[:lower:]:小写字母
[:upper:]:大写字母
[:alpha:]:大小写字母
[:digit:]:数字
[:alnum]:数字和大小写字母
^:匹配指定范围之外的任意单个字符
用户及权限
权限:
r,w,x
文件:
r:可读,可以使用类此cat等命令查看文件内容
w:可写,可以编辑或删除此文件
x:可执行,可以命令提示符下当做命令提交给内核运行。
目录:
r:可以对此目录执行ls以列出内容的所有文件
w:可以在此目录创建文件
x:可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息;
rwx:
r--:只读,---无权限
用户:UID,/etc/passwd
组:GID,/etc/group
三类用户:
u:属主
g:数组
o:其他用户,other
影子口令:
用户:etc/shadow,真正存储用户密码的地方
组:/etc/gshadow:真正存储组密码的地方
用户类别:
管理员,UID=0
普通用户,UID为1-65535
系统用户:1-499,运行一些系统进程的,不能登录
一般用户:500-60000
用户组类别:
管理员组
普通组:
系统组
一般组
用户组类别:
私有组:创建用户时,如果没有给用户指定所属的组,系统会自动为其创建一个与同户名同名的组
基本组:用户的默认组,用户创建文件时,文件默认所属的组
附加组,额外组:默认组以外的其他组
进程访问文件时,先看进程的发起着是不是有使用这个进程的群里,再看进程发起者有没有使用文件的权利,先判断用户是否一致,再判断用户是否属于文件的属组。
进程:tom,tom
对象:Jerry tom a.txt
tom :ls
root/bin/ls
account:用户名,登录名
password:加密后的密码,或密码占位符x
UID:
GID:基本组ID
comment:注释
Home Dir:家目录
shell:用户默认使用的shell
account:登录名
encrypted password:加密后密码
最近一次修改密码的日期
密码最短使用期限
密码最长使用期限
密码修改提示时间
密码过期时间
账号过期时间
保留字段
1.雪崩效应,初始条件的微小改变引起结果的巨大变化,原始数据微笑改变,hash值变化很大
2.定长输出
MD5:Message Digest,128位定长输出
SHA1:Secure Hash Algorithm,160位定长输出
这时/etc/passwd下会增加一个用户
给用户设置密码
查看/etc/shadow和/etc/group下变化
关于useadd的信息查看/etc/default/useradd
useradd [options] username
-u UID
-g GID(基本组),可以用组名,也可以用组ID,组必须得事先存在
-G GID,...(附加组)
-c ”comment“,指定注释
-d /path/to/directory,指定家目录
-s SHELL,指定默认shell
-m 自动创建家目录,如果不加-m,将不会创建;
-k选项,只能和-m选项何在一起用,-k指定创建家目录时,要复制到家目录中的文件和目录;当使用-m而不使用-k时,会把/etc/skel下的文件复制到创建的家目录
-M:不创建同名组,即使在/etc/login.defs中设置的(CREATE_HOME)为yes,但是我在这个文件里面根本就没有发现CREATE_HOME。
创建用户后使用sh时只有一个提示符$,使用bash,用户名和机器名就出来了
查看/etc/skel文件
新创建的家目录里面其实是自动包含了这些文件的
创建系统用户,默认是不创建系统用户家目录的,但是可以使用-m创建家目录
组名:密码:GID:有哪些用户把这个组当成附加组。
PATH
HISTSIZE
SHELL:保存当前用户使用的shell
userdel [option] username
-r:删除用户的同时同时删除家目录
删除用户后,/etc/passwd和/etc/shadow中用户的账户信息都会被删除
id [options] [username]
-u:uid
-g:gid
-G:用户所属于的所有组Id
-n:显示名字,不显示id
finger username
修改用户账号属性:
usermod 和useradd用法几乎一样
-u:修改uid
-g:修改GID,GID得事先存在
-a -G:为用户在原有GID的基础上追加新的附加组;不使用-a选项会覆盖此前的附加组。
-c:修改注释信息
-d -m:指定新的家目录,-m表示把原来家目录中的文件移动到新的家目录中
-s:改shell
-l:该用户的登录名,login
-L:锁定账号
-U:解锁账号
-r:添加一个系统用户
passwd [username]
-l:lock,锁定用户账户
-u:解锁
-d:删除用户密码
-n:密码最少使用时间
-x:密码最长使用时间
创建组:groupadd
groupadd
-g:指定GID
-r:添加系统组
groupmod
-g :GID
-n:groupname
groupdel
gpasswd:为组设定密码
newgrp groupname:临时进入一个新组 ,exit返回到原来的组
-d:最近一次的修改时间
-E:过期时间
-I:非活动时间
-m:最短使用期限
-M:最长使用期限
-w:警告时间
chown username file,...
-R:修改目录及其内部文件的属主
--reference=/path/to/somefile file,...把file的权限改为跟somefile的一样。
chown改变目录的属主,默认目录里面的属主不变
使用-R
--reference选项
chgrp groupname file,...
-R:和chown一样,更改目录和目录中文件的属组
--reference=/path/to/somefile file,...同时改属主属组
同时改变属主属组
chown username:groupname file,...
chown username.groupname file,...
chown --reference同时改属主属组
chown -R username:groupname directory
只改属组
chown :groupname file,...
修改三类用户的权限
chmod MODE file,...
例如chmod 750 a.txt
注意:只写75表示075;只写5表示005
-R:更改目录及目录中所有文件
--reference=
修改某类用户或某些类用户权限
chmod 用户类型=MODE file,...
这里MODE为rwx,不是数组7等。rwx没有的地方可以省略或者用-代替
修改某类用户某位或某些位权限
u,g,o,a
chmod 用户类型+|- MODE file,...
1.修改/etc/group文件
sudo vim /etc/group
2.修改 etc/passwd文件
sudo vim /etc/passwd
3.修改/etc/shadow文件
sudo vim /etc/shadow
4. 将/etc/skel下的文件复制到 /home/hive
5.设置hive目录及其内部文件的属主数组均为hive
6.设置组用户和其他用户的权限为0
7.为hive设置密码
umask:遮罩码
文件:666-umask
目录:777-umask
管理员:umask为022
普通用户:umask为002
普通用户创建一个文件的权限为664,创建一个目录的权限为775
管理员创建一个文件的权限为644,创建一个目录的权限为755
设置用户的umask:umask xxx
文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限加1:
umask 023
文件:666-023=643 ,自动加1为644
目录:777-023=754
设置umask为027让其他用户没有任何权限
站在用户登录的角度来说,shell的类型:
登录式shell
正常通常某终端登录
su -username
su -l username
非登录式shell:
su username
图形终端下打开命令窗口
自动执行的shell脚本
全局配置
/etc/profile,/etc/profile.d/*.sh,/etc/bashrc
个人配置
~/.bash_profile,~/.bashrc
profile类的文件:
设定环境变量
运行命令或脚本(登录)
bashrc类的文件:
设定本地变量
定义命令别名
登录式shell如何读取配置文件?
/etc/profile-->/etc/profile.d/*.sh-->~/.profile-->~/.bashrc--~/etc/bashrc
非登录式shell如何读取配置文件?
~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh
例如:给hive用户设置一个命令别名:alias clr ='clear'
编辑hive用户的~/.bashrc文件
退出hive用户再次进入hive用户时生效。
例如:修改/etc/profile文件,让用户登录时显示一句话
添加
这里世界su -hive不会显示这段话。
默认输出设备:标准输出:STDOUT,1
默认输入设备:标准输入:STDIN,0
标准错误输出:STDERR,2
标准输入:键盘
标准输出:显示器
I/O重定向:
>:覆盖输出
>>:追加输出
set -C:禁止对已存在文件使用覆盖重定向
强制覆盖输出,则使用>|
sec+C:关闭上述功能
2>:重定向错误输出
2>>:追加错误输出
如果输入的时候没有错误,就不重定向,直接输出
&>:重定向正确输出或错误输出到同一个文件
<:
<<:Here Document,生成文档
结束符可以随便起,一般为END或者EOF
管道 :前一个命令的输出,作为后一个命令的输入
命令1|命令2|命令3|...
tee
将数据输出一份并保存一个到文件
注意:这个hello world是tee输出的不是echo输出的。
只显示文本的行数,不显示任何附加信息
练习:
取出/etc/passwd文件的第6行
使用管道,先用head取前6行,再用tail取最后一行
取出/etc/passwd文件中倒数第9个用户的用户名和shell,显示到屏幕上并保存到/tmp/users中。
显示/etc目录下所有以pa开头的文件,并统计其个数:
不使用文本编辑器,将alias cls=clear一行内容添加至当前用户的.bashrc文件中 :
~:用户主目录
文本查找grep,egrep,fgrep
grep:根据模式去搜索文本,并将符合模式的文本行显示出来
Pattern:文本字符和正则表达式的元字符组合而成匹配条件
grep [OPTIONS] PATTERN [FILE...]
-i:忽略大小写
--color:匹配到的内容加颜色
-v:反向,显示没有被匹配到的行
-o:只显示被模式匹配到的字符串
正则表达式:REGEXP:regular expression
元字符:
.:匹配任意单个字符
匹配次数(贪婪模式):
*:匹配其前面的字符任意次
.*:任意长度的任意字符
a,b,ab,aab,acb,adb,amnb
a*b:b,ab,aab,acb,adb,amnb
a.*b:ab,aab,acb,adb,amnb
\?:匹配其前面的字符1次或0次;?前面的字符可有可无的意思
a?b
\{m,n\}:匹配其前面的字符至少m次,至多n次
\{1,\}:前面字符至少出现一次,多了不限
\{0,3\}:前面的字符至多出现三次,最少可以出现0次。
\{2\}:出现2次
位置锚定:
^:锚定行首,此字符后面的任意内容必须出现在行首
$:锚定行尾,此字符前面的任意内容必须出现在行尾
^$:空白行
\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现
\>或\b:锚定词尾,其前面的任意字符必须作为单词尾部出现
例如\
建立一个文本,测试\<,\>;文本内容如下
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
[:digit:],[:lower:],[upper]
分组:
\(\)
\(ab\)*:ab作为一个整体,可以出现0次或任意次
\1:引用第1个左括号以及与之对应的右括号所包括的所有内容
\2:
\3:
正则表达式:
Basic REGEXP:基本
Extended REGEXP:扩展
grep:使用基本正则表达式定义的模式来过滤文本的命令
-E:使用扩展正则表达式
-A #:除了显示匹配到的行外,还显示改行后面的几行;#表示一个数字
-B #:除了显示匹配到的行外,还显示该行前面的几行
-C #:.....................................,还显示前面和后面的几行
扩展正则表达式:
字符匹配:
.
[]
[^]
次数匹配:
*
?
+:匹配其前面的字符至少一次
{m,n},不需要\
位置锚定:
^
$
\<
\>
分组:
()
\1,\2,\3,...
或者
a|b:or
例:C|cat,意思是C或者cat,不是Cat或者cat
grep -E = egrep
fgrep:不支持正则表达式,fast grep
shell编程
静态语言:编译型语言,事先转换成可执行格式
动态语言:解释型语言,on the fly,边解释边执行,PHP、SHELL、Python、perl
shell面向过程,弱类型编程语言
变量类型:
字符
数值:
整型
浮点型
逻辑运算:与,或,非,异或
bash变量类型:
环境变量
本地变量(局部变量)
位置变量
特殊变量
引用变量:${变量},括号一般可以省略
单引号,强引用,不做变量替换
双引号,若引用,做变量替换
本地变量:
set varname = value:作用域为整个bash进程
局部变量:
local varname = value:作用域为当前代码段
环境变量:
作用域为当前shell进程及其子进程
export varname = value,导出
varname = value,export varname
脚本在执行时会启动一个子shell进程:
命令行中启动的脚本会继承当前shell环境变量;
系统自动执行的脚本(非命令行启动)就需要自我定义需要个环境变量
位置变量:
$1,$2,...
特殊变量:
$?:上一个命令的执行状态返回值
程序执行,可能有两类返回值
程序执行结果
程序状态返回代码(0-255)
0:正确执行
1-255:错误执行,1,2,127系统预留
判断有没有某个用户
/dev/null:软件设备,bit bucket,数据黑洞
撤销变量:
unset varname
查看当前shell中变量
set
查看当前shell中环境变量:
printenv
env
export
shell中默认数据类型都是字符串:
脚本:命令的堆砌,按实际需要结合命令流程控制机制实现的源程序
shebang:魔数
#!/bin/bash
#注释行,不执行
Ubuntu中新建一个文本,内容是英文的话,文件类型是ACCII文本,如果有汉字的话,文件类型是Unicode文本。
条件测试类型:
整数测试
字符测试
文件测试
条件测试的表达式:
[ expression ]
[[ expression ]]
test expression
-eq:测试两个整数是否相等:比如 $A -eq $B
-ne:测试两个整数是否不等:不等为真,相等为假
-gt:测试一个数是否大于另外一个数:大于为真,否则为假
-lt:测试一个数是否小于另外一个数
-ge:大于或等于
-le:小于或等于
命令间的逻辑关系:短路操作
逻辑与:&&
逻辑或:||
如果用户user6不存在,就添加用户user6
! id user6 && useradd user6
id user6 || useradd user6
单分支if语句
if 判断条件;then
statement1
statement2
...
fi
双分支的if语句:
if 判断条件;then
statement1...
else
statement2...
fi
设备文件:
b:按块问单位,随机访问的设备,硬盘
c:按字符为单位,线性设备,键盘
/dev
主设备号(major number)
标识设备类型
次设备号(minor number)
表示同一种类型中不同设备
mknod:创建设备文件
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
-m MODE
硬盘设备的设备文件名:
IDE,ATA:hd
SATA:sd
SCSI:sd
USB:sd
a,b,c来区别同一种类型下的不同设备
IDE:
第一个IDE口:主、从
/dev/hda,/dev/hdb
第二个IDE口:主、从
/dev/hdc,/dev/hdd
sda,sdb,sdc,...
hda:
hda1:第一个主分区
hda2:
hda3:
hda4:
hda5:第一个逻辑分区
查看当前系统识别了几块硬盘:
fdisk -l [/dev/to/some_device_file]
管理磁盘分区:
fdisk /dev/sda
p:显示当前硬件的分区,包括没保存的改动
n :创建新分区
e:扩展分区
p:主分区
d:删除一个分区
w:保存退出
q:不保存退出
t:修改分区类型
-L
l:显示所支持的所有类型
Linux支持的文件系统
FAT32:vfat
NTFS:默认不支持
ISO9660
ext2
ext3
ext4
xfs
reiserfs
jfs
nfs
ocfs2
gfs2
VFS:Virtual FileSystem
每一个分区都可以使用不用的文件系统,使用VFS屏蔽差异
进程管理:
网络管理:
IP、NETMASK、GATEWAY、HOSTNAME、DNS1,DNS2,DNS3
当DNS1找不到的时候,使用DNS2,例如DNS1掉线了,并不是DNS1找不到域名的时候用DNS2。
Linux
lo:本地换回
以太网网卡:ethX
pppX:
ifconfig :显示开启的网卡
-a:显示所有信息
查看某一个网卡信息
修改ip地址
ifconfig ensX IP/MASK [up]:配置的地址立即生效,但重启网络服务或主机,都失效
关系网卡:ifconfig ensX down
重启ens33后,地址又变回去了
网络服务:
网关:
route:查看路由表
add:添加
-host:主机路由
-net:网络路由
-net 0.0.0.0默认路由
route add -net | -host DEST gw NEXTHOP
route add default gw NEXTHOP
U表示开启,G表示网关
del:删除
-host
-net
route del -net DEST
route del -net 0.0.0.0:删除默认路由
route del default
route -n:以数字方式显示各主机或端口等相关信息
route命令所做出的改动重启网络服务或主机后失效。
网络配置文件:
网络接口配置文件
/etc/network/interfaces
DNS服务器指定方法只有一种:
/etc/resolv.conf
nameserver DNS1
nameserver DNS2
指定本地解析:
/etc/hosts
DNS-->/etc/hosts-->DNS
配置主机名:
hostname HOSTNAME(立即生效,但不是永久有效,重启主机失效)
/etc/hostname
重启网络服务
/etc/init.d/networking restart
iproute2
ip
link:配置网络接口属性
addr:协议地址
route:路由
link
show
ip -s link show :-s显示统计数据
set
ip link set Dev {up|down},开启或禁用网卡
进程管理:
systemd进程号为1
其他进程都是systemd的子进程,或子子进程。。。
ls /proc,每一个目录对应一个进程
ps:process stat
SysV风格:
BSD风格:
a:显示所有与终端相关的进程
u:
x:显示所有与终端无关的进程
VSZ:虚拟内存集,RSS:常驻内存集,TTY:和哪个终端相关联,?表示和终端无关;[]括起来的表示内核线程
进程状态:
D:不可终端的睡眠
R:运行或就绪
S:可终端的睡眠
T:停止
Z:僵尸
<:高优先级进程
N:低优先级进程
+:前台进程组中的进程;前台:命令行输入的进程,和终端相关;进程组:进程集合
l:多线程进程
s:回话进程
进程的分类:
跟终端相关的进程
跟终端无关的进程
ps -elF
-ef
-eF
vim编辑器
vi:visual interface
vim:VI improved
vim模式:
编辑模式(命令模式)
输入模式
末行模式
模式转换:
编辑-->输入:
i:在当前光标所在字符的前面,转为输入模式
a:在当前光标所在字符的后面,转为输入模式
o:在当前光标所在行的下方,新建一行,转为输入模式
I:在当前光标所在行的行首,转换为输入模式
A:在当前光标所在行的行尾,转换为输入模式
O:在当前光标所在行的上面一行,转为输入模式
输入-->编辑:
ESC键
编辑-->末行
:
末行-->编辑:
ESC
1.打开文件
vim +行号 finename:打开文件时直接处在那一行
vim + filename:打开文件后直接定位到最后一行
vim +/PATTERN:打开文件,定位到第一次被PATTERN匹配到的行首
2.关闭文件
1.末行模式关闭文件
:q 退出,
:wq 保存并退出
:q! 不保存退出
:w 保存
:w! 强行保存
:wq ----> :x
2.编辑模式下退出
ZZ:保存并退出
3.移动光标(编辑模式)
1.逐字符移动:
h:向左移动
l:右
j:xia
k:上
#h:移动#个字符
2.按单词移动
w:移至下一个单词的词首
e:跳到当前或下一个单词的词尾
b:跳至当前或前一个单词的词首
#w:一次跳#个单词
3.行内跳转:
0:绝对行首
^:行首的第一个费空白字符
$:绝对行尾
4.行间跳转
#G:直接跳转至第#行
G:最后一行
末行模式下:直接给出行号回车即可
四、翻屏
Ctrl+f:向下翻屏
Ctrl+b:向上返屏
Ctrl+d:向下翻半屏
Ctrl+u:向上翻半屏
五、删除单个字符
x:删除光标所在处的三个字符
#x:删除光标所在处及向后的共#个字符
六、删除命令:d
d命令跟跳转命令组合使用
#d跳转符:
#dw
#de
#db
dd:删除当前光标所在行
#dd:删除包括当前光标所在行之内的#行
末行模式下
:startaddr,endaddrd
:10,20d
.:表示当前行
$:最后一行
+#:向下的#行 :.,$-2d从当前光标所在行已知删除到倒数第二行
7.粘贴命令 p
p:如果删除或复制的为整行内容,则粘贴至光标所在行的下方;如果为非整行,则粘贴至光标所在字符的后面
P:如果删除或复制的为整行内容,则粘贴至光标所在行的上方;如果为非整行,则粘贴至光标所在字符的前面
8.复制命令 y
用法同d命令
9.修改:先删除内容,再转换为输入模式
c:用法同d命令
10.替换:r
R:替换模式
11.撤销编辑
u:撤销前一次的编辑操作,可以连续使用u
#u:直接撤销最近的#次操作,3u
撤销最近一次撤销操作:Ctrl +r
12.重复前一次编辑操作
.
13可视化模式
v:按字符选取
V:按行选取
14.查找
/PATTERN
?PATTERN
n
N
15.查找并替换
在末行模式下使用s命令
addr1,addr2@PATTERN@strings@gi
.,$-1s/he/HE/g
压缩格式:gz,bz2,xz,zip,Z
压缩算法:算法不同,压缩比也会不同
compress(很少使用):filename.Z
uncompress:
只能压缩文件,不能压缩目录
gzip:.gz
gzip filename:压缩完成后会删除源文件
-d:解压缩
-#:1-9,指定压缩比,默认是6
gunzip:解压缩
gunzip filename.gz:解压缩完成后会删除源文件
zcat:zcat .gz,不解压的情况下,查看文本文件内容
bzip2:.bz2
比gzip有着更大压缩比的压缩工具,使用格式近似
bzip2 filename:压缩完成后会删除源文件
-d:解压缩
-#:1-9,指定压缩比,默认是6
-k:压缩时保留源文件
bunzip2:解压缩
bzcat:不解压查看
xz:.xz
xz filename:压缩完成后会删除源文件
-d:解压缩
-#:1-9,指定压缩比,默认是6
-k:压缩时保留源文件
unxz:解压缩
xzdec:解压缩
xzcat:不解压查看