Linux命令大全

TOC

Linux命令大全

Linux有的命令和Windows相似,但是很多命令都不一样,Linux有内部命令和外部命令的区分
你可以理解为自带和后期安装才有的命令

1、查看、查找类命令

pwd命令

查看当前所在的工作目录的位置
语法:pwd
-P:查看软链接的实际路径

ls命令

查看目录及文件
语法:ls【选项】(后面可以跟相对或绝对路径目录)
-l:以长格式现实文件和目录
-a:显示所有的子目录和文件信息包括隐藏目录
-A:相似于-a但是有两个特殊隐藏目录不会显示
-d:显示目录的属性,不显示内容
-h:显示出目录或文件的大小,默认为B,-h为KB、MB等单位
-t:以文件修改时间排序
-S:以文件大小排序
-R:以递归的方式显示指定目录或文件大小

cat命令

文本输出命令,通常是用于观看某个文件的内容的
语法:cat【选项】【文件名】
(如果不配合more和less超出屏幕上限将不显示)
-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已
-b :显示行号,仅针对非空白行做行号显示,空白行不标行号!
-n :显示出行号,连同空白行也会有行号,与 -b 的选项不同
-E :将结尾的断行字节 $ 显示出来
-T :将[tab]按键以^I显示出来
-v :列出一些看不出来的特殊字符

more和less命令

通过采用全屏的方式分页显示文件,less为more的升级版有查找功能(配合cat命令使用)
语法:cat【文件名】或者 more | less【文件名】
more的选项和参数:
空白键 (space):代表向下翻一页
Enter:代表向下翻一行
/字串:代表在这个显示的内容当中,向下搜寻『字串』这个关键字
:f:立刻显示出档名以及目前显示的行数
q:代表立刻离开 more ,不再显示该文件内容
b或[ctrl]-b:代表往回翻页,不过这动作只对文件有用,对管线无用
less的选项和参数:
空白键(space):向下翻动一页
[pagedown]:向下翻动一页
[pageup] :向上翻动一页
/字串:向下搜寻『字串』的功能
?字串:向上搜寻『字串』的功能
n:重复前一个搜寻 (与 / 或 ? 有关!)
N:反向的重复前一个搜寻 (与 / 或 ? 有关!)
q:离开 less 这个程序

head命令

只查看开头的一部分(默认查看前10行)
语法:head【选项】【文件名】
-n:进行多行查看,n为显示的行数

tail命令

只查看开头一部分(默认查看后10行)
语法:tail【选项】【文件名】
-n:进行多行查看,n为显示的行数
-f:动态查看文件,实时监控文件命令(一般拿来看日志)

which命令

查找当前所在目录下文件存放的目录
语法:which【文件名】
(通常用来查询命令的存放目录)

whereis命令

用于程序名的搜索,查找安装目录
语法:whereis【选项】【命令名】
-b:定位可执行文件。
-m:定位帮助文件。
-s:定位源代码文件。
-u:搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
-B:指定搜索可执行文件的路径。
-M:指定搜索帮助文件的路径。
-S:指定搜索源代码文件的路径。

find命令

查找文件或目录
语法:find【查找目录】【选项】【查找条件】【处理命令】
-o:查找条件两个属性,满足一个就可以
-a:查找条件属性什么和什么,必须满足两个
查找条件:
-name:根据名字(-name name.txt)
-type:根据文件类型(-type f/d/b/c/l/p 对应文件、目录、块设备文件、字符设备文件、符号链接文件、管道文件)
-user和-group:根据用户和组
-amin:查找系统中最后N分钟访问的文件
-atime :查找系统中最后n*24小时访问的文件
-cmin:查找系统中最后N分钟被改变文件状态的文件
-ctime:查找系统中最后n*24小时被改变文件状态的文件
-mmin:查找系统中最后N分钟被改变文件数据的文件
-mtime:查找系统中最后n*24小时被改变文件数据的文件
(-mtime +30/-30 对应最近30天以外、以内)
-size:根据文件大小(-size 20k/+20k/-20k 对应等于、大于、小于20k)

2、统计、检索类命令

tree命令

以树状图列出目录的内容
语法:tree【选项】【目录对象】
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-L level 限制目录显示层级。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P<范本样式> 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。

du命令

统计目录及文件空间占用大小
语法:du【选项】【目录对象】
-a:对所有文件与目录进行统计
-h:以可读的方式进行显示大小(KB/MB/GB)
-s:仅显示总大小
-d, --max-depth=N:指定显示层级的数量,默认为1
-k:以KB为计数单位
-m:以MB为计数单位
-b:以字节为计数单位
-c:显示所有文件和目录的大小总和
-l:重复计算硬链接文件大小
-D:显示符号链接指向的源文件大小
-L:显示符号链接所指向文件的大小
-S:显示目录大小时,不包含子目录大小
–max-depth n: 显示的最大层数
–time[ctime/atime/mtime]:显示[创建/访问/更新]时间

df命令

显示磁盘空间使用情况。获取硬盘被占用了多少空间,目前还剩下多少空间等信息
语法:df【选项】
-a:全部文件系统列表
-h:以方便阅读的方式显示信息
-T:列出文件系统类型
-i:显示inode信息
-k:区块为1024字节
-l:只显示本地磁盘

wc命令

用于统计文件内容的行数、单词数量、字节数
语法:wc【选项】【文件目录对象】
-l:只查看行数 -w:只查看单词数 -c:只查看字节数 -m:统计字符数

3、文件目录管理类命令

cd命令

切换到目录位置
语法:cd【绝对路径/相对路径目的目录】
绝对路径:从/根目录出发文件所在根目录下所在的位置
相对路径:相对当前所在的文件的位置
cd - : 返回上次目录所在位置
cd ~ :返回home目录
cd :默认返回到/root目录
cd . :当前目录
cd … :返回上级目录

touch命令

创建文件
语法:touch【文件名】
touch abc(相对路径) touch /home/abc(绝对路径)
-a:只修改文件的访问时间(atime),不改变修改时间。
-m:只修改文件的修改时间(mtime),不影响访问时间。
-c或–no-create:如果文件不存在,不会新建文件,只在文件存在时更新时间戳。
-t:使用指定格式的时间字符串设置文件时间,格式较严格。
-d:用字符串形式指定时间,支持自然语言。
-r:将目标文件的时间戳修改为和其他参考文件相同。

mkdir命令

创建创建目录
语法:mkdir【选项】【目的目录】
-p:递归的方式创建
-m:对新建目录设置存取权限,也可以用chmod命令设置
mkdir –p /home/a/b/c/d/e(依次按目录创建目录,如果目录下没有就创建
没有-p就是只创建最后d目录里的e目录)

cp命令

复制文件或者目录
语法:cp【选项】【源目录文件名】【目的目录文件】
-a:归档模式,等同于-dR --preserve=all,会尽量保留源文件的所有属性(权限、时间、符号链接等),常用于完整拷贝目录。
-f:强制覆盖同名文件或目录
-i:覆盖目标同文件或目录是提醒用户确认
-p:复制时保持源文件的权限、属主和时间等属性不变
-r:递归复制所有文件和目录
-v:显示正在复制的过程(调试或确认时很有用)
-u:只在源文件比目标文件新,或目标文件不存在时才复制
-d:保留符号链接本身,而不是复制它指向的内容(默认会复制实际文件)
-l:进行硬式链接(hard link)的链接档创建,而非复制文件本身
-s:创建符号链接而不是复制文件。

rmdir命令

删除空目录
语法:rmdir【选项】【目的目录】
-p :从该目录起,一次删除多级空目录

rm命令

删除文件或者目录
语法:rm【选项】【目录文件对象】
-f:强制删除文件或目录
-i:删除文件或目录是提醒用户确认
-r:递归删除整个目录树

mv命令

移动文件或目录
语法:mv【源目录文件】【目的目录文件】
-i:如果后面的文件存在,询问是否覆盖

split命令

用于切割拆分文件
语法:split【选项】【文件对象】
-l, --lines=数:指定文件以多少行分为一个文件
-a, --suffix-length=N:指定后缀长度为N (默认为2)
-b, --bytes=size:指定文件以多少字节分为一个文件
-C, --line-bytes=size:指定文件里最大行字节大小
-d, --numeric-suffixes:使用数字后缀代替字母后缀
–verbose:在每个输出文件打开前输出文件特征
SIZE 可以是一个可选的整数,后面跟着以下单位中的一个:KB 1000,K 1024,MB 1000*1000,M 1024*1024,还有 G、T、P、E、Z、Y
还原合并文件:
使用cat命令进行合并还原(如下所示)

[root@test ~]# ll
total 4.9M
drwxr-xr-x  2 root root 4.0K Apr  7 11:23 ./
drwx------ 23 root root 4.0K Apr  7 11:23 ../
-rw-r--r--  1 root root 4.9M Apr  7 11:21 split-test.tar.gz
[root@test ~]# split -b 2M split-test.tar.gz
[root@test ~]# ll -h
drwxr-xr-x  2 root root 4.0K Apr  7 11:24 ./
drwx------ 23 root root 4.0K Apr  7 11:23 ../
-rw-r--r--  1 root root 4.9M Apr  7 11:21 split-test.tar.gz
-rw-r--r--  1 root root 2.0M Apr  7 11:24 xaa
-rw-r--r--  1 root root 2.0M Apr  7 11:24 xab
-rw-r--r--  1 root root 844K Apr  7 11:24 xac
[root@test ~]# cat xa* > split-test-bak.tar.gz
[root@test ~]# ll -h
drwxr-xr-x  2 root root 4.0K Apr  7 11:25 ./
drwx------ 23 root root 4.0K Apr  7 11:23 ../
-rw-r--r--  1 root root 4.9M Apr  7 11:25 split-test-bak.tar.gz
-rw-r--r--  1 root root 4.9M Apr  7 11:21 split-test.tar.gz
-rw-r--r--  1 root root 2.0M Apr  7 11:24 xaa
-rw-r--r--  1 root root 2.0M Apr  7 11:24 xab
-rw-r--r--  1 root root 844K Apr  7 11:24 xac

tee命令

用于读取标准输入的数据,并将其内容输出成文件。
语法:tee【选项】【文件对象】
-a或–append:附加到既有文件的后面,而非覆盖它。
-i或–ignore-interrupts:忽略中断信号。
【示例】输入的数据同时保存到文件test.txt中

ls -l | tee test.txt

tar命令

制作/释放归档文件
语法:tar【选项】【归档文件名】【源文件目录】tar【选项】【释放文件名】【目的文件目录】
tar –zcvf:应用调用GZIP压缩工具创建一个归档文件并显示详细信息
tar –zxvf:应用调用GZIP压缩工具释放一个归档文件并显示详细信息
tar –jcvf:应用调用BZIP2压缩工具创建一个归档文件并显示详细信息
tar –jxvf:应用调用BZIP2释放工具释放一个归档文件并显示详细信息
(需要调用前面的gzip或bzip命令)
-c:创建.tar格式的文件 -C:解压时指定释放的目标文件夹
-f:使用归档文件 -j:调用bzip2程序进行压缩或解压
-p:打包时保留文件目录的权限 -P:打包时保留文件目录的绝对路径
-t:列表查看包内的文件 -v:输出详细信息
-x:解开.jar格式的包文件 -z:调用gzip程序进行压缩或解压

ln命令

创建快捷方式
语法:ln【选项】【目的目录】
注意:没有选项则为硬链接
-s:软链接:可以跨分区打开,删除原文件不能使用
硬链接:不能跨分区,必须和原文件在一个分区,删除原文件还可以使用
(默认创建的是硬链接)

4、其他命令

date命令

用于显示设置系统时间
语法:date【选项】【+时间格式】
-f:可将-d参数指定的运算规则写入文件中,通过-f参数指定文件路径,date命令逐行读取该文件,并按照此文件指定的运算规则输出运算后的时间
-I:按照iso-8601的标准输出时间
-r:显示指定文件最后被修改的时间
-R:根据 RFC-822 指定格式输出日期
-s:根据-s指定的内容设定系统的时间,执行此命令需要提权
-u:显示或设置全球时间(格林威治时间)
-d:指定时间运算规则,date会将当前时间做指定的运算,然后输出运算后的时间

#今年的 11 月 22 日是星期三
date -d "nov 22"
#2周后的日期
date -d '2 weeks'
#下周一的日期
date -d 'next monday'
#明天的日期
date -d next-day +%Y%m%d
date -d tomorrow +%Y%m%d
#昨天的日期
date -d last-day +%Y%m%d
date -d yesterday +%Y%m%d
#上个月是几月
date -d last-month +%Y%m
#下个月是几月
date -d next-month +%Y%m

时间格式:
%H:小时(以00-23来表示)
%I:小时(以01-12来表示)
%K:小时(以0-23来表示)
%l:小时(以0-12来表示)
%M:分钟(以00-59来表示)
%P:AM或PM
%r:时间(含时分秒,小时以12小时AM/PM来表示)
%s:总秒数。起算时间为1970-01-01 00:00:00 UTC
%S:秒(以本地的惯用法来表示)
%T:时间(含时分秒,小时以24小时制来表示)
%X:时间(以本地的惯用法来表示)
%Z:市区
%a:星期的缩写
%A:星期的完整名称
%b:月份英文名的缩写
%B:月份的完整英文名称
%c:日期与时间。只输入date指令也会显示同样的结果
%d:日期(以01-31来表示)
%D:日期(含年月日)
%j:该年中的第几天
%m:月份(以01-12来表示)
%U:该年中的周数
%w:该周的天数,0代表周日,1代表周一,异词类推
%x:日期(以本地的惯用法来表示)
%y:年份(以00-99来表示)
%Y:年份(以四位数来表示)
%n:在显示时,插入新的一行
%t:在显示时,插入tab
MM:月份(必要) 
DD:日期(必要) 
hh:小时(必要) 
mm:分钟(必要)
ss:秒(选择性)

特殊命令和符号

管道符号:|
(常用在命令之间,把前面命令原本要输出到屏幕的数据当作是后一个命令的标准输入)
【示例】查看当前目录过滤名字为test的文件

ls |grep test

xargs(|管道符号的完善品)
将管道传输过来的stdin进行处理然后传递到命令的参数位上
为什么?因为管道实现的是将前面的stdout作为后面的stdin,但是有些命令不接受管道的传递方式,最常见的就是ls命令。有些时候命令希望管道传递的是参数,但是直接用管道有时无法传递到命令的参数位,这时候需要xargs
【示例】找到data目录下名字为test的文件并删除

find data -name test -type f |xargs rm