Linux命令规范


命令  [选项]    [参数]

选项:(可以有0个或多个)
短选项:-
多个选项可以组合: -a -b = -ab
长选项:--
长选项通常不能组合

参数:命令的作用对象(可以有0个或多个)

Linux命令类型


Linux命令 类型主分两种 :

  • 内部命令(shell内置)
  • 解释:内部命令就是系统自带的命令
  • 外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件
  • 解释:外部命令就是系统安装了其他的软件或者功能中自带的命令

type  //该命令可以查看相应linux相应命令类型

实例:
内部:
[root@550C ~]# type if
if is a shell keyword
外部:
[root@550C ~]# type systemctl
systemctl is /usr/bin/systemctl

linux命令基础


Linux命令-主机管理


主机名称管理:hostname

 hostname        //查看或临时修改主机名,重开终端有效,重启失效
hostnamectl //查看或永久修改主机名,重开终端生效,重启依然有效
ps:修改名称后想要立刻生效使用 bash 命令进行刷新

主机关机命令:poweroff

poweroff  //立刻关机
reboot //重新启动

Linux命令-目录管理

查看目录文件命令:ls

//目录管理命令-查看目录下的文件:ls
//列出当前目录下的文件
实例:
[root@550C ~]# ls
anaconda-ks.cfg

//列出当前目录内容 使用完整格式
实例:
[root@550C ~]# ls -l
total 4
-rw-------. 1 root root 1479 Feb 5 18:13 anaconda-ks.cfg
文件类型
- //普通文件(f)
d //目录文件
b //块设备文件(block)
c //字符设备文件(character)
l //符号链接文件(symbolic link file)
p //命令管道(pipe)
s //套接字文件(socket)
文件权限 //9位,每3位一组,每一组:rwx(读,写,执行)
文件硬链接的次数
文件的属主(owner)
文件的属组(group)
文件大小(size),单位是字节
时间戳(timestamp),最近一次被修改的时间
访问 //access
修改 //modify,文件内容发生改变
改变 //change,metadata(元数据)

//显示当前目录下的隐藏文件
实例:
[root@550C ~]# ls -a
. .bash_history .bash_profile .config .mysql_history anaconda-ks.cfg
.. .bash_logout .bashrc .cshrc .tcshrc
//.开头的文件是目录中隐藏的文件
//. 表示当前目录
//.. 表示父目录 也就是当前目录的上级目录

//ls命令其他的用法
-d //显示目录自身属性
-i //显示文件的inode(index node)
-r //逆序显示
-R //递归(recursive)显示

切换当前目录命令:cd

//目录管理命令-切换目录命令:cd
//第一种用法
//切换当前目录: cd /tmp/
[root@550C ~]# cd /tmp/
[root@550C tmp]# pwd
/tmp

//第二种用法
//切换多级目录:cd /etc/yum.repos.d/
[root@550C tmp]# cd /etc/yum.repos.d/
[root@550C yum.repos.d]# pwd
/etc/yum.repos.d

显示当前所在路径:pwd

//目录管理命令-显示当前文件路径:pwd
//显示当前路径:pwd
实例:
[root@550C tmp]# pwd
/tmp

创建目录命令:mkdir

//目录管理命令-创建目录:mkdir
//创建目录:mkdir directoryname
实例:
[root@550C ~]# mkdir test

//mkdir命令的用法:
// 当需要创建多级目录时刻 使用 mkdir -p directoryname
实例:
[root@550C ~]# mkdir -p linux/type/ls/cd

// 当需要显示创建目录的过程时刻 使用 mkdir -v directoryname
实例:
[root@550C ~]# mkdir -v test
mkdir: created directory 'test'

删除目录命令:rmdir

//目录管理命令-删除目录:rmdir
//删除目录:rdir directoryname
//注意:rmdir 只能删除空的目录 也就是目录中没有文件的目录
实例:
[root@550C ~]# rmdir test/

查看目录树:tree

//目录管理命令-查看目录树:tree
//解释:就是查看目录文件的上下级关心
实例:
[root@550C ~]# tree linux/
linux/
`-- type
`-- ls
`-- cd

3 directories, 0 files

Linux命令-文件管理


创建文件命令: touch

//文件管理命令-创建文件:touch
实例:touch filename
[root@550C ~]# touch test

显示文件或文件系统的状态:stat

//文件管理命令-查看文件状态及信息:
实例:
[root@550C ~]# stat test
File: test
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 100667326 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2023-03-04 15:14:20.774164041 +0800
Modify: 2023-03-04 15:14:20.774164041 +0800
Change: 2023-03-04 15:14:20.774164041 +0800
Birth: -

删除文件:rm

//文件管理命令-删除文件:rm
//rm -r 递归删除,删除目录的情况下使用这个
//rm -f 强制删除 不去询问是否删除文件
实例:
//删除目录 不使用-f选项
[root@550C ~]# rm -r linux/
rm: descend into directory 'linux/'? //这里就会去提示是否要删除linux目录 y或者n
//删除目录 文件使用-f选项
[root@550C ~]# rm -f test

复制文件:cp

//文件管理命令-复制文件:cp
//cd命令可以进行一个文件或者多个文件的复制 并可以选择将文件复制到的位置
//-a 递归复制 常用于备份的时候 这个情况就是复制目录
//-r 递归拷贝 拷贝目录的时候 就需要去使用到
//-p 拷贝文件的时候 保留他的原权限
实例:
//将linux目录复制到/tmp目录下
[root@550C ~]# cp -a linux/ /tmp/
//将linux目录拷贝到/tmp目录下
[root@550C ~]# cp -r linux/ /tmp/
//将test文件保留原权限复制到/tmp目录下
[root@550C ~]# cp -r /tmp/

移动文件:mv

//文件管理命令-移动文件:mv
//mv命令可以将目录下的文件移动到指定的目录下
实例:
//将test文件移动到linux目录下
[root@550C ~]# mv test linux/
[root@550C ~]# ls linux/
test type

复制文件并重新定义属性:install

//文件管理命令-复制文件并设置文件属性:install
// -m 设置权限
// -o 定义文件所有者
// -g 设置文件的组

Linux命令-压缩,解压


常见文件的压缩格式及压缩雨与解压的方式

//压缩、解压缩命令
//压缩格式
gz,bz2,xz,zip,Z

gzip //压缩后的文件以.gz结尾
gzip /path/to/somefile //压缩完成后会删除原文件
-d //解压缩,解压完成后会删除原文件
-c //将结果输出至标准输出
-# //#用1-9代替,指定压缩比,默认为6
gunzip //解压
gunzip /path/to/some_compress_file.gz //解压完成后会删除原文件
zcat /path/to/somefile.gz //不解压的情况下查看文本文件的内容

bzip2 //压缩后的文件以.bz2结尾
//bzip2是一款比gzip有着更大压缩比的压缩工具,使用格式近似
bzip2 /path/to/somefile //压缩完成后会删除原文件
-d //解压缩,解压完成后会删除原文件
-# //#用1-9代替,指定压缩比,默认为6
-k //keep,压缩时保留原文件
bunzip2 //解压
bunzip2 /path/to/some_compress_file.bz2 //解压完成后会删除原文件
bzcat /path/to/somefile.bz2 //不解压的情况下查看文本文件的内容

xz //压缩后的文件以.xz结尾
//比bzip2有着更大压缩比的压缩工具,使用格式近似
xz /path/to/somefile //压缩完成后会删除原文件
-d //解压缩,解压完成后会删除原文件
-# //#用1-9代替,指定压缩比,默认为6
-k //keep,压缩时保留原文件
unxz //解压
unxz /path/to/some_compress_file.xz //解压完成后会删除原文件
xzcat /path/to/somefile.xz //不解压的情况下查看文本文件的内容

zip //既归档又压缩的工具。zip可以压缩目录,\
//gz、bz2、xz都只能压缩文件,zip压缩后不会删除原文件
zip filename.zip file1 file2 ...
zip filename.zip DIR/*
unzip
unzip filename.zip

归档命令-归档并不是意味压缩

archive     //归档,归档本身并不意味着压缩
tar //归档工具,只归档不压缩
-c //创建归档文件
-f file.tar //操作的归档文件
-x //还原归档
-v //显示归档过程
-p //归档时保留权限信息。只有管理员才有权限用此选项
-C //将展开的归档文件保存至指定目录下
--delete //从归档文件中删除文件
--xattrs //在归档时保留文件的扩展属性信息
-tf /path/to/file.tar //不展开归档,直接查看归档了哪些文件
-zcf //归档并调用gzip压缩
-zxf //调用gzip解压缩并展开归档

-jcf //归档并调用bzip2压缩
-jxf //调用bzip2解压缩并展开归档

-Jcf //归档并调用xz压缩
-Jxf //调用xz解压缩并展开归档

Linux命令-文本管理


查看文本命令

//查看文本
cat //拼接文件内容并输出至标准输出(屏幕)
-n //显示行号
//使用cat查看文件内容时会将文件的所有内容加载至内存, \
//所以应避免使用cat打开巨大文件
more //全屏查看文本文件内容,只能从前往后,不能从后往前。\
//文件内容显示完后自动退出
less //全屏查看文本文件内容,可从前往后亦可从后往前。推荐使用
head //从头部开始打印文件内容,默认打印10行
-n //指定要打印的行数,可以是-n 15也可以是-15
tail //查看文本文件尾部内容
-n //指定要打印的行数,可以是-n 15也可以是-15

文本处理

//文本处理
cut //截取文本内容
-d //指定字段分隔符,默认是空格
-f //指定要显示的字段
-f 1,3 显示1和3
-f 1-3 显示1到3
sed //基于行的过滤和转换文本的流编辑器
awk //基于列的文本报告工具

文本排序

//文本排序
sort //默认升序排序,不是按数值大小排序的
-n //根据数值大小进行排序
-r //逆序排序
-t //字段分隔符
-k //以哪个字段为关键字进行排序
-u //去重,排序后相同的行只显示一次
-f //排序时忽略字符大小写

uniq //报告重复的行(连续且完全相同方为重复)
-c //显示文件中行重复的次数
-d //只显示重复的行
-u //只显示未重复的行

文本统计

//文本统计
wc(word count)
-c //显示字节数
-l //显示行数
-w //显示单词数

大小统计

//大小统计
du //查看文件或目录占用的磁盘空间大小
-h //以人类友好的方式显示大小
-s //显示总的占用空间大小
df //报告文件系统磁盘空间使用情况
-h //以人类友好的方式显示大小
-i //显示inode信息

Linux命令-文本查找

//文本查找 grep egrep fgrep
grep //根据模式搜索文本,并将符合模式的文本行显示出来。 \
//使用基本正则表达式定义的模式来过滤文本的命令。
Pattern(模式) //文本字符和正则表达式的元字符组合而成的匹配条件
-i //忽略大小写
--color //匹配到的内容高亮显示
-v //显示没有被模式匹配到的行
-o //只显示被模式匹配到的字符串
-E //使用扩展正则表达式。grep -E相当于使用egrep
-q //静默模式,不输出任何信息
-A 1 //被模式匹配到的内容以及其后面一行的内容都显示出来,\
//如果把1改成2就表示被模式匹配到的内容以及其后面2行的内容均显示出来
-B 1 //被模式匹配到的内容以及其前面一行的内容都显示出来, \
//如果把1改成2就表示被模式匹配到的内容以及其前面2行的内容均显示出来
-C 1 //被模式匹配到的内容以及其前后的行各显示1行,如果把1改成2 \
//就表示被模式匹配到的内容以及其前后的行各显示2行。

fgrep //不支持正则表达式,执行速度快

Linux命令-文件查找

//文件查找
在文件系统上查找符合条件的文件
locate
//语法:
locate KEYWORD
//非实时,模糊匹配,查找是根据全系统文件数据库进行的,查找的速度快
//依赖于事先构建的索引。索引的构建是在系统较为空闲时自动进行(周期性任务)
updatedb //手动生成文件数据库
//索引构建过程需要遍历整个根文件系统,极消耗资源

find //实时查找,精确性强,遍历指定目录中所有文件完成查找, \
//查找速度慢,支持众多查找标准。
//语法:find [OPTION...] 查找路径 查找标准 查找到以后的处理动作
查找路径 //默认为当前目录
查找标准 //默认为指定路径下的所有文件
-name 'filename' //对文件名作精确匹配.支持glob通配符机制
-iname 'filename' //文件名匹配时不区分大小写
-regex pattern //基于正则表达式进行文件名匹配.以pattern \
//匹配整个文件路径字符串,而不仅仅是文件名称
-user username //根本属主来查找
-group groupname //根据属组来查找
-uid //根据UID进行查找,当用户被删除以后文件的属主会变为此用户的UID
-gid //根据GID进行查找,当用户被删除以后文件的属组会变为此用户的GID
-nouser //查找没有属主的文件.用户被删除的情况下产生的文件,只有uid没有属主
-nogroup //查找没有属组的文件.组被删除的情况下产生的文件,只有gid没有属组
-type //根据文件类型来查找(f,d,c,b,l,p,s)
-size //根据文件大小进行查找。如1k、1M,+10k、+10M,-1k、-1M, \
//+表示大于,-表示小于
[+|-]
#K、#M、#G
#Unit表示(从#-1到#之间的范围大小)
-#Unit表示(从0到#-1的范围大小)
+#Unit表示(大于#的所有)
-mtime //修改时间
-ctime //改变时间
-atime //访问时间
+5 //5天前
-5 //5天以内
-mmin //多少分钟修改过
-cmin //多少分钟改变过
-amin //多少分钟访问过
+5 //5分钟前
-5 //5分钟以内
-perm mode //根据权限精确查找
-perm -mode //文件权限能完全包含此mode时才符合条件
-perm /mode //9位权限中有任何一位权限匹配都视为符合查找条件

//组合条件:
-a
-o
-not

例:
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)

//处理动作:默认为显示到屏幕上
-print //显示
-ls //类似ls -l的形式显示每一个文件的详细信息
-delete //删除查找到的文件
-fls /path/to/somefile //查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} \; //对查找到的每个文件执行COMMAND,每次操作都需要用户确认
-exec COMMAND {} \; //对查找到的每个文件执行COMMAND,操作不需要确认

//注意:find传递查找到的文件至后面指定的命令时,查找到所有 \
//符合条件的文件一次性传递给后面的命令,而有些命令不能接受过多参数, \
//此时命令执行可能会失败。而xargs可规避此问题。
xargs //通过管道将查找到的内容给xargs处理,xargs后面直接跟命令即可

Linux命令-其他设置

//其它
time //显示命令的执行时间,例如time ls /etc
clear //清屏
whoami //显示当前登录用户
w //显示当前在线用户并显示其在运行的命令
who //查看当前在线用户

which //显示指定命令的绝对路径
date //显示或设置日期与时间
//不带参数的date用于显示当前系统日期与时间
-s //以字符串方式设置时间
//格式化输出时间:+
%Y //年
%m //月
%d //日
%H //时
%M //分
%S //秒

ldd //查看指定程序有哪些依赖库文件
程序组成?
二进制程序
库文件
配置文件
帮助文件