【Linux】初见,基础指令

前言

本文将讲解Linux中最基础的东西-----指令,带大家了解一下Linux中有哪些基础指令,分别有什么作用。

本文中的指令和选项并不全,只介绍较为常用的

pwd指令

语法:pwd

功能:显示当前所在位置(路径)。

复制代码
root@hcss-ecs-4ce7:~# pwd
/root

root@hcss-ecs-4ce7:~/path1# pwd
/root/path1

ls指令

语法:ls 选项 文件或目录

功能:对于目录,显示这个目录中所有子目录和文件。对于文件,显示文件名和其他信息。若没有给出指定的文件或目录,则显示当前所在位置的文件或目录。若没有选项则只显示文件名,不显示其他信息。

常用选项

-l 列出详细信息。

复制代码
root@hcss-ecs-4ce7:~# ls
my.txt  my.zip  new  new.txt  path1  path.tgz  snap  temp.txt

root@hcss-ecs-4ce7:~# ls -l
total 52
-rw-r--r-- 1 root root    21 May 18 14:29 my.txt
-rw-r--r-- 1 root root   183 May 18 14:38 my.zip
drwxr-xr-x 2 root root  4096 May 18 22:12 new
-rw-r--r-- 1 root root    14 May 18 11:35 new.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
-rw-r--r-- 1 root root   274 May 18 22:00 path.tgz
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

root@hcss-ecs-4ce7:~# ls -l path1
total 8
-rw-r--r-- 1 root root    0 May 14 20:35 myfile.txt
-rw-r--r-- 1 root root   21 May 18 14:29 my.txt
drwxr-xr-x 3 root root 4096 May 14 23:37 path2

补充:

Linux中目录即为windows中的文件夹 。

建立空文件也会占用磁盘空间,因为文件=文件属性+文件内容,即使内容为空,属性也不会为空。

Linux不同于windows不依靠后缀名来区别文件和目录,而是靠文件属性中第一个字母区别

Linux中的路径分割符为:/,而windows中的为:\

cd指令

cd指令是关于Linux目录路径的指令。

不论是那个操作系统中,目录都是以一个多叉树的形式实现的。Linux中的根目录用 " / "表示。文件或空目录一定是叶子节点。

绝对路径:从 / 开始不依靠其他路径定位位置。

相对路径:通过当前所处路径,定位出位置。

绝对路径不会因为用户位置的改变而导致定位位置改变,通常用于特定服务中配置文件的操作,而相对路径由于其使用简洁方便,常用于命令行。

Linux中存在以 " . "开头的文件,我们称作隐藏文件,不论什么目录里面都会有 " . " 和 " .. "这两个隐藏文件

语法:cd 目录名

功能:改变当前目录到指定的目录下。

常用目录名

相对路径

绝对路径

" .. "

" ~ "

" - "

复制代码
root@hcss-ecs-4ce7:~# pwd #查看当前所处目录
/root
root@hcss-ecs-4ce7:~# cd /root/path1 #绝对路径,进入到指定的目录下
root@hcss-ecs-4ce7:~/path1# pwd
/root/path1

root@hcss-ecs-4ce7:~# pwd
/root
root@hcss-ecs-4ce7:~# cd ./path1 #相对路径,'.'表示当前目录
root@hcss-ecs-4ce7:~/path1# pwd
/root/path1

root@hcss-ecs-4ce7:~/path1# pwd
/root/path1
root@hcss-ecs-4ce7:~/path1# cd .. #".."表示上层目录,这里表达返回上一层目录
root@hcss-ecs-4ce7:~# pwd
/root

root@hcss-ecs-4ce7:~# pwd
/root
root@hcss-ecs-4ce7:~# cd - #表示进入最近的一次访问的目录
/root/path1
root@hcss-ecs-4ce7:~/path1# pwd
/root/path1

root@hcss-ecs-4ce7:~/path1# pwd
/root/path1
root@hcss-ecs-4ce7:~/path1# cd ~ #表示返回家目录,不写~也可以
root@hcss-ecs-4ce7:~# pwd
/root

补充:

cd ~ 返回家目录。对于root账号而言是返回 /root ,对于普通账号而言是返回 /home/xxx(自己的账号名)

touch指令

语法:touch 选项 文件名

功能:对于一个存在的文件,改变其日期时间。对于不存在的文件,新建这个文件。

常用选项:

-a: change only the a ccess time

-m: change only the modification time

复制代码
root@hcss-ecs-4ce7:~# ls -l
total 52
-rw-r--r-- 1 root root    21 May 18 14:29 my.txt
-rw-r--r-- 1 root root   183 May 18 14:38 my.zip
drwxr-xr-x 2 root root  4096 May 18 22:12 new
-rw-r--r-- 1 root root    14 May 18 11:35 new.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
-rw-r--r-- 1 root root   274 May 18 22:00 path.tgz
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt
root@hcss-ecs-4ce7:~# touch aaaaa.txt #创建文件
root@hcss-ecs-4ce7:~# ls -l
total 52
-rw-r--r-- 1 root root     0 May 19 16:59 aaaaa.txt
-rw-r--r-- 1 root root    21 May 18 14:29 my.txt
-rw-r--r-- 1 root root   183 May 18 14:38 my.zip
drwxr-xr-x 2 root root  4096 May 18 22:12 new
-rw-r--r-- 1 root root    14 May 18 11:35 new.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
-rw-r--r-- 1 root root   274 May 18 22:00 path.tgz
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

补充:stat命令,功能:查看文件的详细信息。用过stat我们就可以观察到touch修改时间的操作

复制代码
root@hcss-ecs-4ce7:~# stat new.txt
  File: new.txt
  Size: 14        	Blocks: 8          IO Block: 4096   regular file
Device: fc01h/64513d	Inode: 151998      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-05-18 11:35:22.012539536 +0800
Modify: 2025-05-18 11:35:19.900507212 +0800
Change: 2025-05-18 11:35:19.900507212 +0800
 Birth: 2025-05-15 10:42:29.595967837 +0800

修改时间:

复制代码
root@hcss-ecs-4ce7:~# stat new.txt
  File: new.txt
  Size: 14        	Blocks: 8          IO Block: 4096   regular file
Device: fc01h/64513d	Inode: 151998      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-05-18 11:35:22.012539536 +0800
Modify: 2025-05-18 11:35:19.900507212 +0800
Change: 2025-05-18 11:35:19.900507212 +0800
 Birth: 2025-05-15 10:42:29.595967837 +0800

//修改access时间
root@hcss-ecs-4ce7:~# touch touch -a new.txt
root@hcss-ecs-4ce7:~# stat new.txt
  File: new.txt
  Size: 14        	Blocks: 8          IO Block: 4096   regular file
Device: fc01h/64513d	Inode: 151998      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-05-19 17:07:15.106092725 +0800
Modify: 2025-05-18 11:35:19.900507212 +0800
Change: 2025-05-19 17:07:15.106092725 +0800   //我们发现这个也发生了修改,这里牵扯其他知识,后面再详细介绍
 Birth: 2025-05-15 10:42:29.595967837 +0800

//修改modify时间
root@hcss-ecs-4ce7:~# touch -m new.txt
root@hcss-ecs-4ce7:~# stat new.txt
  File: new.txt
  Size: 14        	Blocks: 8          IO Block: 4096   regular file
Device: fc01h/64513d	Inode: 151998      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-05-19 17:07:15.106092725 +0800
Modify: 2025-05-19 17:08:59.171702276 +0800
Change: 2025-05-19 17:08:59.171702276 +0800
 Birth: 2025-05-15 10:42:29.595967837 +0800

mkdir指令

语法:mkdir 选项 目录名或路径

功能:在当前位置下创建目录

常用选项:

-p (指定路径创建目录,当目录中有不存在的目录时,直接创建)

复制代码
root@hcss-ecs-4ce7:~# mkdir new  #在当前位置下创建一个目录
root@hcss-ecs-4ce7:~# ls -l
total 40
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 2 root root  4096 May 19 17:22 new
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt


//指定路径,创建多个目录
root@hcss-ecs-4ce7:~# mkdir -p path/path1/path2/path3
root@hcss-ecs-4ce7:~# ls -l
total 40
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 19 17:24 path
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt
root@hcss-ecs-4ce7:~# tree path  //通过tree指令我们可以看到形象的路径
path
└── path1
    └── path2
        └── path3

3 directories, 0 files

补充:tree指令,可以形象的将一个目录里的内容展示出来。若没有安装可更加系统提示安装。

rmdir&rm指令

语法:rmdir 选项 目录名或路径

功能:删除空目录

选项:

-p (当删除子目录时,如果父目录也变成了空目录,则一并删除)

复制代码
root@hcss-ecs-4ce7:~# ls -l
total 40
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 19 17:24 path
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

//当删除子目录时,如果父目录也变成了空目录,则一并删除
root@hcss-ecs-4ce7:~# rmdir -p path/path1/path2/path3
root@hcss-ecs-4ce7:~# ls -l
total 36
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

rmdir的弊端在于只能删除空目录,当目录中有内容则无法删除,但rm指令可以

语法:rm 选项 目录名或路径

功能:删除目录或文件

选项:-f 即使是只读文件,也直接删除

-r 删除目录及其包含的所有文件

-i 删除前逐一询问确认

限制:只针对root账号、或普通账号自己创建的目录或文件

复制代码
root@hcss-ecs-4ce7:~# ls -l
total 36
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
-rw-r--r-- 1 root root     0 May 19 17:41 new.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

//删除普通文件
root@hcss-ecs-4ce7:~# rm new.txt
root@hcss-ecs-4ce7:~# ls -l
total 36
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt


root@hcss-ecs-4ce7:~# touch new1.txt
root@hcss-ecs-4ce7:~# ls -l
total 36
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
-rw-r--r-- 1 root root     0 May 19 17:42 new1.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

//删除前询问
root@hcss-ecs-4ce7:~# rm -i new1.txt
rm: remove regular empty file 'new1.txt'? y
root@hcss-ecs-4ce7:~# ls -l
total 36
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt


root@hcss-ecs-4ce7:~# mkdir -p path/path1/path2/path3
root@hcss-ecs-4ce7:~# ls -l
total 40
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 19 17:44 path
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

//删除目录及其所包含的所有文件
root@hcss-ecs-4ce7:~# rm -r path
root@hcss-ecs-4ce7:~# ls -l
total 36
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt


root@hcss-ecs-4ce7:~# mkdir -p path/path1/path2/path3
root@hcss-ecs-4ce7:~# ls -l
total 40
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 19 17:47 path
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

//删除前询问确认
root@hcss-ecs-4ce7:~# rm -ir path
rm: descend into directory 'path'? y
rm: descend into directory 'path/path1'? y
rm: descend into directory 'path/path1/path2'? y
rm: remove directory 'path/path1/path2/path3'? y
rm: remove directory 'path/path1/path2'? y
rm: remove directory 'path/path1'? y
rm: remove directory 'path'? y
root@hcss-ecs-4ce7:~# ls -l
total 36
-rw-r--r-- 1 root root    21 May 19 17:00 my.txt
drwxr-xr-x 3 root root  4096 May 18 14:43 path1
drwx------ 3 root root  4096 Aug  9  2024 snap
-rw-r--r-- 1 root root 22902 May 18 11:51 temp.txt

man指令

语法:man 选项 指令

功能:当我们忘记一个指令怎么使用时,可以使用man来查询。

选项

通常为1-9

补充:man手册分为9章

1是普通的命令

2是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调⽤这个函数,需要加什么 头文件)

3是库函数,如printf,fread4是特殊文件,也就是/dev下的各种设备⽂件

4略

5是指⽂件的格式,比如passwd,就会说明这个文件中各个字段的含义

6是给游戏留的,由各个游戏自己定义

7是附件还有⼀些变量,比如像environ这种全局变量在这里就有说明

8是系统管理用的命令,这些命令只能由root使用,如ifconfig

9略

选项中不给出具体数字,man就会从第一章开始找直到找到。反之如果给出具体数字,man就只会去对应的第几章去找。

复制代码
root@hcss-ecs-4ce7:~# man printf # 查看printf指令(没错,printf也是⼀个指令)
root@hcss-ecs-4ce7:~# man fork # 查看系统调⽤,默认没有这个指令,man就⾃动去2号⼿册查找 
root@hcss-ecs-4ce7:~# man 2 frok # 查看系统调⽤ 
root@hcss-ecs-4ce7:~# man 3 printf # 查看C库函数 
root@hcss-ecs-4ce7:~# man 7 signal # 查看变量 
root@hcss-ecs-4ce7:~# man 7 environ
root@hcss-ecs-4ce7:~# man man # 查看man⼿册⾃⼰

echo指令

语法:echo 选项 内容

功能:打印内容或将内容放入文件中

复制代码
#将echo后面的内容作为字符串,打印出来
root@hcss-ecs-4ce7:~# echo "你好世界"
你好世界
root@hcss-ecs-4ce7:~# echo test.cpp
test.cpp

#利用 > 进行重定向操作
root@hcss-ecs-4ce7:~# ls
my.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# echo "你好世界">new.txt
root@hcss-ecs-4ce7:~# ls
my.txt  new.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# cat new.txt
你好世界

# >>进行追加重定向
root@hcss-ecs-4ce7:~# echo "明天你好">>new.txt
root@hcss-ecs-4ce7:~# cat new.txt
你好世界
明天你好

# < 输入重定向,与cat new.txt效果上无异
root@hcss-ecs-4ce7:~# cat <new.txt
你好世界
明天你好

补充:重定向有两个特点:1.如果重定向的文件不存在,则创建文件再写入内容。2.如果文件存在则清空文件再写入内容(既覆盖)。

which指令

语法:which 指令名

功能:搜索指令

复制代码
root@hcss-ecs-4ce7:~# which ls
/usr/bin/ls
root@hcss-ecs-4ce7:~# which man
/usr/bin/man
root@hcss-ecs-4ce7:~# which touch
/usr/bin/touch

补充:我们通过which指令可以看到,指令其实也是目录,存在在bin目录下

指令本质==可执行文件==我们写的C/C++程序

cp指令

语法:cp 源文件或目录 目标文件或目录

功能:拷贝文件或目录

选项

-f 强制拷贝,不论目标文件或目录是否存在

-r 递归处理,将目录下的文件和子目录一起处理。若源文件或目录的形态,不属于目录或符 号链接,则⼀律视为普通文件处理。

-i 覆盖文件前线询问

复制代码
#普通文件的拷贝
root@hcss-ecs-4ce7:~# ls
my.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# echo "你好世界"> new.txt
root@hcss-ecs-4ce7:~# cp new.txt cpnew.txt
root@hcss-ecs-4ce7:~# ls
cpnew.txt  my.txt  new.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# cat cpnew.txt
你好世界


#将多个文件拷贝到目录
root@hcss-ecs-4ce7:~# mkdir new
root@hcss-ecs-4ce7:~# ls
cpnew.txt  my.txt  new  new.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# cp *.txt new  # "*"为通配符,匹配所有以.txt结尾的文件
root@hcss-ecs-4ce7:~# tree new
new
├── cpnew.txt
├── my.txt
├── new.txt
└── temp.txt


#如果目标文件存在则直接覆盖
root@hcss-ecs-4ce7:~# cat cpnew.txt
你好世界
root@hcss-ecs-4ce7:~# echo "明天你好">new.txt
root@hcss-ecs-4ce7:~# cp new.txt cpnew.txt
root@hcss-ecs-4ce7:~# cat cpnew.txt
明天你好


#拷贝前询问
root@hcss-ecs-4ce7:~# cp -i new.txt cpnew.txt
cp: overwrite 'cpnew.txt'? y


#强制拷贝整个目录
root@hcss-ecs-4ce7:~# ls
cpnew.txt  my.txt  new  new.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# tree new
new
├── cpnew.txt
├── my.txt
├── new.txt
└── temp.txt

0 directories, 4 files
root@hcss-ecs-4ce7:~# cp -rf new cpnew
root@hcss-ecs-4ce7:~# ls
cpnew  cpnew.txt  my.txt  new  new.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# tree cpnew
cpnew
├── cpnew.txt
├── my.txt
├── new.txt
└── temp.txt

0 directories, 4 files

mv指令

mv是move是缩写,代表移动。用于移动文件或将文件改名,常用于备份文件或目录。

语法:mv 选项 源文件或目录 目标文件或目录

功能:

  1. 当mv指令的第一个参数和第二个参数都是文件或目录,将会进行重命名

  2. 当mv指令第一个参数是文件,第二个参数是目录,将会进行移动,把文件移动至目录中

选项:

-f 强制覆盖, 如果当目标文件已经存在时,就会强制覆盖

-i 再覆盖前询问用户是否覆盖(仅在覆盖文件时询问,目录不会询问)

注意:对于重命名目录来说,并不会覆盖目录原来的内容。而是将源目录中的内容移动至目标目录中

复制代码
#文件重命名
root@hcss-ecs-4ce7:~# ls
my.txt  path1  snap  temp.txt
root@hcss-ecs-4ce7:~# mv temp.txt new.txt
root@hcss-ecs-4ce7:~# ls
my.txt  new.txt  path1  snap


#如果重命名文件在当前路径下已经存在,那么就会直接覆盖
root@hcss-ecs-4ce7:~# echo "你好世界">you.txt
root@hcss-ecs-4ce7:~# ls
my.txt  new  new.txt  path  snap  you.txt
root@hcss-ecs-4ce7:~# mv you.txt my.txt
root@hcss-ecs-4ce7:~# ls
my.txt  new  new.txt  path  snap
root@hcss-ecs-4ce7:~# cat my.txt
你好世界


#目录重命名(如果重命名目录在当前位置下已经存在,那么就会将源目录中内容移动至目标目录)
root@hcss-ecs-4ce7:~# ls
my.txt  new.txt  path1  snap
root@hcss-ecs-4ce7:~# tree path1
path1
├── myfile.txt
├── my.txt
└── path2
    ├── myfile.txt
    └── path3
        └── path4

3 directories, 3 files
root@hcss-ecs-4ce7:~# mv path1 path

root@hcss-ecs-4ce7:~# ls
my.txt  new.txt  path  snap
root@hcss-ecs-4ce7:~# tree path
path
├── myfile.txt
├── my.txt
└── path2
    ├── myfile.txt
    └── path3
        └── path4

3 directories, 3 files


#移动文件到目录中
root@hcss-ecs-4ce7:~# ls 
my.txt  new.txt  path  snap
root@hcss-ecs-4ce7:~# mkdir new

root@hcss-ecs-4ce7:~# mv new.txt new
root@hcss-ecs-4ce7:~# ls
my.txt  new  path  snap
root@hcss-ecs-4ce7:~# tree new
new
└── new.txt
相关推荐
利刃大大几秒前
【网络编程】十三、DNS && ICMP && NAT/NAPT && 代理服务器
服务器·网络·dns·nat·代理·icmp
少陽君6 分钟前
使用shell快速删除Docker容器、镜像和存储内容
linux·docker
Clownseven10 分钟前
[Nginx排查] 403 Forbidden错误怎么破?Nginx权限与配置问题深度解析
运维·nginx
gavin_gxh17 分钟前
SAP BC 表结构查询
运维·经验分享·其他
和计算机搏斗的每一天25 分钟前
tcp/ip协议
服务器·网络·tcp/ip
独行soc33 分钟前
2025年渗透测试面试题总结-安恒[实习]安全工程师(题目+回答)
运维·开发语言·经验分享·网络安全·面试·渗透测试·php
快乐肚皮42 分钟前
深入浅出:Spring Cloud Gateway 扩展点实践指南
java·linux·运维
默心43 分钟前
centos7安装mysql8.0
运维·mysql·adb·centos·devops
小黑子不会打篮球1 小时前
服务器防文件上传手写waf
linux·运维·服务器·web安全·网络安全
独行soc1 小时前
2025年渗透测试面试题总结-华顺信安[实习]安全服务工程师(题目+回答)
运维·开发语言·学习·安全·面试·渗透测试·php