文章目录
- 1.Linux的目录结构
- 2.命令的认识
- 3.相对路径和绝对路径
- 4.常用命令(目录文件操作)
- 5.常用命令(文本查看)
1.Linux的目录结构
\ :
根目录
root:
root用户的工作目录
home:
普通用户的工作目录
bin:
存放二进制文件,一些常用的命令
dev:
设备(Device)文件,Linux下一切皆文件,访问外部设备和普通文件一样。
etc:
存放所有的系统管理所需要的配置文件
lib:
库文件
mnt:
临时挂载的文件系统
media:
Linux自动识别一些设备,如:U盘、光驱等
boot:
开机启动引导程序
proc:
存放内核运行状态的进程信息
opt:
第三方软件默认按照的位置。
var:
存放经常变化的文件,如系统日志
usr:
用户的很多应用程序和文件,这个文件都不经常变化。
xiyan@LAPTOP-87PRR6K8:/usr/bin$ whereis cat - 可以看到cat命令就存放在usr目录下
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz
whereis
命令主要用于查找命令、可执行文件、源代码和手册页的路径。用法:whereis [选项] <命令名>
2.命令的认识
刚开始接触Linux,可能对命令理解有点模糊,其实命令就是一个可执行程序,这个程序和你写得C语言程序(用C语言写的命令)是一模一样的,有区别的就是hello程序是你写的,而命令是别人写的。
xiyan@LAPTOP-87PRR6K8:~$ pwd
/home/xiyan
xiyan@LAPTOP-87PRR6K8:~$ vim hello.c
xiyan@LAPTOP-87PRR6K8:~$ gcc hello.c -o hello
xiyan@LAPTOP-87PRR6K8:~$ ls | grep hello
hello
hello.c
xiyan@LAPTOP-87PRR6K8:~$ ./hello
hello world
我编写了一个hello world的C程序然后编译,使用相对路径的方式运行了我的程序。其实hello就是一个命令。这里和系统的命令不同的是运行自己的程序多了./
。我们来改变一些,上面whereis cat
的命令的路径,我们也把hello放到/usr/bin
。但是一般不要这么干。
xiyan@LAPTOP-87PRR6K8:~$ mv hello /usr/bin
mv: cannot move 'hello' to '/usr/bin/hello': Permission denied
xiyan@LAPTOP-87PRR6K8:~$ sudo mv hello /usr/bin
[sudo] password for xiyan:
xiyan@LAPTOP-87PRR6K8:~$ ls /usr/bin/hello
/usr/bin/hello
xiyan@LAPTOP-87PRR6K8:~$ hello
hello world
xiyan@LAPTOP-87PRR6K8:~$ sudo rm /usr/bin/hello - 这里删除(其实删除移动拷贝这些命令是高危命令,别删库跑路了!)
上面我们就写了一条自己的命令hello。
上面统计将hello命令移动到/usr/bin
路径下,当然也可以添加一个环境变量,系统会根据环境变量来查找了对应的命令。
xiyan@LAPTOP-87PRR6K8:~$ pwd
/home/xiyan
xiyan@LAPTOP-87PRR6K8:~$ gcc hello.c -o hello
xiyan@LAPTOP-87PRR6K8:~$ ls | grep hello
hello
hello.c
xiyan@LAPTOP-87PRR6K8:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
xiyan@LAPTOP-87PRR6K8:~$ export PATH=$PATH:/home/xiyan
xiyan@LAPTOP-87PRR6K8:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/xiyan
xiyan@LAPTOP-87PRR6K8:~$ hello
hello world
3.相对路径和绝对路径
绝对路径:以根目录为起点,精确表示一个文件的路径。
相对路径:以当前位置为起点,去表示一个文件的路径。
xiyan@LAPTOP-87PRR6K8:~$ ll
total 172
drwxr-x--- 22 xiyan xiyan 4096 Nov 8 10:30 ./
drwxr-xr-x 3 root root 4096 Jun 15 20:14 ../
通过 ll
命令来查看,.
就表示当前路径,而 ..
表示父目录也就是上一级目录。所以在执行cd
命令的时候,就能找到对应的位置。
4.常用命令(目录文件操作)
命令的一般结构:命令 [选项] [参数(文件名或目录、命令等)]
1)man命令用来查看帮助文档
man 语法: man [选项] 命令
xiyan@LAPTOP-87PRR6K8:~$ man man - 按q退出
man手册分为8章
1、普通的命令(默认)
2、系统调用。如open、write(重要)
3、库函数(重要)
5、是指文件的格式
6、是给游戏留的,由各个游戏自己定义
7、是附件还有一些变量
8、是系统管理用的命令,这些命令只能由root使用,如ifconfig
xiyan@LAPTOP-87PRR6K8:~$ man 3 printf
2)mkdir用来创建目录
xiyan@LAPTOP-87PRR6K8:~$ man mkdir
语法: mkdir [OPTION]... DIRECTORY...
选项:
-p:此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多级目录
xiyan@LAPTOP-87PRR6K8:~$ mkdir mydir
xiyan@LAPTOP-87PRR6K8:~$ cd mydir
xiyan@LAPTOP-87PRR6K8:~/mydir$ mkdir a/b/c/d
mkdir: cannot create directory ‘a/b/c/d’: No such file or directory
xiyan@LAPTOP-87PRR6K8:~/mydir$ mkdir -p a/b/c/d
xiyan@LAPTOP-87PRR6K8:~/mydir$ sudo apt install tree
xiyan@LAPTOP-87PRR6K8:~/mydir$ tree
.
└── a
└── b
└── c
└── d
3)cd:将当前工作目录改变到指定的目录
语法:cd 目录名
xiyan@LAPTOP-87PRR6K8:~$ cd .. - 返回
xiyan@LAPTOP-87PRR6K8:~$ pwd
/home/xiyan
4)pwd查看当前路径
5)touch创建一个空文件
xiyan@LAPTOP-87PRR6K8:~$ cd mydir/
xiyan@LAPTOP-87PRR6K8:~/mydir$ pwd
/home/xiyan/mydir
xiyan@LAPTOP-87PRR6K8:~/mydir$ touch a1
xiyan@LAPTOP-87PRR6K8:~/mydir$ ls
a a1 a2 a3 a4 a5
6)ls命令用来列出该目录下的所有子目录与文件
xiyan@LAPTOP-87PRR6K8:~/mydir$ ls
a a1 a2 a3 a4 a5
xiyan@LAPTOP-87PRR6K8:~/mydir$ ls -al
total 12
drwxrwxr-x 3 xiyan xiyan 4096 Nov 8 13:35 .
drwxr-x--- 22 xiyan xiyan 4096 Nov 8 11:58 ..
...
选项:
-a:列出目录下的所有文件,包括以 . 开头的隐含文件
-l:列出文件的详细信息
-R:列出所有子目录下的文件(递归)
-s:在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
7)rm删除一个文件或目录
xiyan@LAPTOP-87PRR6K8:~/mydir$ rm a1
xiyan@LAPTOP-87PRR6K8:~/mydir$ rm -r a
xiyan@LAPTOP-87PRR6K8:~/mydir$ ls
a2 a3 a4 a5
选项:
-f:强制直接删除
-r:删除目录及其下所有文件
8)cp指令复制文件或目录
C字符串函数传入参数的一个特点类似A of B
的格式,A of B
表示B
的A
。以strcpy
为例,传入的参数第一个是destination
,第二个是source
。是将source
拷贝到destination
中。
char * strcpy ( char * destination, const char * source )
这里和Linux命令是相反的,例如,cp
命令:前面的是原文件(source_file),后面的是目标文件(destination_directory)
cp [OPTION]... source... directory
cp命令的使用
xiyan@LAPTOP-87PRR6K8:~/mydir$ ls
a2 a3 a4 a5
xiyan@LAPTOP-87PRR6K8:~/mydir$ cp /usr/include/stdio.h ./
xiyan@LAPTOP-87PRR6K8:~/mydir$ ls
a2 a3 a4 a5 stdio.h
9)mv指令用来移动或者重命名
xiyan@LAPTOP-87PRR6K8:~/mydir$ mv a2 a2.txt
xiyan@LAPTOP-87PRR6K8:~$ cd
xiyan@LAPTOP-87PRR6K8:~$ touch hello.txt
xiyan@LAPTOP-87PRR6K8:~$ cd mydir
xiyan@LAPTOP-87PRR6K8:~/mydir$ mv /home/xiyan/hello.txt hello.c - 移动并重命名
xiyan@LAPTOP-87PRR6K8:~/mydir$ ls
a2.txt a3 a4 a5 hello.c stdio.h
5.常用命令(文本查看)
1)cat查看目标文件的内容
xiyan@LAPTOP-87PRR6K8:~/mydir$ pwd
/home/xiyan/mydir
xiyan@LAPTOP-87PRR6K8:~/mydir$ cat stdio.h
选项:
-b 对非空输出行编号
-n 对输出的所有行编号
-s 不输出多行空行
2)more也是用来查看文本的内容,上面用cat命令直接把全部的内容打印到显示屏中。more分页查看文件内容。
xiyan@LAPTOP-87PRR6K8:~/mydir$ more stdio.h -也是q退出
选项:
-n 对输出的所有行编号
操作:
enter 回车,向下查看一行
b 向上翻一页
f 向下翻一页
space 向下翻一页
3)less指令也是分页进行查看文本内容(重要)
less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
less还可以查找功能等,它更加强大!
xiyan@LAPTOP-87PRR6K8:~/mydir$ less stdio.h
4)head从头查看文本内容
xiyan@LAPTOP-87PRR6K8:~/mydir$ head stdio.h
xiyan@LAPTOP-87PRR6K8:~/mydir$ head -5 stdio.h
选项:
-n<行数> 显示的行数(默认十行)
5)tail从尾查看文本内容
xiyan@LAPTOP-87PRR6K8:~/mydir$ tail stdio.h