A. Linux 目录结构
- 目录
- 文件
- 文件名(无换行、空格、shell中的特定字符)
- 根目录 用
/
表示
目录结构图:
├── / 根目录
├── /bin (binary) 可执行二进制或脚本
├── /boot (boot) Linux启动所需的引导程序文件
├── /dev (devices) 系统的设备文件
├── /etc (etcetera) 管理Linux系统的文件和工具
├── /home (home) 存放用户的主目录
├── /lib (libraries) 函数库
├── /lib64 (libraries 64) 函数库
├── /lost+found (lost+found)
├── /media (media) 多媒体及挂载目录
├── /mnt (mount) 挂载目录
├── /opt (optional application software packages) 安装应用程序可选目录
├── /proc (processes) 进程信息文件
├── /root (root) root用户主目录
├── /run (run) 存储临时数据
├── /sbin (superuser binaries) 超级用户使用的二进制或脚本
├── /srv (service) 服务启动后所需访问的数据目录
├── /sys (system) 文件系统
├── /tmp (temporary) 临时文件目录
├── /usr (unix system resource)
└── /var (variable) 变量文件,系统运行期间变化
路径的表示:
-
<font color=#229944>绝对路径</font>: 路径的写法,由根目录 / 写起,例如:
/usr/share/doc
这个目录。 -
<font color=#229944>相对路径</font>: 路径的写法,不是由跟目录
/
写起,例如由/usr/share/doc
要到/usr/share/man
时,可以写成:cd ../man ## 相对路径
cd
$ cd ## 进入主目录
$ cd ~ ## 进入主目录
$ cd .. ## 进入上一级目录
$ cd / ## 进入跟目录
B. 文件与目录管理
pwd (print work directory)
$ pwd ## Print Working Directory
ls (list files)
$ ls ## 显示文件
$ ls -l ## 显示文件 + 信息
$ ls -a ## 显示所有文件(包含隐藏文件/目录)
$ ls -R ## 递归显示子文件
mkdir (make directory)
$ mkdir AAA
$ mkdir -m 711 BBB ## 创建文件夹,配置文件的权限喔!
$ mkdir -p test1/test2/test3/test4 ## 递归创建多级目录
rmdir
$ rmdir AAA ## 删除一个不为空的文件夹AAA
touch
$ touch fileName1 fileName2 ## 在当前目录下创建文件 fileName1 和 fileName2
rm
$ rm -i ## 互动模式,在删除前会询问使用者是否动作
$ rm -f ## 直接删除档案,不逐一确认
$ rm -r ## 将目录以下的所有文件/目录递归删除
$ rm -rf dir1 ## 强制递归删除 dir1 中的所有内容
cp
$ cp [选项] 源文件或目录 目标文件或目录
$ cp abc** ../ ## 将所有以abc打头的文件复制到上一级目录
$ cp -r dir1 dir2 ## 将文件夹dir1复制到dir2中
mv
mv [选项]... 源文件 目标文件
mv [选项]... 源文件... 目录
ln
- 硬链接 (hard link):相当于文件的备份 copy
- 软链接 (symbolic link):相当于文件的快捷方式,指向关系
$ ln [options] target link_file
$ ln -s /home/yin/Desktop/cat.txt /home/yin/Desktop/ttt/cat.softlink ## 软链接
$ ln /home/yin/Desktop/cat.txt /home/yin/Desktop/ttt/cat.hardlink ## 硬链接
$ ls -l
-rw-r--r-- 2 yin yin 4 12月 9 22:44 cat.hardlink
lrwxrwxrwx 1 yin yin 25 12月 9 22:45 cat.softlink -> /home/yin/Desktop/cat.txt
gzip
$ gzip np ## 使用 gzip 命令对文件np压缩,生成 np.gz 文件
$ gzip -r dir1 ## 对目录 dir1 中的所有文件逐个压缩
$ gzip -dr dir1 ## 对目录 dir1 中的所有文件解压缩
你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp
查看文件内容
cat
$ cat /etc/issue ## 查看 issue
$ tac /etc/issue ## 查看 issue (从后往前)
head & tail
$ head cat.md ## 显示 cat.md 的所有内容
$ head -n 6 cat.md ## 查看 cat.md 的前两行内容
$ tail -n 3 cat.md ## 查看 cat.md 的后两行内容
C. 文件属性与权限管理
下图中通过 chown 来授权用户,通过 chmod 为用户设置可以开门的权限
使用 ls -l
命令查看文件的属性:
-rwxr-xr-x 1 zz users 18700 10-20 21:40 mycal
第一个参数是文件类型:
- 当为 d 则是目录
- 当为 - 则是文件;
- 若是 l 则表示为链接文档 (link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标 (一次性读取装置)
接下来的9个字符,每3个一组:
- user rwx 7
- group r-x 4
- others r-x 4
最后是:文件的 硬链接数 、文件拥有者、所属 group、文件字符数 bytes、date and time、fileName
chmod (change mode)
$ chmod [who] operator [permission] filename
-
who: u – user g – group o – other a – all
-
operator: + 增加权限 - 取消权限 = 设置
权限
$ chmod a-x myfile 收回所有用户的执行权限
$ chmod u+x myfile 赋予文件所属者执行权限
$ chmod 744 myfile 赋予所有者 rwx、用户组 r、其它用户 r
注:文件夹需要有可执行权限才能打开!
chown (change ownerp)
## -R 对所有子目录下的文件执行同样操作
## -h 在改变符号链接文件的属主时不影响该链接所指向的目标文件
$ chown -R -h owner dir ## 将文件夹 dir 的所属用户设置为 owner
$ chown root fileNane ## 将文件 fileName 的所有者设置为 root
$ chgrp –R –h group file ## 将文件夹 dir 的所属用户组设置为 group
chgrp
$ chgrp [-cfhRv][--help][--version][所属群组][文件或目录...]
## -R, --recursive operate on files and directories recursively
$ chgrp -R group1 dir1 ## 将目录 dir1 的所属群组改为 group1
id
$ id userName ## 查看用户 userName 所属用户组
uid=1000(yin) gid=1000(yin) 组=1000(yin),7(lp),27(sudo),100(users),109(netdev),117(lpadmin),120(scanner),123(sambashare)
D. 用户和用户组管理
(1) user 用户
添加用户的方法:
- useradd:创建用户名,未创建主目录和设置密码
-
adduser
:创建用户名,同时创建目录并设置密码(常用)
删除用户的方法:
- userdel:删除用户名
- userdel -r userName:删除用户以及对应的主目录
adduser
$ useradd –d /home/sam -m sam ## 创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录 /home/sam; /home为默认的用户主目录所在的父目录
$ userdel -r sam ## 删除用户asm,同时删除对应的主目录
adduser
$ adduser sam ## 创建用户,设置密码,同时创建主目录
用户组管理可参照 doc
su
$ su userName ## 切换用户,登录 userName
$ cd ~ ## 进入userName 的主目录
sudo
$ sudo su ## 切换到超级管理员
$ su root ## 切换到超级管理员
$ sudo command1 ## 使用管理员权限执行命令 command1
(2) group 用户组
$ addgroup group1 ## 添加用户组 group1
$ groupmod -g 111 group1 ## 将组 group1 的组标识号修改为111
$ groupmod -n group01 group1 ## 将组 group1 的名称改为 group01
$ gpasswd -a user1 group1 ## 将 user1 加入 group1
$ gpasswd -d user1 group1 ## 将 user1 移出 group1
$ delgroup group1 ## 删除用户组 group11
(3) 与用户账号有关的系统文件
与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括 /etc/passwd
, /etc/shadow
, /etc/group
等
-
/etc/passwrd
对所有用户可读(默认隐藏),可以查看用户cat /etc/passwd root:x:0:0:root:/root:/bin/bash yin:x:1000:1000::/home/yin:/bin/bash Host:x:1001:1001::/home/Host:/bin/bash
格式:用户名 : 口令 : 用户标识号 : 组标识号 : 注释性描述 : 主目录 : 登录Shell
- 用户名:代表用户帐号的字符窜;
- 口令:真正加密后的口令在 /etc/shadow 中,/etc/passwd/ 中仅存放一个特殊字符 * 或 x;
- 注释性描述:用户的姓名、电话、住址等信息;
- 主目录:用户登录系统后所处的目录,对自己的主目录有读写执行权限;
-
/etc/shadow
也有类似的内容
E. Linux 磁盘管理
Linux磁盘管理好坏直接关系到整个系统的性能问题,磁盘管理常用三个命令为df、du和fdisk。
df
:列出文件系统的整体磁盘使用量du
:检查磁盘空间使用量fdisk
:用于磁盘分区
df (disk free)语法如下:
## df [-ahikHTm] [目录或文件名]
## -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
$ df ## 将系统内所有的文件系统列出来
$ df -h ## 将容量结果以易读的容量格式显示出来
文件系统 容量 已用 可用 已用% 挂载点
udev 3.8G 0 3.8G 0% /dev
tmpfs 776M 3.0M 773M 1% /run
/dev/sda9 67G 12G 52G 19% /
tmpfs 3.8G 93M 3.7G 3% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
/dev/sda1 256M 42M 215M 17% /boot/efi
tmpfs 776M 56K 776M 1% /run/user/1000
/dev/sda8 996M 539M 458M 55% /media/yin/LRS_ESP
/dev/sda5 108G 16G 92G 15% /media/yin/尹同学
/dev/sda4 175G 97G 78G 56% /media/yin/LENOVO
/dev/sda3 100G 86G 15G 86% /media/yin/Windows
$ df -h /etc ## 将 /etc 所在分区的可用的磁盘容量以易读的容量格式显示
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda9 67G 12G 52G 19% /
du (disk usage)
Linux du
命令也是查看使用空间的,对文件和目录磁盘使用的空间进行查看
du [-ahskm] 文件或目录名称
$ du ## 只列出当前目录下的所有文件夹容量(包括隐藏文件夹)
$ du -h test ## 以易读的容量格式显示目录test中的所有 文件夹 的容量
672K test
$ du -ah test ## 以易读的容量格式显示目录test中的所有 文件及文件夹 的容量(可以列出文件)
4.0K test/b.txt
4.0K test/rx.md
656K test/Linux_Note.pdf
4.0K test/a.txt
672K test
fdisk
fdisk
是 Linux 的磁盘分区表操作工具,语法如下:
$ fdisk [-l] 装置名称
$ fdisk -l ## 列出所有分区信息
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: WDC WD5000LPCX-2
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: A00C89EE-990C-4830-9FBB-744156B01235
Device Start End Sectors Size Type
/dev/sda1 2048 534527 532480 260M EFI System
/dev/sda2 534528 567295 32768 16M Microsoft reserved
/dev/sda3 567296 210282495 209715200 100G Microsoft basic data
/dev/sda4 210282496 575735807 365453312 174.3G Microsoft basic data
/dev/sda5 719097856 944377855 225280000 107.4G Microsoft basic data
/dev/sda6 944379904 946427903 2048000 1000M Windows recovery environment
/dev/sda7 946427904 974725119 28297216 13.5G Windows recovery environment
/dev/sda8 974725120 976773119 2048000 1000M Lenovo boot partition
/dev/sda9 575735808 719097855 143362048 68.4G Linux filesystem
Partition table entries are not in disk order.
$ df / ## 查看根目录所在分区
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda9 70031584 12443556 53987596 19% /
$ fdisk /dev/sda ## 输入命令后接着输入 m 查看各种操作
Command (m for help): m ## 查看命令帮助
Command (m for help): q ## 离开不保存
mkfs
mkfs
命令可以实现磁盘分区格式化,语法为:
$ mkfs [-t 文件系统格式] 装置文件名
F. apt
apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器;
apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记;
apt 命令执行需要超级管理员权限 root。
语法
$ apt [options] [command] [package ...]
- options:可选选项包括 -h(帮助),-y(当安装过程提示选择全部为”yes”),-q(不显示安装的过程)等等;
- command:要进行的操作;
- package:安装的包名。
apt 常用命令
命令 | 功能 |
---|---|
sudo apt update | 列出所有可更新的软件清单命令 |
sudo apt upgrade | 升级软件包 |
apt list –upgradeable | 列出可更新的软件包及版本信息 |
sudo apt full-upgrade | 升级软件包,升级前先删除需要更新软件包 |
sudo apt install | 安装指定的软件命令(可以一次性安装多个包) |
sudo apt update | 更新指定的软件命令 |
sudo apt show | 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等 |
sudo apt remove | 删除软件包命令 |
sudo apt autoremove | 清理不再使用的依赖和库文件 |
apt list –all-versions | 列出所有已安装的包的版本信息 |
apt list –installed | 列出所有已安装的包 |
sudo apt search | 查找相关的软件包 |
$ sudo apt update ## 查看可更新的包
$ sudo apt upgrade ## 升级安装包
$ sudo apt update && sudo apt upgrade -y ## 组合上面的命令,一键升级
$ sudo apt install mplayer ## 安装 mplayer
$ sudo apt install mplayer --no-upgrade ## 安装 mplayer,如果 mplayer 存在则不升级
$ sudo apt remove mplayer ## 移除包 mplayer
$ apt search libimobile ## 查找名为 libmobile 的包
$ apt show apache2 ## 查看包 apache2 的相关信息
$ sudo apt autoremove ## 清理不再使用的依赖或库文件
注:如果忘记包名称,可以输入一部分名字,按下 Tab
后会出现相关选项!
G. Exercise
1. 验收练习
下面是在熟悉Linux命令后的一个验收小测验,建议先根据问题描述自己实践,再看参考答案!
问题描述
- 创建用户 Tom 和 Aimer
- 在 Tom 的家目录中创建文件夹 dir1 和 文件 file1
- 设置 dir1 的权限,使得 dir1 允许 Tom 和 Aimer 读、写和执行
参考答案
$ sudo adduser Tom ## 创建用户
$ sudo adduser Aimer
$ su Tom ## 登录用户 Tom
$ cd ~ ## 进入 Tom 家目录
$ mkdir dir1
$ touch file1
$ sudo addgroup group01 ## 创建用户组 group01
$ sudo gpasswd -a Tom group01 ## 添加用户到用户组
$ sudo gpasswd -a Aimer group01
$ sudo chgrp -R group01 dir1 ## 将目录 dir1 的所属群组改为 group01
$ chmod g+r+x dir1 ## 设置目录 dir1 对用户组的权限
2. 开启HTTP、FTP、SSH服务
(1) HTTP服务
-
安装 apache2
$ sudo apt instal apache2
安装完成后会得到一个路径:
/var/www/html
-
在上述默认路径
/var/www/html
中新建一个 test.html 文件 -
打开手机热点,与客户端连接到同一个局域网,客户端使用 chrome 访问我的 ip/test.html
192.168.2.3/test.html
(2) FTP服务
-
ftp是文件传输协议,首先安装 vsftpd:
$ sudo apt install vsftpd
-
接着在同一局域网下,另一台主机可连接我的主机:
$ sftp root@192.168.2.3 ## 我的用户名是root ip是 192.168.2.3
-
接着进行文件传输
## 本地命令 lcd lls ## 服务端命令 cd ls $ sftp> put /home/yin/Desktop/a.txt /var/www/doc/ ## 上传本地的 a.txt 到服务器的 /var/www/doc/目录 $ sftp> get /var/www/doc/b.txt /home/yin/Desktop/ ## 下载服务端的 b.txt 到我的桌面
(3) SSH
客户端: ssh client
服务端: ssh server
-
服务端安装 openssh-server
$ sudo apt-get install openssh-server
-
若服务器 ip 192.168.2.3,ssh 服务端口为 22,服务器上有个用户为 root,用 ssh 登录服务器:
$ ssh root@192.168.2.3
「参考内容」
- Linux 菜鸟教程
- 如何安装Linux操作系统可以参考我的CSDN博客安装Linux操作系统