目录结构和基础命令

一、目录结构

【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行号