ls
ls [OPTION]... FILE...
List 显示目标列表
-a
:显示所有文件及目录-l
:长格式显示-h
:人性化显示大小-d
:仅显示目录名,而不显示目录下的内容列表-A
:显示除“.”和’..’外的所有-i
:显示inode节点号-R
:递归(recursive)显示
1 | ls -ahil /root |
pwd
pwd [OPTION]...
Print Working Directory 显示当前所在工作目录
$PWD
:环境变量用来记录当前目录$OLDPWD
:记录上次目录,如果没切换时则不存在
cd
Change Diretory 切换目录
- cd :进入用户主目录
- cd ~ :进入用户主目录
- cd - :返回进入此目录之前所在的目录
- cd .. :返回上级目录
- cd ../.. :返回上两级目录
cp
cp [OPTION]... SRC DEST
复制文件
-r
:递归处理,将指定目录下的所有文件与子目录一并处理-i
:覆盖既有文件之前先询问用户-f
:强行复制文件或目录,不论目标文件或目录是否已存在-p
:保留源文件或目录的属性-a
:归档复制,常用于备份
1 | # 将/home/liu目录下的所有文件目录包括隐藏文件,一同复制到/tmp目录下,将 '.' 换成 '* '时将不复制隐藏文件 |
mv
mv [OPTION]... SOURCE... DIRECTORY
移动或重命名文件目录
1 | mv /test/* . # 移动/test/目录下的所有文件到当前目录 |
rm
rm [OPTION]... FILE...
删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变,使用时必须小心
-f
:强制删除文件或目录-i
:删除已有文件或目录之前先询问用户-r或-R
:递归处理,将指定目录下的所有文件与子目录一并处理-d
:直接把欲删除的目录的硬连接数据删除成0,删除该目录--preserve-root
:不对根目录进行递归操作-v
:显示指令的详细执行过程
1 | rm -rf /test/aa/* # 删除/test/aa/目录下的所有文件目录,但不包括隐藏文件 |
touch
touch [OPTION]... FILE...
修改文件时间或者创建文件
-a
:修改访问时间-m
:修改文件修改时间-d DTEATE
:设定时间与日期,可以使用各种不同的格式-r FILE
:把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同-t STAMP
:设定时间戳,包括atime,mtime,时间格式: [[CC]YY]MMDDhhmm[.SS](年月日时分秒)-c
:不创建任何文件
1 | touch a.txt # 创建文件 |
mkdir
mkdir [OPTION]... DIRECTORY...
创建目录
-m
:指定权限-p
:递归创建多级目录-v
:显示创建过程信息
1 | mkdir -m 755 /tmp/test |
mktemp
mktemp [OPT] [TEMPLATE]
创建临时目录或文件
-d
:创建目录-u
:不产生实际目录或文件,主要用于测试是否可以创建
1 | mktemp /tmp/mytemp.XXX # X至少3个以上,生成时用随机字母代替 |
file
file [OPTION]... FILE...
检测文件类型,多个文件之间用空格
-b:列出结果不显示文件名
1 | file /usr/bin/passwd |
stat
stat [OPTION]... FILE...
显示文件状态信息,包括大小、节点号、权限、访问修改时间等元数据内容
-t
:以简洁方式输出信息-L
:支持符号连接-f
:显示文件系统状态而非文件状态
1 | stat /etc/passwd |
tree
tree [OPTION]... Directory...
以树形方式显示指定目录下的所有文件,包括子目录下的文件
-a
:所有文件以目录树的格式显示,默认-d
:所有的目录以树状形式显示-g
:列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码-L NUM
:显示目录层级数-l
:当显示的目录或文件问链接是,则同时显示源文件-p
:显示文件或目录的权限-s
:显示文件或目录大小-u
:显示文件或目录的所属主
1 | tree /etc/rc.d/ |
which
which [options] [--] programname [...]
查找可执行的程序文件,并且只能在环境变量$PATH
定义的目录中查询
1 | which pwd |
whereis
查找程序文件文件的位置、文件的源代码、文件的说明手册
1 | whereis cat |
ln
硬链接:ln [参数] 源文件 目标文件
软链接:ln -s [源文件或目录] [目标文件或目录]
1 | # 为log2.log创建硬链接ln2,log2.log与ln2的各项属性相同 |
locate
locate [OPTION]... PATTERN...
查找文件或目录,其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb
,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库,但比较消耗资源
-b
:只匹配基名-c
:统计数量
1 | locate -bc issue |
find
find [OPTION] [查找起始路径] [查找条件] [处理动作]
查找起始路径:默认当前目录,可以多个路径
处理动作:如删除等,默认输出至屏幕
查找条件
-name PATTERN
:根据文件名查找(-iname不区分大小写),支持glob通配符-user USERNAME
:所属用户(-nouser 没有所属用户)-group GROUP
:所属组 (-nogroup 没有所属组文件)-type TYPE
:类型(f, d, l, b, c, p, s)-size [+|-] #UNIT
(单位k, M, G)-empty
:文件为空而且是一个普通文件或目录-atime [+|-] #
:访问时间,以天为单位(-mtime修改, -ctime改变)-amin [+|-] #
:(-mmin, -cmin)以分钟为单位-executable|-readable|writable
:可执行/读/写-samefile FILE
:查找与FILE文件的硬链文件-perm [/|-]MODE
:按权限查找,权限表示如下
644
:指定644权限/755
:任一类用户任一位(rwx)合即可==>”或””-222
:每一类用户权限每一位(rwx)都同时符合==>”与”u=rw,g=r,o=r
:等同644
处理动作
-ls
:类似对查找的结果使用ls -l命令(如前条件为或关系,需加括号)-fls FILE
:ls -l的结果写入文件-delete
:删除找到的文件-ok COMMAND {} \;
:对每个结果执行命令,每次需要确认-exec** COMMAND {} **\;
:对每个结果统一执行命令,无需确认说明:
;
为find做标记,由find来解析,确保参数是传递给find还是COMMAND,由于分号在bash有特殊意义所以需要转义,{}
表示find找到的结果,COMMAND常见有cp, rm等
-a
:与,默认可省-o
:或-not
:非,也可用!
- 大小
#UNIT:(#,#-1]
-#UNIT:[0,#-1]
+#UNIT:(#,+oo)- 时间(当前时间前,正整数)
#:[#,#-1)
-#:(#,0]
+#:(oo,#-1]
1 | # 当前目录下以file开头后接至少一个字母数字的文件 |
xargs
一个非常神奇但容易被忽略的命令,find..xargs 效率比 find..exec 高出很多
-d
: 指定分割符,默认是空格-n
: 命令在执行的时候一次用的个数,默认是用所有的-L
: 从标准输入一次读取 num 行送给命令执行-0
: 如文件名可能包含空格这样就不适合处理,此参数表示用 null 当作分隔符-i
: 将每个参数一个一个的传递过去,用 {} 代替-I
: 指定赋值,-i 默认是 {}-p
: 每次执行前询问-P
: 最大进程数,默认 1 个进程-t
: 打印出执行的命令再执行-a
: 从指定文件中读入作为输入-E
: 指定结束位置,只有在xargs不指定-d
的时候有效,如果指定了则不起作用
1 | echo 1 2 3 | xargs -t mkdir |
dd
转换或复制文件,是一个较为底层级别的复制
if=/PATH_SRC
:源of=/PATH_DEST
:目标bs=#[MGTPEZY]
:复制单元大小,不加单位为字节数count=#
:复制几个bsseek=#
: 跳过多少of的空间skip=#
: 跳过多少if的空间
1 | dd if=/dev/sda of=/dev/sdb # 拷贝整个磁盘 |
gzip
gzip file
gunzip file.gz
zcat file.gz
将文件压缩为.gz格式,只能压缩文件,压缩后删除原文件,zcat
不解压查看文本内容
-d
: 解压,同gunzip-#
: 1-9,指定压缩比,默认是6-c
: 将压缩结果输出至标准输出
bzip2
bzip file
bunzip file.bz2
bcat file.bz2
将文件压缩为.bz2格式,压缩比高于.gz,只能压缩文件,默认压缩后删除原文件,bcat
不解压查看文本内容
-d
: 解压,同bunzip-#
: 1-9,指定压缩比,默认是6-k
: 压缩时保留原文件
xz
xz file
unxz file.xz
xzcat file
将文件压缩为.xz格式,压缩比高于.bz2,只能压缩文件,默认压缩后删除原文件,xzcat
不解压查看文本内容
-d
: 解压,同unxz-#
: 1-9,指定压缩比,默认是6-k
: 压缩时保留原文件
zip
zip file.zip file1 file2...
unzip file.zip
zip是种既归档又压缩的工具,可压缩目录或多个文件,默认不会删除原文件
tar
tar [OPTION] FILE...
归档工具(archive),同时可以调用压缩归档文件为指定压缩格式
-c
: 创建归档文件-x
: 展开归档-f FILE.tar
: 操作的归档文件-v
: 显示操作过程-t
: 不展开归档,直接查看归档了哪些文件-p
: 保留备份数据的原本权限和属性-r
: 向tar包(未压缩)中添加文件--xattrs
: 归档时,保留文件的扩展属性信息
-zcvf
: 归档并调用gzip压缩-jcvf
: 归档并调用bz2压缩-Jcvf
: 归档并调用xz压缩-xf
: 解压文件,默认会自动识别各种压缩格式-C /PATH
: 指定解压路径
备注:tar命令的选项前的’-‘可以省略
1 | tar zcvf test.tar.gz file1 file2... # 压缩多个文件,可以为目录 |
rz/sz
使用SecureCRT或者Xshell等客户端工具连接Linux的上传下载工具,软件包为lrzsz
- 上传
rz
(服务器端recieve,相当于上传) - 下载
sz
备注
access time
是文档最后一次被读取的时间。因此阅读一个文档会更新它的access时间,但它的modify时间和change时间并没有变化。cat、more 、less、grep、sed、tail、head这些命令都会修改文件的access时间。modify time
是文本本身的内容发生了变化。[文档的modify时间也叫时间戳(timestamp).] ls命令看到的是modify time。用vi等工具编辑一个文件保存后,modify time会被修改。change time
是文档的索引节点(inode)发生了改变(比如位置、用户属性、组属性等)。chmod, chown,create,mv等动作会将Linux文件的change time修改为系统当前时间。硬链接
:通过索引节点来进行的连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(InodeIndex)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件才会被真正删除。以文件副本的形式存在。它会在你选定的位置上生成一个和源文件大小相同的文件,但不占用实际空间。不允许给目录创建硬链接,只有在同一个文件系统中才能创建软链接
:一个特殊的文件,它的内容不是真正的数据,而是指向另一个文件(链接目标)的路径名。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。对符号链接的大部分操作,包括打开、读、写等,都被传递给其链接目标,操作真正作用在链接目标上,另外一些操作,如删除等则作用在符号链接本身。以路径的形式存在。类似于Windows操作系统中的快捷方式,可以对目录进行链接。必须使用绝对路径,软链接可以对一个不存在的文件名进行链接,可以跨文件系统