Linux常用命令
概述
shell
shell是linux系统中运行的一种特殊程序
-
在用户和内核之间充当“翻译官”
-
用户登录linux系统时,自动加载一个shell程序
-
bash是CentOS系统中默认使用的shell程序
文件位于/bin/bash
Linux命令分类
内部命令:
-
集成于 Shell 解释器程序内部的一些特殊指令,也称为内建(Built-in)指令
-
属于 Shell 的一部分
-
没有单独对应的系统文件
-
自动载入内存,可以直接使用
外部命令:
-
Linux系统中能够完成特定功能的脚本文件或二进制程序
-
属于 Shell 解释器程序之外的命令
-
每个外部命令对应了系统中的一个文件
-
必须知道其对应的文件位置,由 Shell 加载后才能执行
注意:Linux系统将存放外部命令、程序的目录默认添加到 “搜索路径”中。当使用位于这些目录中的外部命令时,用户不需要指定具体的位置。
Linux命令行格式
通用格式:命令字 + [选项] + [参数]
选择与参数是可选项,命令字是必选项。
命令字:
-
是整条命令中最关键的一部分
-
它唯一确定一条命令。
注意:Linux命令环境中,对英文字符的处理是区分大小写的
选项:
-
长短格式选项只是一种定义方法,并无实际区别。
-
短格式选项:使用“-”符号引导
多个单字符选项可以组合在一起使用
-
长格式选项:使用“–”符号引导
参数:
-
命令字的处理对象
-
可以是文件名、目录(路径)名或用户名等内容
-
个数可以是零到多个
编辑Linux命令行(快捷键)
Tab 键:补全内容
反斜杠“\”(不常用):将一行内容转换为多行显示,但最后仍作为一行命令执行。
Ctrl+u 快捷键(不常用):删除光标之前的内容
Ctrl+k 快捷键(不常用):删除光标之后的内容
Ctrl+l 快捷键:清屏
Ctrl+c 快捷键:中断命令
Ctrl+ a :光标移动到命令最前端
Ctrl+ e :光标移动到命令最后端
Ctrl+ z (不常用):将命令挂起
获取命令帮助的方法
-
使用help 命令 /查看内部命令
-
使用“–help”选项 /查看外部命令
-
使用man 手册页查看所有命令(默认情况不退出,按“q”退出)
目录和文件基本操作(查看)
pwd(查看当前工作目录)
案例:[root@localhost ~]# pwd ==》 /root
cd(切换工作目录)
cd 目标位置:切换到目标位置
cd ~ 或 cd “空格” :若不指定目标位置,切换到当前用户的宿主目录
cd “-” :切换到上一次执行 cd 命令之前所在的目录
cd “.” :当前目录
cd “..” :上级目录
ls(列表显示目录内容)
显示目录中内容,包括子目录和文件相关属性信息
格式:ls [选项] [文件或目录… ]
常用选项:
-
-l:显示详细信息
-
-a:显示子目录和文件,包括”.“开头的隐藏目录和隐藏文件
-
-A:不显示“.”和“..”隐藏目录,显示其余“.”开头的隐藏目录
-
-d:显示该文件或目录本身属性
-
-h:以单位显示文件或目录大小
-
-R:以递归的方式显示目录以及子目录的所有内容
-
–color:为查询结果添加颜色进行显示
结合通配符
-
“?”:匹配文件名中的一个未知字符
-
“*”:匹配文件名中的任意多个字符
du(统计目录及文件空间占用情况)
统计指定目录(或文件)所占用磁盘空间的大小。
格式:du [选项] [文件或目录… ]
常用选项:
-
-a:统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-
-h:显示出目录或文件的大小(K、M),默认的大小单位为字节(KB)
-
-s:只统计每个参数所占用空间总的大小,而不是统计每个子目录、文件的大小
alias(别名机制)
通过别名机制简化常用的、比较长的命令
案例:
-
alias gohome=’cd /home/zhangsan’
-
当在命令行中执行:“gohome”命令时进入用户zhangsan的家目录。
-
取消别名定义:unalias gohome
查看别名:alias
目录和文件基本操作(创建)
mkdir(创建新目录)
格式:mkdir [选项] 目录位置及名称
案例:mkdir -p /home/{A,B}/abc
以上命令为在home下创建A,B两个文件夹及在其中创建abc文件夹
touch(创建空文件)
-
更新文件的时间标记
-
经常用于创建多个新的空文件
格式:touch 文件…
注意:在Linux中,文件与文件夹不能同名。在同一文件夹下,只能存在一个。
ln(创建链接文件)
链接(又称符号链接)分类:
软链接
-
类似于Windows系统的快捷方式
-
创建格式:ln [-s] 源文件或目录… 链接文件或目标位置 (案例:ln -s /bin/bzip2 /bin/wx/)
-
适用范围:适用于文件或目录
-
保存位置:与原始文件可以位于不同的文件系统中
-
删除原始文件后:失效
硬链接
-
类似于将文件复制一份,原文件任何的修改都会同步到硬链接文件中。
-
创建格式:ln 源文件或目录… 链接文件或目标位置 (没有 -s 选项)
-
适用范围:只可用于文件
-
保存位置:必须与原始文件在同一个文件系统(如一个Linux分区)内
-
删除原始文件后:仍旧可用
注意:在链接时,要使用绝对路径。
目录和文件基本操作(操作)
cp(复制文件或目录)
将需要复制的文件或目录(源)重建一份,并保存为新的文件或目录
格式:cp [选项]… 源文件或目录… 目标文件或目录…
常用选项:
-
-i:覆盖目标同名文件或目录时提醒用户确认
-
-f:若文件存在 强制覆盖不提醒 (目录直接覆盖,文件会提醒)
-
-p:复制时保持源文件的权限、属主及时间标记等属性不变
-
-r:表示递归复制所有文件及子目录
注意:复制多个文件或目录时,目标位置必须是目录,且目标目录必须已存在。
rm(删除文件或目录)
删除指定的文件或目录,选项和cp命令类似。 rm -rf 命令强制删除包括目录 不提醒
常用选项:
-
-f:忽略不存在的文件和参数,不要提示
-
-i:每次删除前都会提示
-
-r:递归地删除目录及其内容
-
-d:删除空目录
注意:不要直接删除系统中已有的目录或配置文件,以避免出现意外故障
mv(移动文件或目录)
将指定的文件或目录转移位置
如果目标位置与源位置相同,则相当于执行重命名操作
格式:
-
mv [选项] … 源文件或目录… 目标文件或目录
案例:
-
mv mytouch mkfile
-
mv mkfile public_html/
-
mv /root/abc /home
-
mv abc 123
目录和文件基本操作(查找)
which(查找命令/文件存放的目录)
搜索范围由环境变量 PATH 决定(echo $PATH)
格式:
-
which 命令|程序名
-
which -a 命令|程序名 (-a 打印每个匹配文件名的所有匹配路径名。)
案例:
-
which ls
-
which cd
find(查找文件或目录)
采用递归方式,根据目标的名称、类型、大小等不同属性进行精细查找
格式:find [查找范围] [查找条件表达式]
关键字:
-
-name(最常用)
-
按名称查找
-
根据目标文件的名称进行查找,允许使用“*”及“?”通配符
-
-
-size
-
按文件大小查找
-
根据目标文件的大小进行查找 一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件 常用的容量单位包括 kB(注意 k 是小写)、MB、GB
-
-
-user
-
按文件属主查找
-
根据文件是否属于目标用户进行查找
-
-
-type
-
按文件类型查找
-
根据文件的类型进行查找 文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 块设备是指成块读取数据的设备(如硬盘、内存等),字符设备是指按单个字符读取数据的设备(如键盘、鼠标等)
-
逻辑运算符:
-
“-a”表示 而且(and)
案例:find /boot -size +1024k -a -name “vmlinuz*”
-
“-o”表示 或者(or)
案例:find /boot -size +1024k -o -name “vmlinuz*”
其他使用方式及案例
# find / -name ifcfg-ens33 //在/下查找名为"ifcfg-ens33"的文件 # find / -size "+50M" //在/下查找单个大于50M的文件 # find / -type d -a -name aa* //查找/下为名字为aa开头的目录 将查到的数据删除的四种方法: # find / -type f -a -name "abc*" -delete # find / -type f -a -name "abc*" -exec rm -rf {} \; 第三种: # touch /root/{abc,abc1,abc2} # find / -type f -name "abc*" //能看到刚刚创建的/root/关于abc的三个文件 /root/abc /root/abc1 /root/abc2 /usr/lib64/python2.7/abc.py /usr/lib64/python2.7/abc.pyc /usr/lib64/python2.7/abc.pyo /usr/share/vim/vim74/syntax/abc.vim 需求:删除/root下的三个abc文件 # find / -maxdepth 2 -type f -name "abc*" | xargs rm -rf -maxdepth 2 //该选项表示在指定的目录中再指定几层进行查找,此时就不会查到python下的abc文件 xargs //将查到的多行内容,放在一行进行显示,原来的每行中间以空格隔开 第四种: # rm -rf $(find / -maxdepth 2 -type f -name "abc*") 也可以同时查询多个文件并查看这些文件中的内容: # find / -maxdepth 2 -type f -name "abc*" | xargs cat 将查询到的多个文件的详细信息显示出来: # find / -name "abc*" | xargs ls -l 将查到的数据复制到/tmp目录中的三种方法: # find / -type f -a -name "abc*" -exec cp -rf {} /tmp \; # find / -maxdepth 2 -name "abc*" | xargs cp -rf -t back # find / -maxdepth 2 -name "abc*" | xargs -i cp -rf {} back //-i的作用表示将查询到的数据一行一行地赋值给{} 将查到的多个数据文件通过tar打包备份: # tar zcf abc.tar.gz `find / -maxdepth 2 -name "abc*" -a -type f | xargs` # find / -maxdepth 2 -name "abc*" -a -type f | xargs tar zcf abc.tar.gz 按照权限查询文件: # chmod 777 /root/abc # find / -type f -a -name "abc*" -a -perm 777 修改时间信息 mtime 访问时间信息 atime 改变时间信息 ctime # find /abc -type f -mtime +7 --- 7天以前修改过的文件 # find /abc -type f -mtime -7 --- 最近7天修改过的文件 # find /abc -type f -mtime 7 --- 正好前面第7天修改过的文件
目录和文件管理(查看和检索)
cat(查看文件内容)(常用)
显示文件内容
当文件内容较多时,使用cat命令往往只能看到文件的最后一部分内容,而无法分页逐屏显示。(在虚拟机中无法现实,若使用CRT或SSH的方式连接,则可以查看)
参数 | 含义 |
---|---|
-n | 对文件的行数从1开始编号 |
-b | 对文件的行数从1开始编号,但对空格不进行编号 |
-s | 当遇到连续两行以上的空格就替换成一行空格 |
-E | 在每行结束处显示,,在文件中代表换行的意思 |
-T | 查看文件内容时,用^I 代替Tab键 |
-v | 留白,-, |
格式:cat [选项] 文件名 …
案例:cat /etc/passwd (查看passwd文档内容)
more(查看文件内容)(几乎不用)
用途:全屏方式分页显示文件内容
格式:more [选项] 文件名 …
操作:
-
按Enter键向下逐行滚动(不支持向上滚动)
-
按空格键向下翻一屏
-
按q键退出
less(查看文件内容)(更方便)
用途:与 more 命令相同,但扩展功能更多
格式:less [选项] 文件名 …
命令参数:
-
-b <缓冲区大小> 设置缓冲区的大小
-
-e 当文件显示结束后,自动离开
-
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-
-g 只标志最后搜索的关键词
-
-i 忽略搜索时的大小写
-
-m 显示类似more命令的百分比
-
-N 显示每行的行号
-
-o <文件名> 将less 输出的内容在指定文件中保存起来
-
-Q 不使用警告音
-
-s 显示连续空行为一行
-
-S 行过长时间将超出部分舍弃
-
-x <数字> 将“tab”键显示为规定的数字空格
操作:
-
Page Up 向上翻页,Page Down 向下翻页
-
按“/”键查找内容,“n”下一个内容,“N”上一个内容
-
其他功能与 more 命令基本类似
-
Q 退出less 命令
-
空格键 滚动一行
-
回车键 滚动一页
head、tail(查看文件内容)(主要用于查看日志)
head命令:
用途:查看文件开头的一部分内容(默认为10行)
使用:
-
head -n 文件名 …
-
head -5 aaa
(“-n” 从n行位置读取指定文件。)
tail命令:
用途:查看文件结尾的少部分内容(默认为10行)
使用:
-
tail -n 文件名 …
-
tail -6 bbb
-
tail -f 文件名 …
-
tail -f ccc
(-f 该参数用于监视File文件增长,即一直挂起界面,当文件变化时,会实时显示。常用于查看日志)
wc(统计文件内容)
统计文件中的单词数量(Word Count)等信息
使用:
-
wc [选项]… 目标文件…
-
wc a
选项:
-
-l:统计行数
-
-w:统计单词个数
-
-c:统计字节数
wc命令未指定选项时,默认相当于”-lwc“,会同时统计行数、单词数、字节数(含空格、回车等符号)
grep(检索和过滤文件内容)(重点)
在文件中查找并显示包含指定字符串的行
命令选项:
-
-i:查找时忽略大小写
-
-v:反选,输出与查找条件不相符的行
-
-A 1:表示查看包含指定字符串及后一行
-
-B 2:表示查看包含指定字符串及前两行
-
-C 1:表示查看包含指定字符串及前后一行
-
-c:统计指定字符串在文件中出现的行数
查找条件设置:
-
“^……”表示以……开头 (“^abc”,以abc开头)
-
“……$”表示以……结尾(“abc$”,以abc结尾)
(“^abc$”,这样只会匹配到abc)
-
“^$”表示空行
常使用grep命令与其他命令结合使用,进行查询的二次过滤。使用管道符号“”。
“|”:管道符号,作用是将前面命令的执行结果用于后面命令的输入内容。
如:# cat /etc/passwd | grep “zhangsan” 上一行命令表示为:通过cat查看出文件内容,再通过grep命令筛选包含“zhangsan”的行并显示。
目录和文件管理(压缩/解压缩)
gzip、bzip2(压缩/解压缩,单个文件)(常用gzip)
gzip:文件经过gzip压缩后,文件会多出一个 .gz后缀。
参数 | 说明 |
---|---|
-c | 保留源文件 |
-d | 解压.gz文件 |
-v | 打印操作详细信息 |
-l | 列出压缩文件详细信息 |
-h | 在线帮助 |
使用:
命令 | 说明 |
---|---|
gzip 文件 | 压缩 |
gzip -dv 压缩文件 | 解压并打印执行过程 |
gzip -c 待压缩文件 > 带压缩文件.gz | 压缩文件并保留源文件 |
gzip * | 批量压缩 |
gzip -dv * | 批量解压 |
bzip2:文件经过gzip压缩后,文件会多出一个 .bz2后缀。
使用方式与gzip命令相同,但由于两个命令的执行方式不同,所以压缩与解压缩需要使用同一命令实现。
gunzip、bunzip2(解压缩单个文件)
使用:
-
gunzip aa.gz
-
bunzip2 bb.bz2
tar(归档命令)
用途:制作归档文件、释放归档文件,常结合gzip、bzip2用于压缩、解压缩目录。
格式:
-
tar [选项] … 归档文件名 源文件或目录
-
tar [选项]… 归档文件名 [-C 目标目录]
参数(只要使用tar就一定会“-f”):
-c:创建 .tar 格式的包文件 -x:解开.tar格式的包文件 -v:输出详细信息 -f:表示使用归档文件 -p:打包时保留原始文件及目录的权限 -t:列表查看包内的文件 -C:解包时指定释放的目标文件夹 -z:调用gzip程序进行压缩或解压 -j:调用bzip2程序进行压缩或解压
常用方式:
tar zcf 压缩 tar zxf 解压缩*** 文件名.tar.gz 文件名.tar.bz2 tar fvt 不解压缩看包内内容 ***********不压缩路径(使用相对路径): # cd /root # tar zcf /home/root1.tar.gz ./* 压缩时,使用绝对路径,会将路径一同压缩。在解压时,便会将路径还原。 -tf用于查看压缩包内的文件 排除掉要压缩目录中的一个文件: # tar zcf a6.tar.gz /home/* --exclude=/home/b1 同时排除三个文件时通过以下方式: vim /root/file.txt /home/b1 /home/a1 /home/jack # tar zcf a6.tar.gz /home/* --exclude-from=/root/file.txt 压缩查询到的多个文件: # tar zcf abc.tar.gz `find / -maxdepth 2 -name "abc*" -a -type f | xargs` # find / -maxdepth 2 -name "abc*" -a -type f | xargs tar zcf abc.tar.gz find / -maxdepth 2 //表示查询路径的深度,从/开始往下查找两级目录就不再往里查找。
目录和文件基本操作(编辑)
文本编辑器的作用:
-
创建或修改文本文件
-
维护 Linux 系统中的各种配置文件
Linux中最常用的文本编辑器
-
vi:类UNIX操作系统的默认文本编辑器。
-
vim:vim是vi文本编辑器(一般简称为vi编辑器)的增强版本
vi 编辑器的工作模式
打开时默认进入命令模式,模式间的切换:
-
命令模式
shift + “:” :切换到末行模式
“A”、“a”、“O”、“o”、“I”、“i”键:切换到输入模式
-
输入模式
“Esc”:切换到命令模式
-
末行模式
“Esc”:切换到命令模式
命令模式操作
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 命令
命令选项:
-
+<行号>:从指定行号的行开始先是文本内容;
-
-b:以二进制模式打开文件,用于编辑二进制文件和可执行文件;
-
-c<指令>:在完成对第一个文件编辑任务后,执行给出的指令;
-
-d:以diff模式打开文件,当多个文件编辑时,显示文件差异部分;
-
-l:使用lisp模式,打开“lisp”和“showmatch”;
-
-m:取消写文件功能,重设“write”选项;
-
-M:关闭修改功能;
-
-n:不实用缓存功能;
-
-o<文件数目>:指定同时打开指定数目的文件;
-
-R:以只读方式打开文件;
-
-s:安静模式,不现实指令的任何错误信息
vim
命令模式:
-
Home键或“^”、数字“0” //跳转至行首
-
End键或“$”键 //跳转到行尾
-
1G或者gg //跳转到文件的首行
-
G //跳转到文件的末尾行
-
5G //跳转到文件中的第5行
-
x或Del //删除光标处的单个字符
-
dd //删除当前光标所在行
-
5dd //删除从光标处开始的#行内容
-
d^ //删除当前光标之前到行首的所有字符
-
d$ //删除当前光标处到行尾的所有字符
-
yy //复制当前行整行的内容到剪贴板
-
5yy //复制从光标处开始的5行内容
-
p //缓冲区中的内容粘贴到光标位置处之后
-
P //粘贴到光标位置处之前
-
u //按一次取消最近的一次操作,多次重复按u键,恢复已进行的多步操作
-
ZZ //保存当前的文件内容并退出vi编辑器
末行模式:
-
:set nu //在编辑器中显示行号
-
:set nonu //取消编辑器中的行号显示
-
:q! //放弃对文件内容的修改,并退出vi
-
:wq //保存修改的内容并退出
-
:#,# s/old/new/g //在行号“#,#”范围内替换所有的字符串“old”为“new”
-
:% s/old/new/g //在整个文件范围内替换所有的字符串“old”为“new”
-
/word //从上而下在文件中查找字符串“word”
-
n //在上一指令后使用。定位下一个匹配的被查找字符串