1 Linux文件/目录管理
1.1 创建文件
Linux 中使用 touch
命令来创建一个空文件。
具体命令如下:touch 文件名
具体说明:
如果一次想创建多个文件,则每个文件名用空格隔开;
touch 命令创建一个指定的新文件,并将当前登录用户作为文件所有者;
由于 touch 命令创建的文件为空,所以文件的大小为 0;
touch 命令还可以用于更改文件的访问时间和修改时间,而不改变文件的内容。
-
应用示例一:
在Linux系统命令行下创建一个新的文件,文件名为:newFile,则可以使用命令:
touch newFile
使用
ls
命令来查看文件是否创建成功。 -
应用示例二:
在Linux系统命令行下一次创建2个文件,文件名分别为:newFile1和newFile2,则可以使用命令:
touch newFile1 newFile2
使用
ls
命令来查看文件是否创建成功。
1.2 删除文件
Linux 中使用 rm
命令来删除一个已经存在的文件。
具体命令如下:rm 参数 文件名
常用参数如下:
-f
:强制删除文件或目录;
-i
:删除已有文件或目录之前先询问用户;
-r
或-R
:递归处理,将指定目录下的所有文件与子目录一并处理。
具体说明:
如果一次想删除多个文件,则每个文件名用空格隔开;
rm
命令可以使用通配符来删除文件。
-
应用示例一:
在Linux系统命令行下删除一个文件,文件名为:newFile,则可以使用命令:
rm newFile
-
应用示例二:
在Linux系统命令行下一次删除2个文件,文件名分别为:newFile1和newFile2,则可以使用命令:
rm newFile1 newFile2
-
应用示例三:
在Linux系统命令行下删除一个文件同时删除前询问用户,文件名分别为:newFile,则可以使用命令:
rm -i newFile
1.3 创建目录
Linux 中使用 mkdir
命令来创建一个空目录。
具体命令如下:mkdir 参数 目录名
常用参数如下:
-p
或--parents
:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。
具体说明:
如果一次想创建多个目录,则每个目录名用空格隔开;
mkdir 命令创建一个指定的目录,并将当前登录用户作为目录所有者;
mkdir 命令创建一个空目录后,该目录下只存在两个特殊的目录,分别是.和…。
-
应用示例一:
在Linux系统命令行下创建一个新的目录,目录名为:newDir,则可以使用命令:
mkdir newDir
-
应用示例二:
在Linux系统命令行下一次创建2个目录,目录名分别为:newDir1和newDir2,则可以使用命令:
mkdir newDir1 newDir2
-
应用示例三:
在Linux系统命令行下创建一个目录如果上层目录目前尚未建立则一并将其创建,目录名分别为:Dir1/Dir2,则可以使用命令:
mkdir -p Dir1/Dir2
首先查看Dir1目录是否存在,如果不存在直接创建Dir1/Dir2,使用ls命令查看目录是否创建成功。
1.4 删除目录
Linux 中使用 rmdir
命令来删除一个已经存在的空目录。
具体命令如下:rmdir
参数 目录名
常用参数如下:
-p
或--parents
:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除。
具体说明:
如果一次想删除多个空目录,则每个目录名用空格隔开;
rmdir 命令可以使用通配符来删除目录。
如果想删除的目录不为空,则先使用 rm
命令将目录下的所有文件都清空,然后再使用 rmdir
将目录删除,或者直接使用 rm -r
命令直接递归的删除整个目录。
-
应用示例一:
在Linux系统命令行下删除一个空目录,目录名为:newDir,则可以使用命令:
rmdir newDir
-
应用示例二:
在Linux系统命令行下一次删除2个空目录,目录名分别为:newDir1和newDir2,则可以使用命令:
rmdir newDir1 newDir2
-
应用示例三:
在Linux系统命令行下删除一个目录如果上层目录为空则一并将其删除,目录名分别为:Dir1/Dir2,则可以使用命令:
rmdir -p Dir1/Dir2
-
应用示例四:
在Linux系统命令行下删除一个不为空的目录,则可以使用命令:
rm -r Dir
1.5 拷贝文件
Linux 中使用 cp
命令将一个或多个源文件复制到指定的目的目录下。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。
具体命令如下:cp 参数 源文件 目的目录
常用参数如下:
- -f:强行复制文件或目录,不论目标文件或目录是否已存在;
- -i:覆盖既有文件之前先询问用户;
- -p:保留源文件或目录的属性。
具体说明:
cp命令支持同时复制多个文件,当一次复制多个文件时,目的目录参数必须是一个已经存在的目录,否则将出现错误;
cp命令支持同时复制多个文件,当一次复制多个文件时,多个文件用空格分隔。
-
应用示例一:
将当前目录下的一个文件拷贝到一个指定的目录下,文件名为:newFile,目录名为:newDir,则可以使用命令:
cp newFile newDir
-
应用示例二:
将当前目录下的一个文件拷贝到一个指定的目录下并重命名为newFileCpy,文件名为:newFile,目录名为:newDir,则可以使用命令:
cp newFile newDir/newFileCpy
-
应用示例三:
将当前目录下的两个文件拷贝到一个指定的目录下,文件名为:newFile1和newFile2,目录名为:newDir1,则可以使用命令:
cp newFile1 newFile2 newDir1
1.6 移动 / 重命名文件
Linux中使用 mv
命令来重命名一个文件名。
mv
命令还可以用来移动文件,类似于 Windows 上的剪切功能。
具体命令如下:mv 参数 目录名
常用参数如下:
-f
:若目标文件与现有的文件重复,则直接覆盖现有的文件;-i
:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。
- 用户输入”
y
”,表示将覆盖目标文件;- 输入”
n
”,表示取消对源文件的移动。
具体说明:
如果一次想移动多个文件,则每个文件名用空格隔开;
mv
命令可以使用通配符来移动目录。
-
应用示例一:
将当前目录下的文件newFile重命名为newFileRename,则可以使用命令:
mv newFile newFileRename
-
应用示例二:
将当前目录下的文件newFileRename移动到一个指定的目录下,目录名为:Dir,则可以使用命令:
mv newFileRename Dir
-
应用示例三:
将当前目录下的文件newFileRename移动到一个指定的目录下并重命名为newFile,目录名为:Dir,则可以使用命令:
mv newFileRename Dir/newFile
1.7 拷贝目录
Linux 中使用 cp -r
命令将一个或多个源目录复制到指定的目录下。它可以将单个源目录复制成一个指定目录名的具体的目录或一个已经存在的目录下。
具体命令如下:cp 参数 源目录 目的目录
常用参数如下:
-r
是递归把源目录下的目录递归进行移动;-f
:强行复制文件或目录,不论目标文件或目录是否已存在;-i
:覆盖既有文件之前先询问用户;-p
:保留源文件或目录的属性。
具体说明:
cp命令支持同时复制多个目录,当一次复制多个目录时,目的目录参数必须是一个已经存在的目录,否则将出现错误;
cp命令支持同时复制多个目录,当一次复制多个目录时,多个目录名用空格分隔;
cp命令拷贝目录和拷贝文件大致用法相似,最大差别就是拷贝目录的时候必须加上 -r 参数,而拷贝文件的时候不需要加 -r 参数。
-
应用示例一:
将当前目录下的一个目录拷贝到指定的目录下,被拷贝目录名为:Dir1,指定目录名为:Dir2,则可以使用命令:
cp -r Dir1 Dir2
-
应用示例二:
将当前目录下的一个目录拷贝到一个指定的目录下并重命名为 Dir1Cpy ,被拷贝目录名为:Dir1,指定目录名为:Dir2,则可以使用命令:
cp -r Dir1 Dir2/Dir1Cpy
-
应用示例三:
将当前目录下的两个目录拷贝到一个指定的目录下,被拷贝目录名为:Dir1 和 Dir2,指定目录名为:Dir3,则可以使用命令:
cp -r Dir1 Dir2 Dir3
1.8 重命名 / 移动目录
Linux 中使用 mv
命令来重命名一个目录名。
mv
命令还可以用来移动目录,类似于Windows上的剪切功能。
具体命令如下:mv 参数 源目录 目的目录
常用参数如下:
-f
:若目标目录与现有的目录重复,则直接合并现有的目录;-i
:交互式操作,覆盖前先行询问用户,如果源目录与目标目录同名,则询问用户是否合并目标目录。
- 用户输入”
y
”,表示将合并目标目录;- 输入”
n
”,表示取消对源目录的移动。
具体说明:
如果一次想移动多个目录,则每个目录名用空格隔开。
mv
命令可以使用通配符来移动目录。
mv
命令移动目录和移动文件的使用大致一样,唯一不同的是如果出现源目录和目标目录重名,则采用合并的方式,而对于文件则是直接覆盖。
-
应用示例一:
将当前目录下的目录 newDir 重命名为 newDirCpy ,则可以使用命令:
mv newDir newDirCpy
-
应用示例二:
将当前目录下的目录 newDirCpy 移动到一个指定的目录下,指定目录名为:Dir,则可以使用命令:
mv newDirCpy Dir
-
应用示例三:
将当前目录下的目录 newDirCpy 移动到一个指定的目录下并重命名为 newDir ,指定目录名为:Dir,则可以使用命令:
mv newDirCpy Dir/newDir
1.9 查看文件内容
1.9.1 cat
命令
具体命令如下:cat 参数 文件名
常用参数如下:
-n
或--number
:由1开始对所有输出的行数编号;-b
或--number-nonblank
:和-n相似,只不过对于空白行不编号。
具体说明:
cat
命令支持同时查看多个文件,当一次查看多个文件时,每个文件的内容都会被打印到屏幕上;
cat
命令不能对文件进行编辑操作,只能查看文件内容。
-
应用示例:
查看文件/etc/passwd内容,则可以使用命令:
cat /etc/passwd
1.9.2 head
命令
具体命令如下:head 参数 文件名
常用参数如下:
-n number
:显示文件的前number行内容。
具体说明:
head
命令是从文件的开头显示内容,默认情况下只显示前10行的内容;
head
命令不能对文件进行编辑操作,只能查看文件内容。
-
应用示例:
查看文件/etc/passwd的前8行内容,则可以使用命令:
head -n 8 /etc/passwd
1.9.3 tail
命令
具体命令如下:tail 参数 文件名
常用参数如下:
-n number
:显示文件的最后number行内容。
具体说明:
tail
命令是从文件的结尾显示内容,默认情况下只显示最后10行的内容;
tail
命令不能对文件进行编辑操作,只能查看文件内容。
-
应用示例:
查看文件 /etc/passwd 末尾 5 行内容,则可以使用命令:
tail -n 5 /etc/passwd
1.10 查看目录内容
Linux 中使用 ls
命令来查看一个目录下的内容。
具体命令如下:ls 参数 目录
常用参数如下:
-a
:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为隐藏,不会列出);-A
:显示除隐藏文件“.”和“…”以外的所有文件列表;-l
:列出内容的详细信息;-r
:以文件名反序排列并输出目录内容列表;-s
:显示文件和目录的大小,以区块为单位;-i
:显示文件索引节点号(inode)。一个索引节点代表一个文件;-R
:递归处理,将指定目录下的所有文件及子目录一并处理。
具体说明:
- 如果一次查看多个目录,则每个目录名用空格隔开。
-
应用示例一:
查看目录 /mnt 下的所有信息(包括隐藏内容),则可以使用如下命令:
ls -a /mnt
-
应用示例二:
查看目录 /mnt 下的所有信息(包括隐藏内容),同时显示每个文件的详细信息,则可以使用如下命令:
ls -al /mnt
2 Linux vi/vim编辑器
2.1 vi/vim基本用法
vi是Unix操作系统中最常用的全屏编辑器,Linux中常用的是vi的加强版vim,vim同vi完全兼容。在Linux系统中,vi和vim是完全等价的两条命令。
vi/vim编辑器可以执行输入、删除、查找、替换、块操作等众多文件操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑器程序没有的工程。vi/vim编辑器以命令行的方式处理文件,尽管不如图形化处理方式直观,但它具有操作速度快、功能全面等优点。另外,vi/vim不是一个排版程序,它不像Word或WPS那样可以对字体、格式、段落等其他属性进行设置,它只是一个文本编辑器程序。
2.2.1 启动vi/vim编辑器
vi/vim的基本格式如下:
vi [option] [filename...]
或
vim [option] [filename...]
其中,[option]是选项,[filename]是需要编辑的一个或多个文件名。
-
案例演示:
启动vi/vim编辑器,同时打开文件testFile,可以使用如下命令:
vi testFile
或
vim testFile
因为当前目录下没有testFile文件,所以此时打开的文件是空,并且在底部一行显示的是打开的文件名以及当前被打开的文件状态,因为是新建的文件,所以显示的是"testFile" [New File]标识。
2.2.2 退出vi/vim编辑器
案例演示:
退出vi/vim编辑器,同时保存新创建的文件testFile,具体操作如下所示:
-
当往新文件中输入了内容的时候
先按一下键盘 Esc 键,再输入==“:wq”==命令后回车,即可保存当前文件并退出 vi/vim 编辑器;
-
当没往新文件中输入内容的时候
直接输入 “:wq” 命令后回车,即可保存当前文件并退出vi/vim编辑器;
按下回车键后,我们将退出了当前vi/vim编辑器,如果不想保存testFile文件而是只想退出vi/vim编辑器,则我们输入 “:q” 命令后回车即可。
2.2 vi/vim工作模式切换
vi/vim编辑器有三种工作模式,每种工作模式都有不同的作用,以下是这三种工作模式的详细介绍:
- **命令模式: **查看当前文件内容,此时不能对文件内容进行写入操作,从该模式可以切换为插入模式和底线命令模式。
- **插入模式: **可以对文件内容进行编辑操作,从该模式可以切换为命令模式。
- **底线命令模式: **不可以对文件内容进行编辑,在此模式下可以执行一些vi/vim的命令,例如: 退出命令、保存内容命令等等。从该模式可以切换为命令模式。
注意: 启动vi/vim后,首先进入的是命令模式。
2.2.1 命令模式与插入模式相互切换
首先启动vi/vim编辑器后,首先进入的工作模式是命令模式,在当前模式下,我们只能查看文件内容,不能对文件内容进行写入操作。如果想对文件进行写入操作,那么我们只有进入插入模式下。
-
命令模式->插入模式方法
从命令模式到插入模式的切换方法有多种,我们介绍如下3中常用方法:
输入命令 说明 i, I i 为『从目前光标所在处输入』,I 为『在目前所在行的第一个非空格符处开始输入』。 a, A a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。 o, O 这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』; O 为在目前光标所在处的上一行输入新的一行。 -
插入模式->命令模式方法
由插入模式切换到命令模式比较简单,我们只需要点击 ESC 键即可返回到命令模式。
案例演示:
使用 vi/vim 编辑器打开文件 testFile ,并且将工作模式切换到插入模式,输入Hello vi/vim
字符串,最后保存文件并退出,可以使用如下命令:
vi testFile
或
vim testFile
打开 testFile 文件命令:
首先进入的是命令模式:
按下字母 i
后进入插入模式:
输入Hello vi/vim
字符后,按下 ESC
键后返回命令模式,最后输入 :wq
保存退出文件:
2.2.2 命令模式与底线命令模式相互切换
vi/vim 底线命令模式下如何执行写复杂的命令,例如我们常用的保存退出命令(wq)等。
-
命令模式->底线命令模式方法
从命令模式到底线命令模式的切换比较简单,我们只需要输入
:
字符即可,注意:是英文输入法下的冒号。 -
底线命令模式->命令模式方法
由底线命令模式切换到命令模式比较简单,我们只需要点击 ESC 键即可返回到命令模式。
2.3 vi/vim命令模式
在vi/vim命令模式下,我们可以对文件进行删除、复制和粘贴操作。
2.3.1 命令模式移动光标操作
vi/vim 编辑器与其它编辑器最大的不同之处是不能使用鼠标进行操作(可以在配置文件中设置鼠标属性,默认是禁止使用鼠标),我们可以在命令模式下移动光标位置,常见移动命令如下所示:
命令 | 说明 |
---|---|
h 或 向左箭头键(←) | 光标向左移动一个字符 |
j 或 向下箭头键(↓) | 光标向下移动一个字符 |
k 或 向上箭头键(↑) | 光标向上移动一个字符 |
l 或 向右箭头键(→) | 光标向右移动一个字符 |
[Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 |
[Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 |
[Ctrl] + [d] | 屏幕『向下』移动半页 |
[Ctrl] + [u] | 屏幕『向上』移动半页 |
案例演示:
使用 vi/vim 编辑器打开文件 oldFile ,移动当前光标到第一行的第二字符处,可以使用如下步骤:
打开 oldFile 文件命令:
首先进入的是命令模式:
移动光标到第一行的第5个字符处(按5次→):
最后输入 :q
退出文件:
2.3.2 命令模式删除操作
我们不光可以在插入模式下可以对文件内容进行删除操作,我们可以直接在命令模式下对文件进行删除操作,常见删除命令如下所示:
命令 | 说明 |
---|---|
x, X | 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) |
nx | n 为数字,连续向后删除 n 个字符。例如,我要连续删除 5 个字符 ,则可以使用5x |
dd | 删除光标所在的那一整行 |
ndd | n 为数字。删除光标所在的向下 n 行,例如10dd则是删除 10 行 |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行的所有数据 |
案例演示:
使用 vi/vim 编辑器打开文件 oldFile ,删除当前文件的第二行所有内容,最后保存文件并退出,可以使用如下步骤:
打开 oldFile 文件命令:
首先进入的是命令模式:
移动光标到文件第二行:
输入 dd
字符后删除当前行内容,最后输入 :wq
保存退出文件:
2.3.3 命令模式复制粘贴操作
常见复制命令如下所示:
命令 | 说明 |
---|---|
yy | 复制光标所在的那一行 |
nyy | n 为数字。复制光标所在的向下 n 行,例如 10yy 则是复制 10 行 |
y1G | 复制光标所在行到第一行的所有数据 |
yG | 复制光标所在行到最后一行的所有数据 |
y0 | 复制光标所在的那个字符到该行行首的所有数据 |
y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
常见粘贴命令为p, P,p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!
案例演示:
使用 vi/vim 编辑器打开文件 oldFile ,将第一行内容复制,然后粘贴到文件的末尾,最后保存文件并退出,可以使用如下步骤:
打卡oldFile文件命令:
首先进入的是命令模式:
复制第一行内容(yy),移动光标到最后一行,粘贴§内容到当前行的下一行,最后输入 :wq
保存退出文件:
2.4 vi/vim底线命令模式
在vi/vim底线命令模式下,我们可以执行一些特殊的命令,同时可以完成特殊的操作,例如:执行linux系统中的命令、对文件的内容进行查找或替换操作等。
2.4.1 搜索替换
vi/vim编辑器在底线命令模式下可以对文件内容进行查找和替换操作,常见查找和替换命令如下所示:
命令 | 说明 |
---|---|
/word | 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可。 |
?word | 向光标之上寻找一个字符串名称为 word 的字符串。 |
n | 这个 n 是英文字母。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。 |
N | 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。 |
[:n1,n2s/word1/word2/g | n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 。 |
:1,$s/word1/word2/g | 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2。 |
:1,$s/word1/word2/gc | 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代。 |
案例演示:
使用 vi/vim 编辑器打开文件 oldFile ,将所有 line 单词替换为 words 单词,并保存退出,可以使用如下步骤:
打开 oldFile 文件命令:
首先进入的是命令模式:
首先输入 :
切换当前模式为底线命令模式,然后输入1,$s/line/words/g
后回车:
2.4.2 底线命令模式下执行特殊命令
常见在底线命令模式执行的命令如下所示:
命令 | 说明 |
---|---|
:w | 将编辑的数据写入硬盘档案中 |
:w! | 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊! |
:q! | 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 |
:w [filename] | 将编辑的数据储存成另一个档案(类似另存新档) |
:n1,n2 w [filename] | 将 n1 到 n2 的内容储存成 filename 这个档案。 |
:! command | 暂时离开 vi 到指令行模式下执行 command 的显示结果! |
:set nu | 显示行号,设定之后,会在每一行的前缀显示该行的行号 |
:set nonu | 与 set nu 相反,为取消行号! |
案例演示:
使用 vi/vim 编辑器打开文件 oldFile ,显示当前文件行号,将当前文件的第1-3行内容另存为 oldFileCpy 文件,使用 cat
命令查看新生成文件内容,可以使用如下步骤:
打开 oldFile 文件命令:
输入 :set nu
后回车,显示行号:
输入 :1,3 w oldFileCpy
后回车
最后在 vi 中使用 cat
命令查看新生成的文件 oldFileCpy 内容:
按下回车键后返回当前 vi 编辑器,最后输入 q
退出文件: