要么改变世界,要么适应世界

linux常用命令

2020-02-25 22:30:00
331
目录

本文篇幅较大,下面是目录 Bash快捷键 文件及目录操作命令 权限相关命令 重定向相关与管道命令 挂载文件系统 磁盘管理

Bash快捷键

删除光标到行首的所有字符:

Ctl + U 

删除当前光标到前边的最近一个空格之间的字符

Ctl + W   

文件及目录操作命令

显示当前所在目录 (绝对路径)

$ pwd

进入某个目录

$ cd [path]

若path缺省,则会进入到用户主目录

列出当前目录下所有的文件

$ ls [选项] [目录或者文件]

说明 对于目录,该命令列出其中所有的子目录和文件,缺省情况下是指向当前目录;对于文件,该命令列出文件名及其相关的文件属性信息。该命令常用选项如下表所示。

常用选项 含义
-a All。列出目录中全部文件,包含隐藏文件、父目录和当前目录。
- l long。列出目录内容的细节,包括权限、所有者、组群、大小等。
-F File type。在每一个列举项目后添加符号表明其类型。
-R 递归列举当前目录下所有目录的内容。
-S Size。按文件大小排序。

显示文本文件

$ cat fileName

注意 fileName需要包含路径,若不指明,则认为是当前目录,若要显示行数,添加-n选项即可。

$ cat fileName -n

查看前5行

$ head -5 fileName

查看后5行

$ tail -5 filename

查看两个文件之间的差异

$ diff filename1 filename2

文件或目录的复制

$ cp [选项] 源文件或目录 目标目录

若指定多个源文件或者目录复制到目标目录,则源文件或源目录之间用空格分隔,常用选项若下表

常用选项 含义
-a 在备份中尽可能多的保持源文件的结构和属性。
- f 覆盖已经存在的目标文件而不加以提示。
- i 在覆盖目标文件前给出提示并要求用户确认。
-r 若源文件为目录,递归复制该目录下所有子目录和文件。

文件或目录的移动(重命名)

$ mv 源文件或者目录 目标文件或目录

当目标目录不存在时,则将源文件或目录重命名;若需要将多个文件夹或者文件移到源文件,可用下面的命令

$ mv 文件1 文件2 文件3 ... -t 目标文件夹

建立新目录

$ mkdir [选项] 目录名

该命令需要用户拥有写的权利

删除文件或者目录

$ rm [选项] 文件或者目录

若需要删除多个文件或者文件夹,则文件或文件夹之间用空格隔开

常用的选项如下

常用选项 含义
-f 不给出提示,强行删除。
- r 删除文件列表中指定的目录,若无此标志则不删除目录。
- i 提示是否删除。
-R 递归删除目录,删除整个目录及其所有子目录。

文件查找

按照名字搜索

$ find . -name "*.txt" # 在当前目录下查找所有txt文件

也可以查找所有非.txt文件。

$ find . ! -name "*.txt"

按照条件

说明
-atime 访问时间,单位是天
-amin 访问时间,单位是分钟
-mtime 修改时间 ,单位是天(内容发生变动)
-mmin 修改时间 ,单位是分钟(内容发生变动)
-size -n 大小小于n个字节的文件
-size +n 大小大于n个字节的文件
-perm 按照权限
-user 按用户
$ find . -amin -5 -type f # 最近5分钟访问的文件 

$ find . -type f -size -1k  # 查找低于1kb的文件

$ find . -type f -perm 644 # 查找权限是644的文件, 权限的知识在下面

$ find . -type f -user yalexin # 查找yalexin用户拥有的文件

grep文本搜索

语法:

grep match_patten  [参数] fileName

参数 说明
-o 只输出匹配的文本,如在1,txt中寻找testgrep "test" -o 1.txt
-v 只输出没有匹配的文本
-c 统计匹配的字段在文本中出现的次数。如在1,txt中寻找a的个数:grep "a" -c 1.txt
-n 打印匹配的行号
-i 忽略大小写,如在1,txt中寻找a或者Agrep "a" -i 1.txt

sort排序

参数 说明
-n 按数字进行排序
-d 按字典序进行排序
-r 逆序排序
-k n 指定按第N列排序

例如,将1.txt文件中的第一列按照数字,以行为单位逆序排列:

$ sort -nrk 1 1.txt

uniq 消除重复行

不重复显示1.txt的内容:

$ cat 1.txt | uniq

统计文本中各行出现的次数:

$ cat 1.txt | uniq -c

找出重复行:

$ cat 1.txt | uniq -d

cut切割文本

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

cut可以将文件作为数据源,也可以通过管道的方式指定数据源地方

语法:

$ cut 参数 数据

主要参数:

参数 说明
-b 按字节为单位切割
-c 按字符为单位切割
-d 自定义分隔符,默认为制表符
-f 制定切割的区间
-n 取消分割多字节字符

例如:ls -l | cut -c 1-10可以显示出当前文件夹下所有文件和文件夹的权限。

特别要注意一下,假如我们想要用-b提取每一行的中文时,要注意,在utf-8的编码下一个汉字占用3个字节,如果开始和结束位置没有定位正确,切割的结果将会有乱码现象。

paste拼接文本

将两个文本文件的内容拼接。

例如:文件一内容:

1
2
3
4

文件二内容:

文字一
文字二
文字三
文字四

$ paste test1.txt test2.txt
1	文字一
2	文字二
3	文字三
4	文字四

默认是以制表符(Tab)为定界符,可以利用-d制定定界符,如以空格:paste test1.txt test2.txt -d " "

wc统计工具

统计行数:

$ wc -l fileName

统计单词数

$ wc -w fileName

统计字符数:

$ wc -c fileName

sed文本替换

将第一个匹配的内容替换:

$ sed 's/原内容/新内容/' fileName

全局替换:

$ sed 's/原内容/新内容/g' fileName

默认情况下是显示替换后的内容,对原文件不修改,假如想要修改原文件,加上-i

$ sed 's/原内容/新内容/g' fileName -i

或者将修改后的内容放到新文件中:

$ sed 's/原内容/新内容/g' fileName > newFileName

权限相关命令

权限的含义:Linux系统中的每个文件和目录都有相应的访问许可权限,访问权限分为只读(r),可写(w)和可执行(x)三种。有三种不同类型的用户可对文件或目录进行访问,分别是文件所有者(u),同组用户(g)和其他用户(o)。所有的文件和目录都被创建它们的人所“拥有”,只要你是这个文件的所有者或你登录为根用户,你就拥有了改变所有者、组群和其他人权限的权利。

查看当前文件夹下的文件夹或者文件的权限

$ ls -l

{% asset_img 1.png %}

第一个是说明是文件(-)还是文件夹(d),然后是9个字符,每三个一组,表明了权限属性,分别是所有者、所属组、其他人拥有的权限,

使用文字设定法改变权限

$ chmod [用户身份] [操作符][mode] 文件名 [-R]

可改变用户或同组用户或其它用户对指定文件名的存取权限,在文字设定法中,chmod命令各选项含义如下表

符号 含义
用户身份 u user,表示文件或目录的所有者。
用户身份 g group,表示与文件主同组的用户。
用户身份 o other,表示其他用户。
用户身份 a all,表示所有用户。
操作符 增添权限
操作符 删除权限
操作符 赋予给定权限并取消其它所有权限。
权限 r 读取权
权限 w 写入权
权限 x
-R 递归修改子目录及文件

如给所有者添加执行权限

$ chmod u+x 45

{% asset_img 2.png %}

也可以给多个用户修改权限

$ chmod u+x,g+w 文件名

使用数字法改变权限

首先说明w、x、r、的权值如下

r ---------- 4

w --------- 2

x ---------- 1

因此一组权限的组合可以由下表所示

数字和 权限组合
0 ---
1 --x
2 -w-
3 -wx
4 r--
5 r-x
6 rw-
7 rwx

例如我们想给某个文件或文件夹的权限改成rwxr-x-w-,就可以用命令

$ chmod 752 文件名或者文件夹名

如果熟记上面的对应关系,就可以很方便地修改权限了。

重定向与管道命令

Linux默认的标准输入(stdin)是键盘,标准输出(stdout)是显示器。如果需要从非标准输入输出设备进行输入或输出,则需要通过输入输出重定向。

输入重定向

如:命令 < 文件名

将命令(或可执行程序)的标准输入重定向到指定的文件中。

例如:

$ cat < /etc.txt1

表示将/etc.txt1的文件内容作为cat命令的输入,显示到屏幕。

输出重定向

如:命令 > 文件名

将命令(或可执行程序)的标准输出或标准错误输出重定向到指定文件中。

例如

$ ls  /etc > /test1/etc.txt 

表示将/etc目录下的文件列表输出到文件/text1/etc.txt中。

追加重定向

如: 命令 >> 文件名

表示将一条命令(或可执行程序)的输出结果追加到指定文件的后面。

管道

如: 命令 | 命令

表示将一个命令(或程序)的输出作为另一个命令(或程序)的输入。

挂载文件系统

fdisk命令

fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区。它采用传统的问答式界面,而非类似DOS fdisk的cfdisk互动式操作界面,因此在使用上较为不便,但功能却丝毫不打折扣。

$ fdisk(选项)(参数)

选项 功能说明
-b<分区大小> 指定每个分区的大小
-l 列出指定的外围设备的分区表状况
-s<分区编号> 将指定的分区大小输出到标准输出上,单位为区块
-u 搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址
-v 显示版本信息

参数:指定要进行分区或者显示分区的硬盘设备文件。

挂载命令

命令如下:

$ mount [选项] 设备 存放目录

该命令可以将Linux支持的文件系统挂载到指定的目录。常用选项如下表所示:

常用选项 含义
-a 挂上/etc/fstab下列出的全部文件系统
-t 指定挂上的文件系统的名称
-n 挂上文件系统时不把文件系统的数据写入/etc/mtab中
-w 将文件系统设定为可读写

挂载软盘

命令如下:

$ mount  /dev/fd0  /mnt/floppy

事先在/mnt/目录下建立floppy目录,之后将设备号为fd0的软盘挂载到该目录。

挂载U盘

命令如下:

$ mount  /dev/sda1  /mnt/usb

在/mnt/目录下建立usb目录,将设备号为sda1的U盘挂载到该目录。

挂载光盘

命令如下:

$ mount  /dev/cdrom  /mnt/cdrom 

在/mnt/目录下建立cdrom目录,将设备名为cdrom的光盘挂载到该目录。

卸载命令

命令如下:

$ umount 设备

该命令可将已经挂载的指定设备进行卸载。某些设备,如光盘,若不卸载将无法取出。

磁盘管理

查看磁盘空间

查看磁盘大小和利用率:

$ df -h

-h是以易读的方向显现,自动更改单位,即GB/MB/KB,不加该选项则以B为单位显示。

查看当前目录占用空间大小:

$ du -sh

-s是递归整个目录大小

查看当前文件夹下各个文件的大小:

$ du -sh *

打包和压缩

打包是指将几个文件或目录变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

  • 打包

    参数 说明
    -c 产生新的包
    -f 指定包的文件名
    -r 指定新文件加入到包中
    -t 列出包中文件
    -u 更新包中某个文件
    -v 显示进度

    例如:打包当前文件夹下所有的txt文件并显示进度:

    $ tar -cvf new.tar *.txt
    
    
  • 压缩:

    $ gzip new.tar
    
    

    将会生成new.tar.gz的文件。

也可以一条命令将文件打包并压缩:

$ tar -cvzf one.tar.gz *.txt

-z是调用gzip

解压缩和解包

  • 解压缩

    $ gunzip one.tar.gz
    
    
  • 解包

    $ tar -xf one.tar
    
    

这里同样支持一条命令将压缩包解压并解包:

$ tar -xzf one.tar.gz

除了gzip,还可以用bz2。用法如下:

类型 调用方式 对应压缩包文件
gzip -z .gz
bzip2 -j .bz2
历史评论
开始评论