一、Linux常用命令详解

这些命令基本上都是需要掌握的

 pwd        cd        ls        du        mkdir        touch        ln        cp        rm        rmdir        mv        tree        which

 find        type      cat      more        less        head        tail        sort        sort        uniq        wc        grep        gzip

 gunzip        bzip2        bunzip2        zip        unzip        tar        cut

目录

1.目录和文件的基本操作

(1)pwd命令

(2)cd命令

 (3)ls命令

 (4)du命令

 2.创建目录和文件

(1)mkdir命令

(2)touch命令

(3)ln命令

 3.复制、删除、移动目录和文件

(1)cp命令

(2)rm命令

(3)rmdir命令

 (4)mv命令

(5)tree命令

4.查找目录和文件

 (1)which命令

(2)find命令

5.查看文件内容

(1)cat命令

 (2)nl命令

(3)more和less命令

(4)head和tail命令

(5)sort命令

(6)uniq命令

(7)file命令

(8)md5sum命令

(9)diff命令

6.统计和检索文件内容

(1)wc命令

(2)grep命令

7.备份与恢复文档

(1)gzip和gunzip命令

(2)bzip2和bunzip2命令

(3)zip和unzip命令

(4)tar归档和释放命令


1.目录和文件的基本操作

(1)pwd命令

查看当前的工作目录,而且是以绝对路径显示的 ,pwd命令其实读取的是$PWD环境变量的值

(2)cd命令

切换工作目录

cd /             切换到根目录
cd /usr        切换到根目录下的usr目录
cd ../           切换到上一级目录 或者  cd ..
cd ~            切换到home目录
cd -             切换到上次访问的目录

cd !$            把上个命令的参数作为cd参数使用

 (3)ls命令

显示指定目录内容及目录中隐藏的文件

-a  --all:     显示所有文件,包括以“.”开头隐藏的文件

-l:                 使用长列表格式显示

-d:             只显示目录本身的属性,不显示目录中的内容,一般结合-l使用

-h:             显示目录或文件大小,需要结合-l结合使用,将会显示KB、MB等单位

-R:             以递归的方式显示指定目录及其子目录中的所有内容

 (4)du命令

统计目录及文件的空间占用情况

-a:             统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录

-h:             显示出统计结果,使用-h选项后将显示出KB、MB等单位

-s:             只统计每个参数所占用的空间总的大小,而不是统计每个子目录,文件的大小,-sh统

 2.创建目录和文件

(1)mkdir命令

创建新的目录

-p:             嵌套模式,连续创建空目录

2)touch命令

创建空文件

(3)ln命令

创建链接(link)文件

链接分为两种 : 硬链接(hard link)与软链接(symbolic link)。

格式:ln  [-s]  源文件或目录…  链接文件或目标目录

常用命令选项:   -s:建立符号链接文件(省略此项则建立硬链接)

可以使用ls  -il查看inode、链接数、符号链接引用

硬链接是存在同一个文件系统中,而软链接可以跨越不同的文件系统。

软链接:

1.软链接是以路径的形式存在(指向的是原文件的路径),类似于Windows中的快捷方式

2.软链接可以跨文件系统 ,硬链接不可以

3.软链接可以对一个不存在的文件名进行链接

4.软链接可以对目录进行链接

5.软连接的文件有自己的inode,跟原文件不一样

6.删除软链接并不影响被指向的原文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。

硬链接:

1.硬链接是以文件副本的形式存在,不占用实际空间

2.不允许给目录创建硬链接

3.硬链接只有在同一个文件系统中才能创建

4.硬链接的文件的inode跟原文件一样

5.由于硬链接是有着相同 inode 号,仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。

注意:

1、ln命令会保持每一个链接文件的同步性。不论改动了哪一处,其它的文件都会发生相同的变化

2、ln命令创建的链接分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,软链接的文件很小,只有几个字节,硬链接是 ln 源文件 目标文件,没有参数-s, 它会在选定的位置上生成一个和源文件大小相同的文件。无论是软链接还是硬链接,文件都保持同步变化

3、ln命令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。

 3.复制、删除、移动目录和文件

(1)cp命令

复制文件或目录

格式:cp 选项 源文件或者目录 目标文件或者目录

-f覆盖目标同名文件或目录时不进行提醒,而是直接强制复制
-i

覆盖目标同名文件或目录时提醒用户确认

-p复制时保持源文件的权限,属主及时间标记等属性不变
-r复制目录时必须使用此选项,表示递归复制所有文件及子目录

(2)rm命令

删除文件或目录

 格式:rm 选项 源文件或目录

-f

删除文件或目录时不进行提醒,而直接强制删除

-i删除文件或目录时提醒用户确认
-r

删除目录时必须使用此选项,表示递归删除整个目录树(应谨慎使用)

3)rmdir命令

删除空目录

格式:rmdir 选项 目录

-p删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除
-v显示指令执行过程

注意:该命令的功能是删除空目录,一个目录被删除之前必须是空的。(注意,rm -r dir 命令可以代替rmdir,但是很危险,万一它突然就不是空的呢?),另外删除某目录时必须具有对父目录的写权限。使用 ls -al 命令来检查该目录是否为空。

 (4)mv命令

移动文件或目录,如果目标位置与源位置相同,则效果相当于为文件或目录改名

格式:mv 【选项】 【源文件或目录】 【目标文件或目录】

-i若存在同名文件,则向用户询问是否覆盖
-fforce强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-b当文件存在时,覆盖前为其创建一个备份
-u若目标文件已存在需移动的同名文件,且源文件比较新,才会更新文件
-t指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

(5)tree命令

以树形结构显示目录下的内容

4.查找目录和文件

查找用户所执行的命令文件存放的目录

 (1)which命令

格式:which【选项】 【命令名】 

-n指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名
-p与-n参数相同,但此处的<文件名长度>包括了文件的路径
-w指定输出时栏位的宽度
-V显示版本信息

 实例:

[root@localhost ~]# which grep
alias grep='grep --color=auto'
    /usr/bin/grep
[root@localhost ~]# which touch
/usr/bin/touch
[root@localhost ~]#

(2)find命令

查找文件和目录

 find查找命令是Linux系统中最重要和最常用的命令之一。查找用于根据与参数匹配的文件指定的条件来搜索和查找文件和目录列表的命令。查找可以在各种条件下使用,您可以通过权限,用户,组,文件类型,日期,大小等可能的条件查找文件。

 格式:find  查找范围    查找条件

 第一部分:按文件名称查找

-name通过文件名查找
-iname与-name相同,查找名为filename的文件,但忽略大小写,即不区分大小写

第二部分:按文件类型查找

-type b/d/c/p/l/f  //按照文件类型查找,查是块设备、目录、字符设备、管道、符号链接、普通文件。 块设备

-type查找某一类型的文件,诸如:

b块设备文件
d目录
c字符设备文件
p管道文件
l符号链接文件
f普通文件
ssocket文件

第三部分:根据日期和时间查找文件和目录

-mtime   -n +n   #按文件更改时间来查找文件,-n指n天以内,+n指n天以前

-atime    -n +n   #按文件访问时间来查,-n指n天以内,+n指n天以前

-ctime    -n +n   #按文件创建时间来查找文件,-n指n天以内,+n指n天以前

注:我们可以使用stat命令来查看一个文件的时间信息。

1. 在/root下查找文件更新日是在距现在时刻二天以内的文件

# find /root/ -mtime -2

2. 在/root下查找文件更新日是在距现在时刻二天以上的文件

# find /root/ -mtime +2

3.在/root下查找文件更新日是在距现在时刻一天以上二天以内的文件

# find /root/ -mtime 2

注:-atime、-ctime与-mtime用法类似,可以自行查看man帮助。

4.查找文件更新日时在距现在时刻二分钟以内的文件

#find ./ -mmin -2

5.查找文件更新日时在距现在时刻二分钟以上的文件

#find ./ -mmin +2

6.查找文件更新日时在距现在时刻一分钟以上二分钟以内的文件

#find ./ -mmin 2

注:-amin、cmin与-mmin用法类似,可以自行查看man帮助。

7.查找文件更新时间比文件abc的内容更新时间新的文件

#find ./ -newer abc

 第四部分:根据大小查找文件

-size [+/-]n

按照文件大小查询文件,+n表示文件大小大于n,-n表示文件大小小于n。常用单位:k, M, G

#find  /tmp  -size   2M           //查找在/tmp 目录下等于2M的文件

#find  /tmp  -size  +2M          //查找在/tmp 目录下大于2M的文件

#find  /tmp  -size  -2M          //查找在/tmp 目录下小于2M的文件

#find /tmp -size +50M -size -100M     //找到大于50MB且小于100MB的所有文件。

#find / -type f -name “*.mp3” -size +10M -exec rm {} \;  //查找超过10MB的所有.mp3文件,并使用一个命令删除它们。

find 命令默认会递归查找整个目录树,而这非常消耗时间和资源。好在目录查找的深度可以手动指定。例如我们只想查找一到两层以内的子目录,可以通过 maxdepth 选项来指定。

# find ./test -maxdepth 2 -name  "*.php"

# find ./test -maxdepth 1 -name  "*.php"

第二个示例中指定了maxdepth 为1,表明最多只查找一层内的子目录,也就是只查找当前文件夹。

当我们只想在当前目录下查找,而不是查找整个目录树的时候,这个选项会特别有用。

与maxdepth 选项相似,还有一个选项叫做 mindepth ,正如名字所表示的那样,它会至少到达第 N 层子目录后才开始查找文件。

(3)type命令

type命令主要用于区分一个命令到底是shell自带的还是外部独立的二进制文件提供的。如果是shell自带的则会提示此命令为shell buildin,否则会列出命令的位置。例如:cd为shell自带的命令,当用which查找时,which会按照PATH变量设置的路径进行搜索,结果显示no cd in...;用type cd则显示cd为shell buildin命令。ssh不是shell自带命令,用type时会显示ssh的路径。

# which cd

/usr/bin/which: no cd in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

# type cd

# type ssh

5.查看文件内容

(1)cat命令

 显示文件的内容

格式:cat 选项 目标文件

 (2)nl命令

将指定的文件添加行号标注后写到标准输出。如果不指定文件或指定文件为"-" ,程序将从标准输入读取数据

-b  :指定行号指定的方式,主要有两种

-b a :表示不论是否为空行,也同样列出行号(类似 cat -n)

-b t :如果有空行,空的那一行不要列出行号(默认值)

3)more和less命令

 分页查看文件内容

使用“more”命令查看超过一屏的文件内容时,将进行分屏显示,并在下面的左下角显示当前内容在这个文件中的百分比,在阅读时可以按Enter键向下滚动查看,按Space键可以向下翻一屏,按“q”键退出并返回原来的命令环境

less命令使用方法与more命令基本类似,但是比more更好的是,less命令可以结合管道符“|”分屏查看执行命令时输出的信息时,既可以向下翻页也可以向上翻页,而“more”命令只能向下翻页,不能向上翻页

管道(|):每一个命令都有输入输出,把前一个命令的输出当做第二个命令的输入,一个命令的输入可以从文件中读取,也可以从前一个命令的结果中读

4)head和tail命令

查看文件开头或末尾的部分内容

head命令显示文本开头默认10行 “-n”选项指定需要显示多少行的内容

tail命令默认显示文本末尾10行,此命令一般适用于查看日志文件(因为较新的日志记录总是添加到文件最后),这时候需要配合“-f”选项跟踪文件尾部内容的动态更新,便于实时监控文件内容的变化。tail -f=tailf

5)sort命令

它将文件进行排序,并将排序结果标准输出

格式:sort 选项 目标文件


 

-u唯一,排序并且排除重复项
-r

反向排序

-o将排序结果输出到源文件
-n按照数字进行排序,默认数字会被当作字符串进行比较
-t -k

-t :指定分隔符,默认tab为分隔符

-k: 指定按照哪一个分割区域进行排序

-t :指定分隔符,默认tab为分隔符

-k: 指定按照哪一个分割区域进行排序

# cat facebook.txt

banana:30:5.5

apple:10:2.5

pear:90:2.3

orange:20:3.4

# sort -n -k 2 -t : facebook.txt

apple:10:2.5

orange:20:3.4

banana:30:5.5

pear:90:2.3

说明:

# -n 按照数字进行排序

# -t 此例中指定 : 为分隔符

# -k 此例中按照分割的第二区域进行排序

6)uniq命令

用户去除文件中的重复行,一般与sort命令结合使用

 文件经过处理后在它的输出文件中可能会出现重复的行。例如,使用cat命令将两个文件合并后,再使用sort命令进行排序,就可能出现重复行。这时可以使用uniq命令将这些重复行从输出文件中删除,只留下每条记录的唯一样本。

-c在每列旁边显示该行重复出现的次数
-i忽略大小写
-d仅显示重复出现的行列
-u仅显示出一次的行列

7)file命令

用于显示文件的类型

(8)md5sum命令

计算和校验文件的md5值

9)diff命令

全拼difference,比较文件的差异,常用于文本文件。

现在让我们来看一下diff是如何工作的,假设有两个文件:

//file1.txt

I need to buy apples.

I need to run the laundry.

I need to wash the dog.

I need to get the car detailed.

//file2.txt

I need to buy apples.

I need to do the laundry.

I need to wash the car.

I need to get the dog detailed.

我们使用diff比较他们的不同:

# diff file1.txt file2.txt

2,4c2,4

< I need to run the laundry.

< I need to wash the dog.

< I need to get the car detailed.

---

> I need to do the laundry.

> I need to wash the car.

> I need to get the dog detailed.

我们来说明一下该输出结果的含义,要明白diff比较结果的含义,我们必须牢记一点,diff描述两个文件不同的方式是告诉我们怎么样改变第一个文件之后与第二个文件匹配。我们看看上面的比较结果中的第一行 2,4c2,4 前面的数字2,4表示第一个文件中的行,中间有一个字母c表示需要在第一个文件上做的操作(a=add,c=change,d=delete),后面的数字2,4表示第二个文件中的行。

2,4c2,4 的含义是:第一个文件中的第[2,4]行(注意这是一个闭合区间,包括第2行和第4行)需要做出修改才能与第二个文件中的[2,4]行相匹配。

接下来的内容则告诉我们需要修改的地方,前面带< 的部分表示左边文件的第[2,4]行的内容,而带> 的部分表示右边文件的第[2,4]行的内容,中间的 --- 则是两个文件内容的分隔符号。

注:使用diff可以比较两个目录,其比较格式是  diff  directory1  directory2

6.统计和检索文件内容

1)wc命令

统计文件内容中的单词数量、行数等信息,使用文件名作为参数,可以同时统计多个文件

格式:wc 选项 目标文件

-c统计文件内容中的字节数
-l统计文件内容中的行数
-w统计文件内容中的单词个数(以空格或指标位作为分隔)

(2)grep命令

检索、过滤文件内容

语法:grep [选项] 模式或关键字 文件列表

-i忽略大小写
-v取反
^以某关键字开头
$以某关键字结尾
^$空行
-r 递归检索

7.备份与恢复文档

1)gzip和gunzip命令

gzip的使用方法:

使用gzip制作的压缩文件默认的扩展名为“*.gz”,制作压缩文件时,使用“-9”选项可以提高压缩的比率,当需要用gzip命令解压缩时,只需要用带“-d”选择即可,或者直接使用gunzip命令

实例1:对当前目录下mkfile文件进行压缩

gunzip的用法

实例2:解压mkfile压缩文件

(2)bzip2和bunzip2命令

bzip2和bunzip命令用法和gzip、gunzip命令用法基本相同,"-9"选项可以提高压缩比率,使用bzip2制作的压缩文件默认的扩展名为“*.bz2”,解压缩时用“-d”选项解压缩,或者直接使用bunzip命令解压缩。

实例1:对mkfile文件压缩

实例2:对mkfile.bz2进行解压

(3)zip和unzip命令

-d从压缩文件内删除指定的文件/把压缩文件解压到指定目录中
-r递归处理,将指定目录下的所有文件和子目录一并处
-m把文件移到压缩文件中
-v查看压缩文件中的内容,但不解压,结合unzip命令使用,unzip-v压缩文件
-x压缩时排除符合条件的文件

实例1:把当前file目录及其中的子目录和文件压缩,其后缀名是”*.zip”

实例2:从压缩文件file.zip中删除1.txt文件

实例3:压缩file目录,但是不压缩里面的yjs.txt文件

实例4:把file.zip文件解压缩到/mnt目录下 “-o”选项:在不提示的情况下解压

Gzip gunzip .gz

Bzip2 bunzip2 .bz2

Zip unzip .zip

(4)tar归档和释放命令

tar命令主要用于对目录和文件进行归档。在实际备份工作中,通常在归档的同时也会将包文件进行压缩(需要调用前面的gzip和bzip2命令),以节省磁盘空间。使用tar命令时,选项前的“-”号可以省略,常用的几个选项如下:

1、制作归档备份文件

 tar  [选项]  归档及压缩文件名   需要归档的源文件或目录

-c创建(create).tar格式的包文件
-C解压时指定释放的目标文件夹
-f表示使用归档文件
-j调用bzip2程序进行压缩或解压
-p打包时保留文件及目录的权限
-P打包时保留文件及目录的绝对路径
-t列表查看包内的文件
-v输出详细信息
-x解开.tar格式的包文件
-z调用gzip程序进行压缩或解压

实例1:对/etc、/boot目录进行备份,在当前目录下生成名为yjs.tar.gz的归档压缩包

实例2:制作“*.tar.bz2”格式的归档压缩包

2、从归档文件中恢复数据

使用xf选项可以解压"*.tar.gz"和"*.tar.bz2"归档文件,-C:解压时指定释放目标文件夹

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值