Linux 笔记整理
Contents
1. Linux 常见目录
目录 | 用途 |
---|---|
/ | 根目录,通常不储存文件 |
/bin | 二进制目录,存放用户级 GNU 工具 |
/boot | 启动目录,存放启动文件 |
/dev | 设备目录 |
/etc | 系统配置文件目录 |
/home | 主目录,Linux 在这里创建用户目录 |
/lib | 库目录,存放系统和应用程序的库文件 |
/media | 媒体目录,可移动媒体设备的常用挂载点 |
/mnt | 挂在目录,另一个常用挂载点 |
/opt | 可选目录,常用于存放第三方软件包和数据文件 |
/root | root 用户的主目录 |
/sbin | 系统二进制目录,存放 GNU 管理员级工具 |
/run | 运行目录,存放系统运作时的运行时数据 |
/proc | 进程目录,存放现有硬件和当前进程的相关信息 |
/srv | 服务目录,存放本地服务的相关文件 |
/sys | 系统目录,存放系统硬件信息的相关文件 |
/tmp | 临时目录,可以在该目录中创建删除临时工作文件 |
/usr | 用户二进制目录 |
/var | 可变目录 |
2. 常用命令
pwd
:显示 shell 会话当前目录。.
表示当前目录,..
表示当前文件目录的父目录。man
:查看手册。cd destination
:切换目录。ls
:显示当前目录下的文件和目录。-F
:区分文件和目录,目录文件名后会添加/
。-a
:将隐藏文件和普通文件及目录一起显示出来。-R
:递归选项。列出当前目录下包含的子目录中的文件。-l
:产生长列表格式的输出,包含了目录中每个文件的相关信息:文件类型,权限,硬链接总数,属主的用户名,组名,大小,上次修改时间,文件名或目录名。-i
:查看文件或目录的 inode 编号。--time=atime
:显示访问时间。
- 文件扩展匹配:使用通配符。
?
:代表一个字符。*
:代表零个或多个字符。[]
:表示一个字符位置并给出多个可能的选择,也可以指定范围。!
:将不需要的内容排除。
touch
:创建空文件,或改变文件修改时间。-a
:改变访问时间。
cp source destination
:复制文件。-i
:强制 shell 询问是否需要覆盖已有文件。-R
:递归地复制整个目录的内容。
ln -s
:创建符号链接。ln
:创建硬链接。- 符号链接是一个实实在在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件。这两个通过符号链接在一起的文件,彼此的内容并不相同。
- 硬链接会创建独立的虚拟文件,其中包含了原始文件的信息和位置。但是它们从根本上而言是同一个文件。引用硬链接等同于引用了源文件。
mv
:移动或重命名文件和目录。重命名、移动不改变 inode 编号和时间戳。-i
:命令试图覆盖已有文件时得到提示。
rm
:删除。-i
:确认提示。-f
:强制删除。-r
:向下进入目录。
mkdir
:创建目录。-p
:同时创建多个目录和子目录。rmdir
:只删除空目录。
file
:查看目录、文件类型和字符编码。cat
:显示文本文件中所有数据。-n
:给所有行加上行号。-b
:给有文本的行加上行号。-T
:用^I
替换文中制表符。
more
:显示文本文件中的内容,但会在显示每页数据之后停下来。less
:more
的升级。
tail
:显示文件最后几行内容。默认显示文件的末尾 10 行。-n
:修改所显示的行数。-f
:在其他进程使用该文件时查看文件的内容,这是实时监测系统日志的绝妙方式。
head
:显示文件开头内容,默认显示前 10 行。-n
:修改所显示的行数。
ps
:默认显示运行在当前控制台下的属于当前用户的进程。top
:实时显示进程信息。kill PID
:结束进程,必须为进程的属主或为 root 用户,只支持 PID。killall
:支持进程名。
mount -t type device directory
:挂载媒体设备。- 默认输出当前系统上挂在的设备列表。
umount
:卸载设备。
df
:查看所有挂载磁盘使用情况。-h
:按用户易读的形式显示。
du
:显示某个特定目录(默认情况是当前目录)的磁盘使用情况。-c
:显示所有已列出文件总的大小。-h
:按用户易读的形式显示。
sort
:按会话指定的默认语言的排序规则对文本文件中的数据进行排序。-n
:把数字识别成数字而不是字符,并且按值排序。-M
:按月排序。-t
:指定字段分隔符。-k
:指定排序的字段。-r
:将结构按降序输出。
grep [options] pattern [file]
:搜索数据。-v
:反向搜索,输出不匹配该模式的行。-n
:显示匹配模式的行所在的行号。-c
:显示有多少行含有匹配的模式。-e
:指定多个匹配模式。
gzip
:压缩文件gzcat
:查看压缩过的文本文件的内容。gunzip
:解压文件。
tar function [option] object
:归档数据。-cvf
:创建一个归档文件。-tf
:列出内容。-xvf
:提取内容。tar -zxvf filename.tgz
:解压 .tgz
jobs
:显示出当前运行在后台模式中的所有用户的进程。-l
:显示命令的 PID。
history
:查看最近使用过的命令列表。-a
:将命令历史记录强制写入.bash_history
文件。
alias -p
:查看一些常用命令的别名。env
/printenv
查看全局变量,printenv
也可以查看个别环境变量。useradd
:添加新用户-D
:查看默认值。-m
:创建 HOME目录。
userdel
:删除用户信息,不删除文件。-r
:删除用户的 HOME目录以及邮件目录。
usermod
:修改用户帐户的字段。-l
:修改用户账户的登录名。-L
:锁定账户。-p
:修改账户的密码。-U
:解除锁定。
passwd
:修改密码。-e
:强制用户下次登录时修改密码。
3. 文件权限
3.1. 文件权限符
举例说明:
1-rwxrwxr-x 1 rich rich 4882 2010-09-18 13:58 myprog
2
3# 登录名为 rich 的用户可以读取、写入以及执行这个文件。
4# rich 组的成员也可以读取、写入和执行这个文件。
5# 不属于 rich 组的其他用户只能读取和执行这个文件。
输出的第一个字段是描述文件和目录权限的编码。第一个字符代表对象的类型:
-
代表文件d
代表目录l
代表链接c
代表字符型设备b
代表块设备n
代表网络设备
之后有 3 组三字符的编码,每组定义了 3 种访问权限:
r
代表对象是可读的。w
代表对象是可写的。x
代表对象是可执行的。
若没有某种权限,则该权限位会出现破折线。
3 组权限对应对象的 3 个安全级别:
- 对象的属主
- 对象的属组
- 系统的其他用户
3.2. Linux 文件权限码
权限 | 二进制值 | 八进制值 | 描述 |
---|---|---|---|
— | 000 | 0 | 没有任何权限 |
–x | 001 | 1 | 只有执行权限 |
-w- | 010 | 2 | 只有写入权限 |
-wx | 011 | 3 | 有写入和执行权限 |
r– | 100 | 4 | 只有读取权限 |
r-x | 101 | 5 | 有读取和执行权限 |
rw- | 110 | 6 | 有读取和写入权限 |
rwx | 111 | 7 | 有全部权限 |
3.3. 默认文件权限
umask
:设置所创建文件和目录的默认权限。系统默认的八进制的 umask 值是 0022。
1$ umask
20022
第一位代表了一项特别的安全特性。叫做粘着位。
要把 umask 值从对象的全权限值中减掉。对文件来说,全权限值是 666(所有用户都有读和写的权限),而对目录来说,则是 777(所有用户都有读、写、执行权限)。
3.4. 改变权限
chmod options mode file
:改变文件和目录的安全性设置,可以使用八进制模式或符号模式进行设置。-R
:让权限的改变递归地作用到文件和子目录。
3.4.1. 八进制模式
1$ chmod 760 newfile
2$ ls -l newfile
3-rwxrw---- 1 rich rich 0 Sep 20 19:16 newfile
3.4.2. 符号模式
[ugoa...][+-=][rwxXstugo...]
[ugoa...]
u
代表用户g
代表组o
代表其他a
代表上述所有
[+-=]
+
:在现有权限基础上增加权限-
:在现有权限基础上移除权限=
:将权限设置成后面的值
[rwxXstugo...]
X
:如果对象是目录或者它已有执行权限,赋予执行权限s
:运行时重新设置 UID 或GID。t
:保留文件或目录。u
:将权限设置为跟属主一样。g
:将权限设置为跟属组一样。o
:将权限设置为跟其他用户一样。
1# 移除属主已有的执行权限
2$ chmod u-x newfile
3$ ls -l newfile
4-rw-rw-r-- 1 rich rich 0 Sep 20 19:16 newfile
3.5. 改变所属关系
chown options owner[.group] file
:改变文件的属主,也支持同时改变文件的属主和属组。-R
:递归地改变子目录和文件的所属关系。-h
:改变该文件的所有符号链接文件的所属关系。
chgrp
:更改文件或目录的默认属组。
4. Vim 编辑器
vim <file_name>
:启动 vim 编辑器。vim + <file_name>
: 打开文件并把光标移动到最后一行行首。vim +<num> file_name
: 打开文件并把光标移动到第 num 行的行首。vim +<word> file_name
: 打开文件并把光标移动到 word 第一次出现的位置行的行首,按n
移动。
4.1. 普通模式
h
:左移一个字符。j
:下移一行(文本中的下一行)。k
:上移一行(文本中的上一行)。l
:右移一个字符。PageDown
(Ctrl + F
):下翻一屏。PageUp
(Ctrl + B
):上翻一屏。G
:移到缓冲区的最后一行。num G
:移动到缓冲区中的第 num 行。gg
:移到缓冲区的第一行。
4.1.1. vim 编辑命令
命令 | 描述 |
---|---|
x | 删除当前光标所在位置的字符 |
dd | 删除当前光标所在行 |
dw | 删除当前光标所在位置的单词 |
d$ | 删除当前光标所在位置至行尾的内容 |
J | 删除当前光标所在行行尾的换行符(拼接行) |
u | 撤销前一编辑命令 |
a | 在当前光标后追加数据 |
A | 在当前光标所在行行尾追加数据 |
r char | 用 char 替换当前光标所在位置的单个字符 |
R text | 用 text 覆盖当前光标所在位置的数据。直到按下 ESC 键 |
vim 在删除数据时,实际上会将数据保存在单独的一个寄存器中。可以用 p 命令取回数据。
vim 中复制命令是 y
,可以在 y
后面使用和 d
命令相同的第二字符(yw
表示复制一个单词,y$
表示复制到行尾。)。在复制文本后,把光标移动刀你想放置文本的地方,输入 p
命令,复制的文本就会出现在该位置。
要输入一个查找字符串,按下斜线(/
)键。
4.2. 命令行模式
q
:如果未修改缓冲区数据,推出。q!
:取消所有对缓冲区数据的修改并退出。w filename
:将文件保存到另一个文件中。wq
:将缓冲区数据保存到文件中并退出。- 替换命令:
:s/old/new/
:s/old/new/g
:一行命令替换所有 old。:n,ms/old/new/g
:替换行号 n 和 m 之间所有 old。:%s/old/new/g
:替换整个文件中的所有 old。:%s/old/new/gc
:替换整个文件中的所有 old,但在每次出现时提示。
5. 杂项
- 访问 Linux 虚拟控制台:
Ctrl + Alt
+F1 ~ F7
- tty : 电传打字机( teletypewriter )
/etc/passwd
:所有系统用户账户列表以及每个用户的基本配置信息。- 只能对处于同一存储媒体的文件创建硬链接。不同储存媒体的文件之间创建链接,只能使用符号链接。
- 在一行中指定要依次运行一系列命令,只要在命令间加入
;
号,即通过命令列表实现。 - 将命令置入后台模式,可以在命令行末尾加上字符
&
。 /etc/profile
是系统默认的 bash shell 的主启动文件。etc/passwd
文件的字段包含如下信息:登陆用户名,用户密码,用户账户的 UID ,用户账户的组 ID 。用户账户的文本描述,用户 HOME 目录的位置,用户的默认 shell。- 本地连接虚拟机中的 Ubuntu 时,若出现
ssh: connect to host localhost port 22: Connection refused
,原因是 Ubuntu 没有默认提供 ssh 服务,首先安装ssh apt-get install openssh-server
,如果安装完后该服务没有自动启动,则手工启动sudo /etc/init.d/ssh start
。
6. 附
6.1. CentOS 7 使用 yum 更换 epel 仓库
6.1.1. 常规
- 安装:
yum -y install epel-release
- 卸载:
yum -y remove epel-release
- 查看:
yum repolist
6.1.2. 手动安装
针对系统架构选择相应的类型,选择相应的包。
1rpm -vih https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-11.noarch.rpm
或
1cd ~ && wget https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-11.noarch.rpm <br>rpm -vih epel-release-7-6.noarch.rpm
6.1.3. 查看并更新源
- 查看:
ls -l /etc/yum.repos.d/
- 两个 epel 的 repo 文件:
epel.repo
和epel-testing.repo
- 更新:
yum clean all && yum makecache
6.2. FirewallD 常用命令
6.2.1. 基本使用
- 启动:
systemctl start firewalld
- 查看状态:
systemctl status firewalld
- 停止:
systemctl disable firewalld
- 禁用:
systemctl stop firewalld
6.2.2. 配置
- 查看版本:
firewall-cmd --version
- 查看帮助:
firewall-cmd --help
- 显示状态:
firewall-cmd --state
- 查看所有打开的端口:
firewall-cmd --zone=public --list-ports
- 更新防火墙规则:
firewall-cmd --reload
- 查看区域信息:
firewall-cmd --get-active-zones
- 查看指定接口所属区域:
firewall-cmd --get-zone-of-interface=eth0
- 拒绝所有包:
firewall-cmd --panic-on
- 取消拒绝状态:
firewall-cmd --panic-off
- 查看是否拒绝:
firewall-cmd --query-panic
- 禁止被 ping:
firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'
6.2.3. 添加删除端口
- 添加:
firewall-cmd --zone=public --add-port=80/tcp --permanent
(--permanent
永久生效,没有此参数重启后失效) - 重新载入:
firewall-cmd --reload
- 查看:
firewall-cmd --zone= public --query-port=80/tcp
- 删除:
firewall-cmd --zone= public --remove-port=80/tcp —permanent