Linux 下命令格式:
command [-options] [parameter]
命令 [选项] [参数]
- command 是命令 例如:ls cd copy
- [-options] 带方括号的都是可选的 一些选项 例如:ls -l 中的 -l
- [parameter] 可选参数,可以是 0 或多个 例如:rm -f file1 file2 file3 删除文件 file1、file2、file3
- 注意: 命令 与 选项 参数之间都是需要空格间隔的,如果不使用空格间隔,将会无法执行该行命令
常用命令一览表
命令 | 解释说明 |
---|---|
man / --help | 查看命令手册 |
ls | 列出该目录下的所有子目录与文件 |
cd | 进入/退出目录 |
Tab 键 | 文件名/目录名自动补全 |
Ctrl + Shift + " + " | 界面字体调大 |
Ctrl + " - " | 界面字体调小 |
↑ 或 ↓ | 切换 上一条 或 下一条 命令 |
clear | 清屏命令 |
pwd | 显示出当前自己所在的完整目录路径 |
mkdir | 创建目录 |
rmdir | 删除目录 |
rm | 删除文件/目录 |
touch | 修改文件的时间戳 也可用于创建文件 |
vi | vim 编辑器 |
> 、 >> | 清空重定向、追加重定向 |
echo | 将数据写入到标准输出 |
cat | 连接文件并在标准输出上输出 |
more | 过滤器、用于分页(一页一次)显示文本 |
less | 随意查看文件内容,可搜索和翻页 |
head / tail | 显示文件开头或结尾某个数量块大小的内容 |
| | 管道符 |
find | 在 xx 目录下搜索符合条件的文件 |
grep | 全局搜索正则表达式并打印出行 |
cp | 复制文件/目录 |
mv | 移动文件/目录 |
stat | 查看文件信息 |
date | 查看日期 |
cal | 查看日历 |
df | 查看磁盘信息 |
ps | 查看进程信息 |
ifconfig | 查看/配置计算机当前的网卡配置信息 |
ping | 检测到目标 ip地址 的连接是否正常 |
su | 切换用户 |
reboot | 重启 |
shutdown | 关机 |
gcc/g++ | 编译器 |
gdb | 调试器 |
yum | 安装/删除 软件 |
zip/unzip、gzip/gunzip、tar | 压缩/解压缩、打包/解包 |
man 命令就像是 查字典一样,不了解某个命令的含义、作用、用法,可以使用 man 进行查询。大部分的命令和函数是支持查询的。
示例:
我们查询 ls 这个命令的作用
输入命令:
man ls
都会有详细的解释说明:
可以看到有时候的命令说明会非常的长,阅读起来不是很方便,在命令说明的当前界面(也就是上图界面),执行以下操作可以帮助大家更好的阅读
操作 | 功能 |
---|---|
点击空格键 | 切换到下一屏内容 |
点击 ↑ 或 ↓(或 回车 Enter 键) | 查看上一行或下一行 |
b(back) 或 f(front) | 往回切一屏 或 切换到下一屏 |
/ word | 查询文档中的某个单词 |
q(quit) | 退出手册查询 |
同时也可以使用 命令 + --help 来查阅命令用法
示例:
ls --help
在一大批命令介绍说明之前,这里介绍几个常用的小技巧,可以让你使用Linux 输入执行命令的时候更加丝滑。
大家刚进入 linux 终端的时候界面应该是这个样子:
那么我们需要进入到自己的目录时(例如:Study)
输入:
cd Study
回车
输入:
cd ..
当我们的目录名或者文件名很长不想逐个去敲字母输入的话,可以选择使用 Tab 键进行自动补全:
例如:
进入 Study 目录:
输入:
cd S
是的 没错,cd 加上一个 目录的首字母(注意大小写)
按下 Tab 键:
cat t
按下 Tab 键:
刚开始的时候系统默认的字体大小时固定的,可以手动控制进行字体大小调节
字体调小:Ctrl + " - "
有时候我们敲下一长串的命令,或者需要重复的执行一些命令,我们可以通过 " ↑ " 或 " ↓ " 来将当前需要输入的命令调整为 以前输入过的某一条命令,可以加快速度
例如:
按 " ↑ "
按 " ↓ " 又回到刚才的命令
有时候我们可能满屏幕的内容、指令等,需要清屏可以使用 clear 指令
示例:
使用 clear 指令后
clear
实际上是切换到了下一屏
ls 是 list 的简写,意为:列表; 名单; 清单; 目录; 一览表;
对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
ls [ 选项 ] [ 文件或目录]
选项 | 作用 |
---|---|
-R | 递归列出遇到的子目录(包括文件) |
-a | 列出所有文件,包括以 “.” 开头的隐含文件。 |
-c | 使用“状态改变时间”代替“文件修改时间”为依据来排序 (使用“ -t ”选项时)或列出(使用“ -l ”选项时) |
-i | 列出文件的 inode 节点号 |
-l | 列出(以单列格式)文件模式( file mode ),文件的链接数,所有者名,组名,文件大小(以字节为单位),时间信 息,及文件名 |
-t | 按时间顺序排序 |
-u | 使用最近访问时间代替最近修改时间为依据来排序 |
ls -R 列出当前目录下所有的子目录和子文件
ls -a 显示所有的文件,包括隐藏文件
那么这个隐藏文件究竟是什么呢?
像上图那样 前缀为: " ." 或 " … " 被称为隐藏文件,一般这些文件不建议修改或删除,像我们windows 系统文件,误删或误改会造成难以预估的后果。
当然我们也可以自己创建隐藏文件
例如:
touch .test
ls -i 显示文件的 inode 节点号
每一个文件都有唯一的一个 inode 节点号,通过该节点号经过映射,最终可以找到该文件在物理存储区中的位置,从而实现文件的读写等其他操作
ls -l 列出文件节点号、链接数,所有者名,组名,文件大小,时间信息,文件名,这个是我们比较常用的一种查看文件信息方式
实践发现并没有列出文件的节点号,但是我们可以组合选项进行列出
注:链接数 指 硬链接 和 软链接 具体的知识点可以看下面这篇博客
Linux之软硬链接
ls -u 按照修改时间顺序排序显示文件
显示出当前自己所在的完整目录路径
pwd
cd 命令大家应该比较熟悉 cd 是 change directory 更改目录的简写
cd 目录名 即可进入该目录下
当要进入当前目录下的下一级目录(相对路径)时,只需要 cd 目录名 即可
如果进入的不是当前目录下的目录时,需要给出目录的完整路径(绝对路径) 否则无法进入
示例:
cd … 即可返回上一级目录
除了这两个常用的还有以下常用的 cd 命令
命令 | 作用 |
---|---|
cd. | 保持在当前目录 |
cd ~ | 切换到主目录 |
cd - | 在最近两次工作目录之间来回切换 |
cd ~ 切换到主目录
cd - 在最近两次工作目录之间来回切换
mkdir 目录名 即可创建目录
注意:新创建的目录名不能于当前目录下的目录或文件名相同否则会创建失败。
命令 | 作用 |
---|---|
mkdir -p dir1/dir2/dir3 | 递归地创建目录 dir1、dir2、dir3 |
与 mkdir 配套使用的还有 rmdir 删除目录
rmdir 目录名
rmdir -p 目录 递归删除空目录,若目录不为空则无法删除
常用可选参数:
选项 | 作用 |
---|---|
-r | 递归的删除目录 |
-d | 删除空目录 |
-i | 删除文件前进行确认提示,向用户确认是否删除 |
-f | 忽略不存在的文件,且从来不向用户提示是否确认删除 |
-v | 在删除每个文件前打印文件名称 |
rm -r dir 递归地删除dir 目录下的所有目录以及文件
rm -d 删除空目录(非空的目录无法删除)
rm -i filename 删除文件时进行提示:是否确认删除
rm -v filename 删除后显示出 filename
rm -f filename 忽略不存在的文件,并且从不向用户提示信息
同时 rm 支持一次性删除多个文件
rm file1 file2 file 3…
指令 | 作用 |
---|---|
touch | 修改文件的时间戳 也可用于创建文件 |
vi | 使用vim 编辑器创建并编辑文件 |
> 或 >> | 使用 重定向符创建文件 |
echo 或 printf | 向文件中输入内容,同时若文件不存在则创建文件 |
touch filename 创建文件
touch -c filename 不创建文件
详细的vim 编辑器可以看看这篇博客:
Linux编辑器vim编译器gcc/g++调试器 gdb基本知识总结
" > " 清空重定向;将源文件中所有内容清空,覆盖写
" >> " 追加重定向;追加写入内容
当不输入内容时就会创建一个新文件
> filename 创建一个空文件
>> filename 也可以创建一个文件
Linux模拟实现重定向
echo 功能是将将数据写入到标准输出,一般配合 > 或 >> 进行使用,将内容重定向到目标文件中,若目标文件不存在则会创建文件,printf 的用法也和 echo 类似
创建文件的常用方式就总结到这里,还有其他的一些创建方式大家可以自己延申学习。
命令 | 作用 |
---|---|
cat | 连接文件并在标准输出上输出 |
more | more 是一个过滤器、用于分页(一页一次)显示文本 |
cat [选项列表] [文件列表]
我们为了方便记忆增加趣味性 有时候 我们说
cat filename :让我的猫去看一下文件的内容 是不是挺有意思的
常用选项:
选项 | 作用 |
---|---|
-b | 给非空输出行编号 |
-n | 给所有输出行编号 |
常用选项示例:
cat -b filename
我们先使用 vim 编辑器在 test.c 中 写下这么一段内容
#include
int main()
{
printf("hello");
printf("world"):
return 0;
}
使用命令:
cat -b test.c
more filename
关于使用 more 指令时如何翻页和 使用 man 手册时的翻页是有点类似的
操作 | 功能 |
---|---|
点击空格键 | 切换到下一屏内容 |
点击 ↑ 或 ↓(或 回车 Enter 键) | 查看上一行或下一行 |
b(back) 或 f(front) | 往回切一屏 或 切换到下一屏 |
/ word | 查询文档中的某个单词 |
q(quit) | 退出手册查询 |
+number | 跳转到文件指定的某一行 |
这里之简单示例一下 +number 的操作
原文中文件 test.cpp 内容
more +5 test.cpp
more 指令只支持向下翻页,less 指令支持向上翻页,less 指令在查看文件的时候并不需要读取整个文件
用法:
less [选项] filename
常用选项:
选项 | 作用 |
---|---|
-i | 忽略搜索时的大小写 |
-N | 显示每行的行号 |
/ word | 向下搜索 word |
? word | 向上搜索 word |
n | 重复前一个搜索(与 / 或 ? 有关) |
N | 反向重复前一个搜索(与 / 或 ? 有关) |
q | 退出显示 |
k / j | 按行上/下滚动 |
b/ f | 上/下翻页滚动 |
示例:
less test1.cpp
作用 用来显示开头或结尾某个数量的文字区块
显示文件开头的多少行内容,默认显示10行内容
示例:
head -8 test1.cpp
显示文件末尾的多少行内容,默认显示末尾 10行,和head 用法差不多
示例:
tail test1.cpp
学习了上面的 head 和 tail 指令,这里提出一个问题,如果我只想看第 10 行的内容怎么办呢? 这里引入一个 管道符 " | " 的概念
功能: 连接两个命令 ,将前边命令的输出结果交给后面命令进行处理
那么我们只想要看 第 10 行的内容 即可:
先查出前十行内容 再取这十行内容的最后一行即可
head -10 test1.cpp | tail -1
命令 | 作用 |
---|---|
find | 在 xx 目录下搜索符合条件的文件 |
grep | 在文件中查找符合条件的内容并打印 |
find 命令在Linux 中是比较强大的命令
用于查找与指定参数条件匹配的文件及目录列表。
find查找命令可以在各种条件下使用,我们可以通过权限,用户,组,文件类型,修改日期,大小等多种条件来查找文件
find 命令用法比较简单 用法为:
find [搜索路径] [表达式]
简单示例一下:
这里表达式可以算作 find 命令的灵魂&核心部分;通过表达式来完成各种各样的查询目标
表达式 一般可以看作由:选项参数 + 子表达式 组合
子表达式可以包括 文件名、通配符+字符串、数字、文件大小等等
选项参数 | 作用 |
---|---|
-name | 按文件名来搜索文件 |
-type | 按文件类型查找 |
-user | 按文件拥有者查找 |
-group | 按文件拥有组查找 |
-perm | 按文件权限查找 |
-exec | 对查到的文件执行xx 动作 |
-cmin | 按文件修改时间查找 |
-size | 按文件大小查找 |
-o / -a / -not | 查找条件或/且/非 |
-maxdepth / -mindepth | 指定查找范围最大/最小为第几级目录 |
如果不指定路径 则会在当前目录下 进行查找
示例:
find -name "text.txt" 在当前目录下查找名为 text.txt 的文件
find / -name "*.txt" 查找根目录下所有的 .txt 类型文件
Linux 中通常把文件划分为 以下 7 种类型
并非是我们常见的 Windows 下的那些 .c .cpp .bat .txt .project … 等
而使用 find -type 查询对应类型文件时也只能输入一个字母作为文件类型
字母 | 文件类型 |
---|---|
- | 常规文件,即file, 文本文件,二进制文件、图片等常见文件 |
d | 目录文件 |
b | block device 即块设备文件,如硬盘;支持以block为单位进行随机访问,通常为外设 |
c | character device 即字符设备文件,如键盘支持以character为单位进行线性访问,通常为外设 |
l | symbolic link 即符号链接文件,又称软链接文件 |
p | pipe 即命名管道文件 |
s | socket 即套接字文件,用于实现两个进程进行通信 |
例如:查看当前目录下的目录文件
find -type d
示例:
find -user username
find -group groupname
示例:
find -perm 664
这里大家想问 664 是怎么得来的?
如图所示:
关于Linux 权限的相关知识点可以看一下 下面我整理的这篇博客
Linux用户权限、文件权限、目录权限详解
grep 全称为:
Global search Regular Expression and Print out the line
译为:全局搜索正则表达式并打印出行
命令使用语法:
grep [匹配模式/匹配字符] 文件名 [参数]
简单示例:
grep "cout" test.cpp 搜索 test.cpp 中的 "cout" 字符
选项参数 | 作用 |
---|---|
-A number | 打印出匹配的行之前的下文 number 行 |
-B number | 打印出匹配的行之前的上文 number 行 |
-C number | 打印出匹配的行之前的上下文 各number 行 |
-v | 反向匹配,将匹配的内容排除掉并输出 |
-n | 显示匹配行的行号 |
-i | 不区分大小写 |
-c | 只统计匹配的行数,不打印匹配的内容 |
–clolor=auto | 为匹配结果设置颜色 |
-w | 只匹配过滤的单词 |
-o | 只输出匹配的内容 |
示例 :
grep "cout" test.cpp -A 2 将有cout 字符的后 2 行内容也打印出来
在文件中搜索指定内容并把该内容的后number 行也打印出来
示例:匹配文件 test.cpp 中不包含 “cout” 字符的内容
grep "cout" test.cpp -v
示例:
grep "cout" test.cpp -n
将一个或多个源文件或者目录复制到指定的目的文件或目录
命令格式:
cp [可选参数] 源文件/目录 目标文件/目录
示例:将 test.cpp 拷贝到 Test.cpp 目录下
cp test.cpp Test
选项 | 作用 |
---|---|
-a | 此参数的效果和同时指定"-dpR"参数相同 |
-d | 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录 |
-f | 强行复制文件或目录,不论目标文件或目录是否已存在 |
-i | 覆盖既有文件之前先询问用户 |
-l | 对源文件建立硬连接,而非复制文件 |
-p | 保留源文件或目录的属性 |
-R/r | 递归处理,将指定目录下的所有文件与子目录一并处理 |
-s | 对源文件建立符号连接,而非复制文件 |
-u | 使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件 |
-S | 在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀 |
-b | 覆盖已存在的文件目标前将目标文件备份 |
-v | 详细显示命令执行的操作 |
cp -r Test Test2
将源文件/目录移动到目标文件/目录中
用法:
mv [可选参数] 源文件/目录 目标文件/目录
简单示例:
mv test.cpp test1.cpp
选项 | 作用 |
---|---|
-b | 类似–backup 但不接受参数 |
-f | 覆盖前不询问 |
-i | 覆盖前询问 |
-n | 不覆盖已存在文件 如果您指定了-i、-f、-n 中的多个,仅最后一个生效 |
-S | 替换常用的备份文件后缀 |
-t | 移动所有的 SOURCE 的参数到 DIRECTORY |
-T | 把 DEST 看成普通文件 |
-u | 只有当 SOURCE 比 DEST 更新 |
用法:
stat filename
示例:
stat test1.cpp
指令 | 作用 |
---|---|
date | 查看日期 |
cal | 查看日历 |
示例:
示例:
df
选项参数 | 作用 |
---|---|
-h | 以常见的格式显示出大小 |
-i | 以inode 节点 索引信息显示磁盘使用情况 |
-T | 输出每个文件系统的类型 |
简单示例:
df -T 输出每个文件系统的类型
df -h 以常见的格式显示出大小
ps aux 查看进程的详细状况
选项 | 含义 |
---|---|
a | 显示终端上的所有进程,包括其他用户的进程 |
u | 显示进程的详细状态 |
x | 显示没有控制终端的进程 |
top 动态从高到低排序显示当前 内存磁盘占用情况
kill -9 [PID 进程ID] 强制结束进程
示例:
ifconfig
示例:
ping www.baidu.com
su root 切换到root 用户 //这里会显示需要密码 注意这里的密码输入是看不到的输入完后回车即可
reboot 重启 // 一般不要尝试
-shutdown -h now 立即关机
gcc 、g++ 、gdb 相关详细介绍可以看一下这篇博客:
gcc/g++/gdb 基本知识总结
linux 里可没有鼠标右键压缩文件/解压缩文件 那么linux里是如何进行文件的压缩和解压缩呢?
当然压缩和解压缩都有格式
在windows 下一班有 zip rar 等格式,同样在linux 也有相关的指令
一般刚安装号的Linux 没有压缩和解压缩软件 因此需要先下载压缩/解压缩软件
功能:yum是一个基于rpm的交互式包管理器。它可以自动执行系统更新,包括依赖关系分析和基于“存储库”的过时处理元数据。它还可以执行新软件包的安装、旧软件包的删除,以及在许多其他需求/服务
使用方法:
yum [options] [command] [package …]
示例:
安装解压缩工具 zip
这里由于已经安装过了,那么我们先卸载再安装
使用命令
yum remove zip
yum install zip
功能:
zip :将文件/目录压 为filename.zip
unzip: 将 .zip 类型的压缩文件解压
使用方法:
zip filename.zip filename 压缩
uzip filename.zip
常用选项:
选项 | 作用 |
---|---|
-r | 递 归处理,将指定目录下的所有文件和子目录一并处理 |
其他选项参数大家可以查看手册查阅:
也是压缩文件和zip
不同的是 gzip 的压缩率更高
使用方法:
gzip [选项] filename
gunzip [选项] filename.gz
注意:解压缩文件时需要注意压缩文件的格式,如 .zip 只能由unzip来解压 .gz 只能由 gunzip来解压
示例:
功能:linux 下最常见的打包工具/解包/解压缩
使用方法:
tar [选项] filename1 filename2…
常用选项:
选项 | 作用 |
---|---|
-c | 打包 |
-x | 解包 |
-z | 打包/解包时进行gzip 格式的压缩/解压缩 |
-j | 打包/解包的时候进行bzip2 格式的压缩/解压缩 |
-v | 在打包/解包的时候显示详细的打包/解包信息/内容 逐个显示有哪些文件 |
-f | 指定压缩包名称 |
这些选项需要进行组合使用,组合表示是以何种方式打包、解包等。
示例:
例如: -czvf 打包 / -xzvf 解包
示例:
[hfy@localhost MarkdownTest]$ ls
CP Mkdir newdir test2.c test.c
[hfy@localhost MarkdownTest]$ tar -cvzf newtar.gz test.c test2.c
test.c
test2.c
[hfy@localhost MarkdownTest]$ ls
CP Mkdir newdir newtar.gz test2.c test.c
[hfy@localhost MarkdownTest]$ tar -xzvf newtar.gz
test.c
test2.c
[hfy@localhost MarkdownTest]$ ls
CP Mkdir newdir newtar.gz test2.c test.c
//先把以前的删除然后再解压
[hfy@localhost MarkdownTest]$ rm -r test2.c test.c
[hfy@localhost MarkdownTest]$ ls
CP Mkdir newdir newtar.gz
[hfy@localhost MarkdownTest]$ tar -xzvf newtar.gz
test.c
test2.c
[hfy@localhost MarkdownTest]$ ls
CP Mkdir newdir newtar.gz test2.c test.c
[hfy@localhost MarkdownTest]$