linux常用命令总结(精选10篇)
linux文件或目录权限: 读(r)、写(w)、可执行(x);
linux 命令格式:
command [-options] [parameterl]...创建文件:touch test.txt
重定向:“>” 先删后添
“>>”在末尾追加内容 $ ls-alh > ls.txt
$ more ls.txt
管道:|
切换到用户家目录:cd ~
复制:ctrl+inert;粘贴:shift+insert
快速返回上一次目录:cdlaowang su-laowang
//切换账号并且切换目录 su laowang
//切换账号,不切换目录
查看系统当前已存在的账号信息: cat /etc/passwd
永久性删除账号:userdel-r laozhang userdel-r laozhang
普通账号操作时用: sudo userdel-r laozhang
标签:账号正在使用 正在使用
如果在删除账号a时,报:账号a正在使用;那么多次退出账号即可,原因是:你多次切换账号a时,账号a还在登录状态。
显示当前系统已存在的组: cat /etc/group
//第一种方式查看
groupmod +两次tab键
//第二种方式查看(ubuntu下,其他没试过)
添加用户组: groupadd group1 修改组名称:
groupmod-n group2 group1 选项:-g,--gid GID
将组 ID 改为 GID-h,--help
显示此帮助信息并推出
-n,--new-name NEW_GROUP
改名为 NEW_GROUP-o,--non-unique
允许使用重复的 GID-p,--password PASSWORD 将密码更改为(加密过的)PASSWORD-R,--root CHROOT_DIR
chroot 到的目录 删除用户组: groupdel group1
查看用户在那些组里:groups 账号名 groups laozhang
修改用户所在组:usermod-g 目标用户组 用户名 usermod-g
CentOS 7: yum常用的命令
# yum install xxx 安装xxx软件 # yum info xxx 查看xxx软件的信息 # yum remove xxx 删除软件包 # yum list 列出软件包 # yum clean 清除缓冲和就的包
# yum provides xxx 以xxx为关键字搜索包(提供的信息为关键字)# yum search xxx 搜索软件包(以名字为关键字)# yum groupupdate xxx # yum grouplist xxx # yum groupremove xxx
#yum source package xxx 下载该包的源代码
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ftp 服务器搭建过程 c/s:client/server 安装vsftpd服务器 # yum install vsftpd
配置vsftpd.conf 文件 vim /etc/vsftpd.conf
scp 上传、下载文件、文件夹 上传文件:
# scp fileName remoteUserName@remoteHostIp:RemoteFolder 上传文件夹:
# scp-r FolderName RemoteUserName@RemoteHostIp:RemoteFolder
下载文件:
# scp RemoteUserName@RemoteHostIp:RemoteFile FileName # scp-r RemoteUserName@RemoteHostIp:RemoteFolder Folder
vim编辑:常用功能:
vim显示行号: 修改所有账号配置: # vim /etc/vimrc
在文件最后添加 set nu 即可
wq退出。这样,不论使用哪个账号登陆,vim打开后都显示行号
为当前用户配置环境
找到当前用户的vimrc文件。若无此文件,建立此文件即可。vim ~/.vimrc 打开文件后,在最后添加 set nu wq退出。
再次用vim打开即可显示行号
h 左移一个字符
l 右移一个字符,这个命令很少用,一般用w代替。k 上移一个字符 j 下移一个字符
快速定位行数: 到10行:10+G 到首行:1+G 或者:gg 到最后一行:G
i:插入光标前一个字符 a:插入光标后一个字符 I:插入行首 A:插入行末 o:向下新开一行,插入行首 O:向上新开一行,插入行首
w:向后移动一个词、字 删除:
x 删除当前字符,相当于:Del X 删除当前字符的前一个字符。X=dh 相当于:backspace 3x 删除当前光标开始向后三个字符 dd 删除当前行,剪切
3dd 删除光标所在行往下数3行,剪切 D 删除当前字符至行尾。D=d$ d0 删除当前字符至行首 dj 删除光标所在行已经下一行 dk 删除光标所在行已经上一行 D 删除当前字符至行尾。D=d$
ctrl+d:向下翻半屏 ctrl+u:向上翻半屏 ctrl+f:向下翻一屏 ctrl+b:向上翻一屏 撤销:u 反撤销:ctrl+r
>>:缩进 <<:删除缩进 整体缩进: # :22,33>
yy:复制一行 p:粘贴
文件内容替换文本: # :%s/main/MAIN/g 文件内容查找: # /main
功能:.gz 后缀,只能压缩文件,不能压缩目录,不保留源文件
vcD4KPHA+w/zB7sP7s8ajunRhcjwvcD4KPHA+uabE3KO6tPKw/DwvcD4KPHA+PGltZyBzcmM9”www.2cto.com/uploadfile/Collfiles/1202/2014192457234.png“ alt=”“>
命令名称:zip、unzip
功能:保留源文件 -r 压缩目录
命令名称:bzip2
等轴测平面切换
F6: 控制状态行上坐标的显示方式 F7: 栅格显示模式控制 F8: 正交模式控制
F9: 栅格捕捉模式控制 F10: 极轴模式控制 F11: 对象追踪模式控制
Ctrl+1: 打开特性对话框Ctrl+2: 打开设计中心Ctrl+6: 打开数据库连接管理器 Ctrl+B: 栅格捕捉模式控制(F9)Ctrl+C: 将选择的对象复制到剪切板上 Ctrl+F: 控制是否实现对象自动捕捉(F3)Ctrl+G: 栅格显示模式控制(F7)Ctrl+J: 重复执行上一步命令 Ctrl+K: 超级链接 Ctrl+M: 打开选项对话框Ctrl+N: 新建图形文件 Ctrl+O: 打开图像文件Ctrl+P: 打开打印对说框Ctrl+S: 保存文件
Ctrl+U: 极轴模式控制(F10)Ctrl+V: 粘贴剪贴板上的内容Ctrl+W: 对象追踪模式控制(F11)Ctrl+X: 剪切所选择的内容Ctrl+Y: 重做
Ctrl+Z: 取消前一步的操作
A: 绘圆弧 B: 定义块 C: 画圆
D: 尺寸资源管理器 E: 删除(Del)F: 倒圆角 G: 对相组合 H: 填充 I: 插入 J: 合并 L: 直线
M: 移动(对象)
O: 偏移
P: 移动(移动画布,等同于鼠标中间)S: 拉伸
T: 文本输入
U: 恢复上一次操做(Ctrl+Z)V: 设置当前坐标
W: 定义块并保存到硬盘中 X: 炸开 Z: 缩放
AUTO CAD快捷绘图命令:PO: POINT(点)XL: XLINE(射线)PL: PLINE(多段线)ML: MLINE(多线)SPL: SPLINE(样条曲线)POL: POLYGON(正多边形)REC: RECTANGLE(矩形)DO: DONUT(圆环)EL: ELLIPSE(椭圆)REG: REGION(面域)MT: MTEXT(多行文本)T: MTEXT(多行文本)DIV: DIVIDE(等分)
AUTO CAD快捷修改命令:
CO: COPY(复制)MI: MIRROR(镜像)AR: ARRAY(阵列)O: OFFSET(偏移)RO: ROTATE(旋转)M: MOVE(移动)
E: DEL键 ERASE(删除)X: EXPLODE(分解)TR: TRIM(修剪)EX: EXTEND(延伸)S: STRETCH(拉伸)
LEN: LENGTHEN(直线拉长)SC: SCALE(比例缩放)BR: BREAK(打断)CHA: CHAMFER(倒角)F: FILLET(倒圆角)
PE: PEDIT(多段线编辑)
ED: DDEDIT(修改文本)
AUTO CAD快捷视窗缩放:
P: PAN(平移)
Z+空格+空格: 实时缩放Z: 局部放大
Z+P: 返回上一视图Z+E: 显示全图
AUTO CAD快捷尺寸标注:
DLI: DIMLINEAR(直线标注)DAL: DIMALIGNED(对齐标注)DRA: DIMRADIUS(半径标注)DDI: DIMDIAMETER(直径标注)DAN: DIMANGULAR(角度标注)DCE: DIMCENTER(中心标注)DOR: DIMORDINATE(点标注)TOL: TOLERANCE(标注形位公差)LE: QLEADER(快速引出标注)DBA: DIMBASELINE(基线标注)DCO: DIMCONTINUE(连续标注)D: DIMSTYLE(标注样式)DED: DIMEDIT(编辑标注)
DOV: DIMOVERRIDE(替换标注系统变量)
AA: 测量区域和周长(area)AL: 对齐(align)
AR: 阵列(array)AP: 加载lsp程序
AV: 打开视图对话框(dsviewer)DT: 文本的设置(dtext)DI: 测量两点间的距离 OI: 插入外部对象
PE: 圆弧转换为多段线
SE: 打开对象自动捕捉对话框 ST: 打开字体设置对话框(style)SO: 绘制二围面(2d solid)SP: 拼音的校核(spell)SC: 缩放比例(scale)SN: 栅格捕捉模式设置(snap)
COL: COLOR(设置当前应用层的颜色)LA: LAYER(图层特性管理器)LT: LINETYPE(线形管理器)
LTS: LTSCALE(设置线形比例)LW: LWEIGHT(线宽设置)UN: UNITS(图形单位)ATT: ATTDEF(属性定义)ATE: ATTEDIT(编辑属性)
BO: BOUNDARY(边界创建,包括创建闭合多段线和面域)AL: ALIGN(对齐)EXIT: QUIT(退出)
EXP: EXPORT(输出其它格式文件)IMP: IMPORT(输入文件)
OP:PR OPTIONS(自定义CAD设置)PRINT: PLOT(打印)PU: PURGE(清除)
RE: REGEN(重新生成模型)REN: RENAME(重命名)SN: SNAP(捕捉栅格)
DS: DSETTINGS(设置极轴追踪)OS: OSNAP(设置捕捉模式)PRE: PREVIEW(打印预览)TO: TOOLBAR(工具栏)V: VIEW(命名视图)AA: AREA(面积)DI: DIST(距离)
LI: LIST(显示图形数据信息)
小小心得:
1、在CAD中,系统可以记住最后一次使用的命令(点击命令按钮或在命令行输入语句均可),之后同样的操作直接点击空格即可。(例:画完一条段线后,直接点击空格便可继续画新的线段)。
2、在用break打断圆时,原想留下一个大圆弧,但只留下了一个小圆弧的原因:CAD默认保留的是以第二个点为起点的逆时针方向的圆弧(即沿逆时针方向将圆上从第一断点到第二断点之间的那段圆弧删除。),这时颠倒打断点的顺序即可,也可使用修剪命令(TR)。
3、STYLE(文字样式)的作用是设置文件的文字样式,特殊的样式才能识别特殊的转义字符,如果文字样式设置不正确的话,就可能有字符无法被解释,无法被解释的字符将被显示为“?”
4、LTSCALE(线形比例)设置了线形后,有时候由于线形比例太大或者太小而无法正确显示线形,适当调整线形比例才能正确显示线形。
5、PURGE(清除)当在作图的时候可能产生很多垃圾,比如删除不要的对象后导致某图层为空,以及导致某字体没有被引用等,这些东西对图形没有任何作用,但是依然会占据存储空间。这时可用这个命令清除垃圾,降低文件的大小。
6、删除图纸上的cad教育版本:将图另存为dxf文件后关闭(出现“是否以CAD格式保存”对话框时,点击“否”),再打开dxf文件,存成dwg文件即可。
7、复制(CO)和偏移(O)两个命令都可以将对象复制到某特定的位置,但要将对象复制到一定距离处时,用偏移(O)较方便;而要将对象复制到某特定位置,又不知其与原对象的距离时,用复制(CO)较方便。另外,当对象是封闭的曲线时,偏移命令在复制、粘贴的同时还起到了整体放大、缩小的作用,这是复制所不能达到的。
例:如下图所示,河流等不规则的区域,描边界时比较困难,描完河流后,可将其边界偏移适当距离做周围绿地区块的边界,可省去重描的时间;而此处若用复制,需先将封闭的曲线打断成若干段,再逐一复制到相应的位置。
角。最好是用带基点复制,这样就可指定所需的基点。
9、在CAD中,每保存一次就会出现一个BAK文件,如何关闭这些BAK文件:1)工具--选项,选“打开和保存”选项卡,再在对话框中将“每次保存均创建备份”即“CREAT BACKUP COPY WITH EACH SAVES”前的对钩去掉。2)也可以用命令ISAVEBAK,将ISAVEBAK的系统变量修改为0,系统变量为1时,每次保存都会创建“BAK”备份文件。
10、在CAD中,将圆弧转换为多段线可使用PE命令,按提示操作即可。若要加粗圆的线宽,可先打断圆,使其有一个极小极小的口子(打印出来根本看不见,同样可以捕捉到圆心),再用PE命令即可。
11、在使用CAD的过程中,中病毒后经常会出现以下情况:
(1)按下鼠标滚轮不能平移却出现一个菜单:在命令行输入 mbuttonpan 然后再输入数值1即可。
(2)用鼠标滚轮无法继续缩小图:用 z 空格+ 空格(有时候不管用);用 z 空格+A 空格;最简单的方法是快速双击鼠标滚轮,显示完整图形后可用滚轮缩放。
(3)打开一张图后,在本张图所在的文件夹内会生成一个lsp文件,会影响cad的速度:
方法一:关闭cad程序,按F3,搜索acad.lsp文件,全部彻底删除;搜索acadappp.lsp,一般就一个,彻底删除(注意搜索要在高级选项加上隐藏文件夹);打开cad,在工具--选项--配置--重置。
方法二:下载安装一个小软件(CAD病毒查杀工具KillCADVirus),详细使用说明请查看安装包中的“使用帮助.chm”文档(设置后,该软件可以在每次打开CAD文件时,自动搜索并删除病毒,个人认为是目前最好用的)。
8、使用Ctrl+C复制时,所复制的物体总是
1、open()头文件:#include
t mode);函数说明:flags打开文件方式
mode创建文件夹的权限
返回值:成功返回文件描述符,失败返回-1
2、close()头文件:#include
4、write()头文件:#include
count);返回值:成功返回写入的字节数,失败返回-1。
5、ioctl()头文件:#include
返回值:成功返回0,失败返回-1。
6、fork()头文件:#include
7、getpid()头文件:#include
8、getppid()头文件:#include
9、exit()头文件:#include
10、_exit()头文件:#include
11、wait()和waitpid()头文件:#include
options);
12、exec函数族
头文件:#include
int execl(const char *path, const char *arg,...);int execv(const char *path, char *const argv[]);int execle(const char *path, const char *arg,..., char
*const envp[]);int execve(const char *path, char *const argv[], char *const
envp[]);int execlp(const char *file, const char *arg,...);int execvp(const char *file, char *const argv[]);函数说明:
(1)前4个取路径名作为参数,后两个取文件名作为参数。(2)与参数传递有关(l表示list,v表示vector)。execl、execlp 以
及execle要求将新程序的每个命令行参数(command-line
arguments)都指定为一个单独的参数,以NULL指针表明参数的结束。另外三个函数(execv、execvp和execve),首先须要建立一个指向各参数的指针数组,然后将该数组的地址作为这三个函数的参数。
(3)与向新程序传递环境变量表有关。以e结尾的两个函数
(execle和execve)可以传递一个指向环境字符串指针数组的指针。其它四个函数则使用调用进程中的environ变量为新进程复制现有的环境。
13、kill()//发送信号
头文件:#include
sig 信号的类型
返回值:成功 0,失败-1.。
14、raise()//进程给自己发信号 头文件:#include
15、alarm()//一段时间后给自己发送SIGALRM信号 头文件:#include
16、signal()//信号处理 头文件:#include
handler);
17、sigaction()//POSIX标准 头文件:#include
*act,struct sigaction *oldact);函数说明:act表示要设置的对信号的新处理方式。
oldact表示原来对信号的处理方式。
返回值:函数执行成功返回0,失败返回-1。
18、pipe()//普通管道
头文件:#include
19、mkfifo()//命名管道
头文件:#include
#include
#include
号量的键。参数key是一个整数值,不相关的进程可
以通过它访问同一个信号量。程序对所有信号量的访
问都是间接的,它先提供一个键,再由系统生成一个
相应的信号量标识符。只有 semget函数才能直接使
用信号量键,所有其他的信号量函数都是使用 semget 函数返回的信号量标识符。
21、semop()头文件:#include
#include
#include
nsops);函数说明:该函数用于改变信号量的值。
22、semctl()头文件:#include
#include
#include
23、shmget()头文件:#include
#include
地为共享内存命名。shmget函数返回一个共享内存标识符,该标识符用于后续的共享内存函数。参数size以字节为单 位指定需要共享的内存容量。参数 shmflg包含9个比特 的权限标志,它们的作用与创建文件时使用的 mode标志 一样。
24、shmat()头文件:#include
#include
shmflg);函数说明:第一次创建共享内存段时,它不能被任何进程访问。要想启用对该共享内存的访问,必须将其连接到一个进程的地址 空间中,这项工作由shmat函数完成。shmid是由shmget返回的共享内存标识符。
shmaddr指定共享内存连接到当前进程中的地址位置。它通常 是一个空指针,表示让系统来选择共享内存出现的地址。shmflg是一组位标志。
25、shmdt()头文件:#include
#include
26、shmctl()头文件:#include
#include
函数原型:int shmctl(int shmid, int cmd, struct shmid_ds
*buf);函数说明:该函数是共享内存的控制函数shmid是shmget返回的 共享内存标识符。cmd是要采取的动作,有三个取值。
27、msgget()头文件:#include
#include
#include
28、msgsnd()头文件:#include
#include
#include
msgsz, int msgflg);函数说明:msgsnd函数用来把消息添加到消息队列中。
29、msgrcv()头文件:#include
#include
#include
#include
#include
buf);函数说明:msgctl函数的作用与共享内存的控制函数非常类似。
31、pthread_create()头文件:include
函数原型:int pthread_create(pthread_t *thread, const
pthread_attr_t *attr,void *(*start_routine)(void*),void *arg);函数说明:thread指向一个pthread_t型变量,用于返回线程ID。attr:用于定制各种不同的线程属性,一般设为NULL。start_routine:新线程的工作函数。arg:传递给执行函数的参数。
32、pthread_self()头文件:#include
函数原型:pthread_t pthread_self(void);函数说明:线程ID的获取方式有两种:通过pthread_create()返 回给调用者;通过pthread_self()获得其自身的ID。
33、pthread_equal()头文件:#include
函数原型:int pthread_equal(pthread_t t1, pthread_t t2);函数说明:可以使用pthread_equal()函数检查两个线程ID是否
相同
34、pthread_exit()头文件:#include
函数原型:void pthread_exit(void *value_ptr);函数说明:调用pthread_exit()等价于在工作函数中执行 return,区别是pthread_exit()可以在工作函数调用的任何函数 中被调用。
35、pthread_join()头文件:#include
函数原型:int pthread_join(pthread_t thread, void
**value_ptr);返回值:成功返回0。
36、pthread_detach()头文件:#include
函数原型:int pthread_detach(pthread_t thread);函数说明:线程分离。
37、sem_init()(POSIX信号量)头文件:#include
函数原型:int sem_init(sem_t *sem, int pshared, unsigned int
value);函数说明:初始化一个未命名的信号量(unnamed semaphore)。
sem指向需要初始化的信号量(sem_t类型)。value指定信号量的初始值。
pshared表明信号量是在一个进程的多个线程之间共享还是在多个进程之间共享。若pshared为0,信号量被一个进程的多个线程共享,此时应该将信号量(sem_t)置于所以线程可见的位置(全局变量或动态分配)。
38、sem_wait()头文件:#include
39、sem_post()头文件:#include
41、互斥量
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);//初始化
int pthread_mutex_destroy(pthread_mutex_t *mutex);//销毁 int pthread_mutex_lock(pthread_mutex_t *mutex);//加锁 int pthread_mutex_trylock(pthread_mutex_t *mutex);//加锁 int pthread_mutex_unlock(pthread_mutex_t *mutex);//解锁
42、条件变量
使用条件变量前需要对它进行初始化:
int pthread_cond_init(pthread_cond_t *cond,const pthread_condattr_t *attr);条件变量不用之后,应该用下面的函数进行销毁: int pthread_cond_destroy(pthread_cond_t *cond);当程序中需要等待一个条件变量时,可以用下面的函数: int pthread_cond_timedwait(pthread_cond_t *cond,pthread_mutex_t *mutex, const struct timespec *abstime);
int pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex);触发一个条件变量可以用以下函数:
int pthread_cond_broadcast(pthread_cond_t *cond);int pthread_cond_signal(pthread_cond_t *cond);
43、socket()头文件:#include
#include
type指定服务类型
protocol具体的协议 一般为0
44、bind()头文件:#include
#include
*my_addr, socklen_t addrlen);返回值:成功返回0,失败返回-1。
函数说明:bind将my_addr所指的socket地址分配给未命名的sockfd文件描述符,addrlen指出该地址的长度。
45、listen()头文件:#include
#include
函数说明:创建监听队列,backlog提示内核监听队列的最大长度。
46、accept()头文件:#include
#include
47、connect()头文件:#include
#include
*serv_addr, socklen_t addrlen);返回值:成功返回0,失败返回-1。
48、TCP数据读写
头文件:#include
#include
len, int flags);
49、UDP数据读写
头文件:#include
#include
#include
SEEK_SET:将文件偏移量设置在距文件开始处offset个字节。
SEEK_CUR:将文件偏移量设置在其当前值加offset,offset可正 可负。
SEEK_END:将文件偏移量设置为文件长度加offset,offset可正
有两种方法可以在命令行下执行sql命令。第一种是使用“-e“参数来指定需要执行的sql语句;第二种是通过管道的方式。语法及例子如下:
1、
代码如下复制代码MYSQL_HOME/bin/mysql -u用户名 -p密码 -D数据库名 -e“sql 语句”
/usr/local/mysql/bin/mysql -uroot -p123456 -Dmysql -e“select host,user from user”;
2、
代码如下复制代码echo “sql 语句” | MYSQL_HOME/bin/mysql -u用户名 -p密码 -D数据库名
echo “select host,user from user” | /usr/local/mysql/bin/mysql -uroot -p123456 -Dmysql
上面命令执行的结果如下图,
从图中可以看到二者的显示结果有些不一样。
不过讨论链接之前,有必要复习一下Linux的文件系统和文件。提起文件,我们最先想到的就是文件名和文件内容。没错,这的确是我们(人类)最关心的两个属性,但是在计算机看来,除此之外还需要加入更多的属性才能实现有效的文件管理。这些属性从计算机的角度可以分为两大类:元数据和用户数据,计算机关心的是前者,因为元数据是实现管理的关键,而这个文件里面到底存了哪些内容却并不关心(准确的说是文件系统并不关心,但不代表其他组件不关心);用户数据是人类关心的焦点,但是人类并不关心元数据——那是计算机的事。有趣的是,文件名并不在元数据的范围之内,计算机并不关心文件名是什么,后面将会解释。
在这篇文章中我曾仔细的介绍过磁盘与文件系统,但是太罗嗦了,这里说一下重点:
+ 建立文件系统的时候,至少要有两个部分:inode table和data blocks,前者存放inode,后者就是文件内容存放区。当然还有其他重要部分。
+ 文件系统将一个文件的所有信息分成元数据和用户数据分别存放在不同的位置。存放元数据的是inode,而用户数据存放在data blocks中。inode中有很多重要数据,但是最重要的恐怕就是用户数据存放在哪个block。普通文件的用户数据不必多说,但是目录文件的data block到底都是些什么?就是这个目录下所有文件的名字以及对应的inode,类似于一个映射表。
+ 在操作一个文件的时候,至少会提供两个基本参数:路径名和文件名。路径名就是目录树,树根就是根目录“/”。文件系统首先会找到文件所在目录的inode(绝对路径我猜是从根目录开始递归查询的,相对路径可能有更快的方法),从而找到目录内容在的block,从中查找与文件名对应的inode,然后才能从这个inode中找到文件内容所在的block。可见,文件名并不是文件系统定位文件的唯一标识,inode才是。文件名是给人类看的。
然后什么才是链接呢?从面我们知道,文件内容的位置信息存放在它的inode中,且这个inode是唯一的。而要寻找这个inode,只能去其父目录的的data block中,这里记录了文件名和对应inode的映射。而映射可以是多对一的,于是存在这么一种情况,有两个不同的文件名指向同一个inode,当然这种映射不必存在于同一张映射表中,比如/etc下有一个文件叫test1,那么/etc的data block中必然记录了test1和其inode的映射;而在/user中有个文件叫test2,且在/user的data block中,与test2对应的是同一个inode,这种情况下,test1就是test2的硬链接,反过来也成立,反正它们指向同一个inode然后同样的data block。可见,创建一个硬链接其实就是在目录的data block的映射表中增加一项,且增加项的inode是已经存在的。硬链接只是增加了目录的data block的内容,没有增加inode的总使用量,也没有增加data block的总使用量,形象的说只是为原来的文件增加了一个新的入口,
那么软连接的原理又是什么呢?软连接是在当前目录下新建一个文件,拥有全新的inode和data block,然而文件的用户数据,也就是data block中的内容是另一个文件的文件名和路径等信息。
可以对比一下复制文件,复制一个文件到另一个目录,不仅要给新文件分配新的inode和data block,还要把源文件的内容copy到新文件中。
通过ls -l命令可以查看一个目录下所有文件的链接计数情况:
m@sys:~/program/C_codes/tools/calculators$ ll总用量 20drwxrwxr-x 2 m m 4096 5月 4 00:16 ./drwxrwxr-x 3 m m 4096 4月 24 11:24 ../-rw-rw-r-- 1 m m 340 4月 24 14:10 calculator.l-rw-rw-r-- 1 m m 673 5月 4 00:16 calculator.y-rw-rw-r-- 1 m m 367 4月 24 14:20 Makefile
我们看到,对于普通文件,其链接计数都是1(假如不存在其他硬链接),而有“.”表示的目录本身的链接计数却是2。实际上,在当前目录下每新建一个子目录,都会使当前目录的链接计数增加1。但是一个子目录也没有时为什么是2呢?首先看看1是怎么来的:显然,每个文件都有父目录(根目录似乎也有。。),那么父目录的data block中肯定有这个文件的一个映射,这就是1的来源;那为什么每个目录文件的链接计数至少是2?因为除了父目录中的映射,代表当前的“.”也是一次引用,从上面的结果中看以看出,这个“.”应该是记录在该目录的data block中,所以至少链接数是2。我们还看到,每个子目录中还添加了符号“..”,代表上层目录,所以每增加一个子目录,父目录的链接计数都会增加1。
使用ln命令可以创建链接,ln是最常用的命令,但不是唯一的,cp命令也可以创建链接,这个以后再说。
其使用格式为:ln 源文件名 链接名
要注意添加路径。不加选项时,创建的就是硬链接,像创建软连接的话,需要加上选项-s。这是ln最基本的用法,更多的请参考man ln。
软硬链接的一些注意事项:
1. 硬链接不可以对目录使用;
2. 硬链接只能对已经存在的文件使用;
3. 软连接可以对不存在的文件使用;
4. 源文件移动后,软连接失效;
策略性是指对于IP包的路由是以网络管理员根据需要定下的一些策略为主要依据进行路由的,例如我们可以有这样的策略:“所有来直自网A的包,选择X路径;其他选择Y路径”,或者是“所有TOS为A的包选择路径F;其他选者路径K”
Linux最多可以支持255张路由表,其中有3张表是内置的:
存在文件/etc/iproute2/rt_tables中
表255 本地路由表(Local table)本地接口地址,广播地址,已及NAT地址都放在这个表。该路由表由系统自动维护,管理员不能直接修改。
表254 主路由表(Main table)如果没有指明路由所属的表,所有的路由都默认都放在这个表里,一般来说,旧的路由工具(如route)所添加的路由都会加到这个表。一般是普通的路由。
表253 默认路由表(Default table)一般来说默认的路由都放在这张表,但是如果特别指明放的也可以是所有的网关路由。
表0 保留
路由配置命令的格式如下:
Usage: ip route list SELECTOR
ip route { change | del| add | append | replace | monitor } ROUTE
如果想查看路由表的内容,可以通过命令:
ip route list table table_number
ip -6 route list table table_number(对于IPv6)
对于路由的操作包括change、del、add 、append 、replace 、monitor这些。例如添加路由可以用:
router># ip route add 0/0 via 192.168.0.4 table main
router># ip route add 192.168.3.0/24 via192.168.0.3 table 1
第一条命令是向主路由表(main table)即表254添加一条路由,路由的内容是设置192.168.0.4成为网关。
第二条命令代表向路由表1添加一条路由,子网192.168.3.0(子网掩码是255.255.255.0)的网关是192.168.0.3。
在多路由表的路由体系里,所有的路由的操作,例如网路由表添加路由,或者在路由表里寻找特定的路由,需要指明要操作的路由表,所有没有指明路由表,默认是对主路由表(表254)进行操作。而在单表体系里,路由的操作是不用指明路由表的。
规则的配置 IP Rule
在Linux里,总共可以定义232个优先级的规则,一个优先级别只能有一条规则,即理论上总共可以有条规则。其中有3个规则是默认的。命令用法如下:
Usage: ip rule [ list | add | del ] SELECTORACTION
SELECTOR := [ from PREFIX ] [ to PREFIX ] [tos TOS ]
[ dev STRING ] [ pref NUMBER ]
ACTION := [ table TABLE_ID ] [ nat ADDRESS ]
[ prohibit | reject | unreachable ]
[ flowid CLASSID ]
TABLE_ID := [ local | main | default | new |NUMBER
首先我们可以看看路由表默认的所有规则:
root@netmonster# ip rule list
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
注:数字越小,优先级越高
规则0,它是优先级别最高的规则,规则规定,所有的包,都必须首先使用local表(254)进行路由,
本规则不能被更改和删除。
规则32766,规定所有的包,使用表main进行路由。本规则可以被更改和删除。
规则32767,规定所有的包,使用表default进行路由。本规则可以被更改和删除。
在默认情况下进行路由时,首先会根据规则0在本地路由表里寻找路由,如果目的地址是本网络,或是广播地址的话,在这里就可以找到合适的路由;如果路由失败,就会匹配下一个不空的规则,在这里只有32766规则,在这里将会在主路由表里寻找路由;如果失败,就会匹配32767规则,即寻找默认路由表。如果失败,路由将失败。重这里可以看出,策略性路由是往前兼容的。
还可以添加规则:
router># ip rule add [from 0/0] table 1 pref 32800
router >#ip rule add from 192.168.3.112/32 [tos 0x10] table 2 pref 1500 prohibit
第一条命令将向规则链增加一条规则,规则匹配的对象是所有的数据包,动作是选用路由表1的路由,这条规则的优先级是32800。
第二条命令将向规则链增加一条规则,规则匹配的对象是IP为192.168.3.112,tos等于0x10的包,使用路由表2,这条规则的优先级是1500,动作是。添加以后,我们可以看看系统规则的变化。
router># ip rule
0: from all lookup local
1500 from 192.168.3.112/32 [tos 0x10] lookup 2
32766: from all lookup main
32767: from all lookup default
32800: from all lookup 1
上面的规则是以源地址为关键字,作为是否匹配的依据的。除了源地址外,还可以用以下的信息:
From -- 源地址
To -- 目的地址(这里是选择规则时使用,查找路由表时也使用)
Tos -- IP包头的TOS(type of sevice)域
Dev -- 物理接口
Fwmark -- 防火墙参数
采取的动作除了指定表,还可以指定下面的动作:
Table 指明所使用的表
Nat 透明网关
Action prohibit 丢弃该包,并发送 COMM.ADM.PROHIITED的ICMP信息
Reject 单纯丢弃该包
搜索文件
格式
find pathoption [-print] [-exec -ok command] {}
默认搜索路径为当前路径
默认为-print,输出至标准输出
对于查找到的文件执行command命令
option为搜索条件
主要参数
-name filename
限制文件名
-user username
按文件属主来搜索
-group groupname
按组来查找
-mtime -n +n
按文件更改时间来查找,-n指n天以内,+n指n天以前
-atime -n +n
按文件访问时间来查
-ctime -n +n
按文件创建时间来查找
-nogroup
-nouser
-type
按文件类型搜索
-size n
-depth
查找子目录前先搜索完本目录
-follow
如果遇到符号链接文件,就跟踪链接所指文件
-prune
忽略某个文件
-o
逻辑或
-a
逻辑与
!
逻辑否
( )
转义,可括住搜索条件
示例
查找当前目录下的所有普通文件
find .-type f -exec ls -l {} ;
在home目录下查找更改时间在5日以前的文件并删除它们
find /home-mtime +5 -exec -ok rm {} ;
查询今天修改过的文件
find /-mtime -1 -exec ls -l {} ;
查询今天修改过的文件并提示是否显示
find /-mtime -1 -ok ls -l {} ;
查找小于100k的文件并显示
find /home-size -100k -exec ls -l {} ;
查找后缀为.txt的所有文件
cat 命令的原含义为连接(concatenate), 用于连接多个文件内容并输出到标准输出流中(标准输出流默认为屏幕)。实际运用过程中,我们常使用它来显示文件内容。如果您熟悉MS-DOS 下的type 命令,相信不难掌握cat 命令。该命令的常用示例如下:
cat file1.txt 显示 file1.txt 文件的内容;
cat file1.txt file2.txt 显示 file1.txt 和file2.txt 文件的内容;
cat -n file1.txt 显示 file1.txt 文件的内容同时显示行号;
vi 命令介绍
vi 是”Visual Interface” 的简称,它在Linux 上的地位就仿佛Edit 程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
vi 不是一个排版程序,它不象Word 或WPS 那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。
vi 没有菜单,只有命令,且命令繁多。限于篇幅,本文只介绍常用的命令。
Vi 有三种基本工作模式:命令行模式,文本输入模式和末行模式。
命令行模式:
任何时候,不管用户处于何种模式,只要按一下“ESC” 键,即可使vi 进入命令行模式;当在shell 环境下输入vi 命令启动vi 编辑器时,也是处于该模式下。
在该模式下 ,用户可以输入各种合法的vi 命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当作编辑命令来解释,若输入的字符是合法的vi 命令,则vi 在接受用户命令之后完成相应的动作(但需注意的是,所输入的命令并不在屏幕上显示出来)。若输入的字符不是vi 的合法命令,vi 会响铃报警。
文本输入模式:
在命令模式下输入插入命令 i、 附加命令a 、打开命令 o、 修改命令c 、取代命令r 或替换命令s 都可以进入文本输入模式。在该模式下,用户输入的任何字符都被vi 当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按“ESC” 键即可。
末行模式:
在命令模式下用户按“:” 键即可进入末行模式下,此时Vi 会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:” 作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)末行命令执行完后,vi 自动回到命令模式。
若在末行模式下输入命令过程中改变了主意, 可按“ESC” 键或用退格键将输入的命令全部删除之后,再按一下退格键,即可使vi 回到命令模式下。
vi 的进入与退出
在 shell 模式下,键入vi 及需要编辑的文件名,即可进入vi. 例如:
vi example.txt
即可编辑 example.txt 文件.如果该文件存在,则编辑界面中会显示该文件的内容,并将光标定位在文件的第一行;如果文件不存在,则编辑界面中无任何内容。如果需要在进入vi 编辑界面后,将光标置于文件的第n 行,则在vi命令后面加上“+n” 参数即可。例如需要从example.txt 文件的第5 行开始显示,则使用如下命令:
vi +5 example.txt
退出 vi 时,需要在末行模式中输入退出命令“q”。 如果在文本输入模式下,首先按“ESC” 键进入命令模式,然后输入“:” 进入末行模式在末行模式下,可使用如下退出命令:
:q 直接退出。 如果在文本输入模式下修改了文档内容,则不能退出。
:wq 保存后退出。
:x 同“ wq”。
:q! – 不保存内容, 强制退出。
vi 中显示行号
在末行模式下,输入如下命令。
set number
可使 vi 在编辑界面中显示行号。
此外 ,在末行模式下,可使用如下“nu” 命令(number 的简写)来显示光标所在行的行号及该行的内容。
光标移动操作
全屏幕文本编辑器中, 光标的移动操作无疑是最经常使用的操作了。用户只有熟练地使用移动光标的这些命令,才能迅速准确地到达所期望的位置处进行编辑。
vi 中的光标移动既可以在命令模式下,也可以在文本输入模式下,但操作的方法不尽相同。
在文本输入模式下, 可直接使用键盘上的四个方向键移动光标;在命令模式下,有很多移动光标的方法。不但可以使用四个方向键来移动光标,还可以用h 、j、 k、 l 这四个键代替四个方向键来移动光标,这样可以避免由于不同机器上的不同键盘定义所带来的矛盾,而且使用熟练后可以手不离开字母键盘位置就能完成所有操作,从而提高工作效率。
以下命令均在命令行模式下完成光标移动:
h 光标左移, 如果在按h 命令前输入数字n ,则光标左移n 个字符;
l 光标右移 ,如果在按l 命令前输入数字n, 则光标右移n 个字符;
j 光标上移, 如果在按j 命令前输入数字n, 则光标上移n 个字符;
k 光标下移, 如果在按k 命令前输入数字n ,则光标xia 移n 个字符;
0 (零) 光标移到行首;
$ 光标移到行尾;
H 光标移到屏幕上显示的第一行 (并不一定是文件头);
L 光标移到屏幕上显示的最后一行 (并不一定是文件尾);
M 光标移到屏幕的中间一行;
nG 光标移到第 n 行;
w或W 将光标右移至下一个单词的词首;
e 或E 如果光标起始位置处于单词内(即非单词尾处),则该命令将把光标移到本单词词尾;如果光标起始位置处于单词尾,则该命令将把光标移动到下一个单词的词尾。
b 或B 如果光标处于所在单词内(即非单词首),则该命令将把光标移至本单词词首;如果光标处于所在单词的词首,则该命令将把光标移到上一个单词的词首;
Ctrl+G 状态命令, 显示当前编辑文档的状态。包括正在编辑的文件名、是否修改过、当前行号、文件的行数以及光标之前的行占整个文件的百分比。
此外 ,也可以通过以下末行模式下的命令完成光标在整个文件中的移动操作:
:n 光标移到文件的第n 行;
:$ 光标移到文件的最后一行;
文本插入操作
在命令模式下 ,用户输入的任何字符都被vi 当作命令加以解释执行,如果用户要将输入的字符当作是文本内容时,则首先应将vi 的工作模式从命令模式切换到文本输入模式。切换的方式是使用下面的命令:
1. 插入(Insert) 命令
vi 提供了两个插入命令:i 和I。
(1) . i 命令插入文本从光标所在位置前开始, 并且插入过程中可以使用键删除错误的输入。此时vi 处于插入状态,屏幕最下行显示“–INSERT–” 插入字样。
(2) . I 命令 该命令是将光标移到当前行的行首, 然后在其前插入文本。
2. 附加(append) 命令
vi 提供了两个附加插入命令:a 和A,
(1) . a 命令该命令用于在光标当前所在位置之后追加新文本, 新输入的文本放在光标之后,在光标后的原文本将相应地向后移动,光标可在一行的任何位置。
(2) . A 命令 该命令与 a 命令不同的是,A 命令将把光标挪到所在行的行尾,从那里开始插入新文本,当输入A 命令后光,标自动移到该行的行尾。
a 和A 命令是把文本插入到行尾的唯一方法。
3. 打开open 命令
不论是 Insert 命令也好,还是append 命令也好,所插入的内容都是从当前行中的某个位置开始的。若我们希望在某行之前或某行之后插入一些新行,则应使用open 命令。
vi 提供了两个打开命令:o 和O。
(1) . o 命令该命令将在光标所在行的下面新开一行, 并将光标置于该行的行首,等待输入文本。要注意当使用删除字符时只能删除从插入模式开始的位置以后的字符,对于以前的字符不起作用。
(2) . O 命令和 o 命令相反,O 命令是在光标所在行的上面插入一行,并将光标置于该行的行首,等待输入文本。
文本修改操作
在命令模式下可以使用 vi 提供的各种有关命令对文本进行修改,包括对文本内容的删除、复制、取代和替换等。
1. 文本删除/移动
在编辑文本时 ,经常需要删除一些不需要的文本,我们可以用键将输错或不需要的文本删除,但此时有一个限制就是当删到行头之后,再想删上面那行的内容是不可能的。
在命令模式下, vi 提供了许多删除命令这些命令。大多是以d 开头的。常用的有:
(1) . 删除单个字符
x 删除光标处的字符。 若在x 之前加上一个数字n ,则删除从光标所在位置开始向右的n 个字符。
X 删除光标前面的那个字符,若在X之前加上一个数字n, 则删除从光标前面那个字符开始向左的n 个字符。
显然这两个命令是删除少量字符的快捷方法。
(2) . 删除多个字符
dd 删除光标所在的整行。 在dd 前可加上一个数字n ,表示删除当前行及其后n-1 行的内容。
D 或d$ 两命令功能一样, 都是删除从光标所在处开始到行尾的内容。
d0 删除从光标前一个字符开始到行首的内容。
dw 删除一个单词 。若光标处在某个词的中间,则从光标所在位置开始删至词尾。同dd 命令一样,可在dw之前加一个数字n 。表示删除n 个指定的单词。
如果用户不小心进行了误删除操作,也不要紧vi ,提供了恢复误操作的命令,并且可以将恢复的内容移动,放在文本的任何地方。恢复命令用“np”, 其中n 为需要恢复的次数。例如使用dd 命令删除了一行内容,然后使用“2p”命令,则被删除的内容会被重新插入两遍。
通过 dd 命令及p 命令的结合使用,可以很方便的实现文本行的移动操作。
2. 文本复制命令
yy 复制光标所在的整行。 在yy 前可加上一个数字n ,表示复制当前行及其后n-1 行的内容。
文本行复制后, 通过使用上面介绍的“p” 命令,可以将文本行粘贴到任何地方。
dd、 yy 及p 命令在vi 中的作用,类似于Windows 中图形编辑程序的“剪切”、“复制”及“粘贴”命令。
3. 取消上一命令(Undo)
取消上一命令 (Undo), 也称复原命令,是非常有用的命令,它可以取消前一次的误操作或不合适的操作对文件造成的影响,使之回复到这种误操作或不合适操作被执行之前的状态。
取消上一命令有两种形式, 在命令模式下键入字符u 和U 它们的功能都是取消刚才输入的命令,恢复到原来的情况。小写u 和大写U 在具体细节上有所不同,二者的区别在于,大写U命令的功能是恢复到误操作命令前的情况,即如果插入命令后使用U 命令,就删除刚刚插入的内容;如果删除命令后使用U 命令,就相当于在光标处又插入刚刚删除的内容。这里把所有修改文本的命令都视为插入命令,也就是说U 命令只能取消前一步操作,如果用U命令撤消了前一步操作,当再按U 键时,并不是撤消再前一步的操作,而是撤消了刚才U命令执行的操作,也就是又恢复到第一次使用U 命令之前的状态,结果是什么都没做。而小写u 命令的功能是把当前行恢复成被编辑前的状态,而不管此行被编辑了多少次。
4. 重复命令(Redo)
重复命令也是一个非常常用的命令。 在文本编辑中经常会碰到需要机械地重复一些操作,这时就需要用到重复命令。它可以让用户方便地再执行一次前面刚完成的某个复杂的命令。
重复命令只能在命令模式下工作, 在该模式下按“.” 键既可。执行一个重复命令时,其结果是依赖于光标当前位置的。
文本搜索与替换操作
在进行文本编辑的时候,,您可以需要搜索或定位特定的单词或单词的一部分。vi 编辑器有向前或向后搜索指定模式的功能。
“/” 是vi 编辑器的模式搜索命令。键入“/” 后,屏幕的底部会出现一行,同时一个斜扛会出现在底行的行首上,且光标被放置在斜扛之后。此时,您可以在光标位置键入你需要搜索的模式。输入完成并按下ENTER键后,编辑器将开始从光标所在的位置起向文件尾部搜索你键入的模式。如果输入的模式被找到,光标将停留在找到的模式上。在找到一个匹配的模式后,如果您还需要搜索下一个匹配的模式,使用命令“n” 即可;如果需要找到上一个匹配的模式,则使用“N” 命令即可。
此外,“ ?” 命令也是模式搜索命令。与“/” 的区别在于/ 是从光标当
前所在位置向文件尾部搜索,而“?” 命令则是由光标当前所在位置向文件头部搜索。
文本替换操作需要使用末行模式进行操作 即所有文本替换操作命令均以“:”开头。
文本替换命令的格式为:
:s/text1/text2 用于将光标所在段落搜索到的第一个 “text1” 替换为“text2”;
:s/text1/text2/g 用于将光标所在段落的所有 “text1 ”替换为“text2”;
:m,ns/text1/text2/g 用于将从 m行开始至n 行结束的所有搜索到的“text1”替换为text2。 其中可以使用$表示末行,即“1,$” 表示替换文档中的所有符合条件的字符。
文件权限、修改文件权限
查看权限命令
查看目录的相关权限可以采用命令ls -lD,或者直接用ls -la
如
ls -l www.111cn.net//这里表示查看www.111cn.net目录
修改权限命令
chmod 777 文件名
1.chmod 577 /home/stuser -R
2.umask -p 0200
3.chown XXXX YYYY (XXXX 为用户名 YYYY为文件名)
权限列表
-rw-------(600) 只有所有者才有读和写的权限
-rw-r--r--(644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------(700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x(755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx--x--x(711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw-(666) 每个人都有读写的权限
chown命令的语法格式是:
chown [选项]用户或组文件1[文件2...]
用户可以是用户名或用户ID。文件是以空格分开的要改变权限的文件列表,可以用通配符表示文件名。如果改变了文件或目录的所有权,原文件主将不再拥有该文件或目录的权限。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的目录下以后,让用户拥有使用该文件的权限。
在Linux下,每个文件又同时属于一个用户组。当你创建一个文件或目录,系统会赋予它一个用户组关系,用户组的所有成员都可以使用此文件或目录。文件用户组关系的标志是GID。文件的GID只能由文件主或超级用户(root)来修改。chgrp命令可以改变文件的GID,其语法格式为:
chgrp [选项] group文件名
其中group是用户组ID。文件名是以空格分开的要改变属组的文件列表,它支持通配符。
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。访问权限规定三种不同类型的用户:文件主(owner)、同组用户(group)、可以访问系统的其他用户(others)。
访问权限规定三种访问文件或目录的方式:读(r)、写(w)、可执行或查找(x)。
当用ls -l命令或l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。其中各位的含义如下:
*文件访问权限
读权限(r)表示只允许指定用户读其内容,而禁止对其做任何的更改操作。将所访问的文件的内容作为输入的命令都需要有读的权限。例如:cat、more等;写权限(w)表示允许指定用户打开并修改文件。例如命令vi、cp等;执行权限(x)允许指定用户将该文件作为一个程序执行。
*目录访问权限
在ls命令后加上-d选项,可以了解目录文件的使用权限:
ls -d
读权限(r)可以列出存储在该目录下的文件,即读目录内容列表。这一权限允许shell使用文件扩展名字符列出相匹配的文件名;写权限(w)表示允许你从目录中删除或添加新的文件,通常只有目录主才有写权限;执行权限(x)允许你在目录中查找,并能用cd命令将工作目录改到该目录。
cat 命令主要作用可归为四种:
1.用来显示文件内容,主要用于读取信息量比较少的文件
命令形式:cat filename
例如:
cat /data/www/robots.txt 查看 /data/www/robots.txt 文件的详细内容
cat -n *.php 把当前目录下的所有的 php 文件都显示出来(按顺序显示)
cat -n /data/www/robots.txt 查看 /data/www/robots.txt 文件的详细内容并加上行号
2.创建文件(只能创建新文件,不能编辑已有文件)
命令形式:cat >filename
例如:
cat >/data/www/robots.txt 创建 /data/www/robots.txt 文件
cat /data/www/index.php >/data/abc/index.php 把 /data/www/index.php 这个文件的内容输入到 /data/www/index.php 这个文件里面去
cat -n /www/index.php >/abc/index.php 把 /www/index.php 这个文件的内容加上行号输入到 /www/index.php 这个文件里面去
3.将几个文件合并为一个文件
命令形式:cat file1 file2 >file
例如:
cat -b /www/index.php /www/about.php >>/www/abc.php 把 /www/index.php 和 /www/about.php 的档案内容加上行号(忽略空白行)后将内容输入到 /www/abc.php 这个文件里(注意这里 abc.php 是原本不存在的)
cat /data/www/*.php >index.php 将 /data/www/*.php 目录下的所有 php 文件合并为 index.php(注意这里 index.php 是 *.php 里面的一个文件)
4.清空文档内容:
例如:
cat /dev/null >/data/robots.txt 此为清空 /data/robots.txt 文件的内容
另外一些关于 cat 命令的技巧,
cat /proc/cpuinfo 显示CPU info的信息
cat /proc/interrupts 显示中断
cat /proc/meminfo 校验内存使用
cat /proc/swaps 显示哪些swap被使用
cat /proc/version 显示内核的版本
cat /proc/net/dev 显示网络适配器及统计