logo NodeSeekbeta

2.Linux目录结构初级与Linux极其核心命令

2.1 目录结构

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

  • 我们从图中能看到,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# 

今天就先写到这里啦~~

抱歉托更这么久,因为最近确实有点忙再加上在折腾别的~~

感谢大家的喜欢和催更~~~~

12
12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72295位seeker

🎉欢迎新用户🎉