共计 5494 个字符,预计需要花费 14 分钟才能阅读完成。
一、文件治理
目前服务器端的支流文件系统是:ext4 与 xfs;
df -T
查看磁盘的格式化的格局,支流个别是 xfs 和 ext4,系统盘默认是 xfs,后续增加数据盘尽量也是 xfs 格局这样对立比拟好,也不便写脚本批量挂盘。
1. 文件操作
(1.1), 查看文件列表:ls
# 1. 查看文件的详细信息:
$ ls -l
# 2. 查看文件的详细信息并以人性化的形式展示(k/M/G):
$ ls -lh
# 3. 查看所有的文件(包含暗藏文件):
$ ls -a
# 4. 查看所有文件的详细信息:
$ ls -al
# 5. 查看所有文件的详细信息并以人性化的形式展示(k/M/G):
$ ls -alh
# 6. 帮忙查问命令:
$ ls --help
# 7. 分屏显示文件列表:
$ more ls
👆图详解
(1). 第 1 个字母代表文件的类型:“d”代表文件夹、“-”代表一般文件、“c”代表硬件字符设施、“b”代表硬件块设施、“s”示意管道文件、“l”代表软链接文件。(2). 后 9 个字母别离代表三组权限:文件所有者、用户组、其余用户领有的权限。(3). 文件的硬链接数
(4). 文件的拥有者
(5). 文件的领有组
(6). 文件的大小
(7). 文件的批改工夫
(8). 文件名
(1.2). 通配符
命令(含通配符) | 含意 |
---|---|
* | 文件代表文件名中所有字符 |
ls am* | 查找以 am 结尾的文件 |
ls *html | 查找结尾为 html 的文件 |
? | 代表文件名中任意一个字符 |
ls ?.c | 只找第一个字符任意,后缀为.c 的文件 |
ls a.? | 只找只有 3 个字符,前 2 字符为 a.,最初一个字符任意的文件 |
[] | [”和“]”将字符组括起来,示意能够匹配字符组中的任意一个。“-”用于示意字符范畴。 |
[abc] | 匹配 a、b、c 中的任意一个 |
[a-f] | 匹配从 a 到 f 范畴内的的任意一个字符 |
(2), 输入重定向:
# 1. 将查问进去的目录名输入到指定文件中(从新并笼罩之前的, 如果不存在则创立):
$ ls > xxx.txt
# 2. 将查问进去的目录名输入到指定文件中(在之前的根底上追加, 如果不存在则创立):
$ ls >> xxx.txt
(3), 文件的创立、查看、删除
# 1. 创立一个空文件:
$ touch xxx.txt
# 2. 查看文件的内容:
$ cat xxx.txt
# 3. 查看文件的内容并显示行号:
$ cat -b xxx.txt
# 4. 合并文件内容到一个新的文件中(源文件不删除):
$ cat xxx1.txt xxx2.txt > xxx.txt
# 5. 删除一个文件:
$ rm xxx.txt
rm 参数 | 含意 |
---|---|
-i | 以进行交互式形式执行 |
-f | 强制删除,疏忽不存在的文件,无需提醒 |
-r | 递归地删除目录下的内容,删除文件夹时必须加此参数 |
(4), 管道(一个命令的输入能够作为管道作为另一个命令的输出):
$ ls -alh | more
(5), 为两个文件建设连贯(须要指明源文件名和连贯文件名):
# 1. 软连贯: 当原始文件被删除, 以后软连贯文件则不能被拜访
$ ln -s xxx.txt soft_xxx.txt
# 2. 硬链接: 即便原始的文件被删除, 以后硬链接文件依然能够拜访
$ ln xxx.txt hard_xxx.txt
(6), 文件的查找
# find 命令性能十分弱小,通常用来在特定的目录下搜寻符合条件 (应用正则表达式) 的文件,也能够用来搜寻特定用户属主的文件。# 1. 查找 /etc 目录下的所有文件中含有 "root" 的:
$ find /etc -name "root"
# 2. 查找 /etc 目录下的所有文件中 "root" 结尾的:
$ find /etc -name "^root"
# 3. 查找 /etc 目录下的所有文件中 "root" 结尾的:
$ find /etc -name "root$"
命令 | 含意 |
---|---|
find ./ -name test.sh | 查找当前目录下所有名为 test.sh 的文件 |
find ./ -name ‘*.sh’ | 查找当前目录下所有后缀为.sh 的文件 |
find ./ -name “[A-Z]*” | 查找当前目录下所有以大写字母结尾的文件 |
find /tmp -size 2M | 查找在 /tmp 目录下等于 2M 的文件 |
find /tmp -size +2M | 查找在 /tmp 目录下大于 2M 的文件 |
find /tmp -size -2M | 查找在 /tmp 目录下小于 2M 的文件 |
find ./ -size +4k -size -5M | 查找当前目录下大于 4k,小于 5M 的文件 |
find ./ -perm 777 | 查找当前目录下权限为 777 的文件或目录 |
(7), 文本文件的内容搜寻, 也能够在通道之后搜寻:
grep 选项 | 含意 |
---|---|
-v | 显示不蕴含匹配文本的所有行(相当于求反) |
-n | 显示匹配行及行号 |
-i | 疏忽大小写 |
# grep 命令是文本搜寻工具,grep 容许对文本文件进行模式 (通过指定正则表达式) 查找。如果找到匹配模式,grep 打印蕴含模式的所有行。# grep [- 选项]‘搜寻内容串’文件名
# 1. 搜寻以 a 结尾的行:
$ grep "^a" 1.txt
# 2. 搜寻以 a 结尾的行:
$ grep "a$" 1.txt
3. 匹配 [] 里中一系列字符中的任意一个:
$ grep "[a-g]kk" 1.txt
(8), 文件的拷贝和挪动
# cp 命令的性能是将给出的文件或目录复制到另一个文件或目录中
1. 拷贝文件到 a 门路下:
1)间接复制不提醒:
$ cp 1.txt a
2)显示拷贝进度:cp 1.txt a -v
3)曾经存在的指标文件不提醒:cp 1.txt a -f
2. 拷贝文件夹 a 到文件夹 b 中(不存在则创立): cp a b -r
# 用户能够应用 mv 命令来挪动文件或目录,也能够给文件或目录重命名。3. 挪动文件到 a 门路下: mv 1.txt /a -v
4. 挪动文件夹 a 到文件夹 b 中(不存在则创立): mv a b -v
5. 批改文件名: mv 1.txt 2.txt
选 项 | 含意 |
---|---|
-a | 该选项通常在复制目录时应用,它保留链接、文件属性,并递归地复制目录,简略而言,放弃文件原有属性。 |
-f | 曾经存在的指标文件而不提醒 |
-i | 交互式复制,在笼罩指标文件之前将给出提醒要求用户确认 |
-r | 若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,指标文件必须为一个目录名。 |
-v | 显示拷贝进度 |
(9), 文件的压缩与解压缩
# tar 应用格局 tar [参数] 打包文件名 文件
1. 打包文件:tar -cvf xxx.tar *.txt
解压文件:tar -xvf xxx.tar
2. 打包并压缩文件(.tar.gz):tar -zcvf xxx.tar.gz *.txt
解压缩文件(.tar.gz):tar -zxvf xxx.tar.gz
3. 打包并压缩文件(.tar.bz2):tar -jcvf xxx.tar.bz2 *.txt
解压缩文件(.tar.bz2):tar -jxvf xxx.tar.bz2
4. 打包并压缩文件(.tar.zip):zip xxx.zip *.txt
解压缩文件(.tar.zip):unzip xxx.zip
5. 解压到指定门路:tar -zxvf xxx.tar.gz -C /a
参数 | 含意 |
---|---|
-c | 生成档案文件,创立打包文件 |
-v | 列出归档解档的具体过程,显示进度 |
-f | 指定档案文件名称,f 前面肯定是.tar 文件,所以必须放选项最初 |
-t | 列出档案中蕴含的文件 |
-x | 解开档案文件 |
(10), 文件的权限治理
1, 批改文件的所有者:
应用办法:chown 用户名 文件或目录名
sudo chown demo xxx.txt
2, 批改文件的所在组:
应用办法:chgrp 用户组名 文件或者目录名
chgrp demo xxx.txt
3, 批改文件的权限:
(1). 字母法:chmod u/g/o/a +/-/= rwx 文件
u:user 示意该文件的所有者
g:group 示意与该文件的所有者属于同一组 (group) 者,即用户组
o:other 示意其余以外的人
a:all 示意这三者皆是
r: 读取; w: 写入; x: 可执行
+: 减少权限; -: 撤销权限; =: 设定权限
批改文件所有者的权限:chmod u+w XXX.txt
批改文件所有者的属于同一组的权限:chmod g+w XXX.txt
批改其他人的权限:chmod o+w XXX.txt
批改三者的权限:chmod a+w XXX.txt
(2). 数字法(读、写、执行 <--->4、2、1; 不具备任何权限是 0):
例 0:chmod u=rwx,g=rx,o=r filename <=======>chmod u=7,g=5,o=4 filename
例 1: chmod 751 file
文件所有者: 读、写、执行权限(7=4+2+1)
同组用户: 读、执行的权限(5=4+1)
其它用户: 执行的权限(1=1)
例 2: chmod 777 file:所有用户领有读、写、执行权限
例 3: 如果想递归所有目录加上雷同权限,须要加上参数 "-R"
chmod 777 test/ -R 递归 test 目录下所有文件加 777 权限
(11), 解决 INode 资源耗尽的问题
1), 办法一
通过找到以后零碎中文件最多的目录,而后查看文件的硬连接数(因为一个文件名和一个 INode 号是一一对应的关系,然而也能够多个雷同的文件名对应一个 Inode 号码),删除多余的文件,并管制文件生成的数量。
-
1,查看文件最多的目录
这里间接指定的根目录,当然也可能够指定具体的目录。
for i in /*; do echo $i; find $i | wc -l; done
-
2,删除大量文件
ls | xargs -n 1000 rm -rf
2. 目录操作
(1), 展现当前目录:
pwd
(2), 切换目录:
1. 切换到以后用户的主目录: cd
2. 切换到根目录: cd /
3. 切换到家目录: cd ~
4. 切换到上一层目录: cd ..
5. 当前目录: .
6. 切换到指定目录: cd /etc
7. 可进入上次所在的目录: cd -
(3). 创立和删除目录:
1. 创立一个一般的文件夹:mkdir a
2. 创立指定门路下的文件夹(指定 - p 的时候是确保目录名称存在, 如果目录不存在的就新创建一个):
mkdir a/b/c/d -p
删除一个空目录: rmdir a
删除一个有文件的目录: rm -r a
(4). 革除以后屏幕中显示的内容
间接敲命令: clear
应用快捷键: ctrl+L
3.Vi 编辑器
1. 命令模式
# (1), 进入插入模式:
i: 插入光标前一个字符
I: 插入行首
a: 插入光标后一个字符
A: 插入行未
o: 向下新开一行, 插入行首
O: 向上新开一行, 插入行首
# (2), 复制粘贴命令:
yy: 复制 光标所在的这一行
4yy: 复制 光标所在的这一行开始向下的 4 行
p: 粘贴
# (3), 删除命令(也就是剪切, 在不粘贴的状况下就是删除):
x: 删除(剪切) 以后光标选中的那个, 每次只删除一个
X: 删除(剪切) 以后光标后面的那个, 每次只删除一个
dd: 剪切(删除) 光标所在的这一行
2dd: 剪切(删除) 光标所在的这一行开始向下的 2 行
d0: 从以后光标开始剪切(删除), 始终到行首
dw: 删除光标开始地位的字, 蕴含光标所在字符
D: 从以后的光标开始剪切(删除), 始终到行末
# (4), 挪动光标命令:
h: 左 j: 下 k: 上 l: 右
H: 以后屏幕的上方
M: 以后屏幕的两头
L: 以后屏幕的下方
{: 按段挪动, 上移}: 按段挪动, 下移
ctrl+f------> 向下翻一页代码
ctrl+b------> 向上翻一页代码
ctrl+d------> 向下翻半页代码
ctrl+u------> 向上翻半页代码
20G: 疾速定位到第 20 行代码
G: 疾速回到 整个代码的最初一行
gg: 疾速回到 整个代码的第 1 行
w: 向后跳一个单词的长度, 即跳到下一个单词的开始处
b: 向前跳一个单词的长度, 即跳到上一个单词的开始处
# (5), 撤销命令:
u: 撤销刚刚的操作
ctrl+r: 反撤销
# (6), 可视模式下选中文本:
v: 按字符挪动, 选中文本
V: 按行挪动, 选中文本可视模式能够配合 d, y, >>, << 实现对文本块的删除, 复制, 左右挪动
# (7), 文本挪动
>>: 向右挪动代码
<<: 向左挪动代码
# (8), 反复命令:
.: 反复执行上一次的命令, 能够配合左右挪动代码的时候应用
# (9), 替换命令:
r: 替换一个字符: 在命令模式下先输出 r, 而后能够输出新的字符替换以后字符
末行模式下,将光标所在行的 abc 替换成 123
:%s/abc/123/g
末行模式下,将第一行至第 10 行之间的 abc 替换成 123
:1, 10s/abc/123/g
R: 替换光标以及前面的字符: 在命令默认下输出 R, 而后输出新的字符能够将以后光标之后的所有元素进行替换
# (10), 查看命令:
/:str(字符串)查找
n: 在查找之后, 示意下一个
N: 在查找之后, 示意上一个
在搜寻之后始终高亮显示, 咱们能够尝试搜寻一个不存在的字符便能够去除.
# 补充常见谬误阐明、以及解决办法:
# (1). 如果在 vim 中按 ctrl+ s 后呈现键盘失灵,能够按 ctrl+ q 复原!具体阐明:
应用 vim 时,如果你不小心按了 Ctrl + s 后,你会发现不能输出任何货色了,像死掉了个别,其实 vim 并没有死掉,这时 vim 只是进行向终端输入而已,要想退出这种状态,只需按 Ctrl + q 即可恢复正常。
2. 末行模式
(1), 在 vim 中执行 shell 命令:
末行模式里输出!, 前面跟命令
(2)退出:
shift+zz: 相当于末行模式下的 wq(保留并退出)
w: 保留
q: 退出
wq: 保留并退出
q!: 强制退出
(3), 设置行号(只是在以后 vim 关上的文档中失效):
显示行号(要在末行模式下输出): :set number <====> :set nu
勾销显示行号(同样也要在末行模式下输出):set nonumber <====> set nonu
永恒设置 vim 的一些属性: 更改~/.vimrc 文件即可
vim ~/.vimrc
设置行号:set number
设置搜寻出的内容高亮:set hlsearch
(4), 在末行模式下的替换
将光标所在行的 abc 全副替换成 123(其中 g 的固定的):
:%s/abc/123/g
将第一行至第 10 行之间的 abc 替换成 123:
:1, 10s/abc/123/g
替换文中每一行的第一个 str1 为 str2:
:%s/str1/str2/
正文完