一、Linux 文件操作
1.1 Linux ls 命令
Linux ls(英文全拼: list directory contents)命令用于显示指定工作目录下之内容(列出目前工作目录所含的文件及子目录)。
语法
ls [-alrtAFR] [name...]
参数 :
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-d 只列出目录(不递归列出目录内的文件)。
-l 以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等。
-r 倒序显示文件和目录。
-t 将按照修改时间排序,最新的文件在最前面。
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 递归显示目录中的所有文件和子目录。
注意事项
当文件名包含空格、特殊字符或者开始字符为破折号时,可以使用反斜杠(\)进行转义,或者使用引号将文件名括起来。
ls 命令还可以使用通配符进行模式匹配,例如 * 表示匹配任意字符,? 表示匹配一个字符,[...] 表示匹配指定范围内的字符。
1.2 Linux ls -l 命令
语法
ls -l
示例
参数表示
在使用 ls -l 命令时,第一列的字符表示文件或目录的类型和权限。其中第一个字符表示文件类型,例如:
- 表示普通文件
d 表示目录
l 表示符号链接
c 表示字符设备文件
b 表示块设备文件
s 表示套接字文件
p 表示管道文件
在使用 ls -l 命令时,第一列的其余 9 个字符表示文件或目录的访问权限,分别对应三个字符一组的 rwx 权限。例如:
r 表示读取权限
w 表示写入权限
x 表示执行权限
- 表示没有对应权限
前三个字符表示所有者的权限,中间三个字符表示所属组的权限,后三个字符表示其他用户的权限。
1.3 Linux ln 命令
Linux ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
语法:
ln [参数] [源文件或目录] [目标文件或目录]
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
参数选项
必要参数:
--backup[=CONTROL] 备份已存在的目标文件
-b 类似 --backup ,但不接受参数
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
选择参数:
-S "-S<字尾备份字符串> "或 "--suffix=<字尾备份字符串>"
-V "-V<备份方式>"或"--version-control=<备份方式>"
--help 显示帮助信息
--version 显示版本信息
连接方式
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。
软连接(快捷方式)
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬连接(起小名)
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
1.4 Linux stat 命令
显示该文件(目录)本身属性值
语法:
stat [文件或目录]
示例
参数说明
文件: 文件名
大小: 该文件内容大小
块: 该文件物理大小(每个文件最小块大小为8,1块为0.5k)
硬链接: 该文件的名字个数
访问时间: 程序最后一次运行的时间
修改时间: 文件内容最后一次修改的时间
变更时间: 文件最后一次改动的时间
创建时间: 文件创建的时间
二、Linux 查看磁盘空间
Linux 查看磁盘空间可以使用 df 和 du 命令。
2.1 df 命令
df 以磁盘分区为单位查看文件系统,可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
示例
参数说明:
选项:
Filesystem: 文件系统
Size: 分区大小
Used: 已使用容量
Avail: 还可以使用的容量
Use%: 已用百分比
Mounted on: 挂载点
相关命令
df -hl 查看磁盘剩余空间
df -h 查看每个根路径的分区大小
du -sh [目录名] 返回该目录的大小
du -sm [文件夹] 返回该文件夹总M数
du -h [目录名] 查看指定文件夹下的所有文件大小(包含子文件夹)
2.2 du 命令
du 的英文原义为 disk usage,含义为显示磁盘空间的使用情况,用于查看当前目录的总大小。
查看当前目录大小
查看指定文件所占空间
显示目录及目录下各文件大小
参数说明:
-s:对每个Names参数只给出占用的数据块总数。
-a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
-b:以字节为单位列出磁盘空间使用情况(系统默认以k字节为单位)。
-k:以1024字节为单位列出磁盘空间使用情况。
-c:最后再加上一个总计(系统默认设置)。
-l:计算所有的文件大小,对硬链接文件,则计算多次。
-x:跳过在不同文件系统上的目录不予统计。
-h:以K,M,G为单位,提高信息的可读性。
三、Linux sudo apt 命令
apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。
apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
apt 命令执行需要超级管理员权限(root)。
语法:
apt [options] [command] [package ...]
参数说明:
options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
command:要进行的操作。
package:安装的包名。
常用命令:
sudo apt update 列出所有可更新的软件清单命令
sudo apt upgrade 升级软件包
apt list --upgradeable 列出可更新的软件包及版本信息
sudo apt full-upgrade 升级软件包,升级前先删除需要更新软件包
sudo apt install <package_name> 安装指定的软件命令
sudo apt install <package_1> <package_2> <package_3> 安装多个软件包
sudo apt update <package_name> 更新指定的软件命令
sudo apt show <package_name> 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等
sudo apt remove <package_name> 删除软件包命令
sudo apt autoremove 清理不再使用的依赖和库文件
sudo apt purge <package_name> 移除软件包及配置文件
sudo apt search <keyword> 查找软件包命令
apt list --installed 列出所有已安装的包
apt list --all-versions 列出所有已安装的包的版本信息
说明
如过不太记得完整的包名,我们可以只输入前半部分的包名,然后按下 Tab 键,会列出相关的包名;
如果需要设置指定版本,语法格式如下:
sudo apt install <package_name>=<version_number>
四、Linux ifconfig 命令
Linux ifconfig命令用于显示或设置网络设备。
ifconfig可设置网络设备的状态,或是显示目前的设置。
语法:
ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<网络设备类型><硬件地址>][io_addr<I/O地址>][irq<IRQ地址>][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]
参数说明:
add<地址> 设置网络设备IPv6的IP地址。
del<地址> 删除网络设备IPv6的IP地址。
down 关闭指定的网络设备。
<hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
io_addr<I/O地址> 设置网络设备的I/O地址。
irq<IRQ地址> 设置网络设备的IRQ。
media<网络媒介类型> 设置网络设备的媒介类型。
mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
mtu<字节> 设置网络设备的MTU。
netmask<子网掩码> 设置网络设备的子网掩码。
tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
up 启动指定的网络设备。
-broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
-pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
-promisc 关闭或启动指定网络设备的promiscuous模式。
[IP地址] 指定网络设备的IP地址。
[网络设备] 指定网络设备的名称。
常用命令:
sudo apt update 列出所有可更新的软件清单命令
sudo apt upgrade 升级软件包
apt list --upgradeable 列出可更新的软件包及版本信息
sudo apt full-upgrade 升级软件包,升级前先删除需要更新软件包
sudo apt install <package_name> 安装指定的软件命令
sudo apt install <package_1> <package_2> <package_3> 安装多个软件包
sudo apt update <package_name> 更新指定的软件命令
sudo apt show <package_name> 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等
sudo apt remove <package_name> 删除软件包命令
sudo apt autoremove 清理不再使用的依赖和库文件
sudo apt purge <package_name> 移除软件包及配置文件
sudo apt search <keyword> 查找软件包命令
apt list --installed 列出所有已安装的包
apt list --all-versions 列出所有已安装的包的版本信息
实例
显示网络设备信息
启动关闭指定网卡
# ifconfig eth0 down
# ifconfig eth0 up
为网卡配置和删除IPv6地址
# ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 //为网卡设置IPv6地址
# ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 //为网卡删除IPv6地址
用ifconfig修改MAC地址
# ifconfig eth0 down //关闭网卡
# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址
# ifconfig eth0 up //启动网卡
# ifconfig eth1 hw ether 00:1D:1C:1D:1E //关闭网卡并修改MAC地址
# ifconfig eth1 up //启动网卡
配置IP地址
# ifconfig eth0 192.168.1.56
//给eth0网卡配置IP地址
# ifconfig eth0 192.168.1.56 netmask 255.255.255.0
// 给eth0网卡配置IP地址,并加上子掩码
# ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255
// 给eth0网卡配置IP地址,加上子掩码,加上个广播地址
启用和关闭ARP协议
# ifconfig eth0 arp //开启
# ifconfig eth0 -arp //关闭
设置最大传输单元
# ifconfig eth0 mtu 1500
//设置能通过的最大数据包大小为 1500 bytes
五、Ubuntu 网络配置文件
IP地址配置文件、主机名称配置文件、DNS配置文件
/etc/network/interfaces
六、Linux ps 命令
Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
语法:
ps [options] [--help]
参数说明:
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的进程
-e 显示所有进程。
-f 全格式显示。
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的进程
-ajx 查看父进程ID,进程ID,进程组ID,会话ID
参数介绍:
USER: 进程的拥有者。这通常是运行该进程的用户帐户的名称。
PID: 进程ID。每个进程都有一个唯一的ID,用于标识该进程。
%CPU: 该进程占用的CPU使用率百分比。
%MEM: 该进程占用的物理内存使用率百分比。
VSZ: 虚拟内存大小,单位是KB。这表示进程使用的虚拟内存量。
RSS: 常驻集大小,单位是KB。这表示进程在物理内存中占用的固定大小。
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 无法中断的休眠状态 (通常 IO 的进程)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
七、Linux 三种流
Linux 操作系统常用的三种流:
0 标准输入流 (stdin: standard input,)
1 标准输出流 (stdout: standard output)
2 标准错误流 (stderr: standard error)
7.1 重定向
在Linux中,标准输入流默认来自键盘输入,标准输出流和标准错误流默认发送到屏幕。在必要的时候,可以对修改输入流的来源、修改输出流的目的,这就是重定向。
常用的重定向的符号:
>: 将标准输出流重定向到文件(清空文件后写入)。
>>:将标准输出流重定向到文件(追加写入)。
<:将文件作为命令的标准输入流。
7.2 管道符
管道符**“|”**可以把一个程序的标准输出流作为另外一个程序的标准输入流,即前一个程序的输出作为后一个程序的输入。
示例
在没有使用管道符的时候,获取可以登录shell的用户数量可以分为以下3步:
1、匹配/etc/passwd文件中包含“/bin/bash”字符串(即可以登录shell的用户)的行,并写入到文件a.txt中:
grep "/bin/bash" /etc/passwd > a.txt
2、用wc -l a.txt命令统计a.txt文件中的行数。
wc -l a.txt
3、删除a.txt文件。
rm a.txt
如果使用管道符,只需要一行命令:
grep "/bin/bash" /etc/passwd | wc -l
首先,grep
读取/etc/passwd
文件,匹配并输出包含/bin/bash
的行,输出内容作为wc
命令的输入;
最后,wc -l
命令统计输入的行数,并最终输出到屏幕上。