前言
此文用于记录一些常用的Linux命令。主要记录每一个命令的作用,参数的作用。
①ls 英语全文:list。列出目录下的文件。 语法: ls [选项] [文件名或目录名]
-a:显示所有文件 –color=when(颜色输出。默认为always。 never:从不 auto:自动)
-d:显示目录信息,而非文件
-h:文件大小显示为k,M,G
-i:显示iNode
#####-l:长格式显示( ll <==> ls -l)
②cd。英语全文:change directory。更新目录 (Shell内置命令)
Linux命令:Shell内置命令(无执行文件所在路径)/外部文件(有可执行文件) Linux绝大部分是外部命令
-P:如果切换的是软链接目录,则进入原始的物理目录,而非软链接目录
-L:如果切换的是软链接目录,直接进入软链接目录
③mkdir 英语全文:make directories。创建一个空目录
-p:递归创建一连串的新目录。 例子:mkdir -p a/b/c
④rmdir 英语全文:remove empty directories。 删除一个空的目录(只能删目录),如果目录有内容(如其他空目录),就会报错。
(这个命令不常用,后续一般用rm命令) -p:递归删除
⑤touch 英语全文:change file timestamps。 触摸,如果文件不存在,创建一个空文件。如果已存在,修改文件的时间戳。
访问时间:Access 数据修改时间:Modify 状态修改时间:Change
-a:只修改文件的访问时间
-m:只修改文件的数据修改时间
-c:只修改状态修改时间 如果文件不存在,不创建新文件。(没有只修改状态修改时间的功能!)
-d:把文件时间修改为指定的时间,而非当前时间
(注意,不要把touch用作新建文件的命令)
⑥stat 英语全文:display file or file system status。显示文件或文件系统的详细信息
stat [选项] 文件名或目录名(必须要指定第二个参数)
-f:查看文件所在的文件系统信息,而不是查看文件的信息
改变三种时间的命令:
cat:改变Access Time
echo:写入数据,改变Modify Time, Change Time
chown: 改变文件所有者。 改变Change Time
touch:三种都改(不使用选项时)
⑦cat 英语全文:concatenate files and print on the standard output。连接文件并打印输出到标准输出
-A:列出所有隐藏符号(all)
-E:列出每行结尾的回车符$ (end)
-n:显示行号
-T:显示出Tab键 ^|
-v:列出所有特殊字符 (即-A <==> -vET)
(不论文件内容有多少,都会一次性显示,如果文件太大,上面部分不会显示完全。cat不适合查看太大的文件,有其他命令)
⑧:more 英语全文:file perusal filter for crt view in。分屏显示文件内容
常用快捷键: 空格:向下翻页。 b:向上翻页。 回车键:向下滚动一行
/字符串: 搜索指定的字符串。 q:退出
?:对于这种持续性命令(more,top等),显示各种可执行操作(即help)
⑨:head 英语全文:output the first part of files。显示文件开头的几行
-n 行数:显示前[行数]几行(n与行数之间,有无空格均可) 行数默认为10
-v:显示文件名(被head操作的文件)
注意: -行数 <==> -n 行数。即: head -n 20 .bash_history <==> head -20 .bash_history
⑩:tail 英语全文:output the last part of files。显示文件结尾内容
-n 行数:显示最后[行数]几行。同样默认为10,与head用法一致
-f:监听文件新增内容。使用时,光标会一直存在,当其他终端向该文件追加一些数据时,该命令会监视出来。
11: ln 英语全文:make links between file。在文件之间建立链接。 ln[选项] 源文件 目标文件
-s:建议软链接(默认是硬链接)
-f:如果目标文件已存在,删除目标文件后再建立链接文件
如果:目标文件没有文件名(即是一个目录),那么新建的文件名跟源文件名一致。
ln /root/a /tmp/ <==> ln /root/a /tmp/a 此时/root/a与/tmp/a是硬链接
(注意:硬链接没有其他要求,但如果建立软链接,那么源文件必须写绝对路径,不能是相对路径)
硬链接:两个文件的iNode相同,其一修改,另一个都会修改。但其中之一删除,iNode文件仍然能访问
(不能跨文件系统(分区),因为不同分区的iNode值重新计算,而且不能链接目录) (不常用)
软链接:创建一个新的目标文件,iNode不同,指向源文件(相当于快捷方式)
ll查看软链接文件时,权限开头的l表示:软链接。 文件名 -> 指向源文件
(软链接可以链接目录,而且可以跨分区)
软链接的block写的不是真正的数据,而仅仅是源文件的文件名及iNode号。删除掉软链接,源文件不受影响。删除掉源文件,软连接会失效。但如果改变软链接,那么源文件也会被修改。
12:rm 英语全文:remove files or directories。删除文件/目录
-f:强制删除(force)
-i:交互删除(删前会询问,默认就是-i)
-r:递归删除,可以删除目录(加了-r才可以删目录)(逐层,直到最底层,逐层删除,逐个询问)
rm -rf:递归删除,不询问,强制。
(传说中的: rm -rf / ,删除所有,强制执行!)
13:cp 英语全文:copyfiles and directories。复制文件和目录。 cp[选项] 源文件 目的文件
-d:如果源文件是软链接,那么目的文件也为软链接(如果不指定,复制的会是源文件)。对硬链接无效
-p:保留源文件的属性(所有者,所属组,权限,时间)
-r:递归复制,用于目录
-a:相当于 -dpr
-i:询问,如果目标文件已经存在,询问是否覆盖
-l:将目标文件建立为源文件的硬链接,而不是复制源文件
-s:……建立为软链接
(复制文件时,如果目标’是一个目录,即没有指定文件名,则不改名复制,否则会改名)
(执行cp命令后,目标文件的时间会更改为命令的执行时间,而非源文件的时间。用-p或者-a可以解决)
14: mv 英语全文: move(rename) files 移动文件或者改名。 mv[选] 源 目’
-f:强制覆盖,如果已存在,直接覆盖
-i:交互。……。询问(默认为-i,即mv <==> mv -i)
-n:如果已存在,不覆盖
-v:显示移动过程
(如果要覆盖的是一个非空目录,则无法覆盖。即便是-f也不可以)
改名操作:如果源’和目’在同一路径,则为改名操作。 mv mytmp1 mytmp2
15:man 英语全文:format and display the online manual pages。帮助手册 man [选项] 命令
-f:查看命令拥有哪个级别的帮助
-k:查看和命令相关的所有帮助
快捷键:上,下,pageUp,pageDown g:第一页 G:最后一页 q:quit
/str:所有str ?str:向上搜索str n:搜下一个str
N:如果是/str 切换成 ?str ,如果是?str,切换成 /str
例子:man -f passwd 有 passwd(1), passwd(5)
那么:man 1 passwd => passwd(1)
其他:whatis <==> man -f
apropos <==> man -k
想知道命令在哪:whereis 想知道当前用户是谁: whoami
16:info 同样是帮助,但是是一份完整详细的电子书
17:help 只用户获取Shell内置命令的帮助,不常用
如:ls是外部命令。 help ls,会报错。
但绝大多数命令可用 –help获取帮助。 例子: ls –help(输出man的简化版)
18:whereis 只能搜索命令,不能索索普通文件
-b:只查找二进制命令
-m:只查找帮助文档(命令的帮助文档)
19:which 英语全文:shows the full path of shell commands。列出命令所在路径,如果该命令有别名,则同时显示出别名命令
如: which mv => alias mv = ‘mv -i’ /usr/bin/mv
which ll => alias ll = ‘ls -l –color=auto’ /usr/bin/ls
20: locate 英语全文: find files by name。按照文件名搜索文件
只能根据文件名搜索,但是因为locate并不是搜索硬盘空间,而是先建立locate数据库,然后在数据库中搜索,因此:搜索速度快,耗费的系统资源非常小。
-i:忽略大小写(ignore)
例子:locate mkdir 会搜索出包含mkdir字符串的文件名,当然也包括mkdir命令
ps:locate数据库并不会实时更新,而是等用户退出登录或者重启系统时才会更新(因此新创建的文件无法立刻locate查到)
locate数据库位置: ll /var/lib/mlocate/mlocate.db (二进制文件)
命令: updatedb : 可以即时更新一次locate数据库(这样可以locate到新文件。命令执行需要一定时间,要等待)
同时,部分文件类型或目录,并不会放到locate数据库中,如:
光盘,网盘,临时目录等(要么不在Linux系统中,是外来存储的网络存储的,要么是系统的缓存和临时文件,如/tmp下的文件,此时updatedb也没用)
21: find 英语全文:search for files in a directory hierarchy。在目录中查找文件。
不仅可按照文件名搜索,还可按照权限,大小,时间,iNode号等来搜索文件
(find是在硬盘中进行搜索的,如果指定的搜索范围过大,就会消耗较大的系统资源)
语法: find 搜索路径 [选] 搜索内容 (如果路径设定为 /, 那么执行起来就会很慢)
如果无选项,则将路径下的所有文件都输出。
-name:按照文件名搜索
-iname:按文件名,切不区分大小写
-inum:按照iNode号搜索
(如果是按照文件名。必须是完全匹配才会列出,如: find /root -name a123 此时只会列出名为a123的文件。如果是locate,会列出a123,还可能列出a12345,vca123等)
-size[+-] 大小:按文件大小搜索。 +-表示是比[大小]的数字还要大,还是小
例:find . -size +25k 当前目录下,大于25k的文件
(-size与后续的+或-,要有空格,而 +/-与大小之间无空格,k必须是小写(kb))
千字节(kb)必须用小写k,兆字节(MB)必须用大写M,GB用大写G。
如果不写单位,默认单位并不是字节b,而是512byte,即半个kb。
如果单位要指定为字节,要用小写c。双字节要用小写w
-atime [+-] 时间:根据Access Time。。。 -mtime:…… -ctime:……
例子:find . -mtime -5 : 5天内修改的文件。 5:前5~6,这一天内修改的 +5:6天前修改的
同时还有amin,mmin,cmin,单位是分钟(time单位是天)
按权限: -perm 数字, -perm -数字, -perm +数字
按所有者和所属组: -uid 用户id, -gid 用户组id, -user 用户名, -gid 组名, -nouser(没有所有者)
例子:find . -user root 所有者是root的文件
按文件类型:-type d 查目录 -type f 查普通文件 -type l 查软链接
逻辑运算符:-a 与 , -o 或 , -not 非
例子:find . -size +2k -a -type f (大于2kb且是普通文件)
find . -name cangls -o -name bols (文件名是cangls或bols)
find . -name a55 -o -size +3k(文件名为a55或者size大于3kb)
find . -not -name cangls(文件名不为cangls)
find 路径 [选项] 内容 -exec 命令2 {} ;
指将find获取的结果放入{}中,再由命令2执行。
例:find . -size +2k -exec ls -l {} ;
获取size大于2kb的文件,并进行ls -l命令
PS:命令2与’{‘必须有空格,’}’和’'之间也必须有空格。
而且此处不能-exec ll,推测不能用alias。
-ok选项:与-exec基本一致,不过操作前询问一次y/n
22: zip 英语全文:package and compress files.压缩文件或目录
语法: zip [选项] 压缩包名 源文件或目录
-r: 压缩目录
可以同时压缩多个文件,用空格分开即可。
如果已经有同名压缩包,会进行覆盖。如果资源名也是相同,会updating,否则是adding。(压缩包会放在当前路径下)
23:unzip 英语全文:list,test and extract compressed files in a ZIP archive.列举,测试和提取压缩文件中的文件。
-d: 指定解压位置
例子: unzip -d /root/mytmp3 mytest.zip
24: gzip 英语全文:compress or expand files.压缩或解压文件/目录
语法:gzip file1 压缩file1,生成file1.gz(源文件会消失)
-c: 将压缩数据输出到标准输出中,保留源文件(可用 > 将输出重定向到一个文件中,这样既可以压缩,又不让源文件消失)
例子:gzip -c a123 > a123.gz
-r:压缩目录(递归地将目录下的文件分别压缩成xxx.gz)
-d:解压(将压缩文件恢复原样)
-v:显示压缩文件信息(压缩比)
-数字:指定压缩等级,-1等级最低,压缩比最差,-9最高。默认为-6
PS:解压时,gzip -d abc <=> gzip -d abc.gz(即前者abc会自动寻找abc.gz文件)
文件太小时,压缩等级不同,压缩比也可能相同。
25:gunzip 解压。 gunzip <=> gzip -d
gunzip a123操作的同样是a123.gz,即 gunzip a123 <=> gunzip a123.gz
解压目录: gunzip -r(将目录下的压缩文件解压,但不会解压打包)
如果压缩文件是纯文本,用zcat可以在不解压的情况下查看文本内容
26: bzip2 .bz2格式文件的压缩命令(.bz2格式的算法理论上更好,及压缩比更好,但.gz更快)
-d:解压
-k:压缩时保留源文件
-v:显示压缩信息 -数组:压缩等级
(gzip不支持打包目录,-r也只是分别压缩目录下的每个文件,而bzip根本不支持压缩目录,也没有-r选项)
27: bunzip2 等同bzip2 -d 解压
-k:保留压缩文件
值得注意的是,一定要写明.bz2后缀,即 bunzip a ≠ bunzip a.bz2 , bzip -d同理。
如果是纯文本,用bzcat可以在不解压时查看文本内容。
28:tar 打包/解打包命令 语法: tar[选项][-f 压缩包名] 源文件或目录
-c:打包
-f:指定压缩包的文件名(写清后缀)
-v:显示打包过程
例子: tar -cvf test.tar /root/mytmp2
-x: 解压打包
-t:测试,即不解压,只是看包中有哪些文件
-C:指定解压位置。
解压与打包的区别: -xvf 与 -cvf 测试: -tvf
可以先tar,再gzip或bzip2,获得 .tar.gz 或者 .tar.bz2的格式
也可以一步到位: -z:压缩或者解压.tar.gz格式 -j:压缩或者解压.tar.bz2格式
例子: tar -zxvf a.tar.gz 解压
tar -jcvf b.tar.bz2 /tmp/ 压缩,压缩包的文件名为 b.tar.bz2
常用: -zcvf , -jcvf , -zxvf , -jxvf
29: sync 英语全文:flush file system buffers. 刷新文件系统缓冲区
作用:将内存中的数据强制向硬盘中保存,避免宕机导致数据丢失(该命令在常规关机时会自动执行) 直接执行,无须任何选项
30: shutdown 英语全文:bring the sytem down 关机和重启 执行权限:超级用户
格式: shutdown [选项] 时间 [警告信息]
-c:取消已经执行的shutdown命令 shutdown -c
-h: 关机 -r:重启
shutdown -h now #现在立刻关机
shutdown -h 05:30 (当天的5:30关机,如果时间已过,就是第二天的5:30)
shutdown -h 05:30 & (命令会一直占用前端)
其他关机重启命令: reboot重启, halt 或者 poweroff , init 0 关机 , init 6 重启 (还是建议用shutdown)
31:setup 系统配置工具,配置IP,网卡,防火墙等(Red Hat专有命令)
32:ifconfig 查看IP地址信息(也可配置网络接口) (windows是ipconfig)
inet addr:IP地址 netmask:子网掩码
broadcast:广播地址/MAC地址/局域网,以太网,物理地址
33: ping 向网络主机发送ICMP请求,测试网络中主机的通信情况 ping [选]IP地址
-b:后面加入广播地址,对整个网段进行探测
-c 次数:指定ping的次数(中间有无空格均可。如果不指定,会一直ping)
-s 字节:指定探测包的大小
34:netstat 网络状态查看命令,可以看到本机开放的端口,也可看有哪些客户端连接
35:write 英语全文:send a message to another user 向其他用户发送信息
36: mail 英语全文:send and receive Internet mail. 发送和接受电子邮件
ctrl + c 和 ctrl + z的区别:
c是强制中断程序的执行,此时进程就会终止。
而z是讲任务终止(暂停),但进程并没有结束,只是被挂起。用户可用fg/bg继续前台或后台的任务
其他常用命令:(选项参数略)
①top 查看系统的整体运行情况(相当于任务管理器)
*②df * 显示磁盘空间使用情况
*③du * 对文件和目录磁盘使用空间的情况
④date 当前日期和时间
例子:将当前时间写入文件: date > cangls 如果是 echo date > cangls ,写入cangls文件的会是字符串“date”
(> , < 用作输出重定向,echo为显示命令,显示后重定向,就是写操作)
⑤ps 列出当前系统的进程状态 ps -ef 第一个数字是 PID,进程ID。 第二个数字是PPID,父进程的ID
⑥kill 删除,终止程序。 (kill -数字)
kill -1: 终端断线
kill -2:中断(同ctrl + c)
kill -9: 强制终止
……
(只有9才可无条件终止进程,其他信号,进程有权利忽略。。)
⑦grep 文本搜索,用正则表达式搜索,匹配文本
-i:忽略大小写 -n:所在行数
管道符: | 将两个命令分隔开,前一个的stdout(输出)作为下一个的stdin(输入)
例子: ps -ef | grep ping 查找包含ping的进程
⑧awk sed grep 文本处理。
⑨free 显示系统内存使用情况,包括物理内存,交换区内存(SWAP),内核缓冲区内存。
⑩clear 清屏 vim:进行vim文本编辑器
11: rpm 安装RPM包。 rpm -ivh 包全名 -i:install -v:显示详细信息verbose -h:打印,显示安装进度hash
-e:卸载。 rpm -e 包名
12:启动服务等: service 服务名 start | stop | restart | status
systemctl start | stop | restart | status 服务名
13:yum命令 下载相应的rpm包并安装,解决了依赖关系
yum list: 列出可安装,已安装的包
yum search: 从yum镜像源服务器上查找与关键字相关的所有软件包
yum info: 查询执行软件包的详细信息(大小,版本,证书,描述等)
yum install:安装 -y:自动回答yes
(用yum卸载软件包时,会把依赖包也同时卸载,包括系统允许的必备文件,此时的结果就是,系统崩溃。所以一般不要用yum卸载软件包)
gcc编译器, make:完成对源码包的自动编译 make install:将编译文件进行安装