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