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.cCtrl + x – > Y – > Entergcc mytest.c./a.outtouch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
| 选项 | 说明 |
|---|---|
-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 + cfg 1 – > Ctrl + clinux 下一切皆文件:
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、lastfile、mkdir、grep、dd、find、mv、ls、diff、cat、lndf、top、free、quota、at、lp、adduser、groupadd、kill、crontabifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookuppasswd、su、umask、chgrp、chmod、chown、chattr、sudo ps、whotar、unzip、gunzip、unarj、mtools、man、unendcode、uudecodeLinux严格意义上说的是一个操作系统,我们称之为核心(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、crontabifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookuppasswd、su、umask、chgrp、chmod、chown、chattr、sudo ps、whotar、unzip、gunzip、unarj、mtools、man、unendcode、uudecodeLinux严格意义上说的是一个操作系统,我们称之为核心(kernel) ,但我们一般用户,不能直接使用kernel。
而是通过kernel的"外壳"程序(shell),来与kernel沟通。
如何理解?为什么不能直接使用kernel?
Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
kernel)处理shell 对于Linux,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户shell 外壳程序
我们centos 7 常用的命令行解释器(shell) 叫bash