前言

​ 使用man命令。man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。 man就是manual的缩写,用来查看系统中自带的各种参考手册 。在线中文版man命令man-Linux命令大全 https://wangchujiang.com/linux-command/

1
man man
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
MAN(1)                                Manual pager utils                                MAN(1)

NAME
man - an interface to the on-line reference manuals

SYNOPSIS
man [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] [-m sys‐
tem[,...]] [-M path] [-S list] [-e extension] [-i|-I] [--regex|--wildcard]
[--names-only] [-a] [-u] [--no-subpages] [-P pager] [-r prompt] [-7] [-E encoding]
[--no-hyphenation] [--no-justification] [-p string] [-t] [-T[device]] [-H[browser]]
[-X[dpi]] [-Z] [[section] page ...] ...
man -k [apropos options] regexp ...
man -K [-w|-W] [-S list] [-i|-I] [--regex] [section] term ...
man -f [whatis options] page ...
man -l [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L locale] [-P pager]
[-r prompt] [-7] [-E encoding] [-p string] [-t] [-T[device]] [-H[browser]] [-X[dpi]]
[-Z] file ...
man -w|-W [-C file] [-d] [-D] page ...
man -c [-C file] [-d] [-D] page ...
man [-?V]

1.文件和目录的操作

1.1 ls命令

ls命令用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。

1
2
NAME
ls - list directory contents
语法
1
2
3
4
SYNOPSIS
ls [OPTION]... [FILE]...

ls (选项)... (参数)...
选项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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

-b, --escape
print C-style escapes for nongraphic characters
...
...

-h, --human-readable
with -l and/or -s, print human readable sizes (e.g., 1K 234M 2G)

--si likewise, but use powers of 1000 not 1024

-H, --dereference-command-line
follow symbolic links listed on the command line
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件
-A 同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。
-c 配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序
-C 每栏由上至下列出项目
–color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是'never''always''auto'其中之一
-d, –directory 将目录象文件一样显示,而不是显示其下的文件。
-D, –dired 产生适合 Emacs 的 dired 模式使用的结果
-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
-g 类似 -l,但不列出所有者
-G, –no-group 不列出任何有关组的信息
-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
–si 类似 -h,但文件大小取 1000 的次方而不是 1024
-H, –dereference-command-line 使用命令列中的符号链接指示的真正目的地
–indicator-style=方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)
-i, –inode 印出每个文件的 inode 号
-I, –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目
-k 即 –block-size=1K,以 k 字节的形式表示文件的大小。
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
-m 所有项目以逗号分隔,并填满整行行宽
-o 类似 -l,显示文件的除组信息外的详细信息。
-r, –reverse 依相反次序排列
-R, –recursive 同时列出所有子目录层
-s, –size 以块大小为单位列出所有文件的大小
-S 根据文件大小排序
–sort=WORD 以下是可选用的 WORD 和它们代表的相应选项:
extension -X status -c
none -U time -t
size -S atime -u
time -t access -u
version -v use -u
-t 以文件修改时间排序
-u 配合 -lt:显示访问时间而且依访问时间排序
配合 -l:显示访问时间但根据名称排序
否则:根据访问时间排序
-U 不进行排序;依文件系统原有的次序列出项目
-v 根据版本进行排序
-w, –width=COLS 自行指定屏幕宽度而不使用目前的数值
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名排序
-1 数字'1',每行只列出一个文件
参数

​ 目录:指定要显示列表的目录,也可以是具体的文件。

默认ls -C,显示目录非隐藏文件与目录

1
2
3
4
5
6
7
root@VM-16-13-ubuntu:~# ls
linux linux-command.text swap.sh
----------------------------------
root@VM-16-13-ubuntu:~# ls -1
linux
linux-command.text
swap.sh

显示目录隐藏文件与目录

1
2
3
root@VM-16-13-ubuntu:~# ls -a
. .bash_history .cache linux-command.text .profile .ssh .viminfo
.. .bashrc linux .pip .pydistutils.cfg swap.sh

列出文件和文件夹的详细信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root@VM-16-13-ubuntu:~# ls -l
total 8
drwxr-xr-x 2 root root 4096 Nov 03 19:10 linux
-rw-r--r-- 1 root root 0 Nov 03 19:08 linux-command.text
-rw-r--r-- 1 root root 2217 Sep 6 2018 swap.sh

root@VM-16-13-ubuntu:~# ls -s
total 8
4 linux 0 linux-command.text 4 swap.sh

root@VM-16-13-ubuntu:~# ls -1s
total 8
4 linux
0 linux-command.text
4 swap.sh

显示递归文件

1
2
3
4
5
6
7
8
root@VM-16-13-ubuntu:~# ls -R
.:
linux linux-command.text swap.sh

./linux:
doc

./linux/doc:

组合查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
列出可读文件和文件夹详细信息。h组合有意思 -h, --human-readable
root@VM-16-13-ubuntu:~# ls -lh
total 8.0K
drwxr-xr-x 3 root root 4.0K Nov 03 19:22 linux
-rw-r--r-- 1 root root 0 Nov 03 19:08 linux-command.text
-rw-r--r-- 1 root root 2.2K Sep 6 2018 swap.sh

root@VM-16-13-ubuntu:~# ls -sh
total 8.0K
4.0K linux 0 linux-command.text 4.0K swap.sh

root@VM-16-13-ubuntu:~# ls -1sh
total 8.0K
4.0K linux
0 linux-command.text
4.0K swap.sh

root@VM-16-13-ubuntu:~# ls -lh /swapfile
-rw------- 1 root root 2.0G Nov 16 00:37 /swapfile

1.2 mkdir命令

mkdir命令 用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。

1
2
NAME
mkdir - make directories
语法
1
2
3
4
SYNOPSIS
mkdir [OPTION]... DIRECTORY...

mkdir (选项)... (参数)...
选项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
DESCRIPTION
Create the DIRECTORY(ies), if they do not already exist.

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

-m, --mode=MODE
set file mode (as in chmod), not a=rwx - umask

-p, --parents
no error if existing, make parent directories as needed

-v, --verbose
print a message for each created directory

-Z set SELinux security context of each created directory to the default type

--context[=CTX]
like -Z, or if CTX is specified then set the SELinux or SMACK security context
to CTX

--help display this help and exit
1
2
3
4
5
6
7
8
9
-m, --mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask

-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;

-v, --verbose 每次创建新目录都显示信息

--help 显示此帮助信息并退出

--version 输出版本信息并退出
参数
1
目录:指定要创建的目录列表,多个目录之间用空格隔开。

在当前目录下创建单个目录和创建多个目录

1
2
3
4
5
6
7
root@VM-16-13-ubuntu:~# mkdir hello				#mkdir ./hello
root@VM-16-13-ubuntu:~# ls
hello linux linux-command.text swap.sh

root@VM-16-13-ubuntu:~# mkdir test1 test2 test3
root@VM-16-13-ubuntu:~# ls
hello linux linux-command.text swap.sh test1 test2 test3

创建目录树

1
2
3
4
5
6
7
8
9
10
11
12
root@VM-16-13-ubuntu:~# mkdir -p tmp/a/b/c
root@VM-16-13-ubuntu:~# ls -R ./tmp/ #上面介绍的ls命令
./tmp/:
a

./tmp/a:
b

./tmp/a/b:
c

./tmp/a/b/c:

创建复杂的目录树

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root@VM-16-13-ubuntu:~# mkdir -p project/{java,android,python,src/html,src/js,src/css}
root@VM-16-13-ubuntu:~# ls -R project/
project/:
android java python src

project/android:

project/java:

project/python:

project/src:
css html js

project/src/css:

project/src/html:

project/src/js:

1.3 rm命令

rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

语法
1
2
3
4
NAME
rm - remove files or directories

rm [选项] 文件…
选项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
OPTIONS
Remove (unlink) the FILE(s).

-f, --force
ignore nonexistent files and arguments, never prompt

-i prompt before every removal

-I prompt once before removing more than three files, or when removing recursively;
less intrusive than -i, while still giving protection against most mistakes

--interactive[=WHEN]
prompt according to WHEN: never, once (-I), or always (-i); without WHEN, prompt
always

--one-file-system
when removing a hierarchy recursively, skip any directory that is on a file sys‐
tem different from that of the corresponding command line argument

--no-preserve-root
do not treat '/' specially

--preserve-root
1
2
3
4
5
6
7
8
9
10
11
-f, --force    忽略不存在的文件,从不给出提示。

-i, --interactive 进行交互式删除

-r, -R, --recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。

-v, --verbose 详细显示进行的步骤

--help 显示此帮助信息并退出

--version 输出版本信息并退出
参数
1
文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项。

删除文件file,系统会先询问是否删除

1
2
3
4
5
6
7
8
root@VM-16-13-ubuntu:~# rm -i rm.txt
rm: remove regular empty file 'rm.txt'? n
root@VM-16-13-ubuntu:~# ls
hello linux linux-command.text project rm.txt swap.sh test1 test2 test3 tmp
root@VM-16-13-ubuntu:~# rm -i rm.txt
rm: remove regular empty file 'rm.txt'? y
root@VM-16-13-ubuntu:~# ls
hello linux linux-command.text project swap.sh test1 test2 test3 tmp

强行删除file,系统不再提示

1
2
3
4
5
6
root@VM-16-13-ubuntu:~# touch log.log
root@VM-16-13-ubuntu:~# ls
hello linux linux-command.text log.log project rm.txt swap.sh test1 test2 test3 tmp
root@VM-16-13-ubuntu:~# rm -f log.log
root@VM-16-13-ubuntu:~# ls
hello linux linux-command.text project rm.txt swap.sh test1 test2 test3 tmp

将 tmp子目录及子目录中所有档案删除

1
2
3
4
5
root@VM-16-13-ubuntu:~# ls
hello if linux linux-command.text project swap.sh tmp
root@VM-16-13-ubuntu:~# rm -rf tmp
root@VM-16-13-ubuntu:~# ls
hello if linux linux-command.text project swap.sh

删除以-开头的文件

1
2
3
4
5
6
root@VM-16-13-ubuntu:~# touch -- ./{-aaa,-bbb,-ccc,ddd}.log
root@VM-16-13-ubuntu:~# ls --
-aaa.log -bbb.log -ccc.log ddd.log hello if linux linux-command.text project swap.sh
root@VM-16-13-ubuntu:~# rm -- -*
root@VM-16-13-ubuntu:~# ls
ddd.log hello if linux linux-command.text project swap.sh

1.4 mv命令

mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。

1
2
NAME
mv - move (rename) files
语法
1
2
3
4
5
6
SYNOPSIS
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...

mv [选项] 源文件或目录 目标文件或目录
选项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DESCRIPTION
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

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

--backup[=CONTROL]
make a backup of each existing destination file

-b like --backup but does not accept an argument

-f, --force
do not prompt before overwriting

-i, --interactive
prompt before overwrite

-n, --no-clobber
do not overwrite an existing file
...
...
1
2
3
4
5
6
7
8
9
-b :若需覆盖文件,则覆盖前先行备份。 

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u :若目标文件已经存在,且 source 比较新,才会更新(update)

-t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。
参数
1
2
源文件:源文件列表。
目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。

文件重命名

1
2
3
4
5
root@VM-16-13-ubuntu:~# ls
ddd.log hello if linux linux-command.text project swap.sh
root@VM-16-13-ubuntu:~# mv ddd.log aaa.log
root@VM-16-13-ubuntu:~# ls
aaa.log hello if linux linux-command.text project swap.sh

移动文件、并重命名

1
2
3
4
5
6
7
8
9
10
11
12
root@VM-16-13-ubuntu:~# ls
aaa.log hello if linux linux-command.text project swap.sh
root@VM-16-13-ubuntu:~# ls linux
root@VM-16-13-ubuntu:~# mv aaa.log linux
root@VM-16-13-ubuntu:~# ls linux
aaa.log
root@VM-16-13-ubuntu:~# ls
hello if linux linux-command.text project swap.sh

root@VM-16-13-ubuntu:~# mv linux/aaa.log bbb.log
root@VM-16-13-ubuntu:~# ls
bbb.log hello if linux linux-command.text project swap.sh

移动前备份

1
2
3
4
root@VM-16-13-ubuntu:~# touch hello/bbb.log
root@VM-16-13-ubuntu:~# mv hello/bbb.log bbb.log -b
root@VM-16-13-ubuntu:~# ls
bbb.log bbb.log~ hello if linux linux-command.text project swap.sh

未完待续…

原本打算简单介绍一下,现在这样一搞工程量巨大。