Linux文件管理类命令
管理文件相关命令
ls |
查看文件列表 |
stat |
查看文件属性 |
file |
查看文件类型 |
touch |
创建文件,修改文件时间戳 |
cp |
复制文件或目录 |
mv |
移动文件或目录 |
rm |
删除文件或目录 |
ln |
创建文件硬链接 |
ln -s |
创建文件软链接 |
ls命令:
ls [OPTION] ... [FILE] ...
选项:
-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出) -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 -r 将文件以相反次序显示(原定依英文字母次序) -t 将文件依建立时间之先后次序列出 -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录) -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/" -R 若目录下有文件,则以下之文件亦皆依序列出
实例:
列出根目录(/etc)下的所有目录:
![](https://img2018.cnblogs.com/i-beta/1294766/201912/1294766-20191208130821467-857738637.png)
将 /bin 目录以下所有目录及文件详细资料列出 :
[root@localhost ~]# ls -lR /bin
lrwxrwxrwx. 1 root root 7 Dec 2 00:09 /bin -> usr/bin
列出目前工作目录下所有文件及目录;目录于名称后加 "/", 可执行档于名称后加 "*" : ls -AF /etc
![](https://img2018.cnblogs.com/i-beta/1294766/201912/1294766-20191208131133743-1402485615.png)
stat命令
stat [OPTION] ... [FILE] ...
实例:查看testfile的文件的indoce内容
# stat testfile File: ‘testfile’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 100675864 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:admin_home_t:s0 Access: 2019-12-08 13:16:50.949969456 +0800 Modify: 2019-12-08 13:16:50.949969456 +0800 Change: 2019-12-08 13:16:50.949969456 +0800
file命令
file [OPTION][-f FILE][-m...][文件或目录...]
参数:
-b 列出辨识结果时,不显示文件名称。 -c 详细显示指令执行过程,便于排错或分析程序执行的情形。 -f FILE 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。 -L 直接显示符号连接所指向的文件的类别。 -m 指定魔法数字文件。 -v 显示版本信息。 -z 尝试去解读压缩文件的内容。 [文件或目录...] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。
实例:
显示文件类型: [root@localhost ~]# file install.log install.log: UTF-8 Unicode text [root@localhost ~]# file -b install.log <== 不显示文件名称 UTF-8 Unicode text [root@localhost ~]# file -i install.log <== 显示MIME类别。 install.log: text/plain; charset=utf-8 [root@localhost ~]# file -b -i install.log text/plain; charset=utf-8 显示符号链接的文件类型 [root@localhost ~]# ls -l /var/mail lrwxrwxrwx 1 root root 10 08-13 00:11 /var/mail -> spool/mail [root@localhost ~]# file /var/mail /var/mail: symbolic link to `spool/mail' [root@localhost ~]# file -L /var/mail /var/mail: directory [root@localhost ~]# file /var/spool/mail /var/spool/mail: directory [root@localhost ~]# file -L /var/spool/mail /var/spool/mail: directory
touch命令
touch [OPTION]... FILE...
选项
-a 改变档案的读取时间记录。 -m 改变档案的修改时间记录。 -c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。 -f 不使用,是为了与其他 unix 系统的相容性而保留。 -r 使用参考档的时间记录,与 --file 的效果一样。 -d 设定时间与日期,可以使用各种不同的格式。 -t 设定档案的时间记录,格式与 date 指令相同。 --no-create 不会建立新档案。 --help 列出指令格式。 --version 列出版本讯息。
实例
[root@localhost ~]# ls -l testfile #查看文件当前时间 -rw-r--r--. 1 root root 0 Dec 8 13:27 testfile [root@localhost ~]# touch testfile #修改文件时间属性,如果文件不存在则创建文件 [root@localhost ~]# ls -l testfile #查看更改后的时间 -rw-r--r--. 1 root root 0 Dec 8 13:28 testfile
cp命令
cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE...
选项
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。 -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。 -f:覆盖已经存在的目标文件而不给出提示。 -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。 -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。 -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。 -l:不复制文件,只是生成链接文件
实例
[root@localhost ~]# tree /var/log/
/var/log/
├── anaconda
│ ├── anaconda.log
│ ├── ifcfg.log
│ ├── journal.log
│ ├── ks-script-j6_QRs.log
│ ├── packaging.log
│ ├── program.log
│ ├── storage.log
│ ├── syslog
│ └── X.log
├── audit
│ └── audit.log
├── boot.log
├── btmp
├── chrony
├── cron
├── dmesg
├── dmesg.old
├── firewalld
├── grubby_prune_debug
├── lastlog
├── maillog
├── messages
├── rhsm
├── secure
├── spooler
├── tallylog
├── tuned
│ └── tuned.log
├── vmware-network.1.log
├── vmware-network.2.log
├── vmware-network.log
├── vmware-vgauthsvc.log.0
├── vmware-vmsvc.log
├── wtmp
└── yum.log
cp -r /var/log /tmp/ #保留log目录的层级关系复制到/tmp下
[root@localhost ~]# tree /tmp/log/
/tmp/log/
├── anaconda
│ ├── anaconda.log
│ ├── ifcfg.log
│ ├── journal.log
│ ├── ks-script-j6_QRs.log
│ ├── packaging.log
│ ├── program.log
│ ├── storage.log
│ ├── syslog
│ └── X.log
├── audit
│ └── audit.log
├── boot.log
├── btmp
├── chrony
├── cron
├── dmesg
├── dmesg.old
├── firewalld
├── grubby_prune_debug
├── lastlog
├── maillog
├── messages
├── rhsm
├── secure
├── spooler
├── tallylog
├── tuned
│ └── tuned.log
├── vmware-network.1.log
├── vmware-network.2.log
├── vmware-network.log
├── vmware-vgauthsvc.log.0
├── vmware-vmsvc.log
├── wtmp
└── yum.log
mv命令
mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE...
选项
-i: 若指定目录已有同名文件,则先询问是否覆盖旧文件; -f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;
实例
将文件 aaa 更名为 bbb : [root@localhost ~]# touch aaa [root@localhost ~]# mv aaa bbb 将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs。 [root@localhost ~]# ls bbb info [root@localhost ~]# mv info/ log [root@localhost ~]# ls bbb log 再如将/tmp/log/下的所有文件和目录移到当前目录下,命令行为: [root@localhost ~]# mv /tmp/log/* . [root@localhost ~]# ls anaconda bbb btmp cron dmesg.old grubby_prune_debug log messages secure tallylog vmware-network.1.log vmware-network.log vmware-vmsvc.log yum.log audit boot.log chrony dmesg firewalld lastlog maillog rhsm spooler tuned vmware-network.2.log vmware-vgauthsvc.log.0 wtmp
rm命令
rm [OPTION] FILE...
选项
-i 删除前逐一询问确认。 -f 强制删除,不提示用户。 -r 将目录及以下之档案亦逐一删除。
实例
#询问删除 [root@localhost ~]# rm -i messages rm: remove regular file ‘messages’? #删除目录 [root@localhost ~]# rm -r log/ rm: remove directory ‘log/’? y #强制删除目录或文件,不提示 [root@localhost ~]# rm -rf log/ [root@localhost ~]# rm -rf messages
ln命令:
详情查看https://www.cnblogs.com/stationing/p/11976042.html文章