文章目录
ls
指令
语法
ls [选项][目标或文件]
ls -i
ls -il
ls -l
ls -ln
ls -F
ls -Fl
功能
对于目录,该命令列出该目录下的所有子目录与文件。
对于文件,将列出文件名以及其他信息
常用选项
选项 | 功能 |
---|---|
-a | 列出目录下的所有文件,包括以 . 开头的隐含文件,显示Linux 系统的隐藏文件 |
-d | 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录 |
-i | 输出文件的i 节点的索引信息。 如ls –ai 指定文件 |
-k | 以k 字节的形式表示文件的大小。ls –alk 指定文件 |
-l | 列出文件的详细信息ls -l ls -a -l == ls -al |
-n | 用数字的UID、GID 代替名称 |
-F | 在每个文件名后附上一个字符以说明该文件的类型"*" 表示可执行的普通文件"/" 表示目录"@" 表示符号链接`" |
-r | 对目录反向排序 |
-t | 以时间排序 |
-s | 在l 文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件) |
-R | 列出所有子目录下的文件。(递归) |
-1 | 一行只输出一个文件 |
pwd
命令
语法
pwd
功能
显示用户当前所在的目录
cd
指令
语法
cd 目录名
: 能够跟上任意绝对或相对路径
Linux中的目录结构的本质是一颗多叉树:(路径具有唯一性)
- 每一个子节点,既可以是一个目录,也可以是一个普通文件
- 这颗多叉树的叶子结点,一定是一个普通文件或者空目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-38atKRfp-1659870293973)(D:/picture/image-20220528134704778.png)]
绝对目录:从根目录开始(容易失效) (配置环境时,推荐绝对路径)
相对目录:从当前目录开始(日常使用,推荐相对路径)
功能
改变工作目录。将当前工作目录改变到指定的目录下
路径分隔符斜杠(/
)(Linux
)
路径分隔符反斜杠(\
)(windows
)
..
上级文件
.
当前路径
选项
表达式 | 说明 |
---|---|
cd .. | 回到上级目录 |
cd ~ | 当前用户的家目录 |
cd / | 回到根目录 |
cd - | 跳转至上一次所处的路径 |
touch
指令
语法
touch [选项]... 文件...
最典型的用法 创建典型文件touch mytest.cpp
touch file.txt
简单的文本编辑器:nano
nano mytest.c
- 写代码
Ctrl + x
– >Y
– >Enter
gcc mytest.c
./a.out
功能
touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
选项
选项 | 说明 |
---|---|
-a --time=atime --time=access --time=use | 只更改存取时间 |
-c --no-create | 不建立任何文档 |
-d | 使用指定的日期时间,而非现在的时间 |
-f | 此参数将忽略不予处理,仅负责解决BSD 版本touch 指令的兼容性问题 |
-m --time=mtime --time=modify | 只更改变动时间 |
-r | 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同 |
-t | 使用指定的日期时间,而非现在的时间 |
mkdir
指令
语法
mkdir [选项] dirname...
mkdir dir
创建一个目录
mkdir -p dir1/dir2/dir3/dir4/dir5
创建一串目录
功能
在当前目录下创建一个名为 dirname
的目录
选项
选项 | 说明 |
---|---|
-p --parents | 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录 |
rmdir
指令
语法
rmdir [-p][dirName]
rmdir dir
功能
只能删除空目录
选项
选项 | 说明 |
---|---|
-p | 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除 |
rm
指令
语法
rm [-f-i-r-v][dirName/dir]
rm mytest.c
rm -r dir1
递归式删除 不为空也能删除
rm -rf file.txt
-f
强制删除,-r
递归删除
功能
删除文件或目录
选项
选项 | 描述 |
---|---|
-f | 即使文件属性为只读(即写保护),亦直接删除 |
-i | 删除前逐一询问确认 |
-r | 删除目录及其下所有文件 |
man
指令
语法
man [选项] 命令
yum install -y man-pages
man printf
man 3 printf
man 2 fork
man 1 printf
man echo
man man
查询man
功能
Linux
的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助
man
手册可以查看不同的手册
man
本身不会 可以 man man
选项
选项 | 描述 |
---|---|
-k | 根据关键字搜索联机帮助 |
num | 只在第num 章节查找 |
-a | 将所有章节的都显示出来 |
cp
指令
语法
cp [选项] 源文件或目录 目标文件或目录
copy
cp file.txt fial-bak.txt
cp file.txt ../file.txt-1
cp lesson lesson-bak
cp -rf lesson lesson-bak
功能
复制文件或目录
cp
指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。
若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
在拷贝的时候,要拷贝的文件,拷贝在当前路径下两个文件名称不能一样;如果不在同一路径,可以一样
默认情况下 不允许拷贝目录的 若需要 需要携带选项 -r
-f
选项
选项 | 描述 |
---|---|
-f --force | 强行复制文件或目录, 不论目的文件或目录是否已经存在 |
-i --interactive | 覆盖文件之前先询问用户 |
-r | 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理 |
-R --recursive | 递归处理,将指定目录下的文件及子目录一并处理 |
mv
指令
语法
mv [选项] 源文件或目录 目标文件或目录
mv file.txt lesson
mv lesson_1 lesson_2
mv file-bak.txt file.txt
mv dir mycode
mv -i file.txt-bak file.txt1
mv -f file.txt-bak file.txt
功能
mv
命令是move
的缩写,可以用来移动文件或者将文件改名(move (rename) files
),是Linux
系统下常用的命令,经常用来备份文件或者目录- 视
mv
命令中第二个参数类型的不同(是目标文件还是目标目录),mv
命令将文件重命名或将其移至一个新的目录中 - 当第二个参数类型是文件时,
mv
命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它
将所给的源文件或目录重命名为给定的目标文件名 - 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,
mv
命令将各参数指定的源文件均移至目标目录中 - 剪切:可以剪切普通文件、可以整体剪切目录
- 可以对普通文件、目录文件重命名
Linux
中不要轻易删除文件,因为Linux
没有回收站
linux 下手动回收站的配置
将rm改造成mv
// 1.
vim ~/.bashrc #修改这个文件
// 2.
mkdir -p ~/.trash
alias rm=trash
alias ur=undelfile
undelfile() {
mv -i ~/.trash/\$@ ./
}
trash() {
mv $@ ~/.trash/
}
选项
选项 | 描述 |
---|---|
-f | force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖 |
-i | 若目标文件 (destination ) 已经存在时,就会询问是否覆盖! |
cat
指令
语法
cat [选项] [文件]
cat -n file.txt
功能
查看目标文件的内容 从第一行开始显示文件内容 : 比较适合查看短文本 或则代码
tac
倒着打印文件内容 从后往前打印 不能带 -n
选项
选项 | 描述 |
---|---|
-b | 对非空输出行编号 |
-n | 对输出的所有行编号 |
-s | 不输出多行空行 |
重定向
>
: 输出重定向
echo "hello world" > hello.txt
本来应该显示到显示器的内容,把它写入到文件中
会清空原始文件的内容重新写入。
echo "hello world" >> hello.txt
>>
: 追加重定向
添加内容到文件时,不会清空
cat
:不带文件名的情况下,会从键盘(标准输入)。
<
:输入重定向 ,把本来应该从键盘读取数据的方式,改成从指定的文件中读取
退出任务步骤:
Ctrl + c
- 若果按错:
fg 1
– >Ctrl + c
linux
下一切皆文件:
Linux
认为所有的都可以当作文件 --> 可以使用同一套处理事情的方式,来解决所有的问题- (外设,除了
cpu
和内存
)磁盘、显示器、网卡、显卡、键盘、鼠标等所有的设备都看作文件,以同样的方式看待这些设备
more
指令
语法
more [选项] [文件]
命令行操作:
cnt=1; while [ $cnt -le 100000 ]; do echo "hello world $cnt"; let cnt++; done
写到文件中:
cnt=1; while [ $cnt -le 100000 ]; do echo "hello world $cnt"; let cnt++; done > file.txt
统计行数:
wc -l file.txt
查看文件:
more file.txt
按会车向下 只支持向后翻
/
可以搜索
功能
more
命令,功能类似cat
选项
选项 | 说明 |
---|---|
-n | 对输出的所有行编号 |
q | 退出more |
less
指令
语法
less [参数] 文件
less file.txt
less
支持前后翻动
功能
less
与more
类似,但使用less
可以随意浏览文件,而more
仅能向前移动,却不能向后移动,而且less
在查看之前不会加载整个文件less
工具也是对文件或其它输出进行分页显示的工具,应该说是linux
正统查看文件内容的工具,功能极其强大less
的用法比起more
更加的有弹性。在more
的时候,我们并没有办法向前面翻, 只能往后面看- 但若使用了
less
时,就可以使用[pageup][pagedown]
等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容 - 除此之外,在
less
里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜 - 可以帮助我们查看文本,用来日志查看
选项
选项 | 描述 |
---|---|
-i | 忽略搜索时的大小写 |
-N | 显示每行的行号 |
/字符串 | 向下搜索字符串的功能 |
?字符串 | 向上搜索字符串的功能 |
n | 重复前一个搜索(与 / 或 ? 有关) |
N | 反向重复前一个搜索(与 / 或 ? 有关) |
q | quit |
head
指令
语法
head [参数]... [文件]...
head -20 file.txt
: 查看文本的前20
行,默认为10
行
打印中行部分行的方法:
-
先将最大的输入到文本中,然后倒着打印尾(临时文件法)
head -30020 file.txt > temp.txt
tail -21 temp.txt
-
管道
head -30020 file.txt | tail -21
管道:
-
计算机资源:数据(计算机互联网的石油)
-
|
(管道) :传输数据资源 -
head -30020 file.txt | tail -21
:先将前30020行写到管道中,再将最后的打印出来 -
head -30020 file.txt | tail -21 | head - 3
-
级联多个命令,完成流水线式的数据处理工作
功能
head
用来显示档案的开头至标准输出中,默认head
命令打印其相应文件的开头10
行head
与tail
就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head
用来显示档案的开头至标准输出中,而tail
想当然尔就是看档案的结尾
选项
选项 | 描述 |
---|---|
-n<行数> | 显示的行数 |
tail
指令
语法
tail[必要参数][选择参数][文件]
tail -20 file.txt
查看文本的后20
行,默认为10
行
功能
- 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件
tail
命令从指定点开始将文件写到标准输出.使用tail
命令的-f
选项可以方便的查阅正在改变的日志文件,tail -f filename
会把filename
里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容
指令
选项 | 说明 |
---|---|
-f | 循环读取 |
-n<行数> | 显示行数 |
时间相关的指令
格式& 用法
date
指定格式显示时间:date +%Y-%m-%d
date
用法:date [OPTION]... [+FORMAT]
date
date +%Y-%m
date +%Y-%m-%d
date +%Y-%m-%d_%H
date +%Y-%m-%d_%H:%M
date +%Y-%m-%d_%H:%M:%S
date +%s
: 得到时间戳 作为日志的一部分
date -d@12
将时间戳转换为时间
date +%Y-%m-%d_%H:%M:%S -d@132313123
显示
常用的标记
符号 | 说明 |
---|---|
%H | 小时 |
%M | 分钟 |
%S | 秒 |
%X | 相当于%H:%M:%S |
%d | 日 |
%m | 月份 |
%Y | 完整年份 |
%F | 相当于%Y-%m-%d |
假定时间方面
符号 | 说明 |
---|---|
date -s | 设置当前时间,只有root 权限才能设置,其他只能查看 |
date -s 20080523 | 设置成20080523 ,这样会把具体时间设置成空00:00:00 |
date -s 01:01:01 | 设置具体时间,不会对日期做更改 |
date -s "01:01:01 2008-05-23" | 这样可以设置全部时间 |
date -s "01:01:01 20080523" | 这样可以设置全部时间 |
date -s "2008-05-23 01:01:01" | 这样可以设置全部时间 |
date -s "20080523 01:01:01" | 这样可以设置全部时间 |
时间戳
时间->时间戳:date +%s
时间戳->时间:date -d@1508749502
Unix
时间戳(英文为Unix epoch
, Unix time
, POSIX time
或 Unix timestamp
)是从1970
年1
月1
日(UTC/GMT
的午夜)开始所经过的秒数,不考虑闰秒
cal
指令
语法
cal [参数][月份][年份]
cal
cal 2022
cal -3
功能
用于查看日历等时间信息,如只有一个参数,则表示年份(1-9999
),如有两个参数,则表示月份和年份
选项
选择 | 描述 |
---|---|
-3 | 显示系统前一个月,当前月,下一个月的日历 |
-j | 显示在当前年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数 |
-y | 显示当前年份的日历 |
find
指令
语法
find pathname -options
find /usr/include/ -name stdio.h
功能
- 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
Linux
下find
命令在目录结构中搜索文件,并执行指定的操作Linux
下find
命令提供了相当多的查找条件,功能很强大。由于find
具有强大的功能,所以它的选项也很
多,其中大部分选项都值得我们花时间来了解一下- 即使系统中含有网络文件系统(
NFS
),find
命令在该文件系统中同样有效,只你具有相应的权限 - 在运行一个非常消耗资源的
find
命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系
统可能会花费很长的时间(这里是指30G
字节以上的文件系统)
选项
选项 | 说明 |
---|---|
-name | 按照文件名查找文件 |
grep
指令
语法
grep [选项] 搜寻字符串 文件
grep '1234' file.txt
将所有匹配到1234
的内容显示出来
grep 'c++' file.txt
grep -i 'c++' file.txt
grep -v 'c++' file.txt
grep -vi 'c++' file.txt
grep -nvi 'c++' file.txt
功能
- 行文本过滤工具
- 在文件中搜索字符串,将找到的行打印出来
选项
选项 | 说明 |
---|---|
-i | 忽略大小写的不同,所以大小写视为相同 |
-n | 顺便输出行号 |
-v | 反向选择,亦即显示出没有搜寻字符串内容的那一行 |
zip/unzip
指令
语法
zip 压缩文件.zip 目录或文件
zip test.zip tar_package
tar_package 文件名
unzip test.zip
zip -r test.zip tar_package
rm -rf *
将当前目录中所有的都删除 <---- > rm -rf ./*
默认情况下,几乎所有的解压工具,解压出来的原始数据,都会被放在当前路劲下。
unzip test.zip -d 指明的路劲
为什么要打包压缩?
- 节约空间
- 我们下载下来的软件是压缩包,曾经提供软件的人,上传的是压缩包!
- 所有的软件写好之后,不是只有一个文件的!各种部署
所有的互联网公司后台都是Linux 系统,开发人员开发的所有软件,将来都要部署在Linux系统上的,所以所有的软件都要打包压缩,上传到Linux上,进行安装部署。
功能
将目录或文件压缩成zip格式
选择
选择 | 描述 |
---|---|
-r | 递归处理,将指定目录下的所有文件和子目录一并处理 |
tar
指令
语法
tar [-cxtzjvf] 文件与目录 .... 参数:
打包 - 压缩
tar czf test.tgz tar_package
c 创建 z 压缩 f 文档名 tgz(tar.gz) tar 打包 gz 压缩
tar xzf test.tgz
x 解包 z 解压 f 文件名
tar -zcvf test.tgz tar_package
把tar_package 压缩为 test.tgz,并且显示出压缩过程
tar vxzf test.tgz tar_package
显示解压的过程
tar xzf test.tgz -C 指定路径
解压到指定的路径
tar xzvf test.tgz -C 指定路径
解压到指定路径, 显示过程
-
Linux 下是否几乎支持所有种类的压缩包
是的
-
为什么Linux下会支持
Linux面对的平台非常多
-
遇到不懂的压缩包,怎么办
test.XXX 网上搜索 centos .XXX 后缀如何解法
功能
打包/解包,不打开它,直接看内容
选择
选择 | 描述 |
---|---|
-c | 建立一个压缩文件的参数指令(create 的意思) |
-x | 解开一个压缩文件的参数指令! |
-t | 查看tarfile 里面的文件! |
-z | 是否同时具有gzip 的属性?亦即是否需要用gzip 压缩? |
-j | 是否同时具有bzip2 的属性?亦即是否需要用bzip2 压缩? |
-v | 压缩的过程中显示文件! 这个常用,但不建议用在背景执行过程! |
-f | 使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数! |
-C | 解压到指定目录 |
bc
指令
bc
命令可以很方便的进行浮点运算
Linux 下的计算器
echo "1 + 2 + 3 + 4" | bc
uname -r
指令
语法
uname [选项]
uname -r
3.10.0-1160.11.1.el7.x86_64
x86
因特尔 x86_64
64位的 x86_32
简写 x86
x86_64
简写 x_64
功能
uname
用来获取电脑和操作系统的相关信息。
uname
可显示linux
主机所用的操作系统的版本、硬件的名称等基本信息
选择
选择 | 说明 |
---|---|
-a -all | 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称 |
热键
键 | 说明 |
---|---|
[Tab] | 具有『命令补全』和『档案补齐』的功能 一下不行按两个 命令的自动补齐 |
[Ctrl]-c | 让当前的程序『停掉』 终止失控程序 |
[Ctrl]-d | 通常代表着:『键盘输入结束(End Of File , EOF 戒 End OfInput )』的意思;另外,他也可以用来取代exit |
Ctrl + r
搜索历史命令
history
查看历史记录
关机
语法
shutdown [选项] ** 常见选项:**
云服务器是 不需要关机的 永远不关机
选择
选择 | 说明 |
---|---|
-h | 将系统的服务停掉后,立即关机 |
-r | 在将系统的服务停掉之后就重新启动 |
-t sec | -t 后面加秒数,亦即『过几秒后关机』的意思 |
扩展命令
- 安装和登录命令:
login
、shutdown
、halt
、reboot
、install
、mount
、umount
、chsh
、exit
、last
- 文件处理命令:
file
、mkdir
、grep
、dd
、find
、mv
、ls
、diff
、cat
、ln
- 系统管理相关命令:
df
、top
、free
、quota
、at
、lp
、adduser
、groupadd
、kill
、crontab
- 网络操作命令:
ifconfig
、ip
、ping
、netstat
、telnet
、ftp
、route
、rlogin
、rcp
、finger
、mail
、nslookup
- 系统安全相关命令:
passwd
、su
、umask
、chgrp
、chmod
、chown
、chattr
、sudo ps
、who
- 其他命令:
tar
、unzip
、gunzip
、unarj
、mtools
、man
、unendcode
、uudecode
shell命令以及运行原理
Linux
严格意义上说的是一个操作系统,我们称之为核心(kernel) ,但我们一般用户,不能直接使用kernel
。
而是通过kernel
的"外壳"程序(shell
),来与kernel
沟通。
如何理解?为什么不能直接使用kernel
?
- 从技术角度,
Shell
的最简单定义:命令行解释器(command Interpreter)主要包含:- 将使用者的命令翻译给核心(
kernel
)处理 - 同时,将核心的处理结果翻译给使用者
- 将使用者的命令翻译给核心(
shell
对于Linux
,主要是对我们的指令进行解析,解析指令给Linux
内核。反馈结果在通过内核运行出结果,通过shell
解析给用户
shell
外壳程序
我们centos 7
常用的命令行解释器(shell
) 叫bash
cat、
ln`
- 系统管理相关命令:
df
、top
、free
、quota
、at
、lp
、adduser
、groupadd
、kill
、crontab
- 网络操作命令:
ifconfig
、ip
、ping
、netstat
、telnet
、ftp
、route
、rlogin
、rcp
、finger
、mail
、nslookup
- 系统安全相关命令:
passwd
、su
、umask
、chgrp
、chmod
、chown
、chattr
、sudo ps
、who
- 其他命令:
tar
、unzip
、gunzip
、unarj
、mtools
、man
、unendcode
、uudecode
shell命令以及运行原理
Linux
严格意义上说的是一个操作系统,我们称之为核心(kernel) ,但我们一般用户,不能直接使用kernel
。
而是通过kernel
的"外壳"程序(shell
),来与kernel
沟通。
如何理解?为什么不能直接使用kernel
?
- 从技术角度,
Shell
的最简单定义:命令行解释器(command Interpreter)主要包含:- 将使用者的命令翻译给核心(
kernel
)处理 - 同时,将核心的处理结果翻译给使用者
- 将使用者的命令翻译给核心(
shell
对于Linux
,主要是对我们的指令进行解析,解析指令给Linux
内核。反馈结果在通过内核运行出结果,通过shell
解析给用户
shell
外壳程序
我们centos 7
常用的命令行解释器(shell
) 叫bash