一、文件和磁盘

根目录

文件夹 作用
bin 二进制文件,保存了能直接执行的命令。但通常是一个链接,通常指向/usr/bin
sbin (system) 系统级二进制命令,通常只能root用户才能使用得命令。通常是一个指向/usr/sbin的链接
lib 库目录,存放库文件。等同于Windows系统下的System32文件夹。部分程序需要的共享库也可能放在这个文件夹。通常是一个指向/usr/lib的链接
lib64 和64位相关的特殊的库文件。通常是一个指向/usr/lib64的链接
usr 所有应用程序以及所有所需的文件和数据。放置了所有的用户级别的文件
boot 启动引导分区
dev device的简称。每个硬件设备都有对应的文件映射,例如cpu对应了文件夹cpu
etc 系统管理所使用的配置文件。例如安装数据库后对应的配置文件放在这里
home 普通用户的主目录
root root用户的主目录
opt optional的简称,给第三方安装包预留的位置
media 可移动媒体设备,例如U盘、光驱。通常会把外接设备挂在在这个位置
mnt media作用相同
proc process的简称,进程目录,保存了硬件和当前进程的信息
run 系统运行以来的实时信息,重启后就会清空
srv 保存系统的服务
sys 系统硬件信息的相关文件
tmp temporary的缩写,保存临时文件,可以删除
var variable的缩写,通常保存日志等经常修改的文件
/usr/local 针对用户的文件,其中也包含了”bin”、库等文件

3. 目录操作命令

pwd
显示当前工作目录绝对路径

  • pwd -P: 显示的是物理路径(例如软链接指向的路径)

cd
“change directory”的缩写

  • cd ..: 到上层目录;
  • cd .: 从当前目录查找;
  • cd /: 从根目录查找;
  • cd -: 返回上次的文件夹;
  • cd ~: 返回当前用户的home文件夹
  • cd -P directory: 切换到实际的物理路径(例如软链接指向的路径)

ls
“list”的缩写

选项 描述
-a 显示所有文件和文件夹,包括隐藏文件夹(以.开头的文件或文件夹)、上级目录对象、当前目录对象
-l “l”是“long”的缩写,列出文件的详细信息。也可用命令ll
-al 上述“a”和“l”的组合
-h 显示文件大小的单位。结果的“total”只包含了本文件夹内的文件,不包含子文件夹和隐藏文件。

创建和删除文件夹

  • mkdir a b: 在当前文件夹创建文件夹“a”和“b”
  • mkdir /a: 在根目录创建文件夹
  • mkdir a a/b b/c: 创建嵌套文件夹
  • mkdir -p a/b/c: 如果父文件夹不存在,则同时创建父文件夹
  • rm a/b/c a/b a: 嵌套删除文件夹
  • rm -r a: 嵌套删除文件夹 删除文件或文件夹

  • rm -r a: 删除文件夹
  • rm a: 删除文件
  • rm -f: 强制删除,不再提示
  • rm -v a: 删除文件,显示具体执行过程

移动文件或文件夹

  • mv file path: 把文件移动到指定目录
  • mv file1 file2: 移动并重命名。“file2”包含路径和文件名

cat

  • cat file: catch的简写
  • cat -n: 显示所有行的行号

more

  • more file: 按页显示文件
  • =: 显示当前行号
  • b: 向上翻页
  • f: 向下翻页
  • :f: 显示文件及行号

less

  • less file: 根据显示需要加载内容,能更快打开大文件并显示
  • ` `: 空格为向下翻页
  • enter: 回车到下一行
  • b: 向上翻页
  • f: 向下翻页
  • =: 显示详细信息
  • G: 到达文件末尾
  • g: 到达文件起始
  • /keyword: 跳转到关键字位置,按“n”向下查找,“N”向上查找
  • ?keyword: 跳转到关键字位置,按“n”向上查找,“N”向下查找
  • q: 退出

head

  • head file: 查看文件前10行
  • head -n 5 file: 查看文件前5行

tail
实时监控是针对具有某个索引的文件。使用vim编辑保存后的文件,其索引会发生变化,实际上已经变成了另外一个文件,而不是在原文件上修改。因此tail的输出不会发生变化,因为原来的索引对应的文件没变。而重定向则是在原文件上修改,索引对应的文件被修改,因此可以被tail追踪到。

命令 描述
tail file 查看文件后10行
tail -n 5 file 查看文件后5行
tail -f file follow的缩写,实时追踪该文档的所有更新

echo

命令 描述
echo 覆盖
"hello world" 输出字符串
\t 制表符, horizontal tab
\n 换行
\" double quote
-e 支持反斜线控制的字符转换
\a alert (bell sound)
\b backspace
echo $variable 查询变量
echo '==$a==' 把“$a”视为字符串
echo "==$a==" 把“$a”视为变量
-n prevent echo adds a newline at the end

重定向到文件

命令 描述
> 覆盖
>> 追加

ln 软链接
软链接有自己的数据块,存放了链接其它文件的路径,是一个单独的文件,有自己的inode。类似Windows的快捷方式。
用法:ln -s 原文件或目录 软链接名: 在当前目录创建软链接。原文件的路径必须是绝对路径。也可以指定软链接的位置。

命令 描述
rm -rf 软链接名 删除软链接

history

命令 描述
history 10 显示最近的10条命令
!命令编号 重复执行相应的命令
history -c 清空全部历史命令

rename

rename 's/slang_/sl_/' *.c  # replace all "slang_" with "sl_"; find all files end with "*c"; if we omit "sl_", all "slang_" will be deleted.
rename 's/^parameter/value/' *.c  # ^ means all files start with "parameter"
rename 's/(stri|stro)ng/bang/' *.c  # replace all "string" and "strong" with "sl_"
rename 'y/a-z/A-Z/' *.prg  # upper all character
rename 's/lifelog(\d{4})\.txt/$1.md/' *.txt   # replace all "*lifelog*.txt"; "(\d{4})" means four characters after "lifelog" and will be store in "$1".

8. 压缩和解压

gzip/gunzip压缩
基本语法:gzip file, 压缩为“*.gz”文件;gunzip file.gz, 解压缩
特点:只能压缩文件;不保留原文件;多个文件会产生多个压缩包

zip/unzip
基本语法:zip 选项 文件或者目录,压缩为“*.zip”文件;unzip 选项 file.zip,解压文件;会保留原文件

install: apt install zip

选项 描述
-r 压缩文件夹
-d <目录> 指定解压后文件的存放目录

使用示例

# 解压
unzip yaml-cpp-master.zip

# compress
zip -r yaml-cpp-master.zip yaml-cpp-master

tar
打包,不是压缩。
基本语法:tar 选项 XXX.tar.gz 要打包的内容
独立命令是指,在解压和压缩时必须要用到且只能用到其中一个。可选参数在解压和压缩时可以选择性使用。必需参数只有-f,指定使用的文件名字,切记,这个参数是最后一个参数,后面只能接文件名。

选项 类型 描述
-c 独立命令 产生.tar打包文件
-C 可选参数 解压到指定目录
-j 可选参数 bz2属性
-f 必需参数 指定压缩后的文件名
-O 可选参数 将文件解开到标准输出
-v 可选参数 显示解压或压缩过程的详细信息
-x 独立命令 解包.tar文件
-Z 可选参数 有compress属性的
-z 可选参数 打包同时用gzip压缩

使用示例如下

tar zxvf FileName.tar.gz # 解压
tar zcvf FileName.tar.gz DirName # 压缩

7z
一个解压缩的命令示例如下,会新建一个名为“file”的文件夹并把文件解压到这个文件夹。

7z x file.7z

如果解压带密码的压缩文件。命令示例如下。假设密码为“blue”。注意密码和 -p 参数之间无空格。

7z x file.7z -pblue

rar

选项 描述
x 在目标路径里创建一个名为“file”的文件夹,把解压后的文件放在该文件夹。
-e 把解压后的文件放在当前目录
unrar x file.rar ./

9. 磁盘管理

执行命令sudo apt install tree安装“tree”工具的命令,使用tree 路径显示当前文件夹及子文件。 udisks2是一个经常使用的磁盘工具,通过命令sudo apt install udisks2安装

du
查看文件夹大小

选项 描述
du “disk usage”的缩写。显示当前文件夹的子文件夹的大小。
-h “human readable”,显示MB、KB等单位,提高信息的可读性
-a 递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块* 数
-c 在输出末尾显示本文件夹的大小总和(系统默认设置)
-s 对每个Names参数只给出占用的数据块总数
--max-depth=n 统计子目录的深度为n层, list recursively if not set
-b 以字节为单位列出磁盘空间使用情况(系统默认以k字节为单位)
-k 以1024字节为单位列出磁盘空间使用情况
-l 计算所有的文件大小,对硬链接文件,则计算多次
-x 跳过在不同文件系统上的目录不予统计

一个使用示例

du -h --max-depth=0 # 查看所在文件夹的总大小
du -sh # 查看当前文件夹的大小

df
查看磁盘占用情况。

选项 描述
df “disk free”的缩写,列出文件系统的磁盘占用量
-h  
--max-depth display the size of all subdirectories
结果分析  
/dev/sda1 “dev”表示设备,“sda”表示磁盘设备的名称,“sda1”表示该磁盘的第一个分区。
tmpfs 内存设备对应的文件,包括swap分区
/dev/shm “shared memory”的缩写,默认为系统内存的一半
sda SATA(热插拔,个人用户,容量大,便宜),SCSI(服务器)
hda IDE接口硬盘
vda 虚拟化模拟硬盘

一个使用示例

df -hl # 查看磁盘剩余空间
df -h  # 查看每个根路径的分区大小

free

选项 描述
free 显示内存使用情况
-h  

lsblk

选项 描述
lsblk “block”的缩写,查看设备挂载情况
-f 查看详细的设备挂载情况,显示文件系统信息
结果分析  
UUID 系统为分区创建的唯一标识符
sr0 光盘和光驱

fdisk
该命令必须在root用户权限下才能使用。

选项 描述
fdisk -l 查看磁盘分区情况
fdisk 硬盘设备名 对新增硬盘进行分区操作
-l 显示所有硬盘的分区列表

mkfs -t 文件系统 指定分区:“make file system”的缩写,格式化文件系统

挂/卸载
基本语法:mount -t 文件系统类型 -o 选项 分区或磁盘 挂载点

选项 描述
-t vtstype 通常不用指定文件系统的类型
-o options 挂载方式,“loop”把文件当成硬盘分区,“ro”只读,“rw”读写

umount 设备名称或者umount 挂载点卸载设备,因为设备名称和挂载点是一一对应的。

磁盘自动挂载在文件/etc/fstab中。“dump”为1每天定时备份,为0则不备份。“pass”为文件系统检查的优先级。命令fsck会在开机后执行,用于检查磁盘,会先检查“pass”为1的磁盘,再检查“pass”为2的磁盘,“pass”为0表示不检查。开机启动挂载的设置也在这个文件。

以下为一个使用示例。

mkdir ~/data # 在 ~ 目录下创建一个 data 的目录
sudo mount /dev/sda1 ~/data # 并将新分区挂载到这里; sda1 不是固定的,要看自己的硬盘盘符; 硬盘中的文件放在文件夹 data 中
sudo udisksctl unmount -b /dev/sda1    # 取消挂载;sda1 是移动硬盘的一个分区的名称,第一个分区通常以`1`结尾,第二个及之后的以此类推;
sudo udisksctl power-off -b /dev/sda   # 安全断电;sda 是移动硬盘这个设备的名称, the second one usually is sdb

如果需要在电脑开机时自动挂载硬盘,可以按照以下步骤

  • 查看硬盘信息: sudo blkid
  • 编辑硬盘挂载文件 sudo gedit /etc/fstab 你可以在这个文件里添加想要自动挂载的硬盘,也可以更改硬盘默认的挂载位置。

smart

sudo apt-get install smartmontools # 安装工具
sudo smartctl -a /dev/sda1 # 查看磁盘smart信息

“gsmartcontrol”可以看做“smartmontools”的前端,提供了可视化的交互界面。

sudo apt install gsmartcontrol # 安装`smartctl`工具
sudo gsmartcontrol # 运行该工具

搜索查找

find
基本用法:find 搜索范围 选项

选项 示例 描述
-name <查询方式> find . -name md* find a file by name (case-sensitive)
user <用户名> find .. user Joe 属于指定用户的所有文件
-size <文件大小> find / -size +10M 大于10M的文件
-iname   find a file by name (case-insensitive)
-type f   find fromcommon files
-type d   find from directories
-mtime -7   find files modified in the last 7 days

以下为一个使用示例,查看当前文件夹中名为“gtsam”的文件。

find . -name "gtsam"

locate
利用事先建立的所有文件名及其路径的locate数据库。查询速度快,但可能会过时,因为该数据库默认每天更新一次。更新命令为updatedb
基本用法:locate filewhich locatewhereis locate查找该命令的位置

grep过滤查找
管道符|表示将前一个命令的结果输出传递给后面的命令处理。
基本语法:grep 选项 查找内容 源文件

选项 描述
-n 显示匹配行及行号

</br> 基本语法:wc file,“word count”的缩写,输出的结果依次为行数、单词数、字节数