一、目录结构
【1】、Windows和Linux目录结构
windows目录结构:
powershell
D:\新建文件夹\OneDrive\桌面\Linux\oldboy\第一阶段
C:\PerfLogs
E:\node_modules
Linux目录结构:类似Windows只有一个C盘,使用 "/" 表示,"/" 是一个目录
bash
/root
/etc/ssh
【2】、相对路径和绝对路径
相对路径: 当前的位置称为相对路径 文件的前面没有"/",切换目录时,从当前位置为准
1.txt
绝对路径: 一切从/开始的位置,切换目录时,从根 "/" 开始
/root/1.txt
/root/oldboy.txt
二、Linux系统基础命令1
【1】、pwd
查看当前所在的路径 print working directory
语法结构
-
pwd + 回车
bash[root@kylin-xu ~]# pwd /root
【2】、cd
切换目录 change directory
语法结构:
- cd + 回车
- cd + 路径
- cd [参数]
sh
# 切换到 /opt 目录下面
# 相对路径完成
[root@oldboyedu ~]# pwd
/root
[root@oldboyedu ~]# cd /
[root@oldboyedu /]# pwd
/
[root@oldboyedu /]# cd opt
[root@oldboyedu opt]# pwd
/opt
# 绝对路径进入到/opt目录下
[root@oldboyedu ~]# cd /opt
[root@oldboyedu opt]# pwd
/opt
案例2.回到家目录
快速回到家目录
[root@oldboyedu ~]# cd /opt/
[root@oldboyedu opt]# cd # 回到家目录
相对路径
[root@oldboyedu opt]# cd /
[root@oldboyedu /]# cd root
绝对路径
[root@oldboyedu opt]# pwd
/opt
[root@oldboyedu opt]# cd /root
[root@oldboyedu ~]# pwd
/root
cd 的参数
cd + ~:回到当前登录用户的家目录
cd + .. :返回上一级目录,如果当前是在根目录了,cd + .. 无效
cd + . :表示当前目录
cd + -:返回上一次所在的位置
sh
[root@kylin-xu ~]# cd /etc/sysconfig/network-scripts/
[root@kylin-xu network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@kylin-xu network-scripts]# cd ..
[root@kylin-xu sysconfig]# pwd
/etc/sysconfig
[root@kylin-xu sysconfig]# cd .
[root@kylin-xu sysconfig]# pwd
/etc/sysconfig
[root@kylin-xu sysconfig]# cd network-scripts/
# 一次返回两级目录
[root@kylin-xu network-scripts]# cd ../../
[root@kylin-xu etc]# pwd
/etc
cd命令小结
-
cd:快速回家
-
cd + ~:快速回家
-
cd + - :返回上一次所在的目录,重新连接终端上一次的路径失效
bash[root@kylin-xu ~]# cd - -bash: cd: OLDPWD 未设定
-
相对路径和绝对路径
- 相对路径:从当前位置开始
- 绝对路径:从 / 开始
【3】、ls
语法结构:
- ls # 直接回车
- ls 目录 # 查看目录下的文件
- ls /etc/sysconfig/
- ls 参数
- ls 参数 目录/路径目录
- ls 文件 # 查看文件是否存在
参数选项:
-l 显示文件的详细信息
sh
[root@kylin-xu ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg
[root@kylin-xu ~]# ls -l
总用量 8
-rw------- 1 root root 2726 11月 3 12:29 anaconda-ks.cfg
-rw-r--r-- 1 root root 3150 11月 3 12:31 initial-setup-ks.cfg
# 查看/opt/目录下有哪些文件
[root@kylin-xu ~]# ll /opt
总用量 0
dr-xr-xr-x 5 root root 79 3月 24 2023 kylin-sm-package
drwxr-xr-x 4 root root 58 11月 3 12:21 patch_workspace
[root@kylin-xu tmp]# cd /opt
[root@kylin-xu opt]# ls -l
总用量 0
dr-xr-xr-x 5 root root 79 3月 24 2023 kylin-sm-package
drwxr-xr-x 4 root root 58 11月 3 12:21 patch_workspace
ls -l
可以简写 ll
,在linux中执行ll
相当于执行的是ls -l
命令,ll是ls -l的外号。
ls 小结
- ls # 查看当前目录下有哪些文件
- ls -l # 查看文件的详细信息
- ll # 相当于执行ls -l
- ll oldboy.txt # 查看oldboy.txt的详细信息,如果没有,会报错
- ll /opt/ # /opt目录下文件的详细信息
- ll /etc/sysconfig/network-scripts/
【4】、touch
创建普通文件 如果文件存在则修改时间不影响文件的内容
语法结构:
touch 文件名称
touch /目录/文件名称 # 目录必须存在
touch file1 file2 # 创建多个文件
touch file1 /目录/file2 # 在不同的目录下创建不同的文件
sh
案例1.在当前的目录oldboy.txt
[root@oldboyedu ~]# rm -rf * # 删除当前所有的文件和目录 企业慎用
[root@oldboyedu ~]# ll
总用量 0
-rw-r--r-- 1 root root 0 10月 25 19:05 oldboy.txt
案例2.在当前目录下创建多个文件 1.txt 2.txt
[root@kylin-xu test]# touch 1.txt 2.txt
[root@kylin-xu test]# ls
1.txt 2.txt
[root@kylin-xu test]# ll
总用量 0
-rw-r--r-- 1 root root 0 11月 4 02:54 1.txt
-rw-r--r-- 1 root root 0 11月 4 02:54 2.txt
案例3.如果文件存在只修改文件的时间 不会影响文件的内容
[root@oldboyedu ~]# ll
总用量 0
-rw-r--r-- 1 root root 0 10月 25 19:07 1.txt
-rw-r--r-- 1 root root 0 10月 25 19:07 2.txt
-rw-r--r-- 1 root root 0 10月 25 19:05 oldboy.txt # 注意看文件的时间19:05
[root@oldboyedu ~]# touch oldboy.txt
[root@oldboyedu ~]# ll
总用量 0
-rw-r--r-- 1 root root 0 10月 25 19:07 1.txt
-rw-r--r-- 1 root root 0 10月 25 19:07 2.txt
-rw-r--r-- 1 root root 0 10月 25 19:07 oldboy.txt # 执行touch后时间 19:07
案例4.在/opt目录下创建a.txt
相对路径:
[root@oldboyedu ~]# cd /opt/
[root@oldboyedu opt]# touch a.txt
[root@oldboyedu opt]# ll
总用量 0
-rw-r--r-- 1 root root 0 10月 25 19:09 a.txt
绝对路径:/opt目录下b.txt 绝对路径表示/opt/b.txt
[root@oldboyedu ~]# touch /opt/b.txt
[root@oldboyedu ~]# ll /opt/
总用量 0
-rw-r--r-- 1 root root 0 10月 25 19:09 a.txt
-rw-r--r-- 1 root root 0 10月 25 19:10 b.txt
案例5.在当前目录创建oldgirl.txt文件 在/tmp目录下创建oldboy.txt
使用绝对路径表示:
oldgirl.txt
/tmp/oldboy.txt
[root@oldboyedu ~]# touch oldgirl.txt /tmp/oldboy.txt
[root@oldboyedu ~]# ll
总用量 0
-rw-r--r-- 1 root root 0 10月 25 19:07 1.txt
-rw-r--r-- 1 root root 0 10月 25 19:07 2.txt
-rw-r--r-- 1 root root 0 10月 25 19:07 oldboy.txt
-rw-r--r-- 1 root root 0 10月 25 19:13 oldgirl.txt
[root@oldboyedu ~]# ll oldgirl.txt /tmp/oldboy.txt
-rw-r--r-- 1 root root 0 10月 25 19:13 oldgirl.txt
-rw-r--r-- 1 root root 0 10月 25 19:13 /tmp/oldboy.txt
# 注意: 使用绝对路径时候必须保证目录存在的,不存在创建不成功
touch小结
- touch 1.txt # 在当前创建1.txt
- touch a.txt b.txt # 在当前创建多个文件
- touch /opt/1.txt # 指定在/opt目录下创建1.txt
- touch /opt/1.txt /tmp/2.txt # 在不同的路径下创建文件
【5】、cat命令
查看文件内容
语法结构:
cat file # 查看文件的内容
参数选项:
-n # 显示文件的行数
sh
查看/etc/hosts文件
[root@kylin-xu test]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@kylin-xu test]# cat /etc/hosts -n
1 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
2 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
【6】、mkdir
创建目录 make directory
语法结构:
mkdir 目录的名称
mkdir dir1 dir2 dir3
mkdir dir1/test /tmp/oldboy
参数选项:
-p #递归创建目录 目录存在不提示
sh
[root@kylin-xu test]# mkdir abc
[root@kylin-xu test]# ls
abc
[root@kylin-xu test]# mkdir -p a/b/c
[root@kylin-xu test]# tree a
a
└── b
└── c
2 directories, 0 files
创建多个目录
[root@kylin-xu test]# mkdir b c d
[root@kylin-xu test]# ll
total 0
drwxr-xr-x 2 root root 6 nov 4 03:09 b
drwxr-xr-x 2 root root 6 nov 4 03:09 c
drwxr-xr-x 2 root root 6 nov 4 03:09 d
mkdir小结:
- mkdir oldboy #在当前创建oldboy目录
- mkdir oldboy oldgirl # 创建多个目录
- mkdir /opt/a /tmp/b # 在不同的目录下创建目录
- mkdir -p a/b/c # 递归创建目录
【7】、tree
树形结构显示目录
tree -L 1 # 显示1级目录下所有的文件
sh
[root@kylin-xu test]# tree a
a
└── b
└── c
快捷键
CTRL + l:清屏
三、Linux系统基础命令2
【1】、echo
echo 回声。 echo 输出指定内容到屏幕。
一般与重定向符号搭配(> >>)
> 重定向符号(标准输出重定向),先清空文件内容,然后再写入。如果文件不存在,还会自动创建文件
>> 追加重定向符号(标准输出追加重定向),把内容追加到文件的末尾。
sh
[root@kylin-xu day05]# echo haha > 1.txt
[root@kylin-xu day05]# cat 1.txt
haha
[root@kylin-xu day05]# echo haha > 1.txt
[root@kylin-xu day05]# cat 1.txt
haha
[root@kylin-xu day05]# echo xixi > 1.txt
[root@kylin-xu day05]# cat 1.txt
xixi
[root@kylin-xu day05]# echo xixi >> 1.txt
[root@kylin-xu day05]# echo xixi >> 1.txt
[root@kylin-xu day05]# cat 1.txt
xixi
xixi
xixi
echo与重定向小结
- echo一般与>,>>搭配。
- > ,>> 重定向符号
【2】、花括号{}
- touch创建文件,mkdir创建目录
- {} 生成序列(数字,字母)
sh
[root@kylin-xu day05]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[root@kylin-xu day05]# 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
touch批量创建文件
sh
[root@kylin-xu day05]# touch a{1..10}.txt
[root@kylin-xu day05]# ls
a10.txt a1.txt a2.txt a3.txt a4.txt a5.txt a6.txt a7.txt a8.txt a9.txt
mkdir 批量创建目录 (文件名与目录名不同)
sh
[root@kylin-xu day05]# mkdir a{1..10}
[root@kylin-xu day05]# ls
a1 a10 a2 a3 a4 a5 a6 a7 a8 a9
- {}小结:
- 生成序列,与一些命令搭配实现批量操作。
- echo看效果,touch创建文件,mkdir创建目录。
【3】、cp命令
cp copy复制。
cp格式 | 源(从哪里来) | 目标(到哪去) | |
---|---|---|---|
cp | 选项 | 复制内容(文件,目录) | 目标 |
选项 | |||
-r | 递归复制 | ||
-p | 保持属性不变 | ||
-d | 软链接相关 | ||
-a | -a -pdr |
- 复制文件:cp复制文件麒麟系统的网卡配置文件(/etc/sysconfig/network-scripts/ifcfg-ens33)到/root/下
sh
[root@kylin-xu ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /root
[root@kylin-xu ~]# ll ifcfg-ens33
-rw-r--r-- 1 root root 371 nov 4 03:43 ifcfg-ens33
- 复制目录:先创建/backup,复制/etc/到/backup/目录
sh
mkdir /backup
cp -r /etc/ /backup
[root@kylin-xu ~]# tree -L 1 /backup/
/backup/
└── etc
1 directory, 0 files0
- 复制文件或目录的时候保持文件,目录的属性不变(修改时间)
sh
[root@kylin-xu ~]# ll /etc/hosts
-rw-r--r-- 1 root root 158 jun 23 2020 /etc/hosts
[root@kylin-xu ~]# cp /etc/hosts ~/
[root@kylin-xu ~]# ll hosts
-rw-r--r-- 1 root root 158 nov 4 03:48 hosts
# 直接复制的话时间属性发生了变化,我们需要加上 -rp 参数,也可以加上 -a 参数
# -a 参数一个包括了 rpd
[root@kylin-xu ~]# ll /etc/hosts
-rw-r--r-- 1 root root 158 jun 23 2020 /etc/hosts
[root@kylin-xu ~]# cp -p /etc/hosts ~/
[root@kylin-xu ~]# ll hosts
-rw-r--r-- 1 root root 158 jun 23 2020 hosts
【4】、mv命令
mv move移动(剪切+粘贴)
- 移动:把/opt/test/a目录(如果没有创建下) 移动到/mnt/
sh
[root@kylin-xu ~]# mv /opt/day05/a1 /mnt
[root@kylin-xu ~]# ll -d /mnt/a1
drwxr-xr-x 2 root root 6 nov 4 03:40 /mnt/a1
[root@kylin-xu ~]# ll -d /opt/day05/a1
ls: no se puede acceder a '/opt/day05/a1': No such file or directory
- 改名:把网卡配置文件复制到/opt/,然后修改/opt/网卡配置文件名字为ifcfg-eth0
sh
[root@kylin-xu ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /opt
[root@kylin-xu ~]# mv /opt/ifcfg-ens33 /opt/ifcfg-eth0
[root@kylin-xu ~]# ll /opt/ifcfg-eth0
-rw-r--r-- 1 root root 371 nov 4 03:55 /opt/ifcfg-eth0
mv小结
- 移动,文件,目录。
- 重命名。
【5】、rm
rm remove删除文件或目录
rm命令选项 | ||
---|---|---|
-r | 递归删除 | |
-f | 强制删除 |
- 删除文件/opt/ifcfg-eth0
sh
[root@kylin-xu ~]# rm -f /opt/ifcfg-eth0
[root@kylin-xu ~]# ll /opt/ifcfg-eth0
ls: no se puede acceder a '/opt/ifcfg-eth0': No such file or directory
- 删除/opt/day05/a2目录
sh
rm -rf /opt/day05/a2
-
替代rm方案使用mv或书写脚本(回收站脚本)
- 这个后面未来shell部分解决。
-
rm小结:
- 删除文件或目录。
- 使用mv替代。
【6】、vi/vim
- vi,vim Linux编辑器
- Linux中手一样的存在。
vi/vim | vi | vim |
---|---|---|
整体 | 基本用法一致 | 基本用法一致 |
区别 | vi linux默认安装 | 可能没有 |
区别 | 基础版本编辑器 | 进阶 imporve 提升 |
1、编辑文件全流程
- 1️⃣复制网卡配置文件到当前目录
sh
cp /etc/sysconfig/network-scripts/ifcfg-ens33 .
- 2️⃣vim打开文件
sh
vim ifcfg-ens33
- 3️⃣进入编辑模式
sh
按i (insert插入,编辑模式)
- 4️⃣ 退出编辑模式
sh
esc
- 5️⃣ 保存并退出
sh
:wq #write 保存 quit 退出、顺序不能颠倒
:q 退出不保存
:q! 强制退出不保存
:w 保存不退出
- 6️⃣ 查看文件内容
sh
cat ifcfg-ens33
2、vi/vim快捷键
-
加速我们操作。
-
测试快捷键的环境
不要进入编辑模式。
- 快速到达文件最后一行: G
- 快速到达文件的第1行: gg
- 快速到达文件的某一行:第100行 100gg
- 搜索 /ssh 搜索包含ssh的行 继续查找(向下)n, N(向上)
- 复制 yy
- 粘贴 p
- 删除(剪切) dd
- 撤销 u
- 显示行号 :set nu :set nonu #number行号