Linux运维
前言
前面介绍了一些命令的用法,不知道大家掌握的怎么样,今天呢就跟大家说说Linux的一些重要目录的作用以及一些系统命令。
一、Linux目录的作用
Linux 根目录下的一级目录的作用:
1. bin # 二进制系统命令所在的目录
2. boot # 系统内核的位置 引导的程序的位置
3. dev # 硬件设备所在的位置
4. etc # 配置文件所在的目录 默认的系统配置文件在etc目录
5. home # 普通用户的家目录 贫民窟
6. mnt # 临时挂载点 硬件的一个入口文件
7. opt # 第三方程序默认安装的位置
8. proc # 内存的映射文件 可以通过着目录下的文件查看硬件信息 cpu 内存
9. root # 管理员的家目录
10. sbin # 超级管理员命令所在的位置
11. tmp # 临时目录存在的位置 类似windows的回收站 使用移动替代删除
12. usr # 用户程序文件所在的位置
13. var # 日志文件所在的位置
二、Linux系统命令
1.cp
cp(英文全拼:copy file)命令主要用于复制文件或目录。
可以一次性复制多个文件或目录
语法结构:
cp [选项] 源文件 目标文件
参数选项 | 作用效果 |
---|---|
-a | 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于 dpR 参数组合。 |
-d | 复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。 |
-r 或着 --recursive | 用于复制目录及其所有的子目录和文件,如果要复制目录,需要使用该选项。 |
-i 或着 --interactive | 在复制前提示确认,如果目标文件已存在,则会询问是否覆盖,回答 y 时目标文件将被覆盖。。 |
-u 或者 --update | 仅复制源文件中更新时间较新的文件。 |
-v 或者 --verbose | 显示详细的复制过程。 |
-p 或者 --preserve | 保留源文件的权限、所有者和时间戳信息。 |
-f 或者 --force | 强制复制,即使目标文件已存在也会覆盖,而且不给出提示。 |
-l | 不复制文件,只是生成链接文件。 |
创建实验环境
[root@study01 ~]# touch study.txt #创建一个study文件
[root@study01 ~]# ll #查看当前目录下的详细信息
total 0
-rw-r--r--. 1 root root 0 Mar 26 14:13 study.txt
[root@study01 ~]# mkdir test #创建一个test目录
[root@study01 ~]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 26 14:13 study.txt
drwxr-xr-x. 2 root root 6 Mar 26 14:14 test
案例一:复制study.txt到test目录下 名称不变
[root@study01 ~]# cp study.txt test/
[root@study01 ~]# tree #以树状结构展示目录下的文件
.
├── study.txt
└── test
└── study.txt
1 directory, 2 files
案例二:复制当前的study.txt 到当前的位置名字为study.txt.bak
[root@study01 ~]# cp study.txt study.txt.bak
[root@study01 ~]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 26 14:13 study.txt
-rw-r--r--. 1 root root 0 Mar 26 14:35 study.txt.bak
经常用来备份文件
案例三:复制test目录到/tmp目录下
[root@study01 ~]# ll
total 0
-rw-r--r--. 1 root root 0 Mar 26 14:13 study.txt
-rw-r--r--. 1 root root 0 Mar 26 14:35 study.txt.bak
drwxr-xr-x. 2 root root 23 Mar 26 14:15 test
[root@study01 ~]# ll /tmp/
total 4
-rwx------. 1 root root 836 Mar 22 23:50 ks-script-nJI3SI
-rw-------. 1 root root 0 Mar 22 23:45 yum.log
[root@study01 ~]# cp -r test/ /tmp/
[root@study01 ~]# ll /tmp/
total 4
-rwx------. 1 root root 836 Mar 22 23:50 ks-script-nJI3SI
drwxr-xr-x. 2 root root 23 Mar 26 15:31 test
-rw-------. 1 root root 0 Mar 22 23:45 yum.log
注意:
如果复制过去的目录下有该文件同名字的文件系统会提示
[root@study01 ~]# cp study.txt test/
cp: overwrite ‘test/study.txt’?
输入y则会覆盖掉
输入n则不覆盖取消复制(或者直接ctrl+c终止当前的操作)
2.mv
mv(英文全拼:move file)命令用来为文件或目录改名、或将文件或目录移入其它位置。
语法结构:
mv [options] source dest
mv [options] source... directory
参数选项 | 作用效果 |
---|---|
-b | 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。 |
-i | 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。 |
-f | 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。 |
-n | 不要覆盖任何已存在的文件或目录。 |
-u | 当源文件比目标文件新或者目标文件不存在时,才执行移动操作。 |
注意
企业中使用mv代替rm,相当于先放到回收站但是不清空
3.rm
语法结构:
rm [options] name...
参数选项 | 作用效果 |
---|---|
-i | 删除前逐一询问确认。 |
-f | 即使原档案属性设为唯读,亦直接删除,无需逐一确认。 |
-r | 将目录及以下之档案亦逐一删除。 |
使用的时候一定要检查命令是否正确以防出问题。
4.vim
Linux 提供了一系列功能强大的编辑器,如 vi 和 Emacs 。 vi 是 linux 系统的第一个全屏幕交互式编辑器。vim是vi的强化版本,完全兼容vi操作。
vim的三种模式
- 命令行模式:最初进入vi之后的模式,该模式下可以移动光标进行浏览,整行删除,但无法输入文字。
- 编辑模式:只有在该模式下,用户才能进行文字的编辑输入。
- 底行模式:该模式下,光标位于屏幕底行,用户可以进行文件保存或退出操作,也可以设置编辑环境,如寻找字符串、列出行号。
模式之间的转换方式:
a、命令行模式
键位 | 作用 |
---|---|
yy | 复制当前光标所在行 |
[n]yy | n为数字,复制当前光标开始的n行 |
p | 粘贴复制的内容到光标所在行之下 |
P | 粘贴复制的内容到光标所在行之上 |
cc | 剪切当前光标所在行 |
[n]cc | 剪切当前光标开始的n行 |
dd | 删除当前光标所在行 |
[n]dd | 删除当前光标所在行开始的n行 |
G | 光标移动到文件尾 |
u | 取消前一个动作(撤销) |
. | 重复前一个动作 |
x | 删除光标当前的一个字符 |
ZZ | 保存并退出 |
b、底行模式
命令 | 作用 |
---|---|
:w | 保存 |
:q | 退出 vi( 系统会提示保存修改 ) |
:q! | 强行退出(对修改不做保存) |
:wq | 保存后退出 |
:w [filepath] | 另存文件到 filepath |
:set nu | 显示行号 |
:n | 定位到第n行 |
:set nonu | 取消行号 |
: n1,n2 co n3 | 将n1到n2行所有文本复制到n3行之下 |
: n1,n2 m n3 | 将n1到n2行所有文本移动到n3行之下 |
: n1,n2 d | 删除n1到n2行的所有文本 |
/name | 查找光标之后的名为 “name” 的字符串如果查找下一个,按“n”即可在查找时,忽略关键字的大小可用\c选项 |
: s/str1/str2/ | 将当前行的第一个字符串str1替换为字符串str2 |
: %s/str1/str2/g | 将所有行的字符串str1替换为字符串str2 |
5、echo
cho命令是linux中最基础的命令,也是很常用的命令,特别是在写shell脚本的时候,可能会经常被用到,用于字符串的输出
语法结构:
echo 字符串 # 输出到屏幕
echo 字符串 > 文件 # 输出到文件
参数选项 | 作用效果 |
---|---|
-n | 不换行输出 |
-e | 识别转义字符 |
转义字符 | 意义 |
---|---|
\b | 转义后相当于按退格键(backspace) ,但前提是”\b”后面存在字符 |
\c | 不换行输出,在”\c”后面不存在字符的情况下,作用相当于echo -n |
\n | 换行,效果看示例。 |
\f 或者\v | 换行,但是换行后的新行的开头位置连接着上一行的行尾 |
\t | 转以后表示插入tab,即制表符 |
\r | 光标移至行首,但不换行,相当于使用”\r”以后的字符覆盖”\r”之前同等长度的字符 |
\ | 表示插入”\”本身; |
使用echo命令输出”\b”转义字符,在”\b”后面存在字符的前提下,”\b”表示删除前一个字符,”\b\b”表示删除前两个字符。
[root@study01 ~]# echo -e "123456789\b"
123456789
[root@study01 ~]# echo -e "123\b456"
12456
[root@study01 ~]# echo -e "123\b\b456"
1456
[root@study01 ~]# echo -e "123\b\b\b456"
456
可以看到,在”\b”后面不存在任何字符时,”\b”并没有转义为”退格键”,当”\b”后面存在字符时,一个”\b”就相当于按一次backspace键。
使用\c转义符,表示不换行输出,但是当”\c”后面仍然存在字符时,”\c”后面的字符将不会被输出,如果”\c”后面不存在任何字符时,效果与使用”echo -n”相同,
[root@study01 ~]# echo -e "123456\c"
123456[root@study01 ~]# echo -e "123456\c"
123456[root@study01 ~]#
[root@study01 ~]# echo -n "123456"
123456[root@study01 ~]#
“\n”转义后表示换行,被输出的字符从”\n”处开始另起一行。
[root@study01 ~]# echo -e "123456\n"
123456
[root@study01 ~]# echo -e "123\n456789"
123
456789
“\f”和”\v“转移符表示换行,但是换行后的新行的开头位置连接着上一行的行尾,
[root@study01 ~]# echo -e "123\f456"
123
456
[root@study01 ~]# echo -e "123\v456"
123
456
”\t“转义字符表示键盘上的tab键
[root@study01 ~]# echo -e "123\t456"
123 456
“\r”转义符表示使用”\r”后面的字符覆盖”\r”之前的同等长度的字符
[root@study01 ~]# echo -e "123\r456"
456
[root@study01 ~]# echo -e "123456\r789"
789456
[root@study01 ~]# echo -e "123456\\789"
123456\789
a.{ }
{ }本身就是一个序列,而不是一个命令
1、当批量创建类似的文件名或者目录名的时候可以用序列来更方便
数字序列
[root@study01 ~]# echo {1..5}
1 2 3 4 5
[root@study01 ~]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@study01 ~]# echo {1..10..2}
1 3 5 7 9
[root@study01 ~]# echo {1..100..2}
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71
73 75 77 79 81 83 85 87 89 91 93 95 97 99
[root@study01 ~]# echo {01..10}
01 02 03 04 05 06 07 08 09 10
字母序列
[root@study01 ~]# echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@study01 ~]# echo {a..f}
a b c d e f
[root@study01 ~]# echo {a..z..2}
a c e g i k m o q s u w y
拼接
[root@study01 ~]# echo A{1..3}
A1 A2 A3
[root@study01 ~]# echo {1..3}A
1A 2A 3A
[root@study01 ~]# mkdir {1..3}A
[root@study01 ~]# ll
total 4
drwxr-xr-x. 2 root root 6 Mar 5 12:04 1A
drwxr-xr-x. 2 root root 6 Mar 5 12:04 2A
drwxr-xr-x. 2 root root 6 Mar 5 12:04 3A
b. > >>
注意: 只要是可以输出显示到屏幕上的内容 都可以定向到文件中
注意: 只接收正确的结果
> 标准输出重定向
(先清空后写入)
[root@study01 ~]# cat study.txt
[root@study01 ~]# echo hehe>study.txt
[root@study01 ~]# cat study.txt
hehe
[root@study01 ~]# echo hahahha>study.txt
[root@study01 ~]# cat study.txt
hahahha
>> 标准追加重定向
(追加内容到文件的末尾)
[root@study01 ~]# echo hello>>study.txt
[root@study01 ~]# cat study.txt
hahahha
hello
注意
> 和>> 只接收正确的结果
扩展:
2> 和2>> 只接收错误的结果