Linux备忘录

前言

温故而知新


硬件设备

设备 文件名 备注
SCSI/SATA/USB /dev/sd[a-p] 外存(硬盘、U盘)
VirtI/O /dev/vd[a-p] 虚拟机
软盘 /dev/fd[0-7]
打印机 /dev/lp[0-2] 25针打印机
打印机 /dev/usb/lp[0-15] USB 界面
鼠标 /dev/input/mouse[0-15] USB
鼠标 /dev/psaux PS/2
鼠标 /dev/mouse 当前鼠标
CDROM/DVDROM /dev/scd[0-1] 通用
CDROM/DVDROM /dev/sr[0-1] 通用,CentOS较常见
CDROM/DVDROM /dev/cdrom 当前CDROM
磁带机 /dev/ht0 IDE
磁带机 /dev/st0 SATA/SCSI
磁带机 /dev/tape 当前磁带
IDE硬盘 /dev/hd[a-d] 旧式系统才有

文件管理

cat

concatenate
用于连接文件并打印到标准输出设备上

语法格式

1
cat [-AbeEnstTuv] [--help] [--version] fileName

参数说明

-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
2
3
4
5
6
7
8
9
10
11
12
13
14
## 把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:
cat -n textfile1 > textfile2

## 把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:
cat -b textfile1 textfile2 >> textfile3

## 清空 /etc/test.txt 文档内容:
cat /dev/null > /etc/test.txt

## cat 也可以用来制作镜像文件。例如要制作软盘的镜像文件,将软盘放好后输入:
cat /dev/fd0 > OUTFILE

## 相反的,如果想把 image file 写到软盘,输入:
cat IMG_FILE > /dev/fd0

cksum

check sum
用于检查文件的CRC是否正确。确保文件从一个系统传输到另一个系统的过程中不被损坏。

语法格式

1
cksum [--help][--version][文件...]

参数说明

–help:在线帮助。
–version:显示版本信息。
文件…:需要进行检查的文件路径

实例

1
2
3
4
5
## 使用指令"cksum"计算文件"testfile1"的完整性,输入如下命令:
cksum testfile1
## 1263453430 78 testfile1 //输出信息
## 上面的输出信息中,"1263453430"表示校验码,"78"表示字节数。
## 如果文件中有任何字符被修改,都将改变计算后CRC校验码的值。

cp

copy
用于复制文件或目录。

语法格式

1
cp [options] source... directory

参数说明

-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。

实例

1
2
3
4
5
## 复制目录
cp -R dir1 dir2/

## 将文件test1复制并命名为test2
cp -f test1 test2

文档编辑

grep

Global Regular Expression Print
用于查找文件里符合条件的字符串。

语法格式

1
grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

参数说明

-a 或 –text : 不要忽略二进制的数据。
-A<显示行数> 或 –after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 –byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 –before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 –count : 计算符合样式的列数。
-C<显示行数> 或 –context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 –directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 –regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
-E 或 –extended-regexp : 将样式为延伸的正则表达式来使用。
-f<规则文件> 或 –file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 –fixed-regexp : 将样式视为固定字符串的列表。
-G 或 –basic-regexp : 将样式视为普通的表示法来使用。
-h 或 –no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 –with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 –ignore-case : 忽略字符大小写的差别。
-l 或 –file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 –files-without-match : 列出文件内容不符合指定的样式的文件名称。
-n 或 –line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 –only-matching : 只显示匹配PATTERN 部分。
-q 或 –quiet或–silent : 不显示任何信息。
-r 或 –recursive : 此参数的效果和指定”-d recurse”参数相同。
-s 或 –no-messages : 不显示错误信息。
-v 或 –invert-match : 显示不包含匹配文本的所有行。
-V 或 –version : 显示版本信息。
-w 或 –word-regexp : 只显示全字符合的列。
-x –line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定”-i”参数相同。

实例

1
2
3
4
5
## 在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
grep test *file
## testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行
## testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行
## testfile_2:Linux test #列出testfile_2 文件中包含test字符的行

文件传输

ftp

File Transfer Protocol
FTP是ARPANet的标准文件传输协议,该网络就是现今Internet的前身。

语法格式

1
ftp [-dignv][主机名称或IP地址]

参数说明

-d 详细显示指令执行过程,便于排错或分析程序执行的情形。
-i 关闭互动模式,不询问任何问题。
-g 关闭本地主机文件名称支持特殊字符的扩充特性。
-n 不使用自动登陆。
-v 显示指令执行过程。

实例

1
2
## 使用ftp命令匿名登录ftp.kernel.org服务器,该服务是Linux 内核的官方服务器,可以使用如下命令:
ftp ftp.kernel.org #发起链接请求

磁盘管理

cd

change directory
用于切换当前工作目录。
~ 也表示为 home 目录 的意思, . 则是表示目前所在的目录, .. 则表示目前目录位置的上一层目录

语法格式

1
cd [dirName]

参数说明

dirName:要切换的目标目录。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。

实例

1
2
3
4
5
6
7
8
## 跳到 /usr/bin/ :
cd /usr/bin

## 跳到自己的 home 目录 :
cd ~

## 跳到目前目录的上上两层 :
cd ../..

pwd

print working directory
用于显示工作目录。

语法格式

1
pwd [--help][--version]

参数说明

–help 在线帮助。
–version 显示版本信息。

实例

1
2
3
4
## 查看当前所在目录:
pwd
## 输出结果
## /root/test

ls

list
显示指定工作目录下的内容及属性信息

语法格式

1
cd [dirName]

参数说明

dirName:要切换的目标目录。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。
-a 显示所有文件及目录 (包括以“.”开头的隐藏文件)
-l 使用长格式列出文件及目录信息
-r 将文件以相反次序显示(默认依英文字母次序)
-t 根据最后的修改时间排序
-A 同 -a ,但不列出 “.” (当前目录) 及 “..” (父目录)
-S 根据文件大小排序
-R 递归列出所有子目录

实例

1
2
## 列出当前工作目录下所有名称是 “s” 开头的文件
ls -ltr s*

磁盘维护

dd

Data Description,可能来源于IBM的工作控制语言(JCL)中的DD语句。
用于读取、转换并输出数据。

语法格式

1
pwd [--help][--version]

参数说明

if=文件名:输入文件名,默认为标准输入。即指定源文件。
of=文件名:输出文件名,默认为标准输出。即指定目的文件。

实例

1
2
## 在Linux 下制作启动盘,可使用如下命令
dd if=boot.img of=/dev/fd0 bs=1440k

网络通讯

ifconfig

interfaces configuring
用于显示或设置网络设备。

语法格式

1
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地址。
[网络设备] 指定网络设备的名称。

实例

1
2
3
## 启动关闭指定网卡
ifconfig eth0 down
ifconfig eth0 up

系统管理

date

date
用来显示或设定系统的日期与时间。

语法格式

1
date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

参数说明

-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
–help : 显示辅助讯息
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间
–version : 显示版本编号

实例

1
2
3
4
5
6
7
8
9
10
11
date
## 2022年 03月 10日 星期四 20:12:34 CST

date +%Y/%m/%d
## 2022/03/10

date +%Y-%m-%d
## 2022-03-10

date +%H:%M:%S.%s
## 20:12:34.1646914099

top

top
用于实时显示 process 的动态。

语法格式

1
top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

参数说明

d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
s : 安全模式,将交谈式指令取消, 避免潜在的危机
i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
n : 更新的次数,完成后将会退出 top
b : 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内

实例

1
2
3
4
5
## 设置信息更新时间,更新周期为3秒
top -d 3

## 显示指定的进程信息,显示进程号为139的进程信息,CPU、内存占用率等
top -p 139

系统设置

time

time
量测特定指令执行时所需消耗的时间及系统资源等资讯。

语法格式

1
time [options] COMMAND [arguments]

参数说明

-o 或 –output=FILE:设定结果输出档。这个选项会将 time 的输出写入 所指定的档案中。如果档案已经存在,系统将覆写其内容。
-a 或 –append:配合 -o 使用,会将结果写到档案的末端,而不会覆盖掉原来的内容。
-f FORMAT 或 –format=FORMAT:以 FORMAT 字串设定显示方式。当这个选项没有被设定的时候,会用系统预设的格式。不过你可以用环境变数 time 来设定这个格式,如此一来就不必每次登入系统都要设定一次。

实例

1
2
3
4
5
6
time date
## Sun Mar 26 22:45:34 GMT-8 2006
##
## real 0m0.136s
## user 0m0.010s
## sys 0m0.070s

备份压缩

time

tar
用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。

语法格式

1
tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F <Script文件>][-K <文件>][-L <媒体容量>][-N <日期时间>][-T <范本文件>][-V <卷册名称>][-X <范本文件>][-<设备编号><存储密度>][--after-date=<日期时间>][--atime-preserve][--backuup=<备份方式>][--checkpoint][--concatenate][--confirmation][--delete][--exclude=<范本样式>][--force-local][--group=<群组名称>][--help][--ignore-failed-read][--new-volume-script=<Script文件>][--newer-mtime][--no-recursion][--null][--numeric-owner][--owner=<用户名称>][--posix][--erve][--preserve-order][--preserve-permissions][--record-size=<区块数目>][--recursive-unlink][--remove-files][--rsh-command=<执行指令>][--same-owner][--suffix=<备份字尾字符串>][--totals][--use-compress-program=<执行指令>][--version][--volno-file=<编号文件>][文件或目录...]

参数说明

-A或–catenate 新增文件到已存在的备份文件。
-b<区块数目>或–blocking-factor=<区块数目> 设置每笔记录的区块数目,每个区块大小为12Bytes。
-B或–read-full-records 读取数据时重设区块大小。
-c或–create 建立新的备份文件。
-C<目的目录>或–directory=<目的目录> 切换到指定的目录。
-d或–diff或–compare 对比备份文件内和文件系统上的文件的差异。
-f<备份文件>或–file=<备份文件> 指定备份文件。
-F<Script文件>或–info-script=<Script文件> 每次更换磁带时,就执行指定的Script文件。
-g或–listed-incremental 处理GNU格式的大量备份。
-G或–incremental 处理旧的GNU格式的大量备份。
-h或–dereference 不建立符号连接,直接复制该连接所指向的原始文件。
-i或–ignore-zeros 忽略备份文件中的0 Byte区块,也就是EOF。
-k或–keep-old-files 解开备份文件时,不覆盖已有的文件。
-K<文件>或–starting-file=<文件> 从指定的文件开始还原。
-l或–one-file-system 复制的文件或目录存放的文件系统,必须与tar指令执行时所处的文件系统相同,否则不予复制。
-L<媒体容量>或-tape-length=<媒体容量> 设置存放每体的容量,单位以1024 Bytes计算。
-m或–modification-time 还原文件时,不变更文件的更改时间。
-M或–multi-volume 在建立,还原备份文件或列出其中的内容时,采用多卷册模式。
-N<日期格式>或–newer=<日期时间> 只将较指定日期更新的文件保存到备份文件里。
-o或–old-archive或–portability 将资料写入备份文件时使用V7格式。
-O或–stdout 把从备份文件里还原的文件输出到标准输出设备。
-p或–same-permissions 用原来的文件权限还原文件。
-P或–absolute-names 文件名使用绝对名称,不移除文件名称前的”/“号。
-r或–append 新增文件到已存在的备份文件的结尾部分。
-R或–block-number 列出每个信息在备份文件中的区块编号。
-s或–same-order 还原文件的顺序和备份文件内的存放顺序相同。
-S或–sparse 倘若一个文件内含大量的连续0字节,则将此文件存成稀疏文件。
-t或–list 列出备份文件的内容。
-T<范本文件>或–files-from=<范本文件> 指定范本文件,其内含有一个或多个范本样式,让tar解开或建立符合设置条件的文件。
-u或–update 仅置换较备份文件内的文件更新的文件。
-U或–unlink-first 解开压缩文件还原文件之前,先解除文件的连接。
-v或–verbose 显示指令执行过程。
-V<卷册名称>或–label=<卷册名称> 建立使用指定的卷册名称的备份文件。
-w或–interactive 遭遇问题时先询问用户。
-W或–verify 写入备份文件后,确认文件正确无误。
-x或–extract或–get 从备份文件中还原文件。
-X<范本文件>或–exclude-from=<范本文件> 指定范本文件,其内含有一个或多个范本样式,让ar排除符合设置条件的文件。
-z或–gzip或–ungzip 通过gzip指令处理备份文件。
-Z或–compress或–uncompress 通过compress指令处理备份文件。
-<设备编号><存储密度> 设置备份用的外围设备编号及存放数据的密度。
–after-date=<日期时间> 此参数的效果和指定”-N”参数相同。
–atime-preserve 不变更文件的存取时间。
–backup=<备份方式>或–backup 移除文件前先进行备份。
–checkpoint 读取备份文件时列出目录名称。
–concatenate 此参数的效果和指定”-A”参数相同。
–confirmation 此参数的效果和指定”-w”参数相同。
–delete 从备份文件中删除指定的文件。
–exclude=<范本样式> 排除符合范本样式的文件。
–group=<群组名称> 把加入设备文件中的文件的所属群组设成指定的群组。
–help 在线帮助。
–ignore-failed-read 忽略数据读取错误,不中断程序的执行。
–new-volume-script=<Script文件> 此参数的效果和指定”-F”参数相同。
–newer-mtime 只保存更改过的文件。
–no-recursion 不做递归处理,也就是指定目录下的所有文件及子目录不予处理。
–null 从null设备读取文件名称。
–numeric-owner 以用户识别码及群组识别码取代用户名称和群组名称。
–owner=<用户名称> 把加入备份文件中的文件的拥有者设成指定的用户。
–posix 将数据写入备份文件时使用POSIX格式。
–preserve 此参数的效果和指定”-ps”参数相同。
–preserve-order 此参数的效果和指定”-A”参数相同。
–preserve-permissions 此参数的效果和指定”-p”参数相同。
–record-size=<区块数目> 此参数的效果和指定”-b”参数相同。
–recursive-unlink 解开压缩文件还原目录之前,先解除整个目录下所有文件的连接。
–remove-files 文件加入备份文件后,就将其删除。
–rsh-command=<执行指令> 设置要在远端主机上执行的指令,以取代rsh指令。
–same-owner 尝试以相同的文件拥有者还原文件。
–suffix=<备份字尾字符串> 移除文件前先行备份。
–totals 备份文件建立后,列出文件大小。
–use-compress-program=<执行指令> 通过指定的指令处理备份文件。
–version 显示版本信息。
–volno-file=<编号文件> 使用指定文件内的编号取代预设的卷册编号。

实例

1
2
3
4
5
## 压缩a文件为a.tar.gz
tar -czvf a.tar.gz a

## 解压a.tar.gz为a文件
tar -xzvf a.tar.gz

设备管理

poweroff

power off
用于关闭计算器并切断电源。

语法格式

1
poweroff [-n] [-w] [-d] [-f] [-i] [-h]

参数说明

-n : 在关机前不做将记忆体资料写回硬盘的动作
-w : 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里
-d : 不把记录写到 /var/log/wtmp 文件里
-i : 在关机之前先把所有网络相关的装置先停止
-p : 关闭操作系统之前将系统中所有的硬件设置为备用模式。

实例

1
2
## 关闭系统
poweroff

其他命令

nohup

no hang up
用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

语法格式

1
nohup Command [ Arg … ] [ & ]

参数说明

Command:要执行的命令。

Arg:一些参数,可以指定输出文件。

&:让命令在后台执行,终端退出后命令仍旧执行。

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
## 在后台执行 root 目录下的 runoob.sh 脚本:
nohup /root/runoob.sh &
## 在终端如果看到以下输出说明运行成功:
appending output to nohup.out
## 这时我们打开 root 目录 可以看到生成了 nohup.out 文件。
## 如果要停止运行,你需要使用以下命令查找到 nohup 运行脚本到 PID,然后使用 kill 命令来删除:
ps -aux | grep "runoob.sh"
## 找到 PID 后,就可以使用 kill PID 来删除。
kill -9 进程号PID

## 以下命令在后台执行 root 目录下的 runoob.sh 脚本,并重定向输入到 runoob.log 文件:
nohup /root/runoob.sh > runoob.log 2>&1 &
## 2>&1 解释:
## 将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。
## 0 – stdin (standard input,标准输入)
## 1 – stdout (standard output,标准输出)
## 2 – stderr (standard error,标准错误输出)

后记

其实就是记不住