Linux的前世今生
Linux内核
是Linux系统的基本组件
Linux 的发行版
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。
Linux两大阵营
-
Redhat系列 redhat,suse,CentOS,Fedora等
-
Debian系列 debian,ubuntu等
帮助命令
man命令
查询命令的说明
info命令
更加详细的说明
which命令
查看文件所在目录
whereis命令
查看文件路径
文件及目录管理
文件管理不外乎文件或目录的创建、删除、查询、移动,文件查询是重点
创建和删除
-
创建文本:touch
如:touch 1.txt
-
创建目录:mkdir
-
删除目录:rm -rf 目录

-
删除文件:rm
-
移动目录:mv
-
复制:cp
-
复制目录:cp -r

目录切换
- 找到文件/目录位置:cd
- 切换到上一个工作目录: cd -
- 进入当前目录:cd .
- 进入上一级目录:cd ..
- 切换到home目录: cd或cd ~
- 显示当前路径: pwd
列出目录项
- 显示当前目录下的文件 ls
- 按时间排序,以列表的方式显示目录项 ls -lrt
查找目录及文件
- 查找目标文件夹中是否有obj文件:
$find ./ -name '*.o' //*为通配符
- 递归当前目录及子目录删除所有.o文件:
$find ./ -name "*.o" -exec rm {} ;
查看文件内容
-
cat
-
more
-
进入vi编辑器查看:vi file
-
显示文件倒数第n行:tail -n file
-
显示文件第n行:head -n file
-
查看两个文件间的差别:diff file1 file2
查找文件内容
-
egrep
查找并将符合条件的内容输出到一个文本
文件与目录的权限
- 改变文件的拥有者 chown
- 改变文件读、写、执行等属性 chmod
- 递归子目录修改: chown -R tuxapp source/
- 增加脚本可执行权限: chmod a+x myscript
管道和重定向
|
直接执行后面的语句&
两个命令同时执行&&
只有前面命令执行成功,后面命令才继续执行;
不管前面命令执行成功没有,后面的命令继续执行||
顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令>>
重定向
设置环境变量
启动帐号后自动执行的是 文件为 .profile,然后通过这个文件可设置自己的环境变量$PATH
-
每个路径用冒号分隔
-
./
当前目录 -
../
上级目录 -
添加环境变量
- 该方法只在当前有效,重启后无效
export PATH=$PATH:路径
- 写入配置文件
/etc/profile
- 该方法只在当前有效,重启后无效
Bash快捷输入或删除
- Ctl-U 删除光标到行首的所有字符,在某些设置下,删除全
- Ctl-W 删除当前光标到前边的最近一个空格之间的字符
- Ctl-H backspace,删除光标前边的字符
- Ctl-R 匹配最相近的一个文件,然后输出
文本处理
find命令
-
文件查找
find [目录] -name [文件名|支持正则表达式|通配符]
-
按类型搜索
find . -type d -print //只列出所有目录
注:-type f 文件 / l 符号链接 / d 目录
-
按用户查找:
find . -type f -user weber -print // 找用户weber所拥有的文件
file命令
可以检查文件具体类型
{}
{}是一个特殊的字符串,对于每一个匹配的文件,{}会被替换成相应的文件名;
-print的定界符
-
默认使用’ ’作为文件的定界符;
-
-print0 使用’ ’作为文件的定界符,这样就可以搜索包含空格的文件;
sort排序
- -n 按数字进行排序
- -r 逆序排序
- -k N 指定按第N列排序
tr进行文本替换
-
-d 删除字符
-
-c 获取字符
-
-s 压缩多余字符
-
字符1 字符2 用字符1替换字符2
磁盘管理
查看磁盘空间
- 查看磁盘空间利用大小:df -h
- 查看当前目录所占空间大小:du -sh
打包压缩
在linux中打包和压缩是分两步来实现的,先打包后压缩
打包
打包是将多个文件归并到一个文件:
tar -cvf etc.tar 1.txt 2.txt
//etc.tar是打包好后的文件名,后面加上要打包的文件名1.txt和2.txt
- -c :打包选项
- -v :显示打包进度
- -f :使用档案文件
压缩
gzip demo.txt,生成 demo.txt.gz
解包和解压缩
解包
tar -xvf demo.tar
tar解压参数说明:
- -z 解压gz文件
- -j 解压bz2文件
- -J 解压xz文件
解压缩
-
gunzip
-
bzip
进程管理
在linux环境中,任何事物都是文件,设备是文件,目录是文件,甚至sockets也是文件
查询进程
查询正在运行的进程信息
ps -ef
以完整的格式显示所有的进程
ps -ajx
显示进程信息,并实时更新
top
查询进程ID(适合只记得部分进程字段)
pgrep 查找进程
如:
pgrep -l re //查询进程名中含有re的进程
查看端口占用的进程状态:
lsof -i:3306
查看用户username的进程所打开的文件
lsof -u username
查询指定的进程ID(23295)打开的文件:
lsof -p 23295
终止进程
杀死指定PID的进程 (PID为Process ID)
kill PID
进程监控
top
分析线程栈
pmap
性能监控
vmstat
watch
sar
网络工具
netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
查询网络服务和端口
列出所有端口 (包括监听和未监听的):
netstat -a
列出所有 tcp 端口:
netstat -at
列出所有有监听的服务状态:
netstat -l
lsof(list open files)是一个列出当前系统打开文件的工具
查询使用7902端口的进程的PID
lsof -i:7902
网络路由
查看路由状态:
route -n
发送ping包到地址IP:
ping IP
探测前往地址IP的路由路径:
traceroute IP
DNS查询,寻找域名domain对应的IP:
host domain
反向DNS查询:
host IP
用户管理
用户
添加用户
useradd -m username
该命令为用户创建相应的帐号和用户目录/home/username;
设置密码:
passwd username
删除用户
userdel -r username
不带选项使用 userdel,只会删除用户。用户的家目录将仍会在/home目录下。要完全的删除用户信息,使用-r选项;
帐号切换
su username
用户的组
将用户加入到组
默认情况下,添加用户操作也会相应的增加一个同名的组,用户属于同名组; 查看当前用户所属的组:
groups
一个用户可以属于多个组,将用户加入到组:
usermod -G groupNmame username
加入到新的组,并从原有的组中除去:
usermod -g groupName username
查看系统所有组
系统的所有用户及所有组信息分别记录在两个文件中:/etc/passwd , /etc/group 默认情况下这两个文件对所有用户可读:
-
查看所有用户及权限:
more /etc/passwd
-
查看所有的用户组及权限:
more /etc/group
用户权限
使用ls -l可查看文件的属性字段,文件属性字段总共有10个字母组成,第一个字母表示文件类型,如果这个字母是一个减号”-”,则说明该文件是一个普通文件。字母”d”表示该文件是一个目录,字母”d”,是dirtectory(目录)的缩写。 后面的9个字母为该文件的权限标识,3个为一组,分别表示文件所属用户、用户所在组、其它用户的读写和执行权限;
下图,从右向左看

更改读写权限
更改读写权限有两种方法,一种是字母方式,一种是数字方式
- 字母方式:
chmod userMark (+|-) PermissionsMark //+号表示添加权限,-号表示删除权限
- userMark取值:
- u:用户
- g:组
- o:其它用户
- a:所有用户
- PermissionsMark取值:
- r:读
- w:写
- x:执行
如:chmod g+w blogs 对组用户给文件blogs增加可写权限
- 数字方式:
有权限表示为1
,无权限表示为0
,共9个位,每3个为一位,所以组成一组八进制数,这一组八进制数即可表示相应权限
如:chmod 一组八进制数 文件名
文本编辑工具vim
特点:
- 通用
- 轻量级
使用
初级使用
- 命令模式(默认)
- 按 i 键进入插入模式
- 插入模式
- 编辑结束后按Esc键退出,输入
:
进入末行状态,再输入wq 退出vi
- 编辑结束后按Esc键退出,输入
显示代码行数
进入末行状态后,输入set number
跳转到指定位置
在命令模式下
- 跳转到指定行:
行号 + G
- 跳转到最后一行:
GG
- 跳转到一行的末尾:
$
- 跳转到一行的起始位:
^
删除内容
在命令模式下
- 删除一行:
dd
- 撤销删除:
u
- 删除选中:
v+d
复制粘贴剪切
命令状态下
- 复制:
yy
- 粘贴:
p
- 剪切:
x
搜索
命令状态下
- 输入
/+要搜索的字符串
自动缩进
命令状态下,在要缩进的代码开头输入,代码行数,最后再输入==
自动补全
在插入状态下,输入ctrl + p
其他
-
使用Tab键可以自动补齐命令
-
在linux环境中,任何事物都是文件,设备是文件,目录是文件,甚至sockets也是文件
Linux用户
每个用户都有一个home目录
两种类型
超级用户(root用户)
- 登录提示符为#
- 只能有一个root用户
- home目录为
- /root
- ~代表home目录
- pwd查看当前操作路径
- 用户名root不可修改,可修改密码,
- 命令passwd
普通用户
- 登录提示符为 $
- 切换用户类型
- (switch user)su 用户名
- 可以有多个用户
- home目录为
- /home/用户名
Linux基础命令
更新命令
- apt-get update 更新软件包的索引源
- apt-get upgrade 升级所有软件包
- apt-get dist-upgrade 升级整个Linux,如1.0到2.0
通用命令
- uname 获取系统规格的详细信息
- pwd 显示当前所处位置
- ls 查看目录中包含的所有内容
- ls -l 列出路径所有文件,及其权限和所属组
- ls -a 列出路径的所有文件,包括以.开头的隐藏文件
- history 列出先前输入的所有命令(存储在bash shell中)
- macchanger 更改mac地址,本质上改变身份
- ifconfig 查看当前网络接口的设置
- echo 打印任何文本到指定位置
- echo > [file name]在新文件中打印复制的文本
- echo >> [file name] 将复制的文本打印到现有的文件
- 注:使用不带>的echo将自动为文本创建一个新的文件
- cat 读取文件,并将它们连接在一起,交换它们的内容
- clear 清除屏幕
操作命令
- mkdir 创建一个新目录
- cd 更改正在使用的目录
- cp 服务于基本的复制文本/内容用途
- mv 在目录间移动文件
- rm 删除突出显示的文本
读取命令
- more
- 可以查看一个文件的内容
- less 显示特定文件的运行情况,它并未完全加载该文件
- sort 以一定顺序查看内容,使用-r开关,以相反的顺序对内容进行排序
编辑命令
- vi 可视编辑器
- nano 可视编辑器的替代方法
- leafpad (GTK+文本编辑器 )
- 召唤此编辑器bt输入leafpad/etc/passwd
权限命令
- 三种主要的访问权限
- 用户
- 对文件的用户访问权授予创建它的用户
- 组
- 具有文件读取权限的所有用户
- 其他
- 表示自定义权限
- 用户
- chmod 可以根据需要更改访问方式 ,使用某些标志作为权限指示
- r = 允许用户能读取的文件
- w = 使用户能编辑的文件
- x = 授予执行文件或搜索目录的权限
- chown
- 类似于chmod