
jimlu
V1
2023/04/21阅读:10主题:默认主题
linux基础入门06
文件系统管理命令
1、创建命令
1.1 touch命令
-
当文件不存在时,创建一个文件 -
扩展:stat命令查看文件状态
[root@jintest ~]# ls
anaconda-ks.cfg Desktop Downloads Music Public Videos
bak Documents initial-setup-ks.cfg Pictures Templates
[root@jintest ~]# touch test
[root@jintest ~]# ls
anaconda-ks.cfg Desktop Downloads Music Public test
bak Documents initial-setup-ks.cfg Pictures Templates Videos
[root@jintest ~]# ll test
-rw-r--r-- 1 root root 0 Apr 18 18:05 test
[root@jintest ~]# stat test
File: ‘test’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 34812521 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-04-18 18:05:01.305895154 +0800
Modify: 2023-04-18 18:05:01.305895154 +0800
Change: 2023-04-18 18:05:01.305895154 +0800
Birth: -
-
当文件存在时,更新文件的访问时间和修改时间
[root@jintest ~]# stat test
File: ‘test’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 34812521 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-04-18 18:05:01.305895154 +0800
Modify: 2023-04-18 18:05:01.305895154 +0800
Change: 2023-04-18 18:05:01.305895154 +0800
Birth: -
[root@jintest ~]# touch test
[root@jintest ~]# stat test
File: ‘test’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 34812521 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-04-18 18:08:20.297892653 +0800
Modify: 2023-04-18 18:08:20.297892653 +0800
Change: 2023-04-18 18:08:20.297892653 +0800
Birth: -
-
-m参数,修改文件修改时间
[root@jintest ~]# touch -m -d "2023-8-18 12:00:00" test
[root@jintest ~]# stat test
File: ‘test’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 34812521 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-04-18 18:10:36.362890943 +0800
Modify: 2023-08-18 12:00:00.000000000 +0800
Change: 2023-04-18 18:13:39.608888639 +0800
Birth: -
-
-a参数,修改文件访问时间
[root@jintest ~]# stat test
File: ‘test’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 34812521 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-07-18 12:00:00.000000000 +0800
Modify: 2023-08-18 12:00:00.000000000 +0800
Change: 2023-04-18 18:15:16.376887423 +0800
Birth: -
-
只要文件内容发生改变chage时间都会更新 -
touch 一个已经存在的问题件,会将文件日期更新到最新 -
只要文件内容发生改名,change的时间都会发生更新
-
[root@jintest ~]# touch test
[root@jintest ~]# stat test
File: ‘test’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 34812521 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-04-18 18:17:27.032885781 +0800
Modify: 2023-04-18 18:17:27.032885781 +0800
Change: 2023-04-18 18:17:27.032885781 +0800
Birth: -
[root@jintest ~]# date
Tue Apr 18 18:17:36 CST 2023
[root@jintest ~]# echo aa>test
[root@jintest ~]# stat test
File: ‘test’
Size: 3 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 34812521 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2023-04-18 18:17:27.032885781 +0800
Modify: 2023-04-18 18:18:02.951885329 +0800
Change: 2023-04-18 18:18:02.951885329 +0800
Birth: -
[root@jintest ~]# date
Tue Apr 18 18:18:19 CST 2023
-
一次创建多个文件
[root@jintest ~]# touch test{1..10}
[root@jintest ~]# ll test*
-rw-r--r-- 1 root root 3 Apr 18 18:18 test
-rw-r--r-- 1 root root 0 Apr 18 18:27 test1
-rw-r--r-- 1 root root 0 Apr 18 18:27 test10
-rw-r--r-- 1 root root 0 Apr 18 18:27 test2
-rw-r--r-- 1 root root 0 Apr 18 18:27 test3
-rw-r--r-- 1 root root 0 Apr 18 18:27 test4
-rw-r--r-- 1 root root 0 Apr 18 18:27 test5
-rw-r--r-- 1 root root 0 Apr 18 18:27 test6
-rw-r--r-- 1 root root 0 Apr 18 18:27 test7
-rw-r--r-- 1 root root 0 Apr 18 18:27 test8
-rw-r--r-- 1 root root 0 Apr 18 18:27 test9
1.2 mkdir命令
-
-p参数,当指定目录父目录不存在时连同父目录一起创建
[root@jintest ~]# mkdir a/b/c/dd
mkdir: cannot create directory ‘a/b/c/dd’: No such file or directory
[root@jintest ~]# mkdir a
[root@jintest ~]# mkdir a/b/c/dd
mkdir: cannot create directory ‘a/b/c/dd’: No such file or directory
[root@jintest ~]# tree a
a
0 directories, 0 files
[root@jintest ~]# mkdir -p a/b/c/dd
[root@jintest ~]# tree a
a
└── b
└── c
└── dd
3 directories, 0 files
-
-m参数,创建目录是指定目录权限
[root@jintest ~]# mkdir -m 777 testdir
[root@jintest ~]# ll testdir
total 0
[root@jintest ~]# ll -d testdir
drwxrwxrwx 2 root root 6 Apr 18 18:30 testdir
[root@jintest ~]# su - jin
[jin@jintest ~]$ ls
[jin@jintest ~]$ mkdir -m 777 test
[jin@jintest ~]$ ll -d test/
drwxrwxrwx 2 jin jin 6 Apr 18 18:31 test/
2、查看命令
2.1 ls命令
-
-a参数:列出所有文件包括隐藏文件
[root@jintest ~]# ls -a
. .bashrc .esd_auth .tcshrc test5
.. .cache .ICEauthority Templates test6
a .config initial-setup-ks.cfg test test7
anaconda-ks.cfg .cshrc .local test1 test8
bak .dbus Music test10 test9
.bash_history Desktop Pictures test2 testdir
.bash_logout Documents .pki test3 Videos
.bash_profile Downloads Public test4 .viminfo
-
-l参数:长格式显示文件信息
[root@jintest ~]# ls -l
total 16
drwxr-xr-x 3 root root 15 Apr 18 18:35 a
-rw-------. 1 root root 1698 Mar 15 16:16 anaconda-ks.cfg
-rw-r--r--. 1 root root 87 Apr 14 22:43 bak
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Desktop
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Documents
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Downloads
-rw-r--r--. 1 root root 1746 Mar 15 16:45 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Music
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Pictures
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Public
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Templates
-rw-r--r-- 1 root root 3 Apr 18 18:18 test
-rw-r--r-- 1 root root 0 Apr 18 18:27 test1
-rw-r--r-- 1 root root 0 Apr 18 18:27 test10
-rw-r--r-- 1 root root 0 Apr 18 18:27 test2
-rw-r--r-- 1 root root 0 Apr 18 18:27 test3
-rw-r--r-- 1 root root 0 Apr 18 18:27 test4
-rw-r--r-- 1 root root 0 Apr 18 18:27 test5
-rw-r--r-- 1 root root 0 Apr 18 18:27 test6
-rw-r--r-- 1 root root 0 Apr 18 18:27 test7
-rw-r--r-- 1 root root 0 Apr 18 18:27 test8
-rw-r--r-- 1 root root 0 Apr 18 18:27 test9
drwxrwxrwx 2 root root 6 Apr 18 18:30 testdir
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Videos
-
-r参数:翻转排序(ls不加参数默认以文件名排序)
[root@jintest ~]# ls -lr
total 16
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Videos
drwxrwxrwx 2 root root 6 Apr 18 18:30 testdir
-rw-r--r-- 1 root root 0 Apr 18 18:27 test9
-rw-r--r-- 1 root root 0 Apr 18 18:27 test8
-rw-r--r-- 1 root root 0 Apr 18 18:27 test7
-rw-r--r-- 1 root root 0 Apr 18 18:27 test6
-rw-r--r-- 1 root root 0 Apr 18 18:27 test5
-rw-r--r-- 1 root root 0 Apr 18 18:27 test4
-rw-r--r-- 1 root root 0 Apr 18 18:27 test3
-rw-r--r-- 1 root root 0 Apr 18 18:27 test2
-rw-r--r-- 1 root root 0 Apr 18 18:27 test10
-rw-r--r-- 1 root root 0 Apr 18 18:27 test1
-rw-r--r-- 1 root root 3 Apr 18 18:18 test
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Templates
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Public
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Pictures
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Music
-rw-r--r--. 1 root root 1746 Mar 15 16:45 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Downloads
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Documents
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Desktop
-rw-r--r--. 1 root root 87 Apr 14 22:43 bak
-rw-------. 1 root root 1698 Mar 15 16:16 anaconda-ks.cfg
drwxr-xr-x 3 root root 15 Apr 18 18:35 a
-
-S参数:按文件大小排序显示(默认从大到小)
[root@jintest ~]# ll -S
total 16
-rw-r--r--. 1 root root 1746 Mar 15 16:45 initial-setup-ks.cfg
-rw-------. 1 root root 1698 Mar 15 16:16 anaconda-ks.cfg
-rw-r--r--. 1 root root 87 Apr 14 22:43 bak
drwxr-xr-x 3 root root 15 Apr 18 18:35 a
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Desktop
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Documents
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Downloads
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Music
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Pictures
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Public
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Templates
drwxrwxrwx 2 root root 6 Apr 18 18:30 testdir
drwxr-xr-x. 2 root root 6 Mar 15 17:38 Videos
-rw-r--r-- 1 root root 3 Apr 18 18:18 test
-rw-r--r-- 1 root root 0 Apr 18 18:27 test1
-rw-r--r-- 1 root root 0 Apr 18 18:27 test10
-rw-r--r-- 1 root root 0 Apr 18 18:27 test2
-rw-r--r-- 1 root root 0 Apr 18 18:27 test3
-rw-r--r-- 1 root root 0 Apr 18 18:27 test4
-rw-r--r-- 1 root root 0 Apr 18 18:27 test5
-rw-r--r-- 1 root root 0 Apr 18 18:27 test6
-rw-r--r-- 1 root root 0 Apr 18 18:27 test7
-rw-r--r-- 1 root root 0 Apr 18 18:27 test8
-rw-r--r-- 1 root root 0 Apr 18 18:27 test9
2.2 cat命令
-
-n参数:显示行号
[root@jintest ~]# cat -n test
1 aa
2 aa
3 aa
4
5 aa
6 bb
7
8
9 cc
10 dd
11
12
-
-ns参数:删除连续重复空行
[root@jintest ~]# cat -ns test
1 aa
2 aa
3 aa
4
5 aa
6 bb
7
8 cc
9 dd
10
-
-nb参数:不给空行编号
[root@jintest ~]# cat -nb test
1 aa
2 aa
3 aa
4 aa
5 bb
6 cc
7 dd
2.3 more和less命令
-
默认都是按页(整个窗口带薪)查看文件 -
-n参数: 如more -10 filename,每次查看文件10行 ,less没有这个参数 -
空行翻页 -
more会显示文件内容百分比,less没有 -
more查看到最后一行后悔自动退出,less不会自动退出,需要按q键退出 -
ctrl+b,在more和less查看文件是都可以上翻,ctrl+f,下翻页 -
推荐使用more
2.4 head和tail命令
-
head用文件头部开始查看,默认查看10行 -
tail 从文件最后开始查看,默认查看后10行 -
-n参数:查看指定的行数 -
-f参数:实施查看文件内容,退出用ctrl+c
[root@jintest ~]# head test
aa
aa
aa
aa
bb
cc
dd
[root@jintest ~]# tail test
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:989:983::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
jin:x:1000:1000:jin:/home/jin:/bin/bash
[root@jintest ~]# head -n test
head: test: invalid number of lines
[root@jintest ~]# head -n3 test
aa
aa
aa
[root@jintest ~]# tail -n3 test
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
jin:x:1000:1000:jin:/home/jin:/bin/bash
[root@jintest ~]# tail -f
tail: warning: following standard input indefinitely is ineffective
3、删除命令
3.1 rm命令
-
-i参数:返回交互信息 -
-r参数:递归删除 -
-f参数:强制删除不返回交互信息
[root@jintest ~]# rm -i test3
rm: remove regular empty file ‘test3’? yes
[root@jintest ~]# rm a
rm: cannot remove ‘a’: Is a directory
[root@jintest ~]# rm -dr a
rm: descend into directory ‘a’? y
rm: descend into directory ‘a/b’? n
[root@jintest ~]# tree a
a
└── b
└── c
└── dd
3 directories, 0 files
[root@jintest ~]# rm -r a
rm: descend into directory ‘a’? y
rm: descend into directory ‘a/b’? y
rm: descend into directory ‘a/b/c’? y
rm: remove directory ‘a/b/c/dd’? n
[root@jintest ~]# tree a
a
└── b
└── c
└── dd
3 directories, 0 files
[root@jintest ~]# rm -rf a
[root@jintest ~]# tree a
a [error opening dir]
0 directories, 0 files
##删除匹配条件的所有文件
[root@jintest ~]# ls
anaconda-ks.cfg Downloads Public test10 test6 Videos
bak initial-setup-ks.cfg Templates test2 test7
Desktop Music test test4 test8
Documents Pictures test1 test5 test9
[root@jintest ~]# rm -rf test*
[root@jintest ~]# ls
anaconda-ks.cfg Desktop Downloads Music Public Videos
bak Documents initial-setup-ks.cfg Pictures Templates
3.2 rmdir命令(不常用,了解即可)
-
用来删除空目录
[root@jintest ~]# ls testdir/
[root@jintest ~]# touch testdir/aa
[root@jintest ~]# rmdir testdir/
rmdir: failed to remove ‘testdir/’: Directory not empty
[root@jintest ~]# rm -rf testdir/aa
[root@jintest ~]# rmdir testdir/
[root@jintest ~]#
3.3 置空文件内容
置空文件对情况日志很有用,日志会会被正在运行的程序占用,直接使用rm命令删除文件并不会释放文件占用的空间,这时候就需要用置空文件的方法来释放空间
-
方法一:cat /dev/null >filename
[root@jintest ~]# cp /etc/passwd test
[root@jintest ~]# head test
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@jintest ~]# cat /dev/null >test
[root@jintest ~]# head test
-
方法二: >filename
[root@jintest ~]# cp /etc/passwd test
cp: overwrite ‘test’? y
[root@jintest ~]# head test
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@jintest ~]# >test
[root@jintest ~]# head test
4、修改命令
cp命令和mv命令均可以修改文件名,不同点在于,copy会生成一个新的文件,mv则不会
4.1 cp 命令
语法: cp [选项] 源文件 目标文件
-
-a选项:拷贝文件及全部属性,常用 -
-r选项:递归拷贝,对于目录需要使用该选项 -
-f选项:如果存在一个目标文件cp -f会强制覆盖
[root@jintest ~]# mkdir -p a/n/c
[root@jintest ~]# touch a/n/c/123
[root@jintest ~]# cp a b
cp: omitting directory ‘a’
[root@jintest ~]# cp -a a b
[root@jintest ~]# cp -r a c
[root@jintest ~]# cp -a a b
[root@jintest ~]# cp -r a b
cp: overwrite ‘b/a/n/c/123’? ^C
[root@jintest ~]# cp -rf a b
cp: overwrite ‘b/a/n/c/123’?
4.2 mv命令
语法: mv [选项] 源 目标
-
目标存在时如果是文件则报错,如果是目录则将源移动到目标中
[root@jintest ~]# mkdir -p a/a1/a2
[root@jintest ~]# mkdir -p b/b1/b2
[root@jintest ~]# mkdir -p c/c1/c2
[root@jintest ~]# ls
a bak Desktop initial-setup-ks.cfg Public Videos
anaconda-ks.cfg c Documents Music Templates z
b dd Downloads Pictures test
[root@jintest ~]# mv a aa
[root@jintest ~]# tree aa
aa
└── a1
└── a2
2 directories, 0 files
[root@jintest ~]# ls
aa bak Desktop initial-setup-ks.cfg Public Videos
anaconda-ks.cfg c Documents Music Templates z
b dd Downloads Pictures test
[root@jintest ~]# mv b cc
[root@jintest ~]# ls
aa c Desktop initial-setup-ks.cfg Public Videos
anaconda-ks.cfg cc Documents Music Templates z
bak dd Downloads Pictures test
##如果目标名不存在,则mv执行的就是重命名
[root@jintest ~]# mv b cc
[root@jintest ~]# ls
aa c Desktop initial-setup-ks.cfg Public Videos
anaconda-ks.cfg cc Documents Music Templates z
bak dd Downloads Pictures test
[root@jintest ~]# tree cc
cc
└── b1
└── b2
2 directories, 0 files
###如果目标目录名存在,则mv执行的就是移动操作
[root@jintest ~]# mv c cc
[root@jintest ~]# tree cc
cc
├── b1
│ └── b2
└── c
└── c1
└── c2
5 directories, 0 files
作者介绍

jimlu
V1