《Unix & Linux 大学教程》 - 第二十四章 学习笔记
学习笔记,内容基础,适合初学者。
?
阅读之前,请务必花30秒查看前言说明(在第一、二章前面部分)
《Unix & Linux 大学教程》 - 第一、二章 学习笔记???Unix简介 & 什么是Linux?什么是Unix
《Unix & Linux 大学教程》 - 第三、四章 学习笔记? ?Unix连接 & 开始使用Unix
《Unix & Linux 大学教程》 - 第五、六章 学习笔记? ?GUI:图形用户界面 & Unix工作环境
《Unix & Linux 大学教程》 - 第七、八章 学习笔记? ?Unix键盘使用 & 能够立即使用的程序
《Unix & Linux 大学教程》 - 第九、十章 学习笔记? ?文档资料:Unix手册与Info & 命令语法
《Unix & Linux 大学教程》 - 第十一、十二章 学习笔记? ?shell & 使用shell:变量和选项
《Unix & Linux 大学教程》 - 第十三章 学习笔记? ?使用shell:命令和定制
《Unix & Linux 大学教程》 - 第十四、十五章 学习笔记???使用shell:初始化文件
《Unix & Linux 大学教程》 - 第十六、十七章 学习笔记? ?过滤器:简介和基本操作《Unix & Linux 大学教程》 - 第十八章 学习笔记???过滤器:统计和格式化《Unix & Linux 大学教程》 - 第十九章(一) 学习笔记???过滤器:选取、排序、组合及变换《Unix & Linux 大学教程》 - 第十九章(二)、第二十章 学习笔记?过滤器:选取、排序、组合及变换 正则表达式《Unix & Linux 大学教程》 - 第二十一章 学习笔记?显示文件
《Unix & Linux 大学教程》 - 第二十二章(一) 学习笔记?vi文本编辑器(一)
《Unix & Linux 大学教程》 - 第二十二章(二) 学习笔记?vi文本编辑器(二)
《Unix & Linux 大学教程》 - 第二十二章(三) 学习笔记?vi文本编辑器(三)
《Unix & Linux 大学教程》 - 第二十三章 学习笔记?Unix文件系统《Unix & Linux 大学教程》 - 第二十四章 学习笔记 目录操作
?
?
?
第二十四章:目录操作
ls ~用户名:列出此用户的home目录下的文件
pwd(print working directory):显示工作目录
?
?
cd(change directory,改变目录)
语法:
cd?[-LP] [directory?| -]
选项L和P与符号链接相关,下一章中说明
cd -?:返回到之前目录中
?
?
mkdir(创建目录)
语法:
mkdir?[-p]?directory...
注意:不能创建两个相同的文件夹;子目录不能在父目录之前创建
-p(make parent,创建父目录):自动创建所需的父目录
?
?
?
rmdir(删除目录)
语法:
rmdir?[-p]?directory...
注意:只有空目录才能被删除;不能删除工作目录和根目录之间的任何目录
-p(delete parent,删除父目录):自动移除所有需要移除的父目录
比如:当前文件夹下有一下目录结构
1/2/3/4/5
并且所有文件夹中都没有文件,如果想一次全部移除,使用rmdir 1/是不行的,因为文件夹不为空,使用rmdir 1/2/3/4/5也只会删除一层目录
这时可以使用rmdir -p 1/2/3/4/5
?
?
?
mv(移动或重命名目录)
语法:
mv?directory target
当directory与target相同时,将重命名directory为target
mv也可以对文件进行操作(25章)
?
?
?
目录栈
pushd、popd、dirs(shell内部命令,Korn Shell中不可用)
命令动作dirs显示名称:home目录显示为~dirs -l显示名称:home目录显示为完整路径dirs -v显示名称,每行一个,并且有数字标识pushd?directory改变工作目录,将directory压入到栈中pushd +n改变工作目录:将目录#n移到栈顶popd改变工作目录:弹出栈顶popd +n从栈中移除目录#ndirs -c出当前工作目录外,移除栈中的全部目录注意:dirs使用选项时必须单独指定,不能连在一起
(从此以后,切换目录就方便多了。。。)
?
?
ls
语法:
ls?[-aCdFglrRs1] [name...]
ls默认按字母表顺序显示目录中文件名,关于环境变量LC_COLLATE说明参考第19章
export LC_COLLATE=C
-C:强制以列的形式显示
-1:每个文件名占一行的方式显示
-r:反序显示
-R:递归显示
-h(human-readable):更适合人类阅读,以合适的单位显示
-a:查看隐藏文件和隐藏文件夹
shell和vi/Vim使用的隐藏文件
文件名应用.bash_login登录文件:Bash.bash_logout注销文件:Bash.bash_profile登录文件:Bash.bashrc环境文件:Bash.cshrc环境文件:C-Shell、Tcsh.exrc初始化文件:vi、Vim.history历史文件:Bash、Korn Shell、C-Shell、Tcsh.login登录文件:C-Shell、Tcsh.logout注销文件:C-Shell、Tcsh.profile登录文件:Bash、Korn Shell、Bourne Shell.tcshrc环境文件:Tcsh.vimrc初始化文件:Vim?
?
-F:检查文件类型
标志含义空普通文件:非执行文件*普通文件:可执行文件/目录@符号链接(见第25章)|命名管道/FIFO(见第25章)?
?
使用颜色表示不同类型的文件
ls?--color[=always|=auto|=never] [name...]
下面3条命令等价
ls?--color=always
ls?--color=yes
ls?--color=force
如果使用ls?--color=yes | less,那么会看到一些用于生成颜色的”乱码“
?
不使用颜色,下面3条命令等价
ls?--color=never
ls?--color=no
ls?--color=none
?
仅当输出要在终端上显示时使用颜色,下面3条命令等价
ls?--color=auto
ls?--color=tty
ls?--color=if-tty
?
?
?
file?[name...]
检查文件类型,给出更大量的技术信息
来看看android4.0原生email下的文件
?
file *
Android.mk: ? ? ? ? ? ? ? ? ASCII English text
AndroidManifest.xml: ? ? ? ?XML ?document text
CleanSpec.mk: ? ? ? ? ? ? ? ASCII English text
MODULE_LICENSE_APACHE2: ? ? empty
NOTICE: ? ? ? ? ? ? ? ? ? ? ASCII English text
assets: ? ? ? ? ? ? ? ? ? ? directory
bin: ? ? ? ? ? ? ? ? ? ? ? ?directory
emailcommon: ? ? ? ? ? ? ? ?directory
gen: ? ? ? ? ? ? ? ? ? ? ? ?directory
proguard.flags: ? ? ? ? ? ? ASCII C++ program text
remove-exchange-support.sh: Bourne-Again shell script text executable
res: ? ? ? ? ? ? ? ? ? ? ? ?directory
src: ? ? ? ? ? ? ? ? ? ? ? ?directory
tests: ? ? ? ? ? ? ? ? ? ? ?directory
?
?
磁盘空间使用情况
ls -hs
-s(size):每个文件以KB为单位列出文件的大小,可以列出目录大小
-h(human-readable):更适合人类阅读,以合适的单位显示
?
?
du?[-achks] [name...]
默认只统计文件夹,不显示文件大小信息
-h(human-readable):更适合人类阅读,以合适的单位显示
-k:强制du以1KB作为单位
-s(sum,总和):只显示总和
-a(all,全部):显示文件信息(否则只显示文件夹信息)
-c(count,统计):在末尾显示总量
?
?
df(disk free-space,磁盘可用空间)
-h(human-readable):更适合人类阅读,以合适的单位显示
?
df -h
Filesystem ? ? ? ? ? ?Size ?Used Avail Use% Mounted on
/dev/sda1 ? ? ? ? ? ? ?47G ?5.0G ? 40G ?12% /
none ? ? ? ? ? ? ? ? ?1.9G ?240K ?1.9G ? 1% /dev
none ? ? ? ? ? ? ? ? ?1.9G ?1.4M ?1.9G ? 1% /dev/shm
none ? ? ? ? ? ? ? ? ?1.9G ?340K ?1.9G ? 1% /var/run
none ? ? ? ? ? ? ? ? ?1.9G ? ? 0 ?1.9G ? 0% /var/lock
/dev/sda7 ? ? ? ? ? ? 197G ?165G ? 23G ?89% /home
能看到分区情况?
?
看看我的手机空间使用情况(这里无法使用-h选项,默认就是-h,即使执行了\df也是如此,没有起过别名)
df
Filesystem ? ? ? ? ? ? Size ? Used ? Free ? Blksize
/dev ? ? ? ? ? ? ? ? ? 291M ? ?64K ? 291M ? 4096
/system ? ? ? ? ? ? ? ?787M ? 657M ? 129M ? 4096
/data ? ? ? ? ? ? ? ? ? ?1G ? 762M ? 371M ? 4096
/cache ? ? ? ? ? ? ? ? 118M ? ? 4M ? 114M ? 4096
/devlog ? ? ? ? ? ? ? ? 19M ? ?13M ? ? 5M ? 4096
/vendor/firmware/misc ? 199M ? ?21M ? 178M ? 4096
/vendor/firmware/adsp ? 199M ? ? 5M ? 194M ? 4096
/mnt/asec ? ? ? ? ? ? ?291M ? ? 0K ? 291M ? 4096
/mnt/obb ? ? ? ? ? ? ? 291M ? ? 0K ? 291M ? 4096
/app-cache ? ? ? ? ? ? ? 8M ? ? 0K ? ? 8M ? 4096
/data/secure/data ? ? ?291M ? ? 0K ? 291M ? 4096
/data/DxDrm/fuse: Permission denied
/mnt/sdcard ? ? ? ? ? ? ?7G ? ? 6G ? ? 1G ? 16384
/mnt/secure/asec ? ? ? ? 7G ? ? 6G ? ? 1G ? 16384
/mnt/asec/com.skyjetinter.chaoslite-1 ? ?50M ? ?48M ? ? 2M ? 4096
/mnt/asec/cn.buding.moviecoupon-1 ? ? 4M ? ? 2M ? ? 1M ? 4096
/mnt/asec/com.revo.sog-1 ? ?15M ? ?12M ? ? 3M ? 4096
?
quota -v
如果在共享系统上,可以使用此命令查看使用及限制情况
-v(verbose,详细):详细信息
?
注意:ls -s、du、df、quota几个程序以不同的方式估计存储空间的使用情况,所以结果可能会有些不同
?
?
?
文件系统中,空间以固定大小的组块进行分配
固定大小的组块称为块(block)
根据系统的不同,块的大小有512字节、1KB、2KB、4KB等几种
为文件所分配的最小磁盘空间数量就是一个块
磁盘存储空间也以固定大小的组块分配,称之为分配单元(allocation unit)或簇(cluster)
分配单元的大小取决于文件系统和存储设备。块大小为1K,分配单元为8K,只有一个字节的文件实际需要占用8K的磁盘空间
?
?
超块(superblock):特殊区域,存放与文件系统本身有关的关键信息
?
?
查看块大小方法
Linux:dumpe2fs
Solaris:fstyp -v
FreeBSD:dumpfs
?
?
df -h
Filesystem ? ? ? ? ? ?Size ?Used Avail Use% Mounted on
/dev/sda1 ? ? ? ? ? ? ?47G ?5.0G ? 40G ?12% /
none ? ? ? ? ? ? ? ? ?1.9G ?232K ?1.9G ? 1% /dev
none ? ? ? ? ? ? ? ? ?1.9G ?1.4M ?1.9G ? 1% /dev/shm
none ? ? ? ? ? ? ? ? ?1.9G ?340K ?1.9G ? 1% /var/run
none ? ? ? ? ? ? ? ? ?1.9G ? ? 0 ?1.9G ? 0% /var/lock
/dev/sda7 ? ? ? ? ? ? 197G ?165G ? 23G ?89% /home
?
比如我想查看/dev/sda1的情况?
?
sudo dumpe2fs /dev/sda1 | grep "Block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size: ? ? ? ? ? ? ??4096
?
?
?
通配符(wildcard)
注意与正则区别开,他们比正则简单
符号含义*匹配任何0个或多个字符构成的序列?匹配任何单个字符[list]匹配list中任何字符[^list]匹配不在list中的任何字符{string1|string2...}匹配其中一个指定的字符串?
预定义类和第20章说的一样
?
类含义类似于[:lower:]小写字母a-z[:upper:]大写字母A-Z[:alpha:]大小写字母a-zA-Z[:alnum:]大小写字母、数字a-zA-Z0-9[:digit:]数字0-9?
在android源码中查看packages和frameworks下的文件
?
ls {packages,frameworks}
frameworks:
base ?compile ?ex ?media ?opt ?support
?
packages:
apps ?experimental ?inputmethods ?providers ?wallpapers
?
?
?
ls -dltu
-l(long listing,长列表):长列表
-u:显示文件的访问时间(默认显示为最后修改时间)
-t:按时间顺序排序(最近到最远)
-r:按时间顺序排序(最远到最近)(与-t一起使用)
-d:显示目录本身信息,而不是目录里面的内容信息
?
ls -ltr
total 76
drwxr-xr-x ? 3 suzhaoqiang suzhaoqiang 4096 2012-07-24 12:31 abi
drwxr-xr-x ? 9 suzhaoqiang suzhaoqiang 4096 2012-07-24 12:32 bionic
drwxr-xr-x ? 5 suzhaoqiang suzhaoqiang 4096 2012-07-24 12:32 bootable
drwxr-xr-x ? 7 suzhaoqiang suzhaoqiang 4096 2012-07-24 12:32 build
-r--r--r-- ? 1 suzhaoqiang suzhaoqiang ? 87 2012-07-24 12:32 Makefile
drwxr-xr-x ? 8 suzhaoqiang suzhaoqiang 4096 2012-07-24 12:32 cts
第一行结果为被列举文件所使用的文件系统块总数量
结果最左边的字符为文件指示符,含义如下文件指示符
指示符含义-普通文件d目录l符号连接b特殊文件(块设备)c特殊文件(字符设备)p命名管道/FIFO涉及特殊文件时,Unix区分两种类型的设备
每次处理一个字节数据的设备(如终端)称为字符设备
每次处理固定数量字节数据的设备(如磁盘)称为块设备
?
?
?
tree(显示目录树)
语法:
tree?[-adfFilrst] [-L?level] [directory...]
下面5个选项与ls的选项作用相同
?
-r:反序显示
-a:查看隐藏文件和隐藏文件夹
?
-t:按时间顺序排序(最近到最远)
-F:检查文件类型
-s(size):每个文件以KB为单位列出文件的大小,可以列出目录大小
?
-d:只显示目录(也与ls的选项类似)
-f:显示完整路径名
-i:选项省略缩进
-L:指定深度
-l:跟随所有的符号连接
?
看看原生4.0下面的emailcommon目录结构,效果如下
?
packages/apps/Email/emailcommon$?tree -Fds
.
└── [ ? ? ? 4096] ?src
? ? ├── [ ? ? ? 4096] ?com
? ? │ ? └── [ ? ? ? 4096] ?android
? ? │ ? ? ? └── [ ? ? ? 4096] ?emailcommon
? ? │ ? ? ? ? ? ├── [ ? ? ? 4096] ?internet
? ? │ ? ? ? ? ? ├── [ ? ? ? 4096] ?mail
? ? │ ? ? ? ? ? ├── [ ? ? ? 4096] ?provider
? ? │ ? ? ? ? ? ├── [ ? ? ? 4096] ?service
? ? │ ? ? ? ? ? └── [ ? ? ? 4096] ?utility
? ? └── [ ? ? ? 4096] ?org
? ? ? ? └── [ ? ? ? 4096] ?apache
? ? ? ? ? ? ├── [ ? ? ? 4096] ?commons
? ? ? ? ? ? │ ? └── [ ? ? ? 4096] ?io
? ? ? ? ? ? │ ? ? ? ├── [ ? ? ? 4096] ?comparator
? ? ? ? ? ? │ ? ? ? ├── [ ? ? ? 4096] ?filefilter
? ? ? ? ? ? │ ? ? ? ├── [ ? ? ? 4096] ?input
? ? ? ? ? ? │ ? ? ? └── [ ? ? ? 4096] ?output
? ? ? ? ? ? └── [ ? ? ? 4096] ?james
? ? ? ? ? ? ? ? └── [ ? ? ? 4096] ?mime4j
? ? ? ? ? ? ? ? ? ? ├── [ ? ? ? 4096] ?codec
? ? ? ? ? ? ? ? ? ? ├── [ ? ? ? 4096] ?decoder
? ? ? ? ? ? ? ? ? ? ├── [ ? ? ? 4096] ?field
? ? ? ? ? ? ? ? ? ? │ ? ├── [ ? ? ? 4096] ?address
? ? ? ? ? ? ? ? ? ? │ ? │ ? └── [ ? ? ? 4096] ?parser
? ? ? ? ? ? ? ? ? ? │ ? ├── [ ? ? ? 4096] ?contenttype
? ? ? ? ? ? ? ? ? ? │ ? │ ? └── [ ? ? ? 4096] ?parser
? ? ? ? ? ? ? ? ? ? │ ? └── [ ? ? ? 4096] ?datetime
? ? ? ? ? ? ? ? ? ? │ ? ? ? └── [ ? ? ? 4096] ?parser
? ? ? ? ? ? ? ? ? ? ├── [ ? ? ? 4096] ?message
? ? ? ? ? ? ? ? ? ? └── [ ? ? ? 4096] ?util
?
30 directories
?
?
一些图形文件管理器,大家可自行尝试
File Runner
Gentoo
Nautilus(Gnome提供)
Konqueror(KDE提供)
XFE[X File Explorer]
基于文本的文件管理器
FDclone(日本版的FD,一种DOS文件管理器)
Midnight Commander(经典Norton Commander的兼容产品)
Vim(基于vi命令的文件管理器)
?
?
?
?
?
转贴请保留以下链接
本人blog地址
http://su1216.iteye.com/
http://blog.csdn.net/su1216/