目录
1. Linux 文件(夹)操作
1.1. 加解压文件
1.1.1. tar.bz2
# 需要安装 bzip2 否则会报 not execute 的错误
$ sudo yum -y install bzip2
$ tar -jxvf archive.tar.bz2
相比以上几种格式, tar.gz2
拥有最高的压缩率, 但是压缩的时候所需要的时间也最长, CPU 占用率也最高。将文件或文件夹压缩为 tar.bz2
的命令如下:
tar -jcvf archive_name.tar.bz2 file_to_compress
tar -jcvf archive_name.tar.bz2 directory_to_compress
1.1.2. tar.xz
# 解压
$ tar -xf archive.tar.xz
$ tar -xvJf archive.tar.xz
$ xz -d 要解压的文件
$ xz -z 要压缩的文件
1.2. 查看各文件夹大小
ls -lh
- 最简单的查看方法可以使用
ls -ll
、ls-lh
命令进行查看, 当使用ls -ll
, 会显示成字节大小, 而ls- lh
会以 KB、MB 等为单位进行显示, 这样比较直观一些。 - 通过命令
du -h --max-depth=1
, 可以查看当前目录下各文件、文件夹的大小, 这个比较实用。=du -h -d 1
- 查询当前目录总大小可以使用
du -sh
, 其中 s 代表统计汇总的意思, 即只输出一个总和大小。 - 同样, 通过命令
du -h --max-depth=1
, 可以只显示直接子目录文件及文件夹大小统计值。=du -h -d 1
- 如果只想查看指定目录的总大小, 可以使用
du -sh
目录名称。 - 对于指定文件夹也可以指定显示层次深度, 如:
du -h --max-depth=0 software/
# 及
du -h --max-depth=1 software/
du --max-depth=1 | sort -rh # 按照文件大小排序
备注:
--max-depth
选项在 MacOS 中不能用, 改用du -hd1
。
1.3. md5 文件校验
- Linux 下查看文件 MD5 值的命令为:
md5sum 目标文件
- Linux 系统比对两个文件内容是否完全相同:
md5sum file1 file2
- Linux 系统比对两个文件内容不同的地方:
diff file1 file2
1.4. 清空文件
注意: 由于再 Linux 中一切皆文件, 你需要时刻注意, 确保你将要清空的文件不是重要的用户文件或者系统文件。清空重要的系统文件或者配置文件可能会引发严重的应用失败或者系统错误。
提示: 在下面的示例中, 我们将使用名为 access.log
的文件来作为示例样本。
1.4.1. 通过重定向到 Null 来清空文件内容
清空或者让一个文件成为空白的最简单方式, 是像下面那样, 通过 shell 重定向 null
(不存在的事物) 到该文件:
# > access.log
1.4.2. 使用 ‘true’ 命令重定向来清空文件
下面我们将使用 :
符号, 它是 shell 的一个内置命令, 等同于 true
命令, 它可被用来作为一个 no-op(即不进行任何操作)。另一种清空文件的方法是将 :
或者 true
内置命令的输出重定向到文件中, 具体如下:
# : > access.log
# true > access.log
1.4.3. 使用 cat/cp/dd
实用工具及 /dev/null
设备来清空文件
在 Linux 中, null
设备基本上被用来丢弃某个进程不再需要的输出流, 或者作为某个输入流的空白文件, 这些通常可以利用重定向机制来达到, 所以 /dev/null
设备文件是一个特殊的文件, 它将清空送到它这里来的所有输入, 而它的输出则可被视为一个空文件。另外, 你可以通过使用 cat
命令 显示 /dev/null
的内容然后重定向输出到某个文件, 以此来达到清空该文件的目的。
# cat /dev/null > access.log
下面, 我们将使用 cp
命令 复制 /dev/null
的内容到某个文件来达到清空该文件的目的, 具体如下所示:
# cp /dev/null access.log
而下面的命令中, if
代表输入文件, of
代表输出文件。
# dd if=/dev/null of=access.log
1.4.4. 使用 echo 命令清空文件
在这里, 你可以使用 echo
命令 将空字符串的内容重定向到文件中, 具体如下:
# echo "" > access.log
或者
# echo > access.log
注意: 你应该记住空字符串并不等同于 null
。字符串表明它是一个具体的事物, 只不过它的内容可能是空的, 但 null
则意味着某个事物并不存在。基于这个原因, 当你将 echo
命令 的输出作为输入重定向到文件后, 使用 cat
命令来查看该文件的内容时, 你将看到一个空白行 (即一个空字符串)。
要将 null
做为输出输入到文件中, 你应该使用 -n
选项, 这个选项将告诉 echo
不再像上面的那个命令那样输出结尾的那个新行。
# echo -n "" > access.log
1.4.5. 使用 truncate 命令来清空文件内容
truncate
可被用来将一个文件缩小或者扩展到某个给定的大小。你可以利用它和 -s
参数来特别指定文件的大小。要清空文件的内容, 则在下面的命令中将文件的大小设定为 0
:
# truncate -s 0 access.log
1.5. 清空命令历史
rm $HOME/.bash_history
1. 第一种方式
history -c
2. 第二种方式
emacs ~/.bash_profile 添加:
export HISTSIZE=0
这样 ~/.bash_history 和当前会话的历史记录都会被清除。
3. 第三种方式
rm ~/.bash_history
1.6. 链接文件 / 文件夹
ln
的功能是为某一个文件在另外一个位置建立一个同步的链接。
ln -s [源文件/已经存在的] [目标文件/要创建的]
-s
是 symbolic 的意思。
ln 的链接有软链接和硬链接两种:
- 软链接就是
ln -s ** **
, 只会在选定的位置上生成一个文件的镜像, 不会占用磁盘空间。 - 硬链接
ln ** **
, 没有参数-s
, 在选定的位置上生成一个和源文件大小相同的文件。
无论是软链接还是硬链接, 文件都保持同步变化。软链接是可以跨分区的, 但是硬链接只能在同一分区内。
目录不能建立硬链接, 但可以建立软链接。
1.7. 追加文本
- 追加文本:
echo hi >> a.txt
- 覆盖文本:
echo hi > a.txt
>>
代表的是追加,>
代表的是覆盖。
1.8. 查看文件内容的命令
cat
: 查看文件里面的内容。less
: 需要使用q
退出; 在文本信息过多的情况下, 可以做翻页查看, 使用上下键
来翻页; 查找, 查找该文本里面是否包含自己需要的内容 输入/关键字
可以实现查找。more
: 可以实现翻页, 使用空格键做翻页。head/tail
: 查看文件尾部的行数。head -n 2 1.log
/tail -n 2 1.log
file
: 查看文件的类型。