第二周 Linux文件管理类命令及bash基本特性
第二周 Linux文件管理类命令及bash基本特性
摘要
1、描述Linux上的文件管理类命令并详解。
2、描述Bash的工作特性。
3、描述文件的元数据信息详解。
4、描述命令别名的使用。
5、详解文件通配符。
一、Linux上的文件管理类命令
[root@localhost etc]# ls -l
-rw-r--r--. 1 root root 0 10月 19 02:00 3axaxx
-rw-r--r--. 1 root root 0 10月 19 02:01 abcdefg
drwxr-xr-x. 3 root root 97 10月 15 17:51 abrt
lrwxrwxrwx. 1 root root 56 10月 15 17:51 favicon.png -> /usr/share/icons/hicolor
/16x16/apps/fedora-logo-icon.png
Linux系统上的文件类型:- : 常规文件,即f d :directory 即目录文件 b :block device 映射块设备文件 ,支持以"block"为单位,支持随机访问c: character device 字符设备文件,支持以“character”为单位,支持线性访问(有次序得访问)ls - l /dev crw-rw----. 1 root video 10, 175 11月 10 15:48 agpgartmajor number 主设备号,用表示设备类型,进而确定要加载的驱动程序minor number 次设备号,用于表示同一类型中的不同设备二者用,来区分l: symbolic link 符号链接文件(类似windows的快捷方式,指向另一文件的路径。或称为软连接文件)p:pipe 命名管道s:socket 套接字文件,实现多个进程之间进行通信,多用于提供服务
二、bash的工作特性
1、bash的工作特性之命令执行状态返回值:
命令的执行状态结果 1) bash通过状态返回值来输出此结果成功:0 失败:1-255命令执行完成之后,其状态返回值保存于bash特殊变量 $? 中 。$?只能获取当前命令的结果[root@localhost etc]# echo $?02)引用命令的执行结果:$(COMMAND) 或者 `COMMAND`[root@localhost etc]# mkdir $(date +%T) [root@localhost etc]# ls 12:53:45 hosts.allow rc0.d
2、bash之history命令
命令历史:shell进程会在其会话中保存此用户提交执行过的命令~]# history定制history的功能,可通过环境变量实现HISTSIZE shell进程可控制命令历史的条数HSITFILE 持久保存命令历史的文件 /]# cat /root/.bash_history HISTFILESIZE 查看命令历史文件的大小-d 删除指定行数 history -d 304 5 从304条往下删除5条-c 清空所有内存中的存储信息 history -c-r 从文件读取命令历史至历史列表(内存)中-w 把历史列表中的命令追加到文件历史中history #(数字) 显示最近的Number条命令调用 命令历史列表中的命令!# 再次执行历史列表中的第#条命令!!再次执行上条命令 !STRING 再一次执行历史列表中最近一个以STRING开头的命令 调用上次命令的最后一个参数快捷键 :ESC + 。 或者 符号组合 file + !$控制命令历史记录的方式定义环境变量 HISTCONITROLignoredups 忽略重复的命令 HISTCONITROL=ignoredups ignorespace 忽略以空白字符开头的命令 HISTCONITROL=ignorespace ignoreboth 以上两者同时生效修改变量的值NAME='VALUE' 只对当前进程有效
3、bash之命令补全:
命令补全:shell程序在接收用户执行命令的请求后,分析完成后,最左侧的字符串会被当做命令;处理机制:查找内部命令 根据PATH环境变量中的设定的目录,自左而有逐个搜索目录下的文件名给定的打头字符串如果能唯一标示某命令程序文件,则直接补全,不能唯一标识某命令程序文件,则再点击tab键一次,会给出列表路径补全:在给定的起始路径下,以对应路径下的打头字符串来逐一匹配起始路径下的每个文件;tab : 如果是唯一标识则自动补全,如果不是,再次点击,给出列表
4、bash之命令引用:
引用强引用 ‘ ’ 弱引用 “ “ 命令引用 ` `
5、bash之命令行快捷键
命令行快捷键ctrl+a 跳转至命令行首字段 ctrl+e 跳转至命令行尾字段ctrl+u 删除从命令行首到光标处所有字符ctrl+k 删除从光标所在处至行尾的所有字符ctrl+l 或者clear 清屏
6、I\O重定向及管道
程序:指令+数据 或者 数据结构+算法程序:IO 程序的数据流有三种:输入的数据流:<-- 标准输入(stdin) 键盘输出的数据流:-->标准输出(stdout) 显示器fd:file descriptor 文件描述符标准输入:0标准输出:1错误输出:2IO重定向: 改变标准位置输出重定向: >特性:覆盖输出重定向(危险操作!!!)输出追加重定向: >>特性:追加输出,保留原有内有,增加新的内容cat /var/a >> /tmp/a # set -C 禁止覆盖输出重定向至已存在的文件 (该特性只对当前特性有效)cat /etc/a >| /tmp/a 启用set -c的情况下,可以强制覆盖输出 >|# set +C 关闭上述特性错误输出流重定向: 2> 覆盖输出 2>> 追加输出合并正常输出流和错误输出流:1) &> &>>2)COMMAND > /path/to/somefile 2>&1COMMAND >> /path/to/somefile 2>&1特殊设备: /dev/null输入重定向: <tr命令:tr [OPTION]... SET1 [SET2]把输入的数据当中的字符,凡是在set1定义范围内出现的,通通按位对应为set2出现的字符tman]# tr [a-z] [A-Z] < /etc/abc把abc中小写的全部换成大写tr -d '[0-9]' < /etc/abc 把abc中含有0-9的全部删除掉注意:不修改源文件<< 此处创建文档cat /tmp/a << EOF (EOF 为结束符)cat > /path/to/somefie << EOF管道:连接程序,实现将前一个命令的输出直接定向后一个程序当做输入数据流COMMAND1 | COMMAND2 | COMMAND3|...
tee: cat /etc/a | tee /tmp/a | tr -d 'a-z'tee 保存上个输出流的记录,并可以指向下个输入流练习: 1)把./etc/passwd文件的前6行信息转换为大写字符输出head -n 6 /etc/passwd | tr 'a-z' 'A-Z'
7、基础命令:
1)cp:copy 文件复制功能
源文件:目标文件 单源复制 cp [OPTION]... [-T] SOURCE DEST如果dest路径不存在,则复制原内容,粘贴创建该目录dest内如果dest存在,1)dest是非目录文件,则会复制目标文件 2)dest是目录文件,则先在dest目录下创建一个与源文件同名的文件,并复制过来多源复制 cp [OPTION]... SOURCE... DIRECTORYcp [OPTION]... -t DIRECTORY SOURCE...如果dest不存在,返回错误如果dest存在,分别复制每个文件到目标目录中,并保持原名常用选项:-i 交互式复制 覆盖之前提醒客户确认-f 强制性覆盖目标文件 -r 递归复制目录 -d 复制符号链接文件本身,而非其指向的源文件本身--preserv=mode 权限ownership 属主和属组timestamps 时间戳 context 安全标签links 符号链接xattr:扩展属性all 上述所有属性-a -dr --preserve=all archive 用于实现归档,备份使用2)mv: move 移动常用选项-i 交互式-f force
3)rm:remove 删除文件(建议move到一个单独的文件夹,作用类似回收站)-i-r 删除命令,每个文件都会确认一遍-rf 强制删除 危险操作,勿操作!!! rm-rf /或者rm -rf /*
4)目录管理类的命令:mkdir , rmdir mkdir make DIRECTORY 创建目录mkdir [OPTION]... DIRECTORY...注意:路径基名方为命令的作用对象,基名之前的路径必须存在。 -p 自动按需创建父目录-v verbose 显示详细过程-m MODE 直接给定权限 rmdir rmdir [OPTION]... DIRECTORY...删除文件下的空目录,如果删除为非空目录,则失败,需要先删除里面内容再删除外部-p 删除某目录后,如果其父目录为空,则一并删除之-v 显示过程pwd:printing woking directory 显示工作目录
5)cd: change directory 切换目录cd [/PATH/TO/SOMENDIR]只输入 cd 切换回家目录bash中,~也表示家目录cd ~ 切换回自己的家目录输入cd ~USERNAME ;切换至指定用户的家目录,只有管理员可以切换至其他用户家目录cd - 在上一次所在目录与当前目录来回切换$PWD:当前工作目录$OLDPWD:上一次的工作目录
6)ls:list 列出指定目录下的内容 ls [OPTION]... [FILE]...-a 显示所有文件,包括隐藏文件-A:显示除了。和。。之外的所有文件,包括隐藏文件ls -A /etc-l --long 长格式列表,显示文件的详细属性信息:/]# ls -l /etc-rw-r--r--. 1 root root 16 10月 10 14:35 adjtime-r :文件类型,- ,d,b,c,l,s,p-rw-r--r--. rw- 文件属主权限 r-- 文件属组权限r-- 其他用户(非属主、属组)的权限1:数字表示文件被硬链接的次数,root 第一个root 文件的属主root 第二个root 文件的属组16: 数字表示文件大小,单位是字节 16 10月 10 14:35 文件最近一次修改时间adjtime 文件名 -h 对文件大小单位换算,换算后的结果非精确值-ld 查看文件本身的信息,而非其自身内部的文件内容/]# ls -ld /etcdrwxr-xr-x. 74 root root 8192 10月 12 02:24 /etc-r或者-lr 对文件排序呈降序排序-R recursive 递归显示
7) cat: concatenate file 连接文件 文件正序显示文本文件查看工具cat /etc/fstabcat后可以跟多个路径文件-n :显示的文件内容进行统一编号cat -n [COMMAND] [COMMAND]-E:显示行结束符$
8) tac 文本 逆序显示 文本文件查看工具tac /etc/fstabtac后可以跟多个路径文件-n :显示的文件内容进行统一编号tac -n [COMMAND] [COMMAND] -E:显示行结束符$
9)file:查看文件内容类型file [FILE].................
10)echo :回显命令 echo [SHORT-OPTION]... [STRING]...STRING 可以使用引号,单引号和双引号均可用单引号:强引用,变量引用不执行替换[root@localhost /]# echo '$SHELL'$SHELL双引号: 弱引用,变量引用会被替换[root@localhost /]# echo "$SHELL"/bin/bash [root@localhost /]# echo "DAA"DAA-n 输出后不自动换行操作[root@localhost /]# echo -n "DAA"DAA[root@localhost /]# -e 让转义符生效 \n显示换行 \t:制表符,类似增加新字段[root@localhost /]# echo -e "D \nAA"D AA
11)tree 目录结构查看:-d:只显示目录-L level :指定显示的层及目录-P pattern :只显示指定pattern匹配到的路径
三、完成以下练习(1)
命令行展开
~ :自动展开为用户的家目录,或指定的用户的家目录{ }:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径
(1)创建/tmp目录下的:a_c, a_d, b_c, b_d
[root@localhost tmp]# mkdir -pv /tmp/{a,b}_{c,d}mkdir: 已创建目录 "/tmp/a_c"mkdir: 已创建目录 "/tmp/a_d"mkdir: 已创建目录 "/tmp/b_c"mkdir: 已创建目录 "/tmp/b_d"
[root@localhost tmp]# lsa_c a_d b_c b_d
创建/tmp/mylinux目录下的 :
mylinux/
├── bin
├── boot
│ └── grub
├── dev
├── etc
│ ├── rc.d
│ │ └── init.d
│ └── sysconfig
│ └── network-scripts
├── lib
│ └── modules
├── lib64
├── proc
├── sbin
├── sys
├── tmp
├── usr
│ └── local
│ ├── bin
│ └── sbin
└── var├── lock├── log└── run
[root@localhost tmp]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,syscon
fig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lo_{ck,g},run}}mkdir: 已创建目录 "/tmp/mylinux"mkdir: 已创建目录 "/tmp/mylinux/bin"mkdir: 已创建目录 "/tmp/mylinux/boot"mkdir: 已创建目录 "/tmp/mylinux/boot/grub"mkdir: 已创建目录 "/tmp/mylinux/dev"mkdir: 已创建目录 "/tmp/mylinux/etc"mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d"mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d/init.d"mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig"mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig/network-scripts"mkdir: 已创建目录 "/tmp/mylinux/lib"mkdir: 已创建目录 "/tmp/mylinux/lib/modules"mkdir: 已创建目录 "/tmp/mylinux/lib64"mkdir: 已创建目录 "/tmp/mylinux/proc"mkdir: 已创建目录 "/tmp/mylinux/sbin"mkdir: 已创建目录 "/tmp/mylinux/sys"mkdir: 已创建目录 "/tmp/mylinux/tmp"mkdir: 已创建目录 "/tmp/mylinux/usr"mkdir: 已创建目录 "/tmp/mylinux/usr/local"mkdir: 已创建目录 "/tmp/mylinux/usr/local/bin"mkdir: 已创建目录 "/tmp/mylinux/usr/local/sbin"mkdir: 已创建目录 "/tmp/mylinux/var"mkdir: 已创建目录 "/tmp/mylinux/var/lo_ck"mkdir: 已创建目录 "/tmp/mylinux/var/lo_g"mkdir: 已创建目录 "/tmp/mylinux/var/run"
[root@localhost tmp]# cd mylinux/
[root@localhost mylinux]# lsbin boot dev etc lib lib64 proc sbin sys tmp usr var
四、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
1、文件的元数据
文件的元数据包括:名称,路径,大小,inode号,文件类型,硬链接数,权限,时间戳等stat [option] file…
file 文件名称
size 文件大小 单位K
blocks 所占块的个数
IO blocks 单块的大小
device 设备标识
inode 节点id,文件的元数据保存在磁盘上的inode区域中,每一个文件都有一个对应的inode号码
links 硬链接数,一个文件的硬链接数为N,表示该文件在磁盘上有N个与其对应的inode号码相同的文件
access 权限,文件的权限包括r(读),w(写),x(执行),suid,sgid,sbit这几种权限,它们可以分别对应到文件的属主、属组和其他人上
uid 属主信息
gid 属组信息
access 最后一次访问时间,文件被访问,即文件在使用cat, more, less, head等命令查看,或者cp等命令将其作为源文件复制给其他路径下,或者使用grep命令进行匹配查找等操作时,atime都会改变
modify 最后一次修改时间,指文件内容被修改时,mtime会改变
change 最后一次更正时间,指文件的元数据被改变,例如chmod, chown, mv等命令改变了文件权限名称路径等信息,ln命令增加了文件的硬链接等操作都会改变ctime
[root@localhost mylinux]# stat -L /tmp/mylinux/文件:"/tmp/mylinux/"大小:4096 块:8 IO 块:4096 目录
设备:fd00h/64768d Inode:202724745 硬链接:14
权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:user_tmp_t:s0
最近访问:2017-11-29 14:28:11.973040042 +0800
最近更改:2017-11-29 14:28:02.480300238 +0800
最近改动:2017-11-29 14:28:02.480300238 +0800
创建时间:-
使用touch修改时间戳
用法:touch [选项]... 文件...
参数:
-a 只更改访问时间
-c, --no-create 不创建任何文件
-d, --date=字符串 使用指定字符串表示时间而非当前时间
-f (忽略)
-h, --no-dereference 会影响符号链接本身,而非符号链接所指示的目的地(当系统支持更改符号链接的所有者时,此选项才有用)
-m 只更改修改时间
-r, --reference=FILE use this file's times instead of current time
-t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time
--time=WORD change the specified time:WORD is access, atime, or use: equivalent to -aWORD is modify or mtime: equivalent to -m
--help 显示此帮助信息并退出
--version 显示版本信息并退出请注意,-d 和-t 选项可接受不同的时间/日期格式。
[root@localhost mylinux]# touch -m -t 021211221133.00 /tmp/mylinux/
[root@localhost mylinux]# stat -L /tmp/mylinux/文件:"/tmp/mylinux/"大小:4096 块:8 IO 块:4096 目录设备:fd00h/64768d Inode:202724745 硬链接:14权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)环境:unconfined_u:object_r:user_tmp_t:s0最近访问:2017-11-29 16:13:38.263642314 +0800最近更改:0212-11-22 11:33:00.000000000 +0805最近改动:2017-11-29 16:14:10.970745835 +0800创建时间:-
五、命令的别名
命令别名:获取所有可用别名的定义:~]#alias定义别名 ~]#alias NAME=‘COMMAND’ 注意:只对当前shell进程设置有效/]# alias cls=clear撤销别名/]# cls~]#unalias NAME which 显示文件完成路径 which - shows the full path of (shell) commands.which [options] [--] programname [...]~]# which whichalias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'/usr/bin/alias/usr/bin/which--COMMAND-alias 忽略别名whereis 显示文件的路径,手册页,-b 只看二进制文件路径-m 只看使用手册文件路径 who 查看登录当前用户的相关信息-b 显示系统此次启动时间-d 显示此次死亡进程-l 显示登录进程-u 比who多显示端口号-r 运行级别w查看当前用户和其现阶段工作内容
六、详解文件通配符并完成以下练习
详解文件通配符
globbing :文件名通配匹配模式:元字符 *:匹配任意长度的任意字符? :匹配任意单个字符pa? ??pa p?a p?a?[ ]: 匹配指定范围内的任意单个字符有几种特殊格式:[a-z] [A-Z] [0-9] [a-z0-9] [abcxyz]pa[0-9][a-z] pa2[0-9][0-9][[:upper:]] 只匹配大写字母[[:lower:]] 只匹配小写字母[[:alpha:]] 只匹配所有字母[[:digit:]] 只匹配所有数字[[:alnum:]] 只匹配所有字母和数字[[:space:]] 所有空白字符 touch p \空格 a[[:punct:]] 匹配所有符号[^] :匹配指定范围外的单个字符(非!!)[^[:upper:]] [^0-9]
1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录
[root@localhost var]# ls -d l*[[:alnum:]]
lib local local01 local02 lock log
2、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
[root@localhost var]# ls -d [0-9]*[^0-9]
0_abcc 0_bafaf 2_abcc 2_bafaf
3、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
[root@localhost etc]# ls -d /etc/[^[:alpha:]][a-zA-Z]*
/etc/3axaxx /etc/,avc23
4、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@localhost etc]# touch /tmp/tfile-$(date +"%Y-%m-%d-%H-%M-%S")
[root@localhost etc]# ls /tmp
a_c a_d b_c b_d magedu1.com mylinux tfile-2017-11-29-18-08-27
5、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest2目录中。
[root@localhost mytest2]# cp -a /etc/p*[^[:digit:]] /tmp/mytest2/
[root@localhost mytest2]# ls
pam.d passwd- pki pm postfix prelink.conf.d profile protocols
passwd pinforc plymouth popt.d ppp printcap profile.d
6、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest1目录中。
[root@localhost mytest2]# mkdir -pv /tmp/mytest1
mkdir: 已创建目录 "/tmp/mytest1"
[root@localhost ~]# cp -a /etc/*.d /tmp/mytest1
[root@localhost ~]# ls /tmp/mytest1
bash_completion.d gdbinit.d modules-load.d rc1.d rsyslog.d usb_modeswitch.d
binfmt.d grub.d my.cnf.d rc2.d rwtab.d xinetd.d
7、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中
[root@localhost ~]# mkdir -pv /tmp/mytest3
mkdir: 已创建目录 "/tmp/mytest3"
[root@localhost ~]# cp /etc/[lmn]*.conf /tmp/mytest3
[root@localhost ~]# ls /tmp/mytest3
ld.so.conf libuser.conf logrotate.conf mke2fs.conf nsswitch.conf
libaudit.conf locale.conf man_db.conf named.conf
第二周 Linux文件管理类命令及bash基本特性相关推荐
- 第二周linux微职位
1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示. 答: 文件管理: cp, mv, rm 复制命令:cp cp [OPTION]... [-T] SOURCE DEST c ...
- linux运维之道基础命令,Linux运维之道(7)——Linux管理类命令
@(Linux)[系统管理] 1. 目录管理类命令 1.1 cd命令 格式:cd [-L|[-P [-e]] [-@]] [dir] 被你忽略的小知识: 在这里科普一个小小的知识点,就是关于cd -为 ...
- linux模块builtin是什么意思,使用linux的builtin命令执行bash内建命令
使用linux的builtin命令执行bash内建命令 发布时间:2020-07-17 09:07:55 来源:亿速云 阅读:69 作者:清晨 栏目:服务器 这篇文章将为大家详细讲解有关使用linux ...
- Linux基础7 文件管理类命令
linux文件命名规则:1.长度不能超过255各字符.2.文件名不能含有/.3.严格区分大小写. 字符编码标准:GB18030(大),GBK(中),GB2312(小),UTF-8(全球编码) 文本处理 ...
- Linux用管道移动文件夹,常用的Linux上的文件管理类命令讲解及演示
01. 查看目录内容 1.1 终端实用技巧 1> 自动补全在敲出 文件/目录/命令 的前几个字母之后,按下 tab 键 如果输入的没有歧义,系统会自动补全 如果还存在其他 文件/目录/命令,再按 ...
- 文件管理和用户管理命令以及bash基础特性
文章目录 文件管理相关命令 常用的文件管理命令 常用的文件内容查看命令 其他常用基础命令 元数据 用户及用户组详解及其常用命令 用户 用户组 权限 特殊权限位 常用的用户(组)管理命令及权限管理命令 ...
- Linux || 查询类命令
查找类的命令: which和whereis 只能查找Linux里的命令,精确查找,到PATH变量的路径查找 locate:可以查找命令和普通文件或文件夹,模糊查找,到自己的数据库里查找(整个/ ...
- [鸟哥linux视频教程整理]03_01_Linux文件管理类命令详解续3
一.查看文本: cat:连接并显示 tac:反向显示文本内容 -n:显示行号 -E:显示每一行的行结束符 注:对于Linux系统而言,所有的文本文件的每一行的行结束符是$.windows系统的结束符 ...
- 迈博第二天-linux安装与命令
安装及命令 要求: 1.掌握linux安装 2.掌握分区及引导程序的安装 3.掌握整个安装的过程 分区要求: 1.至少要两个分区[swap和根分区] 2.最好四个分区[外加home和boot] 分区规 ...
最新文章
- 变而不变:我看分布式系统发展和阿里实践
- JAVA SE学习day14:解析XML
- 【原创】 PostgreSQL 实现MySQL 的auto_increment 字段
- 使用eclipse集成开发环境开发第一个嵌入式Linux驱动
- Android中的主题Theme
- boost::math::barycentric_rational相关用法的测试程序
- 1053 住房空置率(PAT乙级 C++ 坑点分析)
- T-SQL中REPLACE的用法_字符串替换
- UNIX(多线程):21---线程池实现原理
- MFC中的几个常用类——CFileDialog
- treeset java_Java TreeSet Higher()方法与示例
- python读取大数据量xml_多快好省地使用pandas分析大型数据集
- [深度学习]Python/Theano实现逻辑回归网络的代码分析
- linux挂载与卸载图文解析
- python orm开发模型_Python ORM框架Peewee初探【二】创建或者生成模型
- 开源实战 | 手把手教你在 Azure 上畅享 SAP、SUSE全套解决方案
- 【洛谷试炼场】洛谷新手村——洛谷的第一个任务
- css 3D 旋转 - Demo
- 域控服务器的ip地址,域控更改ip地址问题
- Linux下键盘测试工具