Linux文件管理命令介绍
Linux的文件管理命令,包括ls,cd,mkdir,rmdir,mv,cp,rm,cat,tac,head,more,less,tail,下面分别对每一个命令的使用方法具体介绍
- ls
ls [OPTION]… [FILE]… 用于展示目录内容
-a 展示目录所有文件,包括以”.”开头的隐藏文件
-l 显示完整的文件属性信息
-h 将文件大小转换成易读的格式,例如K,M,G,需要和-l选项联合使用
-t 按照时间顺序由后到前排列文件
-r 在排序的时候逆序排列
-S 排序的时候按照文件大小排序
-i 显示文件的inode号
-R 递归展示文件夹下所有子目录内容
示例:
(1)显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
ls /var|grep -E "^l.*[[:digit:]].*[[:lower:]]$"
(2)显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
ls /etc|grep -E "^[[:digit:]].*[^[:digit:]]$"```
(3)显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
ls /etc|grep -E "^[^[:alpha:]][[:alpha:]]"
- cd
cd [-L|-P ] [dir] 由当前目录切换到目的目录
-P 如果目标目录是符号链接,直接切换到符号链接指向的目录
-L 如果目录目录是符号链接,直接切换到符号链接代表的目录,而非直接指向的目录
cd - 返回进入此目录前的一个目录
cd 返回用户家目录
cd ~USERNAME 进入USERNAME用户的家目录
cd .. 返回上级目录
cd !$ 将上个命令的参数作为cd的参数使用 - mkdir
mkdir [OPTION]… DIRECTORY… 创建文件夹
-p 如果父目录不存在,自动创建
示例:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
mkdir /tmp/{{a,b}_{c,d}}
(2)、创建/tmp/mylinux目录下的:
mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var
├── lock
├── log
└── run
mkdir -p /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,s{bin,ys},tmp,usr/local/{s,}bin,var/{lock,log,run}}
- rmdir
rmdir [OPTION]… DIRECTORY… 删除空文件夹
-p 删除文件夹和它的所有上级文件夹
-v 输入详细的处理每个文件夹的过程 - mv
mv src dest 移动目录的时候不需要额外选项
-f 强制覆盖
-t -t后面跟随的是目标地址,所有文件都移动到-t后的目录中 - cp
cp [OPTION]… SOURCE… DIRECTORY 复制一个或多个文件到指定目录
cp [OPTION]… -t DIRECTORY SOURCE… 复制一个或多个文件到参数-t后的指定目录中
-P 当源文件为链接文件时,复制后的为链接文件,而非链接指向的文件
-L 当源文件为链接文件时,复制后为链接指向的文件
-r 递归复制文件夹
示例:
(1)复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
cp -r /etc/p*[^[:digit:]] /tmp/mytest1
(2)复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
cp /etc/*.d /tmp/mytest2/
(3)复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
cp -r /etc/[l,m,n]*.conf /tmp/mytest3/
- rm
rm [OPTION]… FILE… 删除文件或者文件夹
-r 删除文件夹
-f 强制删除
-i 每次删除时提示 - cat
cat [OPTION]… [FILE]… 将文件首尾相接的输出到标准输出
-E 显示行尾符$s
-n 显示行号
-T 将tab符号显示为^I tac
tac [OPTION]… [FILE]… 文件首尾相接的以反序的方式输出到标准输出head
head [OPTION]… [FILE]… 输出文件的第一部分到标准输出
-n K 默认输出10行,指定后输出K行,K前有“-”时,输出除最后K行的每一行more
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [file …] 用于在crt上查看文件,不能向前翻页
+n 从第n行开始显示
-n 定义屏幕大小n行
常用操作
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
q 退出moreless
less 用于查看文件,在more的基础上,支持向前翻页,更加灵活。
Ctrl+F 向下滚动一屏
Ctrl+B 向上滚动一屏
/字符串:向下搜索”字符串”的功能
?字符串:向上搜索”字符串”的功能
u 向前滚动半页
d 向后翻半页
h 显示帮助界面
q 退出less 命令tail
tail [OPTION]… [FILE]… 输出文件的最后一部分
-f 随着文件增长,实时输出文件末尾部分
-n 输出最后K行,或者-n +k,输出第K行开始的内容
bash工作特性
命令执行返回状态
命令运行后,会有一个返回状态,存入变量$?,为0说明命令执行成功,为其他值(1-255),说明命令执行失败。
示例:
[bhps@test test]$ ls
css.txt check.sh result.txt
[bhps@test test]$ echo $?
0
[bhps@test test]$ lss
-bash: lss: command not found
[bhps@test test]$ echo $?
127
[bhps@test test]$
命令行展开
- ~ 自动展开为当前用户的家目录
- {} 可承载一个以逗号分割的列表,并可以将其展开为多个路径
示例:
mkdir test/{a,b,c,d}
命令补全
输入字符串后,按tab键,可以实现命令补全,如匹配到多个命令,则没有输出,再按一次tab键,会显示所有匹配到的命令。
收到用户补全的请求后,会进行命令查找:
- 搜索内建命令
- 根据环境变量PATH中的目录,从左到右的查找匹配的命令
[bhps@test test]$ mo
modem-manager modinfo module modutil mount mount.fuse mount.nfs mountpoint mount.tmpfs
modifyrepo modprobe modulecmd more mount.cifs mount.glusterfs mount.nfs4 mountstats mount.vmhgfs
目录补全
在输入目录字符串的时候,按tab建,在给定起始路径下,逐一匹、匹配该路径下的每一个文件,如果只有一个匹配到,直接补全,如果匹配多个,需要再按一次tab来显示匹配到的项
[bhps@test ~]$ cd t
test/ test.sh t.sh t.txt
文件的元数据
- 元数据概念
文件系统由实际存储数据的块和元数据组成,元数据包括了块位图,inode(包括inode number,属主,属组,权限,创建时间,修改时间,更改时间),inode位图 - 元数据查看
stat filename 可以查看文件的元数据,ls -il 也可以查看文件的部分元数据(不能查看最后访问时间和更改时间)
[bhps@test test]$ stat cbss.txt
File: `cbss.txt'
Size: 888861 Blocks: 1744 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 1720643 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 507/ bhps) Gid: ( 0/ root)
Access: 2011-01-01 00:00:00.000000000 +0800
Modify: 2011-04-01 00:00:00.000000000 +0800
Change: 2018-08-25 16:38:39.172434242 +0800
- 元数据修改
- touch
touch [OPTION]… FILE… 用于修改文件时间戳
-a 修改文件访问时间
-c 不创建文件
-m 修改文件修改时间
-d 指定改成的时间,而不用当前时间
示例
(1)在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
##bash工作特性
touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`
(2)修改文件的修改时间
[bhps@test test]$ stat cbss.txt
File: `cbss.txt'
Size: 888861 Blocks: 1744 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 1720643 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 507/ bhps) Gid: ( 0/ root)
Access: 2011-01-01 00:00:00.000000000 +0800
Modify: 2018-08-25 16:30:08.925434719 +0800
Change: 2018-08-25 16:38:15.196434346 +0800
[bhps@test test]$ touch -m -d 20110401 cbss.txt
[bhps@test test]$ stat cbss.txt
File: `cbss.txt'
Size: 888861 Blocks: 1744 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 1720643 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 507/ bhps) Gid: ( 0/ root)
Access: 2011-01-01 00:00:00.000000000 +0800
Modify: 2011-04-01 00:00:00.000000000 +0800
Change: 2018-08-25 16:38:39.172434242 +0800
命令别名和命令引用
命令别名
- alias
没有参数或者使用参数-p的时候,显示所有的别名
alias name 显示该名称的别名
alias name=value 为name赋值
示例
[bhps@test test]$ alias
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
命令的引用
命令的引用方式有两种
- 反引号引用,
COMMAND
- 美元符号引用命令,$(COMMAND)
[bhps@test test]$ ls -l `ls cbss.txt`
-rw-r--r-- 1 bhps root 888861 Apr 1 2011 cbss.txt
[bhps@test test]$ ls -l $(ls cbss.txt)
-rw-r--r-- 1 bhps root 888861 Apr 1 2011 cbss.txt