新手Linux命令-2
- df(disk free磁盘空闲空间):列出已挂载磁盘的使用情况。格式:df [选项] [文件或目录] (df命令读取的范围主要是在Super block内的信息(主要针对整个文件系统),显示结果的速度非常快速)。
选项 | 作用 |
-h | 人性化(GB、MB、KB等格式)显示信息 |
-i | 不用硬盘容量,而以inode的数量来显示 |
-a | 列出所有的文件系统,包括系统特有的/proc(一个虚拟文件系统,放置的数据在内存当中,本身不占用任何硬盘空间)等文件系统 |
-T | 连同该分区的文件系统名称(例如ext3)也列出 |
Filesystem:代表该文件系统是在哪个分区(因此列出了设备名称) | 1K-blocks:说明下面的数字单位是1KB。可利用-h或-m参数来改变显示单位 | Used:已使用的磁盘空间 | Available:可用的磁盘空间大小 | Use%:磁盘使用率。若超过90%,须注意一下 | Mounted on:磁盘挂载的目录所在(挂载点) |
df -hT:将系统内的文件系统及名称列出,容量结果以易读的格式显示。
查看/etc下可用的磁盘容量,并以易读的容量格式显示出来,且会自动分析目录或文件所在的分区。
- ifconfig(interface config网卡配置):获取网卡配置与网络状态等信息。格式:ifconfig [网络设备] [参数]。
- uname(unix name):查看系统内核与系统版本等信息。格式:uname [选项]。
一般会固定搭配上-a参数来完整查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息
- who(谁):查看当前登入主机的用户终端信息。
登陆的用户名 | 终端设备 | 登陆到系统的时间 |
root | :0 | 2017-08-24 17:52 (:0) |
root | pts/0 | 2017-08-24 17:52 (:0) |
who命令显示信息的解析: <https://zhidao.baidu.com/question/148128945.html>
<https://zhidao.baidu.com/question/339930341.html>
w:Show who is logged on and what they are doing.
<http://blog.csdn.net/u012110719/article/details/42298237>
whoami(我是谁):print effective(有效) userid
who am i
id(identity身份): print real and effective user and group IDs
- last(最近的):查看用户的最近登录记录(/var/log/wtmp)。
(本机的登录记录信息是以日志文件的形式保存在系统中的数据内容,骇客可轻易进行内容篡改,不能单凭以该命令输出的信息而判断系统有无被恶意入侵)
lastlog:显示系统中所有用户最近一次的登录信息(/var/log/lastlog)。
- history(历史):显示历史执行过(近1000条)的命令(它是一个函数 history(3),不是一条普通的命令)。格式:history [选项] [参数]。
history n:列出最近使用的n条历史命令
可以使用"!编码数字"的方式来重复执行某一次的命令
历史命令会被保存到用户家目录中的".bash_history"文件中(cat ~/.bash_history)。
history -c:清空该用户在本机中执行过的linux命令历史记录信息
- sosreport:用于收集系统配置并诊断信息后输出结论文档。
当Linux系统出现故障需要联系红帽厂商或其他技术支持时,大多数时候都要先使用这个SOS功能来简单收集计算机的运行状态和服务配置信息,以便让技术支持公司能够通过远程就解决了一些小问题,又或者让他们能对复杂问题能提前有些了解。
(资料压缩文件以及校验码)
- pwd(print working directory输出当前工作目录):显示当前所处的工作目录。格式:pwd [选项]。
- cd(change directory改变目录):切换工作路径。格式:cd [目录名称]。
仅输入cd:代表cd ~
cd -:返回到上一次所处的目录
cd ..:返回上一层目录(注意空格)
(根目录"/"的上层目录(..)与根目录本身(.)是同一个目录)
cd ~:切换到当前用户的家目录,亦或使用"cd ~username"则可以切换到其他用户的家目录
绝对路径:一定由根目录"/"写起,如/var/spool/mail(建议使用)。
相对路径:对于目前工作目录的路径。不是由根目录"/"写起,如由/var/spool/mail要到/var/spool/cron目录,可以写成cd ../cron。
- ls(list directory contents列出目录的内容):显示目录中的文件信息。格式:ls [选项] [文件]。
ls -a:查看全部文件(包括隐藏文件),Linux系统中以点(.)开头的文件均代表隐藏文件,一般大多会是系统服务文件。(蓝色字体显示的为目录(文件夹))
ls -l(ll):查看文件的属性、大小(长数据串)等详细信息
详解请见 <http://blog.csdn.net/sjzs5590/article/details/8254527>
<http://baijiahao.baidu.com/s?id=1582175688777520981&wfr=spider&for=pc>
<http://blog.csdn.net/xinlongabc/article/details/46801641>
ls -al:查看所有文件的详细信息
ls -li:查看文件的详细信息,并显示索引结点号inode(每个文件都会占用一个inode)
ls -ld:仅查看目录本身的属性信息(不列出目录内的文件数据)
ls -R:连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来
-F:根据文件、目录等信息给予附加数据结构
-h:将文件容量以人类较易读的方式(例如GB、KB等)列出来
--time={atime,ctime}:输出访问时间(atime)或改变权限属性时间(ctime)(ls -l命令默认显示文件的修改时间(mtime))
- cat(concatenate连续):查看纯文本文件(较短的、比较精简的文本内容,不可翻页,连续显示)。格式:cat [选项] [文件]。
cat -n:查看文本内容时顺便打印出行号(空白行也会有行号(-b参数针对空白行则不打印行号))
tac (反向列示):文件的最后一行到了屏幕的第一行了,也就是说文件的第一行就到了最后一行去了。
nl (添加行号打印):
选项:
-b : 指定行号指定的方式,主要有两种:
-b a : 表示不论是否为空,也同样列出行号(类似cat -n)
-b t : 如果有空行,空的那行不列出行号(默认值)
-n : 列出行号表示的方法,主要有三种:
-n ln : 行号在屏幕最左方显示;
-n rn : 行号在自己字段的最右方显示,且不加0;
-n rz : 行号在自己字段的最右方显示,且加0;
-w : 行号字段占用的位数。
- more:查看纯文本文件(较长的文本内容,可翻页)。格式:more [选项] 文件
(会提示已经阅读了百分之多少)。
回车键:下滚一行 | 空格键:下翻一页 | b:往回翻页(此回翻页操作只对文件有用,对管道无用) | /关键词:向下查询关键字 | :f(冒号+f):立刻显示出文件名以及目前显示的行数 | q:离开 |
less:more命令的加强版,可向前翻页,界面和操作与man命令类似(man命令调用less来显示说明文件的内容)
- head(头):查看纯文本文档的前n行(默认显示前10行)。格式:head [选项] [文件]。
选项 | 作用 |
-n | 后面接数字,代表显示文件前几行的内容 |
-c nK | 后面接容量(如2K),代表显示文件前nKB的内容 |
- tail(尾):查看纯文本文档的后n行(默认显示后10行)。格式:tail [选项] [文件] 。
选项 | 作用 |
-n | 后面接数字,代表显示文件后几行的内容 |
-c nK | 后面接容量(如2K),代表显示文件末尾nKB的内容 |
tali -f:持续刷新一个文件的内容(可用于实时看到最新日志文件)(ctrl+c离开)
- watch(观察):以周期性的方式执行给定的指令,指令输出以全屏方式显示。格式:watch [选项] [参数]。
选项 | 作用 |
-n | 指定指令执行的间隔时间(秒) |
-d | 高亮显示指令输出信息不同之处 |
-t | 不显示标题 |
参数:需要周期性执行的指令
- od(octal dump八进制转储):查看特殊格式的文件(非纯文本文件查看)。格式:od [选项] [文件]。
选项 | 作用 |
-t a | 默认字符 |
-t c | ASCII字符 |
-t o | 八进制 |
-t d | 十进制 |
-t x | 十六进制 |
-t f | 浮点数 |
- tr(translate转化):替换文本文件中的字符。格式:tr [原始字符] [目标字符]。
(先使用cat命令读取待处理的文本内容,然后通过管道符"|"把这些数据传递给tr命令做替换操作)小写字母全部转换为大写:
tr -d [目标字符]:删除信息当中的目标字符
- wc(word count字数统计):统计指定文本的行数、字数、字节数等文本内容。格式:wc [选项] 文本
选项 | 作用 |
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
(passwd是用于保存系统帐户信息的文件,可使用命令wc -l /etc/passwd统计当前系统中有多少个用户)
- sort(排序):将文件按照默认语言的顺序规则进行排序,并将排序结果标准输出。格式:sort [选项] 文件名或标准输入。(对于系统语言为英语而言,小写字母优先于大写字母显示,即认为小写字母'a'是大于大写字母'A的')
选项 | 作用 |
-f | 忽略大小写的差异 |
-b | 忽略每行最前面的空格符部分 |
-n | 依照"纯数字"的大小排序(默认是以文字类型来排序的) |
-r | 反向排序 |
-t | 设置分隔符(默认以tab键分隔) |
-k | 以分隔的第几个区间来进行排序 |
-u | 相同的数据中,仅出现一行代表(相当于uniq命令) |
cat /etc/passwd | sort -t ':' -k 3 : 以:作为分隔符,对第三列进行排序
- uniq(unique独一的):忽略文件中的重复行,一般与sort命令配合管道符结合使用。格式:uniq [选项] 文件名或标准输入。
参数 | 作用 |
-i | 忽略大小写字符 |
-c | 进行计数处理 |
last | cut -d ' ' -f 1 | sort | uniq : 使用last命令将用户的登入记录列出;再使用cut命令以空格为间隔符提取第一列内容;接着使用sort命令根据第一个数据进行排序;最后通过uniq命令仅列出一行代表,并进行计数处理。
- stat(status状态):查看文件的具体存储信息和时间等信息。格式:stat 文件名称。
- netstat(network status网络状态):查看网络系统的状态信息。格式:netstat [选项]。
选项 | 作用 |
-a | 显示所有连接中的套接字(netstat命令默认不显示LISTENI监听状态相关) |
-t | 仅显示tcp传输协议的连接状况 |
-u | 仅显示udp传输协议的连接状况 |
-l | 仅显示处于监听状态的服务器套接字 |
-n | 使用ip地址(数字numeric)表示,不使用域名显示 |
- ping:测试主机之间网络的连通性。格式:ping [选项] 目的主机。
选项 | 作用 |
-c | 规定完成要求回应的次数(ping命令默认一直持续) |
-i | 指定收发信息的间隔时间 |
-W(大写) | 定义等待超时时间 |
- cut(切割):按"列"来提取文本字符(以"行"为单位)。格式:cut [选项] 文本。
-d:设置间隔符号(要与-f参数一起使用) | -f:设置需要看的列数(第几段) |
cut -d : -f 1 /etc/passwd : 提取passwd文件中的用户名信息)
(cut -d : -f 1,2 /etc/passwd:提取第1,2列)
统计当前系统中有多少个用户(使用通配符"|"和wc -l命令查看行数)
- diff(difference不同):比较多个文本文件的差异。格式:diff [选项] 文件
--brief:仅确认两个文件是否不同 | -c:详细比较多个文件的差异之处 |
- file(文件):查看文件的类型。格式:file 文件名。
- touch(触摸):创建空白文件与设置文件的各种时间。格式:touch [选项] [文件]
选项 | 作用 |
-a | 仅修改"访问时间"(atime) |
-m | 仅修改"更改时间"(mtime) |
-d | 同时修改atime与mtime |
Linux中的文件有三种时间(Linux一切皆文件(目录文件、设备文件、链接文件、普通/文本文件等),文件之间只区分类型,而不区分后缀)(Linux中没有文件创建时间的概念
来自 <https://www.zhihu.com/question/21071680> ):
修改时间(mtime):内容修改时间(不包括权限的)(modify time) | 更改时间(ctime):更改权限与属性的时间(change time) | 读取时间(atime):读取文件内容的时间(access time) |
(ls -l命令默认显示文件的修改时间(mtime))
- mkdir(make directory创建目录):创建空白的文件夹。格式:mkdir [选项] 目录
mkdir -p [目录]:递归创建出具有嵌套叠层关系的文件目录
rmdir:删除空目录,rmdir -p [目录]:连同上层的空目录也一起删除
- cp(copy复制):复制文件或目录。格式:cp [选项] 源文件 目标文件
复制命令的三种情况:
- 目标对象是一个目录(目录名尾部须加上正斜线/),会将源文件复制到该目录中
- 目标对象也是一个文件,会询问是否覆盖
- 目标对象不存在,将会复制源文件并修改为目标文件的名称(可用作重命名)
选项 | 作用 |
-p | 保留原始文件的属性,而非使用默认属性(备份常用) |
-d | 若对象为"链接文件",则保留该"链接文件"的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖(默认执行-i参数) |
-a | 相当于-pdr(p,d,r为上述的参数) |
-f | 强制(force)复制,若目标文件已存在直接覆盖 |
(不同身份者执行cp命令可能会有不同的结果产生,这里以root身份为例)
(复制行为cp会复制执行者(本例中:root)的属性与权限。默认条件中,cp的源文件与目的文件的权限是不同的,目的文件的所有者通常是命令操作者本身)
- mv(move移动):移动文件(剪切)或改名。格式:mv [选项] 源文件 [目标路径|目标文件名]。
选项 | 作用 |
-i | 若目标文件存在则询问是否覆盖(默认执行-i参数) |
-f | 强制(force)移动,若目标文件已存在直接覆盖 |
-u | 若目标文件已经存在,且source比较新,才会更新(update) |
- basename(文件基本名):仅显示目录的基本名称;
dirname(目录名):仅显示与目录相关的内容(读取指定路径最后一个/及其后面的字符,删除其他部分)。
这两个命令多用在shell脚本中
- rename(重命名):用字符串替换的方式批量改变文件名。格式:rename [参数]
参数: | 原字符串:将文件名需要替换的字符串 | 目标字符串:将文件名中含有的原字符替换成目标字符串 | 文件:指定要改变文件名的文件列表 |
- rm(remove删除):删除文件或目录。格式:rm [选项] 文件
rm -f:强制(force)删除,忽略不存在的文件,不会出现警告信息(慎用)
rm -r:递归(recursive)删除,删除一个目录文件夹
rm -i:互动模式,删除前会询问用户是否操作(默认加入-i参数)
(一旦删除一个文件,就无法再恢复(恢复须借助额外工具))
- dd(disk dump磁盘转储):用于指定大小的拷贝文件或指定转换文件。格式:dd [参数]
参数 | 作用 |
if | 输入的文件名称(inputfile,也可以是设备) |
of | 输出的文件名称(outputfile,也可以是设备) |
bs | 设置每个"块"的大小(block size,未指定则默认512bytes(一个扇区的大小)) |
count | 设置要拷贝"块"的个数(多少个bs的意思) |
(/dev/zero:一个永远输出0(提供无限的空字符)的设备文件,不占用系统存储空间,使用它作输入可以得到全为空的文件(10_file文件的内容全为0),因此可用来创建新文件和以覆盖的方式清除旧文件)
dd命令作用:①备份分区表(第一个扇区内含有MBR(主引导分区快)与分区表),②简单测试硬盘读写速度
使用dd命令复制并压缩光盘设备变成一个可立即使用的iso镜像:
- tar(tape archive将文件备份到磁带上):对文件打包压缩或解压。格式:tar [选项] [文件]
-c(create a new archive创建一个新的存档):创建打包文件
(打包:tarfile文件,把多个文件打包成一个文件,体积不变,.tar后缀)
(压缩:tarball文件,运用算法进行压缩使文件体积减小,.tar.gz或.tar.bz2后缀)
-x(extract files from an archive提取文件从文档中):解打包或解压缩文件
-z:使用gzip格式来压缩/解压文件(文件名:*.tar.gz)(gzip格式应用广泛)
-j:使用bzip2格式来压缩/解压文件(文件名:*.tar.bz2)
-v:显示压缩或解压的过程给用户
-f:代表要压缩或解压的软件包名称(后面要紧接被处理的文件名,必须放到参数的最后一位)
-C(Change to directory改变目录):指定在特定目录解压缩(注意为大写字母"C",且仅在解压时使用)
-p:保留备份数据的原本权限与属性(常用于备份(打包-c)重要的配置文件)
-t(list the contents of an archive列出存档):查看打包文件的内容含有哪些文件名(重点在查看文件名)
(-c、-x、-t 这三个参数不可同时放在一起使用)
常用: | 打包压缩:tar -czvf 压缩包名称.tar.gz 要打包的目录 | 解压:tar -xzvf 压缩包名称 .tar.gz -C 解压到目录 | 查阅压缩文件中的数据内容:tar -tzvf 压缩包名称.tar.gz |
tar -czvf 压缩包名称.tar.gz 要打包的目录
(可使用-P(大写字母)参数保留绝对路径,即允许备份数据中含有根目录存在之意(不推荐))
tar -tzvf 压缩包名称.tar.gz
tar -xzvf 压缩包名称 .tar.gz -C 解压到目录
- grep(globally search a regular expression and print以正则表达式法全域查找以及打印):对文本内容进行关键词的搜索匹配(分析一行信息,若当中有所需要的信息,就将该行拿出来)。格式:grep [选项] [关键词] [文件],可在多文件中查找。
选项 -a | 作用 将可执行文件(binary)以文本文件(text)来搜索 |
-c | 仅显示找到的次数 |
-i | 忽略大小写 |
-n | 顺便输出行号 |
-v | 反向选择,即显示出没有"关键词"的行 |
-e | 指定字符串作为关键词,可指定多个匹配模式 |
搜索在/etc/passwd文件中"/sbin/nologin"出现的行,找出系统中不允许登录的用户
在users.csv文件和user.txt文件中共同搜索"tony"、"yan"出现的行
找出文件"/usr/share/gedit/plugins/snippets/docbook.xml"中所有包含entry的行并输出到/root/lines中(输出重定向):
grep entry /usr/share/gedit/plugins/snippets/docbook.xml >> /root/lines
- find(查找):在Linux系统中按照指定条件查找文件。格式:find [查找路径] 寻找条件 操作。
选项 | 作用 |
-name | 匹配名称 |
-perm | 匹配权限(mode为完全匹配,-mode为包含即可) |
-user | 匹配所有者 |
-group | 匹配所有组 |
-inum | 匹配inode编号 |
-mtime -n +n | 匹配修改内容的时间(-n指n天以内,+n指n天以前) |
-atime -n +n | 匹配访问文件的时间-n指n天以内,+n指n天以前 |
-ctime -n +n | 匹配修改权限的时间-n指n天以内,+n指n天以前 |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所有组的文件 |
-newer f1 !f2 | 匹配比文件f1新却比f2旧的文件 |
--type b/d/c/p/l/f | 匹配文件类型(块设备、目录、字符设备、管道、链接文件、文件文件) |
-size | 匹配文件的大小(+50k查找超过50k的文件,而-50k则代表查找小于50k的文件) |
-prune | 忽略某个目录 |
-exec {} \; | 后面可接对搜索到结果进一步处理的命令 |
查找在/etc目录中所有以host开头的文件(-print将文件或目录名称输出到标准输出(find默认使用-print参数))
查找/home下面属于ysn用户的文件(可利用此命令将属于某个用户的所有文件都找出来)
查找系统(根目录)中不属于任何人的文件
查找当前目录下inode编号为102766589的文件
查找系统所有文件中含有SGID或SUID或SBIT的属性
-perm mode:查找文件权限刚好匹配
-perm -mode:查找文件权限必须要全部包括mode的权限
-perm +mode:查找文件权限包含任一mode的权限
(权限详解: <http://blog.csdn.net/zengqiang1/article/details/53020853> )
找出用户ysn的文件并复制到/root/findresults目录
find / -user ysn -exec cp -arf {} /root/findresults/ \;
{}:代表"由find找到的内容",find的结果会被放置到{}位置中 | -exec一直到"\;"是关键字,代表find额外命令的开始(-exec)到结束(\;),在这中间的就是find命令内的额外命令。在本例中就是"cp -arf {}" | 因为;分号在bash环境下是有特殊意义的,因此利用反斜杠来转义 |
linux查找目录下所有文件中是否含有某个字符: <http://blog.csdn.net/duguduchong/article/details/7716908>
- locate(定位):find -name的另一种写法,但查找速度比后者快得多,因为locate寻找的数据是由已创建的数据库/var/lib/mlocate/里面的数据所查找到的。这个数据库中包含本地所有文件信息,默认是每天执行一次更新。所以新建文件后再立即查找该文件,locate命令会"提示找不到"。
updatedb(更新资料库):手动更新数据库。updatedb命令会去读取/ect/updatedb.conf这个配置文件的设置,然后再去硬盘里进行查找所有文件名的操作,最后更新整个/var/lib/mlocate数据库文件
- whereis(在哪):寻找特定文件。(在指定数据库中查找,类同locate命令)
选项 | 作用 |
-b | 只查找二进制格式的文件(执行文件、命令) |
-m | 只查找在说明文件manual路径下的文件 |