文件的复制和移动
cp
拷贝文件和目录
cp file file_copy --> file 是目标文件,file_copy 是拷贝出来的文件
cp file one --> 把 file 文件拷贝到 one 目录下,并且文件名依然为 file
cp file one/file_copy --> 把 file 文件拷贝到 one 目录下,文件名为file_copy
cp *.txt folder --> 把当前目录下所有 txt 文件拷贝到 folder 目录下
-递归的拷贝,拷贝整个目录
基本语法:
cp [选项] 源文件 目标文件
常用选项包括:
-r 或 –recursive: 递归复制整个目录。
-p 或 –preserve: 保留源文件的属性,包括文件权限、所有者、组、时间戳等。
-f 或 –force: 强制复制,覆盖已存在的目标文件。
-i 或 –interactive: 交互式复制,提示是否覆盖已存在的目标文件。
-v 或 –verbose: 显示详细的复制过程。
-u 或 –update: 仅复制源文件中较新的文件到目标目录。
-l 或 –link: 创建硬链接而不是复制文件。
-s 或 –symbolic-link: 创建符号链接而不是复制文件。
错误情况:
如果源文件不存在,则会显示错误信息并终止复制过程。
如果目标文件已存在且未使用 -f 或 -i 参数,则会显示错误信息并终止复制过程。
如果没有足够的权限进行复制操作,则会显示错误信息并终止复制过程。
注意事项:
1.当复制单个文件时,目标文件可以是一个已经存在的文件或者是一个新的文件名。如果目标文件已经存在,且没有使用 -f 或 -i 参数,那么复制操作将会被终止,并且不会覆盖目标文件。
2.当复制多个文件时,目标文件必须是一个目录。如果目标文件是一个已经存在的目录,那么源文件将会被复制到该目录中。如果目标文件不存在,那么会先创建该目录,然后将源文件复制到该目录中。
3.使用 -r 或 --recursive 参数可以递归复制整个目录及其子目录中的文件。如果不使用该参数,当源文件是一个目录时,cp命令将会报错。
4.使用 -p 或 --preserve 参数可以保留源文件的属性,包括文件权限、所有者、组、时间戳等。如果不使用该参数,复制的文件将会使用默认的属性。
5.使用 -f 或 --force 参数可以强制复制,即使目标文件已经存在。使用该参数时要小心,因为它会覆盖已存在的目标文件。
6.使用 -i 或 --interactive 参数可以进行交互式复制,即在复制过程中提示是否覆盖已存在的目标文件。
7.使用 -v 或 --verbose 参数可以显示详细的复制过程,包括复制的文件名和目标路径。
8.使用 -u 或 --update 参数可以仅复制源文件中较新的文件到目标目录。如果源文件和目标文件的时间戳相同,那么不会进行复制操作。
9.使用 -l 或 --link 参数可以创建硬链接而不是复制文件。硬链接是指多个文件共享同一份数据,如果其中一个文件被修改,其他文件也会受到影响。
10.使用 -s 或 --symbolic-link 参数可以创建符号链接而不是复制文件。符号链接是指一个文件指向另一个文件或目录的快捷方式。
11.在复制过程中,如果没有足够的权限进行复制操作,将会显示错误信息并终止复制过程。
mv
移动(重命名)文件或目录,与cp的用法相同
mv file one --> 将 file 文件移动到 one 目录下
mv new_folder one --> 将 new_folder 文件夹移动到one目录下
mv *.txt folder --> 把当前目录下所有 txt 文件移动到 folder 目录下
mv file new_file --> file 文件重命名为 new_file
- -i 向用户确认是否删除;
- -f 文件强制删除;
- -r 递归删除文件夹,著名的删除操作 rm -rf 。
语法:
mv [选项] 源文件或目录 目标文件或目录
-i: 交互式移动。在覆盖文件之前提示用户。
-u: 只在源文件比目标文件新,或当目标文件不存在时,才移动或重命名源文件。
-f: 强制移动,即使目标文件存在也不提示。
-b: 在覆盖目标文件之前进行备份。
**–backup[=CONTROL]:**控制备份,其中 CONTROL 可以是 none, off, numbered, t, existing, 或 nil。
-v: 详细模式,显示正在移动的文件的信息。
-n: 不覆盖已存在的文件。
–strip-trailing-slashes: 删除源文件名末尾的斜杠。
–update: 只在源文件和目标文件不同或目标文件不存在时,才进行移动。
用户权限
用户
Linux 是一个多用户的操作系统。在 Linux 中,理论上来说,我们可以创建无数个用户,但是这些用户是被划分到不同的群组里面的,有一个用户,名叫 root ,是一个很特殊的用户,它是超级用户,拥有最高权限。
自己创建的用户是有限权限的用户,这样大大提高了 Linux 系统的安全性,有效防止误操作或是病毒攻击,但是我们执行的某些命令需要更高权限时可以使用 sudo 命令。
sudo
以 root 身份运行命令
sudo ls/date --> 当然查看日期是不需要sudo的这里只是演示,sudo 完之后一般还需要输入用户密码的
useradd + passwd
useradd 添加新用户
passwd 修改用户密码
这两个命令需要 root 用户权限
useradd laowine --> 添加一个laowine用户,添加完之后在 /home 路径下可以查看
passwd laowine --> 修改laowine用户的密码
su
切换用户,需要root权限
sudo su --> 切换为root用户(exit 命令或 CTRL + D 快捷键都可以使普通用户切换为 root 用户)
su laowine --> 切换为普通用户
su - --> 切换为root用户
vim
打开 Vim
在终端命令行中输入 vim 回车后 Vim 就会被运行起来,也可以用 Vim 来打开一个文件,只需要
在 vim 后面再加文件名。如 vim file.name ,如果文件不存在,那么会被创建。
插入
进入文件之后,此时处于交互模式,可以通过输入 i 进入插入模式。
移动
在 Vim 的交互模式下,我们可以在文本中移动光标。
h 向左移动一个字符
j 向下移动一个字符
k 向上移动一个字符
i 向右移动一个字符
当然也可以使用四个方向键进行移动,效果是一样的。
跳至行首和行末
行首:在交互模式下,为了将光标定位到一行的开始位置,只需要按下数字键 0 即可,键盘上的
Home 键也有相同效果。
行末:在交互模式下,为了将光标定位到一行的末尾,只需要按下美元符号键 $ 即可,键盘上的
End 键也有相同效果。
按单词移动
在交互模式下,按字母键 w 可以一个单词一个单词的移动。
退出文件
在交互模式下,按下冒号键 : 进入命令模式,再按下 q 键,就可以退出了。
如果在退出之前又修改了文件,就直接想用 :q 退出 Vim ,那么 Vim 会显示一个红字标明错误信
息。此时我们有两个选择:
保存并退出 :wq 或 :x ;
不保存且退出 :q! 。
标准操作
删除字符
在交互模式下,将光标定位到一个你想要删除的字符上,按下字母键 x 你会发现这个字符被删除
了。
也可以一次性删除多个字符,只需要在按 x 键之前输入数字即可。
删除(剪切)单词,行
删除一行:连按两次 d 来删除光标所在的那一行。
删除多行:例如先输入数字 2 ,再按下 dd ,就会删除从光标所在行开始的两行。
删除一个单词:将光标置于一个单词的首字母处,然后按下 dw 。
删除多个单词:例如先按数字键 2 再按 dw 就可以删除两个单词了。
从光标所在位置删除至行首: d0 。
从光标所在位置删除至行末: d$ 。
复制单词,行
复制行:按两次 y 会把光标所在行复制到内存中,和 dd 类似, dd 用于“剪切”光标所在行。
复制单词: yw 会复制一个单词。
复制到行末: y$ 是复制从光标所在处到行末的所有字符。
复制到行首: y0 是复制光标所在处到行首的所有字符。
粘贴
如果之前用 dd 或者 yy 剪切复制过来的,可以使用 p 来粘贴。同样也可以使用 数字+p 来表示复制多次。
替换一个字符
在交互模式下,将光标置于想要替换的字符上。按下 r 键,接着输入你要替换的字符即可。
撤销操作
如果要撤销最近的修改,只需要按下 u 键,如果想要撤销最近四次修改,可以按下4,再按下u 。
重做
取消撤销,也就是重做之前的修改使用 ctrl + r 。
跳转到指定行
Vim 编辑的文件中,每一行都有一个行号,行号从1开始,逐一递增。
行号默认是不显示,如果需要它显示的话,可以进入命令模式,然后输入 set nu ,如果要隐藏行
号的话,使用 set nonu 。
跳转到指定行: 数字+gg ,例如 7gg ,表示跳转到第7行。
要跳转到最后一行,按下 G 。
要跳转到第一行,按下 gg 。
高级操作
查找
处于交互模式下,按下 / 键,那么就进入查找模式,输入你要查找的字符串,然后按下回车。光
标就会跳转到文件中下一个查找到的匹配处。如果字符串不存在,那么会显示 “pattern not found” 。
n 跳转到下一个匹配项;
N 跳转到上一个匹配项。
注意: 用斜杠来进行的查找是从当前光标处开始向文件尾搜索,如果你要从当前光标处开始,向
文件头搜索则使用 ? ,当然也可以先按下 gg 跳转到第一行在进行全文搜索。
vim 设置行号与去除行号
设置行号:set num
去除行号:set num!