Linux-文件目录管理
基础命令
命令格式
命令 [选项] [参数]
选项:(可以有0个或多个)
短选项:-
多个选项可以组合: -a -b = -ab
长选项:--
长选项通常不能组合
参数:命令的作用对象(可以有0个或多个)
短选项:
[root@localhost ~]# rm -r -f *
[root@localhost ~]# rm -rf * //两种意思相同
长选项:
[root@localhost ~]# ls --all
. .bash_history .bash_profile .cshrc
.. .bash_logout .bashrc .tcshrc
[root@localhost ~]# ls --inode
[root@localhost ~]# ls --inodeall
ls: unrecognized option '--inodeall'
Try 'ls --help' for more information. //长选项不能组合
目录管理
ls
列出目录内容
[root@localhost ~]# ls
anaconda-ks.cfg
-l 长格式
[root@localhost ~]# ls -l
total 4
-rw-------. 1 root root 1184 Nov 13 20:10 anaconda-ks.cfg
cd 切换目录
pwd 查看当前所在目录路径
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /
[root@localhost /]# pwd
/
mkdir
创建目录
-p 创建目录时若父目录不存在则自动创建
[root@localhost ~]# mkdir a/b/c/d
mkdir: cannot create directory ‘a/b/c/d’: No such file or directory
[root@localhost ~]# mkdir -p a/b/c/d
[root@localhost ~]# ls a
b
[root@localhost ~]# ls a/b/
c
[root@localhost ~]# ls a/b/c/
d
-v 显示目录创建过程
[root@localhost ~]# mkdir -p -v a/b/c/d
mkdir: created directory 'a'
mkdir: created directory 'a/b'
mkdir: created directory 'a/b/c'
mkdir: created directory 'a/b/c/d'
创建100个纯数字目录:
[root@localhost ~]# mkdir {1..100}
[root@localhost ~]# ls
1 14 2 25 30 36 41 47 52 58 63 69 74 8 85 90 96
10 15 20 26 31 37 42 48 53 59 64 7 75 80 86 91 97
100 16 21 27 32 38 43 49 54 6 65 70 76 81 87 92 98
11 17 22 28 33 39 44 5 55 60 66 71 77 82 88 93 99
12 18 23 29 34 4 45 50 56 61 67 72 78 83 89 94
13 19 24 3 35 40 46 51 57 62 68 73 79 84 9 95
tree
查看目录树(需要先安装)
[root@localhost ~]# mount /dev/cdrom /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@localhost ~]# rpm -ivh /mnt/BaseOS/Packages/tree-1.7.0-15.el8.x86_64.rpm
warning: /mnt/BaseOS/Packages/tree-1.7.0-15.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:tree-1.7.0-15.el8 ################################# [100%]
[root@localhost ~]# mkdir -p a/{b/{e,f},c,d/{j,k}}
[root@localhost ~]# ls
a anaconda-ks.cfg
[root@localhost ~]# tree a
a
├── b
│ ├── e
│ └── f
├── c
└── d
├── j
└── k
7 directories, 0 files
文件管理
touch
创建一个空文件,touch还有一个作用是修改文件的时间戮
[root@localhost ~]# touch a abc b
[root@localhost ~]# ls
a abc b
创建100个文件:
[root@localhost ~]# touch file{1..100}
[root@localhost ~]# ls
file1 file2 file30 file41 file52 file63 file74 file85 file96
file10 file20 file31 file42 file53 file64 file75 file86 file97
file100 file21 file32 file43 file54 file65 file76 file87 file98
file11 file22 file33 file44 file55 file66 file77 file88 file99
file12 file23 file34 file45 file56 file67 file78 file89
file13 file24 file35 file46 file57 file68 file79 file9
file14 file25 file36 file47 file58 file69 file8 file90
file15 file26 file37 file48 file59 file7 file80 file91
file16 file27 file38 file49 file6 file70 file81 file92
file17 file28 file39 file5 file60 file71 file82 file93
file18 file29 file4 file50 file61 file72 file83 file94
file19 file3 file40 file51 file62 file73 file84 file95
rm
删除文件,删除命令默认会提示是否需要删除
-r 递归删除,删除目录时必须使用此选项
-f 强制删除,不询问
[root@localhost ~]# rm -rf * //删除所有文件
[root@localhost ~]# ls
cp
复制文件,一个文件到一个文件,多个文件到一个目录
//一个文件到一个文件:
[root@localhost ~]# cp anaconda-ks.cfg abc
[root@localhost ~]# ll
total 8
-rw-------. 1 root root 1184 Nov 14 18:14 abc
-rw-------. 1 root root 1184 Nov 14 18:13 anaconda-ks.cfg
//多个文件到一个目录:
[root@localhost ~]# touch {1..10}
[root@localhost ~]# mkdir 11
[root@localhost ~]# cp {1..10} anaconda-ks.cfg 11
[root@localhost ~]# ls 11
1 10 2 3 4 5 6 7 8 9 anaconda-ks.cfg-r
-r 递归拷贝,拷贝目录时必须使用此选项
[root@localhost ~]# mkdir 123
[root@localhost ~]# cp 123 456
cp: -r not specified; omitting directory '123' //拷贝目录需要使用-r
[root@localhost ~]# cp -r 123 456
[root@localhost ~]# ll
total 8
drwxr-xr-x. 2 root root 6 Nov 14 18:15 123
drwxr-xr-x. 2 root root 6 Nov 14 18:15 456
-rw-------. 1 root root 1184 Nov 14 18:14 abc
-rw-------. 1 root root 1184 Nov 14 18:13 anaconda-ks.cfg
stat
显示文件或文件系统的状态
[root@localhost ~]# touch 123
[root@localhost ~]# stat 123
File: 123
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 101211984 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-11-14 18:11:19.787085296 +0800
Modify: 2020-11-14 18:11:19.787085296 +0800
Change: 2020-11-14 18:11:19.787085296 +0800
Birth: -
mv
移动文件(在同一个位置就是重命名,放到另外一个位置就是剪切)
[root@localhost ~]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 14 19:00 123
[root@localhost ~]# mv 123 456
[root@localhost ~]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 14 19:00 456
[root@localhost ~]# mv 456 /opt
[root@localhost ~]# ll /opt
total 0
-rw-r--r--. 1 root root 0 Nov 14 19:00 456
如何获取命令帮助
//内部命令
help COMMAND
//外部命令
COMMAND --help
//在线文档
info COMMAND
//命令手册 manual
man COMMAND
//文档
/usr/share/doc
whatis COMMAND //用于查看COMMAND出现在man的哪一章节中。
//man是分章节的,以下是每一章节的内容介绍:
1 用户命令(/bin,/usr/bin,/usr/local/bin);
2 系统调用;
3 库调用;
4 特殊文件(设备文件);
5 文件格式(配置文件 的语法);
6 游戏;
7 杂项(Miscellaneous);
8 管理命令(/sbin,/usr/sbin,/usr/local/sbin)
//man手册注意事项:
[] //可选
<> //必选
... //可以出现多次
| //多选一
{} //分组
NAME //命令名称及功能简要说明
SYNOPSIS //用法说明,包括可用的选项
DESCRIPTION //命令功能的详尽说明,可能包括每一个选项的意义
OPTIONS //说明每一个选项的意义
FILES //此命令相关的配置文件
BUGS //报告bug
EXAMPLES //使用示例
SEE ALSO //另外参照
//man翻屏
向后翻一屏 //SPACE
向前翻一屏 //b
向后翻一行 //enter
向前翻一行 //k
//查找
/KEYWORD //向后
?KEYWORD //向前
n //下一个
N //前一个
q //退出