linux操作系统的使用
shell:英文单词Shell可直译为"贝壳"。贝壳是动物作为外在保护的一种工具。
linux中的Shell就是linux内核的一个外层保护工具。
shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,
从而实现用户与操作系统的交互。
Shell的类型:
Bourne Shell(简称sh):由AT&T贝尔实验室的S.R.Bourne开发,是UNIX
的第一个shell程序,已成为一种工业标准。目前几乎所有的Linux系统都支持。
缺陷:Bourne Shell的作业控制能力薄弱,且不支持别名与历史记录等功能。
因此目前大多数操作系统将其作为应急Shell使用。
C Shell(简称csh): 由加利福尼亚大学伯克利分校开发,csh脚本的编程
风格类似于C语言,受到广大C程序员的拥护。
缺陷:C Shell的健壮性不如Bourne Shell。
Korn Shell(简称ksh):由David Korn开发,解决了Bourne Shell的用户
交互问题,并克服了C Shell的脚本编程怪癖的缺点。
缺陷:Korn Shell的使用需要许可证,导致它的应用范围不如Bourne Shell广泛。
Bourne Again Shell(简称bash):同样由AT&T贝尔实验室开发,是Bourne Shell
的增强版,已成为最流行的Shell。
Shell命令提示符的格式:
username@hostname:direction$
用户名 主机名 目录名
Shell命令格式:
$ Command [-Options] Argument1 Argument2 ...
指令 选项 参数1 参数2 ...
通常一条命令包含三个要素:命令名称、选项、参数。命令名称是必选项,
选项和参数是可选项。
1.一条命令的三要素之间用空格隔开
2.若将多个命令书写在一行,用分号将各命令隔开
3.如果一条命令不能在一行写完,在行尾使用反斜杠标明该条命令未结束
~ : 代表当前所在的路径为家目录
/ : 代表根目录
whoami 查看当前用户名
hostname 查看主机名
pwd 获取绝对路径
绝对路径:文件在文件系统中的准确位置
相对路径:相对于用户当前位置的一个文件或目录的位置
linux基本命令
1 uname -r 查看内核版本号
2 打开终端 : ctrl + alt + t
ctrl + shift + n
补齐命令或者文件名: 使用tab键
3 关机命令: sudo shutdown -h now(时间) -halt(停止) 立刻关机
sudo shutdown -r now(时间) -reboot(重启) 重启
sudo reboot now 重新启动
查看系统时间 date
设置新时间 sudo date -s 1:19:18
更改时区 cp/usr/share/zoneinfo/Asia/Shanghai /etc/localtime
4 放大字体 : ctrl + shift + 加号
缩小字体: ctrl + 减号
5 清屏指令 clear
ctrl + l
查看shell命令历史记录 history
查看系统默认的历史记录的容量 echo $HISTSIZE
临时修改容量 HISTSIZE=1000
永久性修改历史记录容量: vi .bashrc
HISTSIZE=2000
使配置生效: source .bashrc
5 ls 浏览目录
ls -l 文件以列表的形式呈现出来
ls -h 文件的大小,使用k,M
ls -a 列出所有的文件,包括隐藏文件
drwxr-xr-- 2 wdl wdl 4096 2007-09-17 2:23 Desktop
文件类型、文件访问权限 文件链接数目 文件所有者 文件所属组 文件大小,以字符为单位
最后一次修改文件或目录的时间 文件或目录名称
第一组 rwx: 代表wdl用户权限
第二组 rwx: 代表同组用户权限
第三组 rwx: 代表其他用户权限
文件类型
- 普通文件
b (block) 块设备文件
c (char) 字符设备文件
d (directory) 目录文件
l (link) 链接文件
p (pipe) 管道文件
s (socket) 套接字文件
文件和目录权限
r(read) 读权限 w(write) 写权限 x 执行权限
6 cd 改变工作路径
~ home目录
. 当前目录
../ 上一次目录
cd - 表示执行上一次cd命令操作
7 file 显示文件的类型
8 touch 创建一个新文件,改变文件的最后修改时间
9 mkdir 创建目录
-p 嵌套的创建多层目录
10 rmdir 删除目录
11 cp 将文件和目录复制到另一个文件或目录中
-a 递归地复制目录并保留链接和文件属性
-r 递归地复制目录下的所有子目录和文件
12 mv 将文件或目录从源目录移动到目标目录中,重命名文件名
13 cat 读取指定文件的内容,并在标准输出设备上显示
14 head 显示文件开头 默认10行
tail 显示文件结尾 默认10行
15 echo 用于在标准输出——显示器上显示一段文字,一般起到提示作用
-n 不换行显示
16 diff 比较两个文件,将不同的显示出来
uniq 去掉文件中相邻重复的行
grep "main" ./* -R 表示递归查找多级子目录下的内容
wc -w file.txt 计算文件中单词的个数
wc -c file.txt 计算文件中字符的个数
wc -l file.txt 计算文件的行数
创建链接文件
链接文件类似于微软Windows的快捷方式,只保留目标文件的地址而不占用存储空间
linux中有两种类型的链接
硬链接:利用Linux中为每个文件分配的物理编号——inode建立链接,因此,
硬链接不能跨越文件系统。
软链接:利用文件的路径名建立连接。
ln 创建文件的链接文件 (缺省条件下建立硬链接)
-s 创建文件的软链接
vi可以分为三种模式:底行模式、插入模式和命令行模式。
1 命令行模式 :
复制:yy , 4yy,
粘贴:p (粘贴到光标的下一行), P(粘贴到光标的上一行)
剪切:先删除后粘贴
删除:dd , 4dd
删除一个字符: x,X
替换一个字符: r, R(一直替换,直到按esc结束)
删除一个字符, 并且进入插入模式 s
移动光标:h,j,k,l 分别控制光标左、下、上、右移一格
Ctrl+b 屏幕往上移动一页 Ctrl+f 屏幕往下移动一页
G 移动到文件的最后一行 gg 移动到文件的第一行
. 重复前一个操作
2 插入模式
i 在光标前面插入
a 在光标后面插入
I 跳到行首插入
A 跳到行尾插入
o 在光标的下一行,行首位置插入
O 在光标的上一行,行首位置插入
3 底行模式
shift+: 4,10y
: 4,10d
保存: w
保存并且退出: wq , x , ZZ
不保存修改退出: q
强制性退出: q!
:w filename 文件无改动,不保存退出;文件已改动,保存后推出
:r filename 读入另一个文件的数据追加到本文件末尾
:n1,n2 w filename 将n1到n2的内容保存成filename文件
:!Command 暂时离开vi到命令行模式下执行command的显示结果
:set nu 显示行号
替换: c$ 替换光标到结尾的所有的内容
c0 替换光标到开头的所有的内容
复制: y0 复制光标到开头的内容
y$ 复制光标到结尾处的内容
Shell中的特殊字符
通配符 含义 实例
* 代表匹配任意长度的字符串 rm *.txt
? 代表匹配一个长度的字符 rm file?.txt
[] 代表匹配其中指定的一个字符 rm file[12].txt
[-] 代表匹配指定的一个字符范围 rm file[1-4].txt
[^] 代表除了指定的字符,均可匹配 rm file[^1].txt
管道:管道可以把一系列命令连接起来,第一个命令的输出作为第二个
命令的输入,通过管道传递给第二个命令,第二个命令的输出又作为
第三个命令的输入,以此类推。
ls ./ | wc -w 测试当前目录下的单词的个数
输入输出重定向:输入/输出重定向是改变Shell命令或程序默认的标准
输入/输出目标,重新定向到新的目标。
Linux中默认的标准输入定义为键盘,标准输出定义为终端窗口。
重定向符 含义 实例
> file 将file文件重定向为输出源,新建模式 ls ./ > log.txt
>> file 将file文件重定向为输出源,追加模式 ls ./ >> log.txt
< file 将fiel文件重定向为输入源 wc < file
2>或&> 将由命令产生的错误信息输入到指定文件中 ls file 2> err.log
命令置换:命令置换是将一个命令的输出作为另一个命令的参数。
命令的格式如下所示:
command1 `command2` ls `pwd` 显示当前目录的文件内容
流行的两种软件包管理机制
背景:最初,基于linux系统的开发者在完成应用程序的开发后,将很多
二进制文件发给用户,用户在使用之前需要将很多程序逐个安装。
1.Debian Linux首先提出"软件包"的管理机制——Deb软件包,将应用程序的
二进制文件、配置文档、man/inf帮助页面等文件合并打包在一个文件中,
用户使用软件包管理器直接操作软件包,完成获取、安装、卸载、查询等
操作。
2.Redhat Linux基于这个理念推出了自己的软件包管理机制——Rpm软件包。
采用自己的打包格式生成Rpm包文件,由Rpm包管理器负责安装、维护、
查询,甚至是软件包版本管理。
软件包的类型:
1.二进制软件包:包含可执行文件、库文件、配置文件、man/info页面、
版权声明和其它文档。
2.源码包:包含软件源代码、版本修改说明、构建指令以及编译工具等。
先由tar工具归档为.tar.gz文件,然后再打包成.dsc文件。
软件包管理工具分类
类别 常见工具举例 描述
在命令行模式下完成软件包管理任务。
为软件包的获取、查询、软件包的依
命令行 dpkg-deb、dpkg、apt 赖性检查、安装、卸载等任务,
需要使用各自不同的命令。
文本窗口界面 dselect、aptitude、tasksel 在文本窗口模式中,使用窗口和菜
单可以完成软件包的管理任务。
图形界面 synaptic 在x-windows图形桌面环境中运行,
具有良好的交互性、可读性、易用性等特点。
命令行管理工具
1.dpkg是最早的Deb包管理工具。
2.APT系列工具室Deb软件包管理工具中功能最强大的。
dpkg是最早的Deb包管理工具,使用dpkg可以实现本地软件包的安装、编译、
卸载、查询,以及应用程序打包等功能。
缺陷:由于当时Linux系统规模和Internet网络条件的限制,没有考虑到现今
系统中软件包如此复杂的依赖关系,以及帮助用户获取软件包。因而,为了解决
软件包依赖性问题和获取问题,就出现了APT工具。
APT工作原理
APT(Advanced Packaging Tool)是Ubuntu LInux中功能最强大的命令行
软件包管理工具,用于获取、安装、编译、卸载和查询Deb软件包,以及
检查软件包依赖关系。
Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存放
在软件仓库中,进行有效组织和管理,然后将软件仓库置于许许多多的
镜像服务器中,为了使用户有选择的访问各镜像站点,在Ubuntu系统中,
使用软件源配置文件/etc/apt/source.list 列出最适合访问的镜像站点
地址,以便本地主机查询。这就是APT软件包管理器的工作原理。
1)dpkg:本地安装软件包,不检查软件之间的依赖关系
sudo dpkg -i rxvt*.deb 安装软件包
sudo dpkg -s rxvt 查看软件的安装状态
sudo dpkg -L rxvt file 列出软件的安装清单
sudo dpkg -r rxvt 删除软件,但是配置文件保留
sudo dpkg -P rxvt 全部删除,包括配置文件
2)apt:在线安装软件包
软件源配置文件: /etc/apt/sources.list
刷新软件源列表,建立软件索引文件: sudo apt-get update (要求ubutun虚拟机联网)
sudo apt-get install rxvt 在线安装软件
sudo apt-get --reinstall install rxvt 重新安装软件包
sudo apt-get check rxvt 检查软件包之间的依赖关系
sudo apt-get remove rxvt 删除软件包,但是保留配置文件
sudo apt-get --purge remove rxvt 卸载软件包,包括它的配置文件
软件包的命名
软件包的命名遵循以下约定:
Filename_Version-Reversion_Architectrure.deb
软件包名称_软件版本-修订版本_体系结构
Shell基本系统维护命令
关机命令: sudo shutdown -h now(时间) -halt(停止) 立刻关机
sudo shutdown -r now(时间) -reboot(重启) 重启
sudo reboot now 重新启动
passwd 修改当前用户的登录口令(超级用户可修改所有用户
的登录口令,其他用户只能修改本用户登录口令)
su 临时改变用户身份,具有其他用户的权限
date 查看或更改系统时间
sudo date -s 1:19:18 设置新时间
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 更改时区
df 查看磁盘空间使用情况
df -Th 显示物理文件系统的文件格式类型和文件系统大小按兆
字节为单位
df -aTh 显示物理文件系统的文件格式类型和使用情况及文件系统
大小按兆字节为单位
du 列出目录和文件所使用的磁盘块数,每块占512个字节
-a 仅列出空闲的文件数
-k 列出磁盘使用情况(kb)
-s 列出总的空闲空间(kb)
用户管理
vi /etc/passwd 存放用户密码相关信息
vi /etc/group 存放组有关信息
vi /etc/adduser.conf
sudo adduser u1 添加一个新的用户
sudo deluser --remove-home u1 删除一个用户和用户的工作目录
进程管理
ps(process snapshot) 进程快照,查看进程信息
-A 列出所有的进程
-aux 显示所有包含其他使用者的进程
进程快照列表的组成
%CPU 占用的CPU使用率
%MEM 占用的内存使用率
VSZ 占用的虚拟内存大小
RSS 占用的内存大小
STAT 进程的状态
STATRT 进程开始时间
TIME 执行的时间
进程的状态标志
D:不可中断的静止 R:正在执行中
S:阻塞状态 T:暂停执行
Z:不存在但暂时无法消除 W:没有足够的内存分页可分配
<: 高优先级的进程 N:低优先级的进程
L:有内存分页分配并锁在内存中
top 监视进程,每3秒刷新一次(通常全屏显示,随着进程状态的变化不断更新)
shift + > 向下翻页 shift + < 向上翻页 q 退出
pstree 将所有进程以树状图显示
kill [-signal] PID 使用kill命令终止进程
文件压缩和归档
Ubuntu Linux默认安装图形化压缩工具是File Roller文件打包器,
被集成到Nautilus文件管理器中,同时具有归档、压缩、解压文件/目录
的功能。
shell归档和压缩工具
gzip与gunzip
gzip
-l 查看压缩文件内的信息,包括文件数、大小、压缩比等参数
-d 将文件解压,功能与gunzip相同
-num 指定压缩比,num为1~9个等级
zip与unzip
两者区别在于gzip只能压缩一个文件,无法将多个文件压缩为
一个文件,不具有归档的功能。
tar
-cjf -czf 将多个文件合并归档并压缩
-xvf 将文件解压
Linux文件系统
文件系统:用于组织和管理计算机存储设备上的大量文件,并提供用户交互接口。
Linux具备完善的文件系统,用户既可以使用界面友好的Nautilus图形文件管理器,
也可以使用功能强大的Shell文件系统管理工具。
文件系统类型
目前Ext3是Linux系统广泛使用的一种文件格式,在Ext2基础上对有效性保护、数据完整性、
数据访问速度、向下兼容性等方面做了改进。
Linux是一种兼容性很高的操作系统,支持的文件系统格式很多,大体可分为以下几类:
1)磁盘文件系统:本地主机中实际可以访问到的文件系统,包括磁盘、CD—ROM、
DVD、USB存储器、磁盘阵列等。常见文件系统格式有:autofs、coda、Ext(Extended
File System,扩展文件系统)、Ext2、Ext3、VFAT、UFS(Unix File System,Unix文件系统)
、FAT(File Allocation Table,文件分配表)、FAT16、FAT32、NTFS等
2)网络文件系统:可以远程访问的文件系统,这种文件系统在服务器端仍是本地的磁盘
文件系统,客户机通过网络远程访问数据。常见的文件系统格式有:NFS(Network File System,
网络文件系统)、Samba、AFP(Apple Filling Protocol,Apple文件归档协议)和WebDAV等
3)专有/虚拟文件系统:不驻留在磁盘上的文件系统。常见格式有:TMPFS(临时文件系统)、
PROCFS(Process File System,进程文件系统)和LOOPBACKFS(Loopback File System,回送文件系统)
文件系统结构
Linux文件系统就是一个树形的分层组织结构,将根(/)作为整个文件系统的唯一起点,其他所有
目录都从该点出发。
在Windows下,目录结构属于分区;在Linux下,分区属于目录结构。
在Linux中,将所有硬件都视为文件来处理,包括硬盘分区、CD-ROM、软驱以及其它的USB移动设备等。
为了能够按照统一的方式和方法访问硬件资源,Linux提供了对每种硬件设备相应的设备文件。一旦
Linux系统可以访问到硬件,就将其上的文件系统挂载到目录树的一个子目录中。
基本目录结构
/bin 存放系统中最常用的二进制可执行文件
/boot 存放linux内核和系统启动文件,包括Grab、lilo启动器程序
/dev 存放所有设备文件,包括硬盘、分区、键盘、鼠标、USB、tty等
/etc 存放系统所有配置文件,如passwd存放用户账户信息,hostname存放主机名等
/home 用户主目录的默认位置
/lib 存放共享的库文件,包含许多被/bin和/sbin中程序使用的库文件
/media Ubuntu系统自动挂载CD-ROM、软驱、USB存储器后,存放临时读入的文件
/mnt 该目录通常用于作为被挂载的文件系统的挂载点
/proc 存放所有标志为文件的进程,它们是通过进程号后其他的系统动态信息进行标识
/root 超级用户的主目录
/tmp 存放用户和程序的临时文件,所有用户对该目录都有读写权限
/usr/bin 用户和管理员的标准命令
/usr/include c/c++等各种开发语言环境的标准include文件
/usr/lib 应用程序及程序包的连接库
/usr/sbin 用户和管理员的标准命令
/usr/share 存放使用手册等共享文件的目录
/var/cache 应用程序缓存目录
/var/tmp 临时文件目录