嵌入式linux开发实践——项目2Linux使用基础6、7、8

替换一个字符:在命令模式下选中要替换的字符,按r,再按替换后的字符。
替换全文中所有的字符:可以在命令模式下输入:% s/str1/str2/g

6.文件系统

Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。

Linux最早的文件系统是Minix,但是专门为Linux设计的文件系统——拓展文件系统第二版(EXT2)被设计出来并添加到Linux中,这对Linux产生了重大影响。

常用的文件系统

  1. ext2
  2. swap
  3. vfat
  4. NFS

1、ext2
ext2是为解决ext文件系统的缺陷而设计的可扩展的、高性能的文件系统,又被称为二级扩展文件系统。它是Linux文件系统中使用最多的类型,并且在速度和CPU利用率上较为突出。ext2存取文件的性能极好,并可以支持256字节的长文件名,是GNU/Linux系统中标准的文件系统。

2、ext3
ext3是ext2文件系统的日志版本,它在ext2文件系统中增加了日志的功能。ext3提供了3种日志模式:日志(journal)、顺序(ordered)和回写(writeback)。与ext2相比,ext3提供了更好的安全性以及向上向下的兼容性能。因此,在Linux系统中可以挂在一个ext3文件系统代替ext2文件系统。ext3文件系统格式被广泛应用于目前的Linux系统中。ext3的缺点是缺乏现代文件系统所具有的高速数据处理和解压的性能。此外,使用ext3文件系统还要考虑磁盘限额问题。

3、reiserFS
reiserFS是Linux环境下最稳定的日志文件系统之一,使用快速的平衡二叉树(binary tree)算法来查找磁盘上的自由空间和已有的文件,其搜索速度高于ext2,reiserFS能够像其他大多数文件系统一样,可动态的分配索引节,而无须在文件系统中创建固定的索引节。有助于文件系统更灵活的适应各种存储需要。

4、VFAT
VFAT主要用于处理长文件的一种文件名系统,它运行在保护模式下并使用VCACHE进行缓存,并具有和Windows系列文件系统和Linux文件系统兼容的特性。因此VFAT可以作为Windows和Linux交换文件的分区。
5、JFS2
一种字节级日志文件系统,该文件系统主要是为满足服务器的高吞吐量和可靠性需求而设计、开发的。单个文件最大限制16TB,该文件系统最大支持1PB的容量。

目录结构

Linux的文件系统采用阶层式的树状目录结构,在该结构中的最上层是根目录“/”,然后在根目录下再建立其他的目录。

Linux中无论从操作系统管理的几个磁盘分区,这样的目录树只有一个。从结构上讲,各个磁盘分区上的树型目录不一定是并列的。

Linux文件类型

普通文件:通常是流式文件。

#ls -lh install.log
-rw-r–r-- 1 root 53K 03-16 08:54 install.log

目录文件:用于表示和管理系统中的全部文件

#ls -lh
drwxr-xr-x 2 root 4.0K 04-19 10:53 mydir

链接文件:用于不同目录下文件的共享

#ls -lh setup.log
lrwxrwxrwx 1 root root 11 04-19 11:18 setup.log->install.log

设备文件:包括块设备文件和字符设备文件

#ls -la/dev/tty
crw-rw-rw- 1 root tty 5,0 04-19 08:29 /dev/tty

管道(FIFO)文件:提供进程间通信的一种方式

套接字(socket)文件:改文件类型与网络通信有关

ls -lh /var/lib/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 04-19 11:12 /var/lib/mysql/mysql.sock

分区

在WIndows操作系统中,是先将物理地址分开,再在分区上建立目录。在Windows操作系统中,所有路径都是从盘符开始,如C:\program file

Linux正好相反,是先有目录,再将物理地址映射到目录中。在Linux操作系统中,所有路径都是从根目录开始。Linux默认可分为3个分区,分别是boot分区、swap分区和根分区

挂载

Linux下的分区需要挂载到目录后才能使用,挂载的意义就是把磁盘分区的内容放在某个目录下。这个把分区和目录对应的过程叫做**挂载(Mount)**而这个挂载在文件树中的位置就是挂载点。

当要使用某个设备时,例如要读取硬盘中的一个格式化好的分区、光盘或软件等设备时,必须把这些设备对应到某个目录上,而这个目录就称为“挂载点(mount point)”,这样才可以读取这些设备,将物理分区细节屏蔽掉,用户只有统一的逻辑概念,所有的东西都是文件。

7.shell使用技巧

Shell环境

Linux中的Shell是一个命令解析器,将用户命令解析为操作系统能理解的指令,从而实现用户与操作系统的交互。
Shell是内核的一个外层保护工具,并负责完成用户与内核之间的交互

自动补齐

命令行自动补齐
输入命令的前一个或者几个字母,按下Tab键系统就会自动补全命令。如果有多个可能的选择,再按一次Tab键就会列举出来。

如何用’cd’最快地从您当前梭子的home目录跳到’/usr/src/redhat/’

#cd/usrr

命令行的历史记录

通过按向上方向键,可以向后遍历近来在该控制台下输入的命令,用向下方向键可以向前遍历。

如果与SHIFT键连用的话还可以遍历以往在该控制台中的输出,也可以编辑旧的命令然后再运行。

后,Shell就计入向后增量搜索模式。选择相应命令后再按键,上面的命令将再次执行。

vi .bash_history(可以查看历史的命令)

编辑命令行

:删除从光标到行尾的部分
:删除从光标到行首的部分
:删除从光标到当前单词结尾的部分
:删除从光标到当前单词开头的部分
:将光标移到行首
:将光标移到行尾
:将光标移到当前单词头部
:将光标移到当前单词尾部
:插入最近删除的单词

命令的排列

先执行command1,不管command1是否出错,接下来执行command22

command1 ;command2

只有当conmmand1正确运行完毕后,才执行command2

command1&command2

命令的任务调度

当在终端里运行一个命令或开启一个程序时,终端要等到命令或程序运行完毕后,才能再被使用。

任务调度(jobbing)或后台(backgrounding),在命令后面添加一个&可以将当前运用任务或将命令至于后台,终端就立即解放可以接受新的输入。
#gqview &
#jobs

输出重定向

">“为输出重定向符,可以将命令的输出结果保存到文件中,”>>“和”>“作用类似,不同的是”>“为新建或者重写一个文件,而”>>"为在文件的尾部追加内容

#Mail -s “hello world” [email protected] < testmail
#ps -aux |grep wget

ps -ef | grep “bash”(可以查找)

8.环境变量

Shell环境

Linux是一个多用户的操作系统,当用户登入系统后都会有一个**专用的运行环境。**通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变得定义。用户可以通过修改相应的系统环境变量对自己的运行环境进行定制。

环境变量(environment variables)一般是指在操作系统中用来制定操作系统进行环境变量的一些参数,如:临时文件夹位置和系统文件夹位置等。

bash配置文件

环境变量和Shell紧密相关的,用户登入系统后就启动了一个Shell。对于Linux来说一般是bash,但也可以重新设定或切换到其他的Shell。根据发行版本的情况,bash有两个基本的系统级配置文件:/etc/bashrc和/etc/profile

查看bash配置文件
#ls.bash*

环境变量常用变量如下:

  • PATH 决定了shell将到哪些目录中寻找命令或者程序
  • HOME 当前用户主目录
  • HISTSIZE 历史记录数
  • LOGNAME 当前用户的登录名
  • HOSTNAME 指主机的名称
  • SHELL 当前用户的Shell类型
  • LANG 语言相关的环境变量,多语言可以修改次环境变量
  • MALL 当前用户的邮件存放目录
PATH声明格式

PATH=$PATH::::…:

环境变量更改后,在用户下次登入时生效。如果想立即生效,则可执行下面的语句

#source .bash_profile

环境变量设置实例

使用命令echo环境变量

#echo $HOME

使用命令echo显示环境变量

#exort MYNAME = “my name is pingzhenyu”
#echo $MYNAME

修改环境变量MYNAME
  • 使用env命令显示所有的环境变量
  • 使用set命令显示所有本地定义的Shell变量
  • 使用unset命令来清除环境变量
  • 使用readonly命令设置只读变量
  • 通过修改环境变量定义文件来修改环境变量

eg:
export TEMP_ENV =“jack”
env |grep TEMP_ENV

你可能感兴趣的:(嵌入式linux开发实践——项目2Linux使用基础6、7、8)