linux上的文件管理类命令
文件描述符:在linux中,内核通过inode来找到每个文件,但一个文件可以被许多用户同时打开或一个用户同时打开多次。这就有一个问题,如何管理文件的当前位移 量,因为可能每个用户打开文件后进行的操作都不一样,这样文件位移量也不同,当然还有其他的一些问题。所以linux又搞了一个文件描述符(file descriptor)这个东西,来分别为每一个用户服务。每个用户每次打开一个文件,就产生一个文件描述符,多次打开就产生多个文件描述符,一一对应, 不管是同一个用户,还是多个用户。该文件描述符就记录了当前打开的文件的偏移量等数据。所以一个i节点可以有0个或多个文件描述符。多个文件描述符可以对 应一个i节点。
常用的文件管理命令:cd、mkdir、touch、pwd、ls、alias、cat、more、less、tail、split、cut、vi、grep、sed、awk、wc、mv、cp、rm、echo、ln、tar、tar、(un)zip、rpm、which、whereis、locate、find、ldd、make、gcc、source、ulimit、chgrp、chown、chmod、cut 、
Cd:切换目录,例:cd /home/webuser;
Mkdir:创建目录,mkdir /zlm 根目录下创建zlm目录
Touch:创建文件夹,touch zlm 当前目录创建zlm文件夹,d参数可使用指定的日期或时间
Pwd:显示当前目录路径;
Ls:显示指定目录下的内容,缺省为当前目录,-a参数显示所有文件(包括隐藏文件),-l参数显示文件的详细信息;
Ll:显示指定目录下的详细内容,-d可以指定对应的文件的详细信息。
Alias:起别名,例:alias ll='ls -l --color=auto';
Cat、more、less、tail都是查看文本类文件内容:
cat: 会一次输出所有内容到标准输出上,常和重定向结合使用,Cat还有合并文件的功能,例:cat file1 file2 > file;
more:一屏显示不完成时会暂停等待用户操作,按空格下翻一屏,按回车向下一行,直到文本结束或者按q键结束;
Less和more:相似,不同的是less可以向后翻页;
Tail :显示文件的末尾行,缺省显示最后10行,-n参数可以设定显示的行数,-f参数当文件内容发生增加时自动显示。
Split:分割文件
例:split -b 2000m centos.iso centos.iso_part_ 会把centos.iso按每个2G分割成多个文件,centos.iso文件不会消失,会产生centos.iso_part_aa、centos.iso_part_ab之内的文件。
Cut:用来从标准输入或文本文件中剪切列或域。-c参数指定剪切的字符,-f指定剪切的域,-d指定分隔符。
Vi/Vim:功能强大的文本编辑器,分编辑模式、命令模式和末行模式。编辑模式按ESC键切换到命令模式。命令模式下i键光标签插入,a键光标后插入,o光标下一下新建一行,G到文章末,1G到文章头。非编辑模式下按冒号进入模式,常用操作有 w保存,wq保存并退出,q退出,q!强制退出,set nu显示行号等等。Vim编辑文档时有的会有颜色区分。
Grep:强大的文本搜索工具,支持正则表达式。和其他语言类似:^开头,$结尾,*零个或者多个,+一个或者多个,|多个匹配,[ ]范围匹配等等。例:ps -ef|grep java。
Sed:常用于替换文本内容。
Awk:能完成grep和sed完成的所有功能。
Wc:统计字节、字符、行。-c参数统计字节,-w统计字符,-l统计行。
例:ps -A|grep java|wc -l 统计当前系统中运行了几个java程序。
Mv:剪切或重命名。
Cp:复制。常用参数-i 有同名文件时交互式提示用户,-r拷贝目录时递归下面的子目录,-f同名文件时不提示直接覆盖(和-i相反),-p拷贝时将权限和修改时间连带拷走(很常用,因为linux下权限控制比较严格)。有时候在部署web应用的时候需要覆盖大量的文件,加了-f参数还是会提示确实(一个个按y是很恼火的),这是因为我们用的cp命令不是原生态的,在主目录下有个.bashrc文件中给它起了别名。
Rm:删除。-r和-f参数cp。
Echo:回显。可以结合特殊符号$、``等使用。
例:xxx=123; echo $xxx 将会打印出123;
Echo env
将会打印出系统的环境变量。
Echo 123 > /zlm 将123输入到zlm文档中
Ln:建立硬链接。-s参数建立软链接。
Tar:可用于备份或打包压缩。常用参数:c 压缩,x解压缩,r追加文件到已存在的档案文件末尾,z 调用gzip来压缩/解压归档文件,v显示处理详细信息,p保留文件原来的权限,f使用档名(后立即接档名),j调用bzip2压缩/解压文件。
Tar:常用解压文件并打包目录
例:tar -zxvf zlm.tar /
Zip:常用系统通用的压缩格式。常用参数:r 包含所有子目录和文件,q安静模式(不现实详细过程)。例:zip -q -r tomcat.zip tomcat/ 。
Unzip:解压缩zip格式归档包。常用参数:l查看压缩包中内容。
例:unzip -l tomcat.zip 打印tomcat.zip中的内容;
unzip tomcat.zip 解压缩tomcat.zip到当前目录。
Rpm:相当于windows下的添加/删除程序,是用来管理软件包的。增删改查:i 安装(install)、q 查询(query)、e 删除(erase)、U升级(upgrade);通用参数:v 打印详细信息,h打印hash值与参数v一起使用;
例:rpm -ivh vsftpd* 安装ftp
Which:从环境变量$PATH中搜索可执行文件。
Whereis:搜索在数据库里的数据。参数:-b 二进制(binary)格式,-s源文件等。
Locate:也是从数据库中搜索,但可以通过“部分文件名“搜索,也就是名称记不全的时候很方便。依赖的DB是/var/lib/mlocate/mlocate.db,由于系统的更新频率不一致,有可能新增的查不到。
Find:最强大的搜索命令,但也最耗硬盘资源,可以配合各种通配符使用。
例:find / -name tomcat* 查找所有以tomcat打头的文件;
find . -type d -mtime +10 查找当前目录下10天前的目录;
find ! -name run.sh 查找当前目录和子目录下名字不是run.sh的文件。
Ldd:和其他命令不一样,它实际是个shell脚本。是用来查看程序运行所需的共享库,常用来解决程式因缺少某个库文件而不能运行的一些问题。
Make:编译程序的命令,源码安装时会用到。常用形式:make 编译,make clean 删除由make产生的文件,make check测试刚编译的软件(有可能不支持),make distclean删除./configure产生的文件,make install 安装已编译的程序并复制文件到prefix指定的目录中,make installcheck检测安装的程序和库文件(有可能不支持)。
Gcc:编译代码,其中会有预处理、汇编、编译并链接形成可执行文件这些步骤。例:
gcc test.c -o test ,将test.c变成可执行文件test,多个文件一起编译用空格分隔。
Source:点(.)命令,使刚修改的初始化文件不用重新登陆shell就生效,还有一个用途是把文件内容当做shell来执行(编译内核)。
Ulimit:设置shell启动进程的资源限制。常用参数: -a 显示当前所有限制,-n设置打开的文件描述符的,-s设置stack的大小(段错误segmentation fault)。
Inode: i节点是指对文件的索引。如一个系统,所有文件是放在磁盘或flash上,就要编个目录来说明每个文件在什么地方,有什么属性,及大小等。就像书本的目 录一样,便于查找和管理。这目录是操作系统需要的,用来找文件或叫管理文件。许多操作系统都用到这个概念,如linux, 某些嵌入式文件系统等。当然,对某个系统来说,有许多i节点。所以对i节点本身也是要进行管理的。
Chgrp:变更文件或目录的所属群组,
chgrp root /zlm 将zlm文件的所属组修改成root
Chown:变更文件或目录的所有者
chown zlm /zlm 将zlm文件的所有者修改zlm
d [rwx] [r-x] [r-x]. 144 root root
文 所----所---其----------所---所
件 有----有---它----------有---属
类 者----组---人----------者--- 组
型
Chmod:修改文件或目录的权限
r——读权限------:4----u:所有者
w——写权限-----:2----g:所有组
x——执行权限---:1----o: 其它人
-——没有权限---:0
文件内的管理:
插入命令
a 在光标后附加文本
A 在本行行末附加文本
i 在光标前插入文本
I 在本行开始插入文本
o 在光标下插入新行
O 在光标上插入新行
定位命令
h 方向左键
j 方向下键 H 移至屏幕上端
k 方向上键 M 移至屏幕*
l 方向右键 L 移至屏幕下端
$ 移至行尾
0 移至行首
:set nu 设置行号
:set nonu 取消行号
gg 到第一行
G 到最后一行
nG 到第n行
:n 到第n行
删除命令
x 删除光标所在的字符
nx 删除光标所在的n个字符
dd 删除光标所在行
ndd 删除光标所在n行
dG 删除光标所在行的末尾内容
D 删除删除光标所在处行尾内容
:n,nd 删除指定范围
复制和剪切命令
yy、Y 复制当前行
nyy、nY 复制当前行一下n行
dd 剪切当前行
ndd 剪切当前行一下n行
p、P 粘贴在当前光标所在行下或行上
替换和取消命令
r 取代光标所在处字符
R 从光标所在处开始替换字符,按Esc结束
u 取消上一步操作
搜索和替换命令
/string 向前搜索指定字符串、搜索时忽略大小写:set ic
n 搜索制定字符串的下一个出现位置
:%s/old/new/g 全文替换指定字符串
:n1,n2s/old/new/g 在一定范围内替换指定字符串
保存和退出命令
:w 保存修改
:w new_filename 另存为指定文件
:wq 保存修改并退出
ZZ 快捷键,保存修改并退出
:q! 不保存修改退出
:wq! 保存修改退出(文件所有者和忽略文件的只读书性)