2.1 目录结构
上一章我们讲了目录的核心结构,那么我们来看一下,Linux的目录的结构到底是什么样子的?
如下图:

-
我们从图中能看到,Linux的系统目录结构和Windows不同,一切是以根目录为起始点的
-
根目录下有非常多的子目录,子目录中可以存在文件和目录
-
子目录下仍然可以存在子目录,和我们熟悉的Windows系统是一样的
请大家熟记以下重要的目录
| 根下第1层目录(核心) | 说明 |
|---|---|
| /etc/ | 存放各种配置文件.(系统默认配置,服务配置,后续安装的服务 的配置.) |
| /home/ | 普通用户家目录,贫民窟 oldboy /home/oldboy /home/lidao |
| /root/ | root用户家目录,皇宫 |
| /tmp/ | temportary 临时目录,目录下面临时存储内容. (坑:麒麟系统 中tmp 默认 中的内容会重启后消失.) |
| /bin/ | binary 二进制文件,普通命令 |
| /sbin/ | super 超级命令,root用 |
2.2 Linux基础命令
接下来我们开始学习Linux的基础命令部分,学习完后我们可以能够正常使用Linux进行增删改查等操作
这部分非常重要,必须记住
2.2.1 cd与pwd
| 说明 | 说明 |
|---|---|
| cd | change directory 进入到某个目录 |
| pwd | print working directory显示当前所在位置(以绝对路径方式显示) |
-
例:我现在想进入到
/etc/nginx/这个目录:# 使用cd + 目标目录 root@suim:~# cd /etc/nginx # 使用pwd打印当前所在目录 root@suim:/etc/nginx# pwd /etc/nginx -
特殊操作
| 说明 | 说明 |
|---|---|
| cd 目录 | 进入到指定目录 |
| cd ~ | 回到家目录 |
| cd | 回到家目录 |
| cd .. | 进入上级目录 |
| cd . | 进入当前目录(未来一般与复制,移动一起用) |
| cd - | 进入到上次所在目录/位置 |
~ 符号 在Linux中意为家目录
# ~符号 在Linux中意为家目录
root@suim:/etc/nginx# cd ~
root@suim:~#
# cd 后什么都不接也是回到当前用户家目录
root@suim:/etc/nginx# cd
root@suim:~#
# cd .. 为进入上级目录
root@suim:/etc/nginx# cd ..
root@suim:/etc# # 注意,此时进入到了nginx/目录的上级目录 /etc
# cd . 一般不会单独使用
root@suim:/etc/nginx# cd .
root@suim:/etc/nginx#
# cd - 为进入到上次在的目录
root@suim:/etc/nginx# cd /etc/
root@suim:/etc# cd -
/etc/nginx #这里我们又回到了一开始所在的/etc/nginx
root@suim:/etc/nginx#
2.2.2 mkdir创建目录
创建很多目录,用来分门别类的存放内容,类似于Windows里的新建文件夹
| mkdir创建目录 | 说明 |
|---|---|
| 选项 -p | 创建多层目录 |
| -v | 显示创建目录过程,工作中几乎不用 |
例:
# 使用mkdir + 你想创建的目录名字
root@suim:~# mkdir suim
root@suim:~# ls #ls是查看目录命令,下面会讲
suim #此时可以看到我们创建了名为 suim 的目录
# 如果我们想创建一个目录,在langke这个目录下再创建一个suim目录
# 我们当前是没有 langke 这个目录的,会出现以下报错
root@suim:~# mkdir langke/suim
mkdir: cannot create directory ‘langke/suim’: No such file or directory
# 提示我们没有目录或文件,是因为我们如果想创建 suim 这个目录,就必须先创建 langke 这个目录,这也验证了Linux系统的目录结构是从根开始散发的观点
# 那我们先创建langke的话就可以,但是我们如果需要创建 langke/suim/666/777/888 呢?太费劲了
# 我们此时就可以使用mkdir 命令的 选项 -p
root@suim:~# mkdir -p langke/suim/666/777/888
root@suim:~# #此时我们可以看到没有报错
# 那到底有没有创建好呢?
root@suim:~# tree langke/
langke/
└── suim
└── 666
└── 777
└── 888
4 directories, 0 files
# 我们可以看到目录的整体结构,创建成功
2.2.3 touch 创建文件
# 我们现在想要创建一个 suim.txt文件
# 使用 touch + 文件名
root@suim:~/suim# touch suim.txt
root@suim:~/suim# ls
suim.txt
root@suim:~/suim#
2.2.4 ls 查看目录内容
| ls命令选项 | 说明 |
|---|---|
| -a | 显示所有文件包含隐藏的 |
| -l | long以长格式显示(显示详细信息,比如文件时间,大小,所有者) |
| -t | time 按照修改时间排序 |
| -r | reverse ....逆序排序,一般-rt 一起用 |
| -h | 以人类可读形式显示大小 |
# ls -a 查看所有文件,包括 .前缀的隐藏文件
root@suim:~# ls -a
. .bypy .npm .ssh TenCyclesofFate-docker install-komari.sh test_result.txt
.. .cache .nvm .viminfo backup_log.txt langke
.bash_history .config .profile .wget-hsts backups snap
.bashrc .lesshst .selected_editor suim
# ls -l 以长格式显示,可以显示文件和目录的详细信息,但不会显示隐藏文件
root@suim:~# ls -l
total 276
-rw-r--r-- 1 root root 4559 Jan 5 01:14 backup_log.txt
drwxr-xr-x 2 root root 4096 Jan 5 01:14 backups
drwxr-xr-x 3 root root 4096 Jan 5 23:50 langke
drwx------ 3 root root 4096 Dec 5 09:42 snap
drwxr-xr-x 2 root root 4096 Jan 5 23:55 suim
-rw-r--r-- 1 root root 11877 Dec 18 11:39 test_result.txt
# 我们可以组合使用, ls -la 可以详细显示当前目录所有文件,比较常用
root@suim:~# ls -la
total 376
drwx------ 14 root root 4096 Jan 5 23:50 .
drwxr-xr-x 20 root root 4096 Dec 18 15:26 ..
-rw------- 1 root root 7862 Jan 5 23:32 .bash_history
-rw-r--r-- 1 root root 3303 Dec 5 09:46 .bashrc
drwx------ 2 root root 4096 Dec 18 16:06 .bypy
drwx------ 3 root root 4096 Dec 18 15:23 .cache
drwx------ 4 root root 4096 Dec 18 15:58 .config
-rw------- 1 root root 20 Jan 2 11:18 .lesshst
drwxr-xr-x 4 root root 4096 Dec 5 09:46 .npm
drwxr-xr-x 8 root root 4096 Dec 5 09:46 .nvm
-rw-r--r-- 1 root root 161 Jul 9 2019 .profile
-rw-r--r-- 1 root root 74 Dec 18 16:58 .selected_editor
drwx------ 2 root root 4096 Dec 5 09:42 .ssh
-rw------- 1 root root 38736 Jan 5 23:32 .viminfo
-rw-r--r-- 1 root root 165 Dec 18 15:57 .wget-hsts
-rw-r--r-- 1 root root 4559 Jan 5 01:14 backup_log.txt
drwxr-xr-x 2 root root 4096 Jan 5 01:14 backups
drwxr-xr-x 3 root root 4096 Jan 5 23:50 langke
drwx------ 3 root root 4096 Dec 5 09:42 snap
drwxr-xr-x 2 root root 4096 Jan 5 23:55 suim
-rw-r--r-- 1 root root 11877 Dec 18 11:39 test_result.txt
2.2.5 mv move 移动
较为危险,类似于剪切并粘贴,移动后原始的文件或目录不存在了
| mv | 从哪里来(源) | 到哪里去(目标) | |
|---|---|---|---|
| 移动 | mv | 文件 目录 文件 目录 .... | 目标(目录) (最后1个参数) |
| 改名 | mv | 文件或目录(仅1个) | 文件或目录 |
# 我们创建一个新目录 ilove
root@suim:~# mkdir ilove
root@suim:~# ls ilove/ #可以看到新目录里没有任何东西
root@suim:~#
# 使用 mv + 你想移动的目录或文件 + 移动到哪里去(绝对路径或相对路径)
root@suim:~# mv suim/ ilove/
root@suim:~# ls ilove/
suim #可以看到suim/ 目录成功被移动到 ilove/下
# mv也可以用来修改目录或文件的名字
root@suim:~/ilove# ls
suim
# mv + 你想修改名字的目录 + 修改成什么名字
root@suim:~/ilove# mv suim/ suimmm
root@suim:~/ilove# ls
suimmm
root@suim:~/ilove#
2.2.6 cp copy 复制文件或目录
复制,一般用于备份。与mv格式类似
| cp命令选项 | 说明 |
|---|---|
| -a | all简单理解为复制所有 详情: -dpr |
| -r | 递归复制,复制目录及目录的内容 |
| -p | 复制的时候保持属性不变.(未来讲解文件属性就可以更深入了解) |
| -d | 可以复制软连接.(文件属性里面讲解) |
# 这里我们先创建一个新文件 suim.txt
root@suim:~/ilove# touch suim.txt
root@suim:~/ilove# ls
suim.txt suimmm
# cp + 你想复制的目录或文件 + 复制后的新文件叫什么名字
root@suim:~/ilove# cp suim.txt suimmm.txt
root@suim:~/ilove# ls
suim.txt suimmm suimmm.txt # 我们可以看到文件被复制,原文件还存在
# suimmm 在这里是一个目录,如果我们需要复制一整个目录时,直接复制会报错
root@suim:~/ilove# ls
suim.txt suimmm
root@suim:~/ilove# cp suimmm suim
cp: -r not specified; omitting directory 'suimmm'
# 提示我们需要使用 -r 选项进行递归复制
root@suim:~/ilove# cp -r suimmm suim
root@suim:~/ilove# ls
suim suim.txt suimmm suimmm.txt # 此时我们可以看到目录成功被复制
2.2.6 rm remove 移除,删除文件或目录
到了我们最喜欢的删除rm环节了
命令危险,谨慎使用
| rm选项 | |
|---|---|
| -f | force 强制删除不提示,危险 |
| -r | 递归删除,删除目录及目录的内容,没有需求不要加上-r |
我们最喜欢的删根环节~~~~
# rm + 你想删除的文件或目录
root@suim:~/ilove# ls
suim suim.txt suimmm suimmm.txt
# 我们选择删除 suimmm.txt文件
root@suim:~/ilove# rm suimmm.txt
root@suim:~/ilove# ls
suim suim.txt suimmm # 文件不见了,已经被删除
root@suim:~/ilove#
# 接下来我们使用rm删除一个目录
root@suim:~/ilove# rm suimmm/
rm: cannot remove 'suimmm/': Is a directory
# 报错提示suimmm/是一个目录,这时我们需要加上 -r 递归参数
root@suim:~/ilove# rm -r suimmm/
root@suim:~/ilove# ls
suim suim.txt # 目录被删除
# 如果我们想删除一些重要的目录,比如 “ / ” 目录
#########注意,注意,以下命令不要随便在自己的服务器上执行!!!!!!!!!!!
#########此处仅为示范!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
root@ZT3749984900:~# rm -r /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
# 此处提示我们这是个非常危险的操作,因为我们所使用的命令行,依托命令解释器,而命令解释器也存在于根目录下,所以删除根目录相当于删除整个系统!!!!!!
# 如果我们不听劝,就想删,就犟~
# 可以加入 -f 参数
root@ZT3749984900:~# rm -rf /
...
...
# 我就不执行了,代价很大,请勿模仿~
# ps:有些系统加上 -f 参数也无法直接删除根目录,这是系统的保护机制
2.2.7 cat显示文件内容
# 使用 cat + 你想查看的文件 可以查看文件内容
root@suim:~/ilove# cat suim.txt
suim 牛逼
2.2.8 echo 输出信息到屏幕
# 使用 echo + 你想输出到屏幕上的内容
root@suim:~/ilove# echo 我爱nodeseek
我爱nodeseek
root@suim:~/ilove# echo 我喜欢你
我喜欢你
root@suim:~/ilove# echo 666ls
666ls
重点:
重定向:改变数据输出方向.默认输出到屏幕,现在可以让他输出到文件中。
**>叫做重定向符号,先清空文件内容,然后再写入. **
>> 叫做追加重定向,把信息写入到末尾
# 我们可以使用重定向配合echo 将内容输入到文件内
root@suim:~/ilove# cat suim.txt
root@suim:~/ilove# # 我们可以看到此时文件内没有内容
root@suim:~/ilove# echo 我爱nodeseek > suim.txt #将文字重定向到文件内
root@suim:~/ilove# cat suim.txt
我爱nodeseek # 文件被写入内容
root@suim:~/ilove# echo 666 > suim.txt
root@suim:~/ilove# cat suim.txt
666 # 可以看到,使用 > 重定向符号会先清空文件再写入内容,我爱nodeseek已经没有了
root@suim:~/ilove#
# 我们使用 >> 追加重定向符号,可以将新内容加到文件末尾而不清空文件
root@suim:~/ilove# echo 我爱nodeseek >> suim.txt
root@suim:~/ilove# cat suim.txt
666
我爱nodeseek
root@suim:~/ilove#
今天就先写到这里啦~~
抱歉托更这么久,因为最近确实有点忙再加上在折腾别的~~
感谢大家的喜欢和催更~~~~
1级号写这么好的文章,这让我一个3级号显得很没面子。
bd

对我这种小白蛮实用的
@prinze #1 过奖了大佬,还有很多需要改进的地方
@花火 #3 六级大佬!
mark学习。
自己顶一下
挺不错,看着不像ai的
@苏叶 #8 纯手写(
@浪客碎梦 #9 看的出来,风格和ai就不一样
之前也是有人搞这种教程,一眼ai