一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示?
文件管理工具:
1、pwd 显示工作目录
[root@node04 ~]# pwd
/root
2、cd cd [/PATH/TO/SOMEDIR] 改变目录
cd: 切换回家目录
[root@node04 bin]# cd
[root@node04 ~]# pwd
/root
cd ~: 切换回自己的家目录
[root@node04 ~]# cd /bin
[root@node04 bin]# cd ~
[root@node04 ~]# pwd
/root
cd ~USERNAME: 切换至指定用户的家目录
[root@node04 ~]# cd /bin
[root@node04 bin]# cd ~root
[root@node04 ~]# pwd
/root
cd -: 在上一次的所在目录与当前目录之间来回切换
[root@node04 ~]# cd -
/bin
[root@node04 bin]# cd -
/root
[root@node04 ~]# cd -
/bin
[root@node04 bin]# cd -
/root
3、ls: list, 列出指定目录下的内容;
-a: 显示所有文件,包括隐藏文件;
[root@node04 ~]# ls -a
. anaconda-ks.cfg .bash_logout .bashrc .config .dbus .ICEauthority .local .viminfo 公共 视频 文档 音乐
.. .bash_history .bash_profile .cache .cshrc .esd_auth initial-setup-ks.cfg .tcshrc .Xauthority 模板 图片 下载 桌面
[root@node04 ~]#
-A: 显示除. 和..之外 的所有文件;
[root@node04 /]# ls -a
. .. bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@node04 /]# ls -A
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
-l:--long,长格式列表,即显示文件的详细属性信息;
[root@node04 /]# ls -l
总用量 28
lrwxrwxrwx. 1 root root 7 2月 14 13:30 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 2月 14 13:40 boot
drwxr-xr-x 19 root root 3220 2月 14 15:07 dev
drwxr-xr-x. 139 root root 8192 2月 14 16:08 etc
drwxr-xr-x. 3 root root 20 2月 14 13:42 home
lrwxrwxrwx. 1 root root 7 2月 14 13:30 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 2月 14 13:30 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 3 root root 16 2月 14 13:34 opt
dr-xr-xr-x 176 root root 0 2月 14 15:07 proc
dr-xr-x---. 14 root root 4096 2月 14 15:09 root
drwxr-xr-x 39 root root 1220 2月 14 16:08 run
lrwxrwxrwx. 1 root root 8 2月 14 13:30 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x 13 root root 0 2月 14 15:07 sys
drwxrwxrwt. 18 root root 4096 2月 14 17:05 tmp
drwxr-xr-x. 13 root root 155 2月 14 13:30 usr
drwxr-xr-x. 21 root root 4096 2月 14 13:40 var
-h, --human-readable: 对文件大小单位换算;换算后结果可能非精确值;
[root@node04 /]# ls -h
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
-d: 查看目录自身而非其内部的文件列表;
[root@node04 /]# ls -h
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@node04 /]# ls -d
.
-r: reverse,逆序显示;
[root@node04 /]# ls -r
var usr tmp sys srv sbin run root proc opt mnt media lib64 lib home etc dev boot bin
-R: recursive, 递归显示
[root@node04 ~]# ls -R test01/
test01/:
test02
test01/test02:
test03
test01/test02/test03:
test04
test01/test02/test03/test04:
4、cat 文件文本查看器
[root@node04 ~]# cat 1.txt
1
2
3
34\\\
hjdkhdk
djhkdhj
cb
cbn
122
djij
-n: 给显示文本行编号;
[root@node04 ~]# cat -n 1.txt
1 1
2 2
3
4 3
5 34\\\
6 hjdkhdk
7 djhkdhj
8 cb
9 cbn
10 122
11 djij
12
-E: 显示行结束符$;
[root@node04 ~]# cat -E 1.txt
1$
2$
$
3$
34\\\$
hjdkhdk$
djhkdhj$
cb$
cbn$
122$
djij$
$
5、tac 文件文本查看工具:
[root@node04 ~]# tac 1.txt
djij
122
cbn
cb
djhkdhj
hjdkhdk
34\\\
3
2
1
6、file:查看文件内容类型;
[root@node04 ~]# file 1.txt
1.txt: ASCII text
7、关机或重启命令:shutdown
-h: halt
-r: reboot
8、date:系统时钟, 显示日期时间:date
[root@node04 ~]# date
2019年 02月 14日 星期四 17:34:24 CST
9、hwclock,clock: 硬件时钟,显示或设定硬件时钟
[root@node04 ~]# hwclock
2019年02月14日 星期四 17时34分52秒 -0.865988 秒
[root@node04 ~]# clock
2019年02月14日 星期四 17时34分57秒 -0.802841 秒
10、cal:日历
[root@node04 ~]# cal
二月 2019
日 一 二 三 四 五 六
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28
[root@node04 ~]# cal 2019
2019
一月 二月 三月
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 5 1 2 1 2
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30
31
四月 五月 六月
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 5 6 1 2 3 4 1
7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8
14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15
21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22
28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29
30
七月 八月 九月
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 5 6 1 2 3 1 2 3 4 5 6 7
7 8 9 10 11 12 13 4 5 6 7 8 9 10 8 9 10 11 12 13 14
14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21
21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28
28 29 30 31 25 26 27 28 29 30 31 29 30
十月 十一月 十二月
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 5 1 2 1 2 3 4 5 6 7
6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14
13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21
20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28
27 28 29 30 31 24 25 26 27 28 29 30 29 30 31
二、使用命令行展开功能,创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目录下创建目录:x_y, x_z, q_y, q_z
[root@node04 test]# mkdir -pv /tmp/a{1/{a,b},2}
mkdir: 已创建目录 "/tmp/a1"
mkdir: 已创建目录 "/tmp/a1/a"
mkdir: 已创建目录 "/tmp/a1/b"
mkdir: 已创建目录 "/tmp/a2"
[root@node04 test]# mkdir -p {x,q}_{y,z}
[root@node04 test]# ls
q_y q_z x_y x_z
三、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
文件系统中的数据分为两类,分别是数据和元数据。
数据:指的是普通文件中的实际数据;
元数据:指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者、以及文件数据块的分布信息等等;
查看文件的元数据信息需要用到一个命令:stat
stat命令的作用为显示文件的状态信息,输出的信息比ls命令输出的信息更加详细。
示例:
[root@node04 ~]# stat 1.txt
文件:"1.txt"
大小:46 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:68770216 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2019-02-14 17:29:18.375151310 +0800
最近更改:2019-02-14 17:29:11.522141746 +0800
最近改动:2019-02-14 17:29:11.522141746 +0800
创建时间:-
File:文件名称;
Size:文件大小;
Blocks:占用的磁盘块数;
IO Block:IO块大小;
regular file:这里是显示文件的类型,这是一个普通文件
Device:所在设备;
Inode:Inode节点号;
Links:被链接的次数;
Access(第一个):访问权限;
Uid:uid号和属主;
Gid:gid号和属组;
Access(第二个):文件最近一次的访问时间;
Modify:文件的修改时间;
Chang:文件的改变时间。
修改文件的时间戳信息用touch命令
示例
-a: 仅修改access time;
[root@node04 ~]# stat 1.txt
文件:"1.txt"
大小:46 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:68770216 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2019-02-14 17:29:18.375151310 +0800
最近更改:2019-02-14 17:29:11.522141746 +0800
最近改动:2019-02-14 17:29:11.522141746 +0800
创建时间:-
[root@node04 ~]# touch -a 1.txt
[root@node04 ~]# stat 1.txt
文件:"1.txt"
大小:46 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:68770216 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2019-02-15 10:02:36.996527610 +0800
最近更改:2019-02-14 17:29:11.522141746 +0800
最近改动:2019-02-15 10:02:36.996527610 +0800
创建时间:-
-m:仅修改modify time;
[root@node04 ~]# touch -m 1.txt
[root@node04 ~]# stat 1.txt
文件:"1.txt"
大小:46 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:68770216 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2019-02-15 10:02:36.996527610 +0800
最近更改:2019-02-15 10:03:56.751635360 +0800
最近改动:2019-02-15 10:03:56.751635360 +0800
创建时间:-
四、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@node04 ~]# touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`
[root@node04 ~]# ls /tmp/t
test/ tracker-extract-files.0/
tfile-2019-02-15-10-12-39 tracker-extract-files.1000/
[root@node04 ~]# ls /tmp/tfile-2019-02-15-10-12-39
/tmp/tfile-2019-02-15-10-12-39
五、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
[root@node04 mytest1]# mkdir -p /tmp/mytest1/
[root@node04 mytest1]# cp -rv /etc/p*[^0-9] /tmp/mytest1/
六、创建用户tom,指定UID为5001,指定家目录为/tmp/tom, 指定shell为/bin/zsh, 指定基本组为tom,附加组为jack。
[root@node04 ~]# groupadd jack
[root@node04 ~]# useradd -u 5001 -d /tmp/tom/ -s /bin/zsh -G jack tom
[root@node04 home]# cat /etc/passwd | grep tom
tom:x:5001:5001::/tmp/tom/:/bin/zsh
[root@node04 home]# id tom
uid=5001(tom) gid=5001(tom) 组=5001(tom),1001(jack)
七、常用的用户以及文件管理命令有哪些,并演示命令以及用法?
Linux上的文件管理类命令有三个,分别是:cp、mv、rm命令。
cp:
复制文件和目录的命令。cp命令分为两种,分别是:单源复制和多源复制:
单源复制:
如果目标文件和目录(DEST)不存在,则实现创建此文件,并复制源文件的数据流至DEST中。
如果DEST文件存在:
如果DEST是非目录文件,则会覆盖目标文件;
如果DEST是目录文件,则先在DEST目录下创建一个与源文件同名的文件,再复制文件。
多源复制:
如果目标文件不存在,错误;
如果目标文件存在:
如果目标文件是非目录文件,错误;
如果目标是目录文件,分别复制每个文件至目标目录中,并保持原名。
格式:
cp [选项] 源目录或文件 目标目录或文件
选项:
-i:交互式复制,覆盖之前提醒用户确认;
[root@node04 ~]# cp -i 1.txt 11.txt
cp:是否覆盖"11.txt"? y
[root@node04 ~]#
-r/R :递归复制,将指定目录下的所有文件与子文件一并处理;
[root@node04 ~]# cp /etc/system
systemd/ system-release system-release-cpe
[root@node04 ~]# cp /etc/system
systemd/ system-release system-release-cpe
[root@node04 ~]# cp -r /etc/systemd/ /tmp/
[root@node04 ~]# tree /tmp/systemd
/tmp/systemd
├── bootchart.conf
├── coredump.conf
├── journald.conf
├── logind.conf
├── system
-d:当复制符号链接时,把目标文件或目录也建立为符号链接,并指向源文件或目录链接的原始文件或目录;
[root@node04 ~]# ll 13.txt
lrwxrwxrwx 1 root root 5 2月 15 11:03 13.txt -> 1.txt
[root@node04 ~]# cp -d 13.txt 14.txt
[root@node04 ~]# ll 14.txt
lrwxrwxrwx 1 root root 5 2月 15 11:04 14.txt -> 1.txt
-p:保留源文件或目录的属性;
[root@node04 ~]# cp 1.txt 15.txt
[root@node04 ~]# stat 1.txt
文件:"1.txt"
大小:46 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:68770216 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2019-02-15 10:58:37.500989084 +0800
最近更改:2019-02-15 10:03:56.751635360 +0800
最近改动:2019-02-15 10:03:56.751635360 +0800
创建时间:-
[root@node04 ~]# stat 15.txt
文件:"15.txt"
大小:46 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:68792125 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2019-02-15 11:06:53.666406782 +0800
最近更改:2019-02-15 11:06:53.666406782 +0800
最近改动:2019-02-15 11:06:53.666406782 +0800
创建时间:-
[root@node04 ~]# cp -p 1.txt 16.txt
[root@node04 ~]# stat 16.txt
文件:"16.txt"
大小:46 块:8 IO 块:4096 普通文件
设备:803h/2051d Inode:68792126 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2019-02-15 10:58:37.500989084 +0800
最近更改:2019-02-15 10:03:56.751635360 +0800
最近改动:2019-02-15 11:07:14.673472995 +0800
创建时间:-
mv:
移动或重命名文件。
用法:
mv [选项] SOURCE DIRECTORY
选项:
-i:交互式操作,覆盖前先询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。
[root@node04 ~]# cp 1.txt /tmp
[root@node04 ~]# mv -i 1.txt /tmp/
mv:是否覆盖"/tmp/1.txt"? y
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录。
[root@node04 ~]# mv -f 1.txt /tmp/
[root@node04 ~]#
rm:
删除文件或目录。
注意:使用rm命令要格外小心,一旦删除则无法恢复。所有不用的文件建议不要直接删除,而是移动至某个专用目录(模拟回收站)
用法:
rm [选项] 文件
选项:
-i:删除已有文件或目录之前先询问用户。(只有root用户默认rm=rm -i)
[root@node04 ~]# rm 3.txt
rm:是否删除普通空文件 "3.txt"?y
[root@node04 ~]#
-f:强制删除文件或目录
[root@node04 ~]# rm -f 10.txt
[root@node04 ~]#
-r/R:递归处理,将指定目录下的所有文件与子目录一并处理。
[root@node04 ~]# rm -r test01
rm:是否进入目录"test01"? y
rm:是否进入目录"test01/test02"? y
rm:是否进入目录"test01/test02/test03"? y
rm:是否删除目录 "test01/test02/test03/test04"?y
rm:是否删除目录 "test01/test02/test03"?y
rm:是否删除目录 "test01/test02"?y
rm:是否删除目录 "test01"?y
[root@node04 ~]#