Linux 文件与目录的命令

万能命令

man命令用来访问存储在 Linux 系统上的手册页面。

~$ man ls

LS(1)                                               User Commands                                               LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about the FILEs (the current directory by default).  Sort entries alphabetically if none of
       -cftuvSUX nor --sort is specified.

       Mandatory arguments to long options are mandatory for short options too.

       -a, --all
              do not ignore entries starting with .

       -A, --almost-all
              do not list implied . and ..

       --author
              with -l, print the author of each file
.....
q
$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
$ whereis which
which: /usr/bin/which /usr/share/man/man1/which.1.gz

$ which ls
/usr/bin/ls
$ which which
/usr/bin/which

$ file soft
soft: directory
$ file mv.txt
mv.txt: UTF-8 Unicode text

浏览文件系统

常见Linux目录名称
/ 虚拟目录的根目录。通常不会在这里存储文件
/bin 二进制目录,存放许多用户级的GNU工具
/boot 启动目录,存放启动文件
/dev 设备目录, Linux在这里创建设备节点
/etc 系统配置文件目录
/home 主目录, Linux在这里创建用户目录
/lib 库目录,存放系统和应用程序的库文件
/media 媒体目录,可移动媒体设备的常用挂载点
/mnt 挂载目录,另一个可移动媒体设备的常用挂载点
/opt 可选目录,常用于存放第三方软件包和数据文件
/proc 进程目录,存放现有硬件及当前进程的相关信息
/root root用户的主目录
/sbin 系统二进制目录,存放许多GNU管理员级工具
/run 运行目录,存放系统运作时的运行时数据
/srv 服务目录,存放本地服务的相关文件
/sys 系统目录,存放系统硬件信息的相关文件
/tmp 临时目录,可以在该目录中创建和删除临时工作文件
/usr 用户二进制目录,大量用户级的GNU工具和数据文件都存储在这里
/var 可变目录,用以存放经常变化的文件,比如日志文件

目录

绝对文件路径总是以正斜线(/)作为起始,指明虚拟文件系统的根目录。
波浪号表明shell会话位于你的主目录(/home/用户)中。

cd 相对路径或绝对路径
# pwd 可以显示出 shell 会话的当前目录,这个目录被称为当前工作目录。
~$ pwd
/home/ub
  • ls(list directory contents)命令用于显示指定工作目录下之内容(列出目前工作目录所含的文件及子目录)。

-d 只列出目录(不递归列出目录内的文件)。
-F 在列出的文件名称后加符号。
/是目录
@是链接文件(符号链接)
*是可执行文件
-R 递归显示当前目录下的内容。
-r 倒序显示文件和目录。
-t 将按照修改时间排序,最新的文件在最前面。
-S 以文件大小排序。
-h 以k,M,G显示。
-i 查看文件或目录的inode编号是一个用于标识的唯一数字,这个数字由内核分配给文件系统中的每一个对象。
-l 长列表格式输出。
文件类型,比如目录(d)、文件(-)、字符型文件(c)或块设备(b)

  • 过滤输出列表

问号(?)代表一个字符;
星号(*)代表零个或多个字符。
中括号以及在特定位置上可能出现的两种字符: a或i。

ls -l my_scr[ai]pt
ls -l f[a-i]ll

用感叹号(!)将不需要的内容排除在外。

ls -l f[!a]ll
  • 创建目录

-p参数确保目录名称存在,不存在的就创建一个。
-p参数可以同时创建多个目录和子目录,

文件

创建、复制(重命名)

touch命令创建了你指定的新文件,并将你的用户名作为文件的属主。注意,文件的大小是零,因为touch命令只创建了一个空文件。
touch命令还可用来改变文件的修改时间。这个操作并不需要改变文件的内容。如果只想改变访问时间,可用-a参数。

要注意的是,如果只使用ls –l命令,并不会显示访问时间。这是因为默认显示的是修改时间。
要想查看文件的访问时间,需要加入另外一个参数: --time=atime。有了这个参数,就能够显示出已经更改过的文件访问时间。

cp source destination

-r 复制目录及目录内所有项目
-a 复制的文件与原文件时间一样
一般是将文件和目录从一个位置复制到另一个位置。
当 source 和 destination 参数都是文件名时, cp命令将源文件复制成一个新文件,并且以 destination 命名。新文件就像全新的文件一样,有新的修改时间。
建议使用cp -i强制 shell 询问是否覆盖已有文件。

config.txt 
cp config.txt config_bak.txt
修改config.txt内容后使用,使用完还原config.txt,可直接`cp`
cp config_bak.txt config.txt

重命名文件或目录

  • 在Linux中,重命名文件称为移动(moving)。mv命令可以将文件和目录移动到另一个位置或重新命名。

注意,移动文件会将文件名从fall更改为fzll,但inode编号和时间戳保持不变。这是因为mv只影响文件名(文件位置)。
也可以使用mv来移动文件的位置。

mv 与 ln 有什么区别
地址空间不变,mv 是不停换“标签”,ln 则是不停贴“标签”

删除文件
  • 在Linux中,删除(deleting)叫作移除(removing)。 bash shell中删除文件的命令是rm
-i 参数提示你是不是要删除该文件。 
-f 参数强制删除文件。
-r 参数递归删除文件。
删除目录

默认情况下, rmdir命令只删除空目录。要解决这一问题,得先把目录中的文件删掉,然后才能在空目录上使用rmdir命令。
所以,rm -ri可以删除目录!!

查看文件内容

  • 查看文件类型
# file 探测文件的内部,并决定文件是什么类型的
~/test_link/soft$ ll
total 8
drwxr-xr-x 2 ub ub 4096 Jul 13 20:23 ./
drwxr-xr-x 3 ub ub 4096 Jul 13 23:41 ../
lrwxrwxrwx 1 ub ub   10 Jul 13 20:23 symbolic.txt -> source.txt
# file命令可以展示它链接到了哪个文件上:
~/test_link/soft$ file symbolic.txt
symbolic.txt: broken symbolic link to source.txt

如果是二进制可执行程序, file命令能够确定该程序编译时所面向的平台以及需要何种类型的库。

  • 查看整个文件
cat file
-n 参数会给所有的行加上行号。
-b 参数只给有文本的行加上行号。

cat命令的主要缺陷是:一旦运行,你就无法控制后面的操作。为了解决这个问题,more命令会显示文本文件的内容,但会在显示每页数据之后停下来。more命令是分页工具。more命令只支持文本文件中的基本移动。如果要更多高级功能,可以试试less命令。

  • 查看部分文件

tail命令会显示文件最后几行的内容(文件的“尾部”)。默认情况下,它会显示文件的末尾10行。
-n参数来修改所显示的行数。通过加入-n 2使tail命令只显示文件的最后两行。
-f参数是tail命令的一个突出特性。它允许你在其他进程使用该文件时查看文件的内容。tail命令会保持活动状态,并不断显示添加到文件中的内容。这是实时监测系统日志的绝妙方式。
head使用同上。

查找或定位文件

find

find [path] [expression]

path是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。
expression是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。

  • expression 中常用的选项

-name pattern:按文件名查找,支持使用通配符 * 和 ?。
-type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
-size [+-]size[cwbkMG]:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,
单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
-mtime days:按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days 是一个整数表示天数。

# 文件名查找
~/test_link$ find ./ -name "*.txt"
./cp.txt
./mv.txt
./cp_hard.txt
./soft/symbolic.txt
./hard.txt
# 不符合预期
~/test_link$ find ./ -name *.txt
find: paths must precede expression: `cp_hard.txt'
find: possible unquoted pattern after predicate `-name'?

# 文件类型查找
~/test_link$ find ./ -type l
./soft/symbolic.txt
~/test_link$ find ./ -type d
./
./soft
~/test_link$ find ./ -type f
./cp.txt
./mv.txt
./cp_hard.txt
./hard.txt

# 文件名与类型组合查找
~/test_link$ find ./ -name "*.txt" -type f
./cp.txt
./mv.txt
./cp_hard.txt
./hard.txt
~/test_link$ find ./ -name "*.txt" -type l
./soft/symbolic.txt
~/test_link$ find ./ -name "cp*.txt" -type f
./cp.txt
./cp_hard.txt
  • find 命令中用于时间的参数如下:

-amin n:查找在 n 分钟内被访问过的文件。
-atime n:查找在 n24 小时内被访问过的文件。
-cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。
-ctime n:查找在 n
24 小时内状态发生变化的文件(例如权限)。
-mmin n:查找在 n 分钟内被修改过的文件。
-mtime n:查找在 n*24 小时内被修改过的文件。
在这些参数中,n 可以是一个正数、负数或零。负数表示在指定的时间内修改或访问过的文件,正数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。
按道理说,被修改是被访问的子集,但无意之间发现 -mtinme 可以递归查找??

# 2天前被访问的文件
~/test_link$ find ./ -atime 2
./cp.txt
./mv.txt
./cp_hard.txt
./hard.txt
# 2天前被修改的文件
~/test_link$ find ./ -mtime 2
./
./cp.txt
./mv.txt
./cp_hard.txt
./soft
./soft/symbolic.txt
./hard.txt
# 详细信息验证
~/test_link$ ls -tl
total 20
-rw-r--r-- 1 ub ub  342 Jul 14 01:03 cp_hard.txt
-rw-r--r-- 2 ub ub  342 Jul 13 21:29 hard.txt
-rw-r--r-- 2 ub ub  342 Jul 13 21:29 mv.txt
-rw-r--r-- 1 ub ub  328 Jul 13 21:15 cp.txt
drwxr-xr-x 2 ub ub 4096 Jul 13 20:23 soft

# 重新编辑(修改)其中文件
~/test_link$ vi mv.txt
~/test_link$ ls -tl
total 20
-rw-r--r-- 2 ub ub  388 Jul 16 11:58 hard.txt
-rw-r--r-- 2 ub ub  388 Jul 16 11:58 mv.txt
-rw-r--r-- 1 ub ub  342 Jul 14 01:03 cp_hard.txt
-rw-r--r-- 1 ub ub  328 Jul 13 21:15 cp.txt
drwxr-xr-x 2 ub ub 4096 Jul 13 20:23 soft
~/test_link$ find ./ -amin 3
./
~/test_link$ find ./ -atime 0
./
./mv.txt
./soft
./soft/symbolic.txt
./hard.txt

# 很有意思的事,当天修改的文件被剔除在 2 天前被访问文件的序列
~/test_link$ find ./ -atime 2
./cp.txt
./cp_hard.txt
# 2天内
~/test_link$ find ./ -atime -2
./
./mv.txt
./soft
./soft/symbolic.txt
./hard.txt
# 2天内的组合选项
~/test_link$ find ./ -atime -2 -type l
./soft/symbolic.txt
~/test_link$ find ./ -atime -2 -type d
./
./soft
~/test_link$ find ./ -atime -2 -type f
./mv.txt
./hard.txt
  • 关于时间 n 参数的说明:

+n:查找比 n 天前更早的文件或目录。
-n:查找在 n 天内更改过属性的文件或目录。
n:查找在 n 天前(指定那一天)更改过属性的文件或目录。

locate

locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。
一般情况我们只需要输入 locate your_file_name 即可查找指定文件。

locate [-d ][--help][--version][范本样式...]
-b, --basename -- 仅匹配路径名的基本名称
-c, --count -- 只输出找到的数量
-d, --database DBPATH -- 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
-e, --existing -- 仅打印当前现有文件的条目

locatefind 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。
locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,手动更新updatedb

链接文件

它的功能是为某一个文件在另外一个位置建立一个同步的链接。

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 :
硬链接(hard link)与软链接(symbolic link),
硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置
硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。

  • 软链接:

1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接

  • 硬链接:

1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建

如需要在系统上维护同一文件的两份或多份副本,除了保存多份单独的物理文件副本之外,还可以采用保存一份物理文件副本和多个虚拟副本的方法。这种虚拟的副本就称为链接。

  • 链接是目录中指向文件真实位置的占位符。
    • 符号(软)链接
    • 硬链接

符号链接就是一个实实在在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件。这两个通过符号链接ln -s在一起的文件,彼此的内容并不相同。
要为一个文件创建符号链接,原始文件必须事先存在,但无法让已存在的文件与原始文件软链接。

$ ls -l data_file
-rw-rw-r-- 1 christine christine 1092 May 21 17:27 data_file
$ ln -s data_file `sl_data_file`
$ ls -l *data_file
-rw-rw-r-- 1 christine christine 1092 May 21 17:27 data_file
lrwxrwxrwx 1 christine christine 9 May 21 17:29 `sl_data_file` -> data_file

显示在长列表中符号文件名后的->符号表明该文件是链接到文件data_file上的一个符号链接。

符号链接的意义是什么?
如果某一个地方的另一个文件存在,会报错:
ln: failed to create symbolic link './soft/soft.txt': File exists
所以符号链接是fork的意思??

硬链接会创建独立的虚拟文件,其中包含了原始文件的信息及位置。但是它们从根本上而言是同一个文件。引用硬链接文件等同于引用了源文件。要创建硬链接,原始文件也必须事先存在,只不过这次使用ln命令时不再需要加入额外的参数。

$ ls -l code_file
-rw-rw-r-- 1 christine christine 189 May 21 17:56 code_file
$ ln code_file hl_code_file
$ ls -li *code_file
296892 -rw-rw-r-- 2 christine christine 189 May 21 17:56 code_file
296892 -rw-rw-r-- 2 christine christine 189 May 21 17:56 hl_code_file

注意,带有硬链接的文件共享inode编号。这是因为它们终归是同一个文件,并且没有->

硬链接文件不易被发现,特别是放置在不同目录下。
但是,可以查看链接计数(列表中第三项)显示这两个文件都有两个链接。
如果一不小心复制硬链接文件,那么你得到的其实是源文件的一个副本(拷贝)。

Linux下谨慎使用cp复制命令,因为硬链接文件不易被发现,如果自认为拷贝了源文件后,更改源文件,会同步更新到其他地方的文件,后果将是灾难性的。

复制链接文件(硬链接)的时候一定要小心。如果使用cp命令复制一个文件,而该文件又已经被链接到了另一个源文件上,那么你得到的其实是源文件的一个副本。这很容易让人犯晕。用不着复制链接文件,可以创建原始文件的另一个链接。同一个文件拥有多个链接,这完全没有问题。
但是,千万别创建软链接文件的软链接。这会形成混乱的链接链,不仅容易断裂,还会造成各种麻烦。
你可能觉得符号链接和硬链接的概念不好理解。幸好下一节中的文件重命名容易明白得多。

示例

$ pwd
/home/ub
$ mkdir -p test_link/soft/
$ ls -Fd test_link/
test_link//

$ tree -d test_link/
test_link/
└── soft

1 directory

$ cd test_link/
~/test_link$ touch source.txt
~/test_link$ ls -li
total 4
663 drwxr-xr-x 2 ub ub 4096 Jul 13 20:14 soft
189 -rw-r--r-- 1 ub ub    0 Jul 13 20:18 source.txt

# 注意此处,待会符号链接时会报错
~/test_link$ touch  ./soft/soft.txt
~/test_link$ ls -li
total 4
663 drwxr-xr-x 2 ub ub 4096 Jul 13 20:19 soft
189 -rw-r--r-- 1 ub ub    0 Jul 13 20:18 source.txt

# 符号链接
$ ln -s source.txt  ./soft/soft.txt
ln: failed to create symbolic link './soft/soft.txt': File exists
~/test_link$ rm ./soft/soft.txt


~/test_link$ ln -s source.txt  ./soft/symbolic.txt
~/test_link$ tree ../test_link/
../test_link/
├── soft
│   └── symbolic.txt -> source.txt
└── source.txt

1 directory, 2 files

# 硬链接
~/test_link$ ls -li ./
total 4
663 drwxr-xr-x 2 ub ub 4096 Jul 13 20:23 soft
189 -rw-r--r-- 1 ub ub    0 Jul 13 20:18 source.txt
~/test_link$ ls -li ./soft/
total 0
668 lrwxrwxrwx 1 ub ub 10 Jul 13 20:23 symbolic.txt -> source.txt

~/test_link$ ln source.txt  ./hard.txt
~/test_link$ ls -li ./
total 4
189 -rw-r--r-- 2 ub ub    0 Jul 13 20:18 hard.txt
663 drwxr-xr-x 2 ub ub 4096 Jul 13 20:23 soft
189 -rw-r--r-- 2 ub ub    0 Jul 13 20:18 source.txt

# 硬链接只有通过`inode`区分
~/test_link$ ls -F ./
hard.txt  soft/  source.txt
~/test_link$ ls -F ./soft/
symbolic.txt@

关键问题在,硬链接不易发现,如果复制硬链接文件后,修改硬链接文件。

# 编辑硬链接后得文件
~/test_link$ vi hard.txt
~/test_link$ cat hard.txt
现在编辑硬连接后的文件,预期是同步更新到源文件。
但是,复制源文件后,编辑复制后文件应该不会同步到源文件。所以这句话是什么意思呢?用不着复制链接文件,可以创建原始文件的另一个链接。
~/test_link$ cat source.txt
现在编辑硬连接后的文件,预期是同步更新到源文件。
但是,复制源文件后,编辑复制后文件应该不会同步到源文件。所以这句话是什么意思呢?用不着复制链接文件,可以创建原始文件的另一个链接。

# 复制源文件
~/test_link$ cp source.txt cp.txt
~/test_link$ cat cp.txt
现在编辑硬连接后的文件,预期是同步更新到源文件。
但是,复制源文件后,编辑复制后文件应该不会同步到源文件。所以这句话是什么意思呢?用不着复制链接文件,可以创建原始文件的另一个链接。

# 编辑复制后的文件
~/test_link$ vi cp.txt
~/test_link$ cat cp.txt
现在编辑硬连接后的文件,预期是同步更新到源文件。
但是,复制源文件后,编辑复制后文件应该不会同步到源文件。所以这句话是什么意思呢?用不着复制链接文件,可以创建原始文件的另一个链接
现在编辑复制后文件,查看是否符合预期。。

# 查看源文件与硬链接后的文件
~/test_link$ cat source.txt
现在编辑硬连接后的文件,预期是同步更新到源文件。
但是,复制源文件后,编辑复制后文件应该不会同步到源文件。所以这句话是什么意思呢?用不着复制链接文件,可以创建原始文件的另一个链接。
~/test_link$ cat hard.txt
现在编辑硬连接后的文件,预期是同步更新到源文件。
但是,复制源文件后,编辑复制后文件应该不会同步到源文件。所以这句话是什么意思呢?用不着复制链接文件,可以创建原始文件的另一个链接。

# 复制硬链接后的文件
~/test_link$ cp hard.txt cp_hard.txt
~/test_link$ cat cp_hard.txt
现在编辑硬连接后的文件,预期是同步更新到源文件。
但是,复制源文件后,编辑复制后文件应该不会同步到源文件。所以这句话是什么意思呢?用不着复制链接文件,可以创建原始文件的另一个链接。
~/test_link$ vi hard.txt
~/test_link$ cat cp_hard.txt
现在编辑硬连接后的文件,预期是同步更新到源文件。
但是,复制源文件后,编辑复制后文件应该不会同步到源文件。所以这句话是什么意思呢?用不着复制链接文件,可以创建原始文件的另一个链接。
~/test_link$ cat source.txt
现在编辑硬连接后的文件,预期是同步更新到源文件。
但是,复制源文件后,编辑复制后文件应该不会同步到源文件。所以这句话是什么意思呢?用不着复制链接文件,可以创建原始文件的另一个链接
现在编辑硬链接后的文件,查看复制硬链接后的文件。。

以上符合预期,硬链接是引用!复制是指针?

监测程序

进程是对活动中程序的抽象。

  • 默认 ps 命令
~$ ps
  PID TTY          TIME CMD
    9 pts/0    00:00:00 bash
   87 pts/0    00:00:00 ps

程序的进程ID(Process ID,PID)、它们运行在哪个终端(TTY)以及进程已用的 CPU 时间。

  • Linux系统中使用的GNU ps命令支持3种不同类型的命令行参数:
    • Unix风格的参数,前面加单破折线;
    • BSD风格的参数,前面不加破折线;
    • GNU风格的长参数,前面加双破折线。

-e 显示所有进程
-f 显示完整格式的输出
-j 显示任务信息
-l 显示长列表
ps -ef

  • 注意使用了-l参数之后多出的那些列。

F:内核分配给进程的系统标记。
S:进程的状态
( O代表正在运行; S代表在休眠; R代表可运行,正等待运行; Z代表僵化,进程已结束但父进程已不存在; T代表停止)。
PRI:进程的优先级(越大的数字代表越低的优先级)。
NI:谦让度值用来参与决定优先级。
ADDR:进程的内存地址。
SZ:假如进程被换出,所需交换空间的大致大小。
WCHAN:进程休眠的内核函数的地址。

实时监测进程

top命令刚好适用这种情况。 top命令跟ps命令相似,能够显示进程信息,但它是实时显示的。
第一行显示了当前时间、系统的运行时间、登录的用户数以及系统的平均负载。
第二行的输出中将进程叫作任务(task):有多少进程处在运行、休眠、停止或是僵化状态(僵化状态是指进程完成了,但父进程没有响应)。
PR:进程的优先级。
NI:进程的谦让度值。
VIRT:进程占用的虚拟内存总量。
RES:进程占用的物理内存总量。
SHR:进程和其他进程共享的内存总量。
top命令运行时键入单字符可改变top的行为。键入f允许你选择对输出进行排序的字段,键入d允许你修改轮询间隔。键入q可以退出top。

结束进程

# 信号 名称 描述
1 HUP 挂起
2 INT 中断
3 QUIT 结束运行
9 KILL 无条件终止
11 SEGV 段错误
15 TERM 尽可能终止
17 STOP 无条件停止运行,但不终止
18 TSTP 停止或暂停,但继续在后台运行
19 CONT 在STOP或TSTP之后恢复执行

在Linux中,进程之间通过信号来通信。进程的信号就是预定义好的一个消息,进程能识别它并决定忽略还是作出反应。

监测磁盘空间

挂载存储媒体

Linux上用来挂载媒体的命令叫作mount。默认情况下,mount命令会输出当前系统上挂载的设备列表。
mount命令提供如下四部分信息:
媒体的设备文件名
媒体挂载到虚拟目录的挂载点
文件系统类型
已挂载媒体的访问状态

# 手动挂载媒体设备的基本命令:
mount -t type device directory

type参数指定了磁盘被格式化的文件系统类型,FAT32,NTFS等。
如果是和Windows PC共用这些存储设备,通常得使用下列文件系统类型。
vfat: Windows长文件系统。
ntfs: Windows NT、 XP、 Vista以及Windows 7中广泛使用的高级文件系统。
后面两个参数定义了该存储设备的设备文件的位置以及挂载点在虚拟目录中的位置。

  • 手动将U盘/dev/sdb1挂载到/media/disk:
mount -t vfat /dev/sdb1 /media/disk

-a 挂载/etc/fstab文件中指定的所有文件系统
-f 使mount命令模拟挂载设备,但并不真的挂载
-F 和-a参数一起使用时,会同时挂载所有文件系统
-v 详细模式,将会说明挂载设备的每一步
-I 不启用任何/sbin/mount.filesystem下的文件系统帮助文件
-l 给ext2、 ext3或XFS文件系统自动添加文件系统标签
-o 给文件系统添加特定的选项
-o参数允许在挂载文件系统时添加一些以逗号分隔的额外选项。以下为常用的选项。
ro:以只读形式挂载。
rw:以读写形式挂载。
user:允许普通用户挂载文件系统。
check=none:挂载文件系统时不进行完整性校验。
loop:挂载一个文件。

先卸载,再弹出

umount [directory | device ]

从Linux系统上移除一个可移动设备时,不能直接从系统上移除,而应该先卸载。
umount命令支持通过设备文件或者是挂载点来指定要卸载的设备。如果有任何程序正在使用设备上的文件,系统就不会允许你卸载它。

查看磁盘

df -h
du -sh : 查看当前目录总共占的容量。而不单独列出各子项占用的容量
du -lh --max-depth=1 : 查看当前目录下一级子文件和子目录占用的磁盘容量。
du -sh * | sort -n 统计当前文件夹 (目录) 大小,并按文件大小排序
du -sk filename 查看指定文件大小

du 命令用来查看目录或文件所占用磁盘空间的大小。常用选项组合为:du -sh
du 常用的选项:
-h:以人类可读的方式显示
-a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
-s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小
-c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和
--apparent-size:显示目录或文件自身的大小
-l :统计硬链接占用磁盘空间的大小
-L:统计符号链接所指向的文件占用的磁盘空间大小  

处理数据

排序

默认情况下, sort命令会把数字当做字符来执行标准的字符排序,产生的输出可能根本就不是你要的。解决这个问题可用-n参数。
另一个常用的参数是-M,按月排序。Linux的日志文件经常会在每行的起始位置有一个时间戳,用来表明事件是什么时候发生的。

-t 指定一个用来区分键位置的字符
-k --key=POS1[,POS2] 排序从POS1位置开始;如果指定了POS2的话,到POS2位置结束
-n --numeric-sort 按字符串数值来排序(并不转换为浮点数)

-n参数在排序数值时非常有用,比如du命令的输出。

$ du -sh * | sort -nr

搜索数据

如果要进行反向搜索(输出不匹配该模式的行),可加-v参数。
如果要显示匹配模式的行所在的行号,可加-n参数。
如果只要知道有多少行含有匹配的模式,可用-c参数。
如果要指定多个匹配模式,可用-e参数来指定每个模式。

$ grep three file1
three
$ grep t file1
two
three
$ grep [tf] file1
two
three
four
five

默认情况下,·grep·命令用基本的Unix风格正则表达式来匹配模式。 Unix风格正则表达式采用特殊字符来定义怎样查找匹配的模式。

归档数据

tar 命令的功能,每个功能可用选项来针对tar归档文件定义一个特定行为。

-c --create 创建一个新的tar归档文件
-d
--diff 检查归档文件和文件系统的不同之处
--delete 从已有tar归档文件中删除
-r --append 追加文件到已有tar归档文件末尾
-t --list 列出已有tar归档文件的内容
-u --update 将比tar归档文件中已有的同名文件新的文件追加到该tar归档文件中
-x --extract 从已有tar归档文件中提取文件

  • tar命令选项

-C dir 切换到指定目录
-j 将输出重定向给bzip2命令来压缩内容
-p 保留所有文件权限

  • 组合选项

-f file 输出结果到文件或设备file
-v 在处理文件时显示文件
-z 将输出重定向给gzip命令来压缩内容

  • 常用归档组合命令
# 创建一个归档文件:
tar -cvf test.tar test/ test2/
# 列出tar文件test.tar的内容(但并不提取文件)。
tar -tf test.tar 
# 从tar文件test.tar中提取内容。
tar -xvf test.tar
posted @ 2023-07-15 14:26  Marchyi  阅读(124)  评论(0)    收藏  举报