1 Linux 下清空或删除大文件内容的 5 种方法
在 Linux 终端下处理文件时,有时我们想直接清空文件的内容但又不必使用任何 Linux 命令行编辑器 去打开这些文件。那怎样才能达到这个目的呢?在这篇文章中,我们将介绍几种借助一些实用的命令来清空文件内容的方法。
注意:在我们进一步深入了解这些方法之前,请记住: 由于在 Linux 中一切皆文件,你需要时刻注意,确保你将要清空的文件不是重要的用户文件或者系统文件。清空重要的系统文件或者配置文件可能会引发严重的应用失败或者系统错误。
**
**
1.1 通过重定向到Null来清空文件内容
以 err.log 说明
[des_service@localhost err]$ du -sh ex_20210701.log
8.0K ex_20210701.log
[des_service@localhost err]$ > ex_20210701.log
[des_service@localhost err]$ du -sh ex_20210701.log
0 ex_20210701.log
[des_service@localhost err]$
1.2 使用 ‘true’ 命令重定向来清空文件
下面我们将使用 :
符号,它是 shell 的一个内置命令,等同于 true
命令,它可被用来作为一个 no-op(即不进行任何操作)。
另一种清空文件的方法是将 :
或者 true
内置命令的输出重定向到文件中,具体如下:
# : > access.log
或
# true > access.log
1.3 使用 cat/cp/dd 实用工具及 /dev/null 设备来清空文件
在 Linux 中, null
设备基本上被用来丢弃某个进程不再需要的输出流,或者作为某个输入流的空白文件,这些通常可以利用重定向机制来达到。
所以 /dev/null
设备文件是一个特殊的文件,它将清空送到它这里来的所有输入,而它的输出则可被视为一个空文件。
另外,你可以通过使用 cat 命令 显示 /dev/null
的内容然后重定向输出到某个文件,以此来达到清空该文件的目的。
# cat /dev/null > access.log
或
# cp /dev/null access.log
1.4 使用 echo 命令清空文件
在这里,你可以使用 echo 命令 将空字符串的内容重定向到文件中,具体如下:
# echo "" > access.log
或者
# echo > access.log
1.5 使用 truncate 命令来清空文件内容
truncate
可被用来将一个文件缩小或者扩展到某个给定的大小。
你可以利用它和 -s
参数来特别指定文件的大小。要清空文件的内容,则在下面的命令中将文件的大小设定为 0:
# truncate -s 0 access.log
2 Linux查看文件大小
2.1 df -h
查看系统中文件的使用情况
Size 分割区总容量
Used 已使用的大小
Avail 剩下的大小
Use% 使用的百分比
Mounted on 路径地址
2.2 du -sh *
查看当前目录下各个文件及目录占用空间大小
du -h --max-depth=1 /root/*
查看目录下的说有文件大小du -h --max-depth=1 /root
列出root目录下面所有的一级目录文件大小;
3.Linux文件权限
Linux下,分为这么几种文件类型:
- d:目录directory
- l:符号链接link
- s:套接字socket
- c:字符设备char
- p:命名管道pipe
- -:其他,不属于以上几类
文件创建后,有三种访问方式:
- 读(read):显示内容
- 写(write):编辑内容,删除文件
- 执行(execute):执行文件
针对用户,文件有三类权限:
- 创建人(user)权限:创建文件的人
- 组(group)用户权限:和拥有者处于同一用户组的其他人
- 其他(other)用户权限
有了以上基础概念后,看一个例子
-rwxrwxr-x
共有十个字符,分为四个部分:
- 第1个字符表示文件的类型:[-]表示普通文件
- 第234字符表示创建人的权限:[wxr]表示可读,可写,可执行
- 第567字符表示组用户权限:[wxr]表示可读,可写,可执行
- 第890字符表示其他用户权限:[r-x]表示可读,可执行
如何改变文件的权限呢?
chmod命令用于改变文件的权限,它有两种使用方法。
1.第一种:chomod [who] [operator] [permission] filename
[who]
- u:创建人
- g:组用户
- o:其他用户
- a:所有用户(all)
[operator]
- +:增加权限
- -:取消权限
- =:设定权限
[permission]
- r:读
- w:写
- x:执行
如何给一个文本文件xxx.sh增加可执行权限?
chmod u+x xxx.sh
如何不让其他用户修改xxx.sh?
chmod go-w xxx.sh
2.第二种: chmod [mode] filename
[mode]是一个3位八进制数:
- 第一位表示创建者权限
- 第二位表示组用户权限
- 第三位表示其他用户权限
更具体的:
400:创建者可读
200:创建者可写
100:创建者可执行
040:组用户可读
020:组用户可写
010:组用户可执行
004:其他用户可读
002:其他用户可写
001:其他用户可执行
3位对应位的对应数字加起来,最终就是三类用户的最终权限。
如何回收非创建者用户对xxx.sh的所有权限?
chmod 700 xxx.sh
第一位7:4+2+1,创建者,可读可写可执行
第二位0:组用户,无权限
第三位0:其他用户,无权限
xxx.sh只允许创建者修改,允许其他用户读取和执行,怎么设置?
chmod 755 xxx.sh
第一位7:4+2+1,创建者,可读可写可执行
第二位5:4+1,组用户,可读可执行
第三位5:4+1,其他用户,可读可执行
画外音:一般来说,写了一个工具,只允许自己修改,不允许别人修改,但允许别人使用,这就是755。
4.Linux系统下用户之间的切换
切换用户的命令是su,su是(switch user)切换用户的缩写。通过su命令,可以从普通用户切换到root用户,也可以从root用户切换到普通用户。从普通用户切换到root用户需要密码(该密码是普通用户的密码),从root用户切换到普通用户不需要密码。
[des_service@localhost ~]$
- des_service:代表的当前用户的用户名
- localhost:是主机的名称(这个也是可以改的)
- ~:代表当前目录
- $:是普通用户的意思(若是root用户就显示#)
[des_service@localhost ~]$ su
密码:
[root@localhost des_service]# exit
exit
[des_service@localhost ~]$
1.由普通用户切换到root用户(这里切换顺序无关紧要)
在终端输入:su然后回车,要求输入密码(linux终端输入的密码似乎都不显示)输入密码后回车就进入了root用户.
2.返回普通用户,我直接输入exit.
下面两种方法也可以切换到root用户
- su root
- su - root
区别是:
- su 后面不加用户是默认切到 root
- su 是不改变当前变量
- su - 是改变为切换到用户的变量。也就是说su只能获得root的执行权限,不能获得环境变量,而su -是切换到root并获得root的环境变量及执行权限.
当你使用命令 su username时,你的对话特征和你原始的登录身份一样。如果你想要你的对话进程拥有转换后的用户 ID一致的特征,你要使用短斜杠: su – username。
su
只能切换到管理员用户权限,不使用管理员的登陆脚本和搜索路径
su -
不但能切换到管理员权限而且使用管理员登陆脚本和搜索路径
使用 su -
环境变量也跟着来啦~
5.Linux创建新用户
5.1 基础知识
- 管理员用户
只有一个:UID=0的用户就是管理员用户
一般情况,默认,它的用户名是root
家目录: cd /root
- 普通用户
自己创建的新用户,默认 UID 从500开始
家目录:/home/${username}
上面的指令 可以进入home(普通用户家目录)中
5.2 添加用户
useradd username
5.3 查看用户
id username
[des_service@localhost ~]$ id des_service
uid=1000(des_service) gid=0(root) 组=0(root)
5.4 删除用户
删除用户:userdel username
删除以后在家目录还能看到 但是不能进入该目录
删除用户并且删除家目录: userdel -r username
5.5 设置密码
passwd username
5.6 授予用户root权限
root用户修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
##Allow root to run any commands anywhere
root ALL=(ALL) ALL
test ALL=(ALL) ALL
修改完毕,现在可以用test帐号登录,然后用命令 su - ,即可获得root权限进行操作。