Linux-基础
1. 命令行
在 Linux 中 # 表示超级管理员身份,$ 符号表示普通用户。
2. 基本命令
通用语法格式: # 指令名称 [选项][操作的目标]
1. 简单命令
1. ls
ls => list files
# 语法: ls [路径]
表示列出指定路径下的文件夹和文件的名字,如果路径没有指定则列出当前路径下的
# 参数
/ 列出根目录下的所有目录
~ 列出家目录下的所有目录
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出(列表形式)
-la 表示以列表的形式列出指定路径下的文件夹和文件名(包含隐藏文件,all)
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有文件,则以下之文件亦皆依序列出
2. clear
# 表示的含义
清空当前屏幕中全部的命令(其实质是没有清空,只不过是顶到上面去了)
# 语法:
clear <=> ctrl + l
3. su
# 作用
切换用户 su => switch user
# 语法:
su 需要切换到的用户名(用户名可以不写,则表示切换到 root 用户)
# 例如
1. 从 root 用户切换到 admin 用户 => su admin
2. 从 admin 用户切换到 root 用户 => su root <=> su
# 注意
当切换到的用户权限如果比当前用户的权限低,可以直接切换,不需要密码;反之,如果从低往高切换则要求输入被切换到的账户对应的密码。
4. cd
# 作用
切换目录 cd => change directory
# 语法:
cd 需要切换到的路径(路径可以是相对路径,也可以是绝对路径)
"""路径可以写也可以不写,不写则表示切换到当前用户的家目录"""
# 例如
1. 从 root 用户家目录中切换到 admin 用户的家目录中
=> cd /home/admin
# 提示: 在切换路径或者后期打开一个文件的时候可以多建议使用 tab 键(可以自动补全命令路径)
2. 切换用户切换到 admin 用户,然后从 admin 用户的家目录使用 cd 切换到 root 的家目录
=> su admin
=> cd /root
# 注意
低级用户没有权限访问高级用户相关的资源
# 关于路径
路径分为相对路径和绝对路径
相对路径是相对当前路径的一种表现形式
特点:只要不是以“/”开头的就是相对路径
绝对路径是直接从“根”开始的一种路径形式
特点:以“/”开头的路径称之为绝对路径
案例:从 root 用户家目录中切换到 admin 用户的家目录中,要求以相对路径形式书写
cd ../home/admin
分析:
当前路径:/root
目标路径:/home/admin
5. pwd
# 作用
打印当前的工作路径 pwd => print working directory
2. 文档的操作命令
1. touch
# 命令
touch 创建文件
# 语法
touch 路径
# 示例
1. 在当前路径下创建一个文件名字叫 py2020.txt
touch py2020.txt
2. 在磁盘根目录下创建文件 py2020.txt
touch /py2020.txt
2. mkdir
# 命令
mkdir => make directory 创建文件夹
# 语法
mkdir 文件夹路径
# 例如
在 root 的桌面上创建一个 py666 的文件夹
mkdir py666
# 练习
1. mkdir index.php 创建的是什么?
=> 文件夹
2. 在上述的指令执行的基础上行,执行 # touch index.php,创建的是什么?
=> 什么都没有
3. cp
# 命令
cp => copy 复制
# 语法
cp [-r] 需要复制的文档 需要保存的位置
# 选项说明
-r:表示递归(recursion)。如果复制的是文件夹,-r 就不是选项,是必须要加的。
# 问题
文档在复制的过程中,其名称一般是否变化? => 不变,数量变化
# 案例
1. 需要使用 root 用户,将根下的 py2020.txt 复制到 admin 用户的家目录下
cp /py2020.txt /home/admin/
2. 将当前目录的 py666 文件夹复制到 admin 的家目录下
cp py666 /home/admin/
4. mv
# 命令
mv => move 剪切 + 粘贴
# 语法
mv 需要操作的文档 新的文档的位置
# 案例
1. 将 admin 家目录下的 py2020.txt,移动到 root 家目录下,移动操作会影响什么?
=> 路径变化,数量不变,名称不变
=> mv /home/admin/py2020.txt /root/
2. 将 root 下的 py2020.txt 重命名为 py2021.doc,重命名操作会影响什么?
=> 名称变,路径不变,数量不变
=> mv /root/py2020.txt /root/py2021.doc
5. rm
# 命令
rm => remove 删除
# 语法
rm [-rf] 需要删除的文档
# 选项说明
-r:recursion 表示递归
-f:force 表示强制,没有删除确认提示
# 案例
1. 删除 root 下的 py2021.doc
=> rm /root/py2021.doc (只写rm 会有删除确认提示)
=> rm -f /root/py2021.doc (删除文档不需要加 -r)
2. 删除 root 下的 py666 文件夹
=> rm -rf /root/py666
3. 请问使用 root 用户“ rm -rf / ”这个命令能不能执行?
从语法上讲,该指令可以执行,表示递归删除根,但是这个操作很危险,不建议执行
3. 文档的查看指令
1. tail
# 作用
查看一个文件的末 n 行
# 语法
tail -n 文件的路径
# 说明
-n 可以不写,默认表示 10 行
# 案例
使用 tail 指令查看 root/install.log 文件的末 5 行和末 10 行
=> tail -5 /root/install.log
=> tail /root/install.log <=> tail -10 /root/install.log
2. head
# 作用
查看文件的头 n 行
# 语法
head -n 文件的路径
# 注意
如果不指定 -n 则默认头 10 行
# 案例
使用 head 指令查看 root/install.log 文件的头 5 行和头 10 行
=> head -5 /root/install.log
=> head /root/install.log <=> head -10 /root/install.log
3. cat
# 命令
cat => concatenate 连接 连结
# 作用
用于连接文件,查看某个文件的全部内容并打印到标准输出设备上
# 语法
cat 文件路径1 文件路径2 文件路径3...
# 参数说明
-n 或 --number:由 1 开始对所有输出的行数编号。
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E 或 --show-ends : 在每行结束处显示 $。
-T 或 --show-tabs: 将 TAB 字符显示为 ^I。
-A, --show-all:等价于 -vET。
-e:等价于"-vE"选项
-t:等价于"-vT"选项
# 案例
1. 把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:
cat -n textfile1 > textfile2
2. 把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档:
cat -b textfile1 textfile2 >> textfile3
3. 清空 /etc/test.txt 文档内容:
cat /dev/null > /etc/test.txt
4. cat 也可以用来制作镜像文件。例如要制作软盘的镜像文件,将软盘放好后输入:
cat /dev/fd0 > OUTFILE
5. 相反的,如果想把 image file 写到软盘,输入:
cat IMG_FILE > /dev/fd0
# 注意
1. OUTFILE 指输出的镜像文件名。
2. IMG_FILE 指镜像文件。
3. 若从镜像文件写回 device 时,device 容量需与相当。
4. 通常用制作开机磁片。
4. tac
# 作用
查看某个文件的全部内容(倒序的)
# 语法
tac 文件路径1 文件路径2 文件路径3...
# 案例
使用 tac 指令输出 install.log 文件内容
=> tac /root/install.log
5. vim
# 作用
打开一个文件,显示内容
# 语法
vim 文件路径
# 例如
打开 /root/install.log
=> vim /root/install.log
退出输入“:q”按下回车即可
# vi和vim
VI = Visual editor(可视化编辑器) VI 采用了 Visual 的头2个母进zhi行缩写
VIM 编辑器是VI编辑器的增强版(improved版) VIM 是 Visual editor improved 的缩写
4. 关机重启指令
1. reboot
# 作用
重启计算机
# 语法
reboot
# 注意
部分情况下(除非自开机以来只有当前一个普通用户登录过)普通用户无法执行 reboot 指令
2. shutdown
# 作用
关机
# 语法
shutdown -h 时间
# 时间常见的值:
now:shutdown -h now,表示立即关机
+m: m 表示 minutes 数字,例如 +5,表示五分钟之后关机
3. halt
# 作用
关机(关闭内存)
# 语法
halt
5. 快捷键
1. ctrl + a
# 在命令行中可以使用 ctrl+a,来进行光标的快速定位:
可以将命令行中的光标从其他的位置快速移动到行首(ahead)
2. ctrl + e
# 在命令行中可以使用 ctrl+e,来进行光标的快速定位:
可以将命令行中的光标从任意位置快速定位到行末(end)
3. ↑ 和 ↓
# 在命令行输入的位置可以按下 ↑ 来查看之前的执行命令历史,可以按下 ↓ 来翻到最新的命令执行历史
即使远程终端断开连接,下次连接上依然可以使用
4. > >>
> 作用
需要执行的命令 > 需要保存到的文件路径 (覆盖)
>> 作用
需要执行的命令 >> 需要保存到的文件路径 (追加)
6. 进阶
1. du
# 作用
du => disk usage 显示指定目录或文件所占的磁盘空间大小的情况
# 语法
du -sh 目录路径
# 选项说明
-s:表示 sumary,汇总统计
-h:表示以较高可读性的形式显示 (human-readable) 以K,M,G为单位,提高信息的可读性
-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-D或--dereference-args 显示指定符号连接的源文件大小。
-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
-k或--kilobytes 以1024 bytes为单位。
-l或--count-links 重复计算硬件连接的文件。
-L<符号连接>或--dereference<符号连接> 显示选项中所指定符号连接的源文件大小。
-m或--megabytes 以1MB为单位。
-s或--summarize 仅显示总计。
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
--exclude=<目录或文件> 略过指定的目录或文件。
--max-depth=<目录层数> 超过指定层数的目录后,予以忽略。
--help 显示帮助。
--version 显示版本信息。
2. df
# 作用
df => disk free 查看磁盘的剩余空间的情况
# 语法
df -h
# 选项说明
-h:表示以较高可读性单位进行查看(human-readable)
3. free
# 作用
查看内存的使用情况
# 语法
free -m
# 选项含义
-m:表示以 mb 为单位进行查看
4. find
# 作用
表示根据条件去查询文档的所在位置
# 语法
find 范围路径 选项 选项的值
# 常见的选项
-name:根据名字进行查询 支持通配符(“*”),模糊查询
-type:根据文档的类型进行查询
d 表示文件夹,f 表示普通文件,s 表示套接字文件
l 表示连接文件,c 表示字符设备文件,b 表示块状设备文件
-user:根据所有者进行查询
-group:根据所属的用户组进行查询
-size:根据大小进行查询
# 案例
1. 记不清一个文件 httpd.conf 所在位置,要求使用 find 指令进行查询
=> find / -name httpd.conf -type f
2. 假设我需要查询磁盘中全部的.conf 文件
=> find / -name *.conf -type f
5. ps
# 作用
ps => process show 查看进程
# 语法
ps -ef
# 选项含义
-e:等价于-A,all,表示全部
-f:表示 full,显示全部的列
# 参数信息
UID: 该进程的启动用户名
PID: process id,进程的 id 号
PPID: parent process id,父级进程 id 号
C: 表示的 cpu 的使用情况
STIME:start time,启动时间
TTY: 终端的设备编号,“?”表示该进程不是由终端发起的 teletypewriter
TIME: 持续运行的时间
CMD: command,显示进程的名称或者位置
补充: 结束进程的指令 kill PID
6. service
# 作用
操作服务的(启动/停止/重启)
# 语法
1. service 服务名 start/stop/restart
2. /etc/init.d/服务名 start/stop/restart
# 案例
1. 使用 service 指令启动 apache(httpd)
=> service httpd start
2. 除了可以用 service 指令操作服务,还可以通过如下语法:
=> /etc/init.d/httpd start
7. grep
# 作用
grep => global search regular expression(RE) and print out the line
搜索、过滤,主要用于对文件/内容进行筛选,选出需要的内容
# 语法
grep [选项] 关键词 文件路径/内容
# 常见的选项
-v:排除
# 案例
1. 使用 grep 筛选出 py2020.txt 中的 admin 行
=> grep "admin" py2020.txt
2. 使用 grep -v 实现排除 admin 所在行
=> grep -v "admin" py2020.txt
# 扩展用法
grep -E “关键词 1|关键词 2|...” 文件路径或内容
# 选项
-E 表示 extension,该语法表示多条件筛选,“|”表示 or
# 上述扩展用法等价于
egrep “关键词 1|关键词 2|...” 文件的内容或路径
8. wc
# 作用
wc => word count 作用是用于统计文件的各项数值(行、单词数、字节数)
# 语法
wc -lwc 文档的路径
# 选项含义
-l:line,行数
-w:word,单词数
-c:byte,字节数
# 案例
使用 wc 指令分别统计文件/etc/passwd 的行、单词数、字节数
=> wc -lwc /etc/passwd
# 注意
lwc 选项的顺序,不影响其指令输出的结果的顺序,结果顺序一定是行、单词、字节
9. 管道 |
# 管道定义
管道严格意义上说其不是指令,其只是一个符号“|”。该符号主要起到辅助的作用,能够将多个指令合在一行上进行操作。主要用在搜索过滤等上面。
# 语法
必须在终端中有输出内容的指令 | 有输入的指令[要求有读取文件内容的需求]
# 管道的核心理解概念
管道前面的指令的输出其实就是管道后面指令的输入
# 案例
1. 通过 ps 指令查看进程,只查看 httpd 的进程
=> ps -ef | grep “httpd”
2. “/etc/passwd”文件是存储用户信息的文件,该文件中一行即为一个用户
统计出当前计算机中一共有多少个用户
=> cat /etc/passwd | wc -l