linux命令复习(一)

linux系统的命令:

ls列出当前目录下的所有文件,文件夹。

-a显示所有文件

-l显示详细信息

-R显示递归子目录结构

-ld显示目录和链接信息

file文件查看当前文件的类型

uname显示当前系统的名称

-a所有信息

-r版本

tag键就可以简化命令的输入:

1)自动补全命令

2)自动补全文件名

查看输入命令的历史记录:

使用上下按键查看之前的命令

使用history命令查看历史记录

!!重复前一个命令

!字符执行重复前一个已字符开头的命令

!-n重复n个命令之前的命令

ctrol+r搜索之前的命令

按esc之后按.键重新调用前一个命令中的参数

命令行通配符

*匹配零个或多个

?匹配任意一个字符

[0-9]匹配任意一个数字范围

[abc]匹配列表里任何字符

[^abc]匹配列表以外字符

su-切换到root用户

sudo普通用户使用管理员用户身份运行命令

id显示当前用户信息

passwd修改当前用户密码

linux文件系统的结构

linux文件系统为一个倒转的单根树状结构

文件系统的根为“/”

文件系统严格区分大小写

路径使用“/”分割,(windows中使用“\”)

当前工作目录

每一个shell或系统进程都有一个当前工作目录

使用pwd命令显示当前的工作目录

文件名称

文件的名称大小写敏感

名称最多可以为255个字符

除了正斜线外,都是有效字符

通过touch命令可以创建一个空白文件或者更新已有文件的时间

以“.”开头的文件为隐藏文件

绝对路径与相对路径

绝对路径:以“/”开头,地柜每级目录直到目标的路径。不受当前所在

工作目录限制

相对路径:以当前目录为起点,达到目标的路径。受当前所在目录限制。

cd命令可以用来切换目录

上一级".."

当前目录“.”

用户家目录“~”

上一个工作目录“-”

复制文件、目录

使用cp命令复制文件或目录

cp源文件(文件夹)目标文件(文件夹)

-r递归复制整个目录

-v显示详细信息

归档,压缩

命令zip用以压缩文件

ziplinux.ziplinux_cmd

命令unzip用以解压缩文件

unziplinux.zip

命令gzip用以压缩文件

gziplinux.net

命令tar用以归档文件(打包命令不是压缩命令。把一些文件打包成一个文件)

tar-cvfout.tarlinuxcast

tar-xvflinux.tar

tar-cvzfbackup.tar.gz/etc

-z参数将归档后的文件进行gzip压缩减少大小

查找

命令locate用以快速查找文件、文件夹

locatekeword

此命令需要预先建立数据库,数据库默认每天更新一次,可用update命令手工建立,更新数据库

命令find用以高级查找文件,文件夹

find查找位置查找参数

如:

find.-name*linuxcast

find/-name*.conf

find/-perm111

find/-typed

find/-name“a*”-execls-l{}\;

-name

-perm

-user

-group

vi、vim文本编辑器

vi是一个命令行下的文本编辑工具、支持绝大多数操作系统,并且功能已经十分强大。

linux中知名的文本编辑器还有emacs,他得功能比vim还要强大。

vim

绝大多数linux系统上均装有vim,vim比vi得功能更为强大,所以建议大家使用vim而非

vi,两者使用方法相同。

命令vim可以启动vim编辑器

一般我们通过vim+目标文件路径的形式使用vim

如果目标文件存在,则在vim文件打开文件

如果目标文件不存在,则vim新建并打开文件

vim拥有三种模式:

命令模式(常规模式)

vim启动后,默认进入命令模式,任何模式都可以通过esc键回到命令模式(可以多按几次)。

命令模式下可以通过键入不同的命令完成选择、复制、粘贴、撤销等等操作。

插入模式

在命令模式中按“i”键,即可进入插入模式,在插入模式可以输入编辑文本的内容,使用esc键可以返回命令模式。

ex模式

在命令模式中按“:”键可以进入ex模式,光标会移动到底部,在这里可以保存修改或退出vim。

命令模式常用的命令如下:

i在光标前插入文本

o在当前行的下面一行插入新行

dd删除整行

yy将当前行的内容放入缓冲区(复制当前行)

n+yy将n行的内容放入缓冲区(复制n行)

p将缓冲区中得文本放入光标后(粘贴)

u撤销上一个操作

r替换当前字符

ex模式下常用的命令如下:

:w保存当前修改

:q退出

:q!强制退出,不保存当前修改

:x保存并退出,相当于:wq

:setnumber显示行号

:!系统命令执行一个系统命令并显示结果

:sh切换到命令行,使用ctrl+d切换会vim

磁盘基本概念

cylinder(柱面)

sector(扇区)

head(磁头)

磁盘在LINUX中得表示

Linux所有设备都被抽象为一个文件,保存在/dev目录下。

设备名称一般为hd[a-z]或sd[a-z]([a-z]为分区号),如hda,hdb,sda,sdb

IDE设备的名称未hd[a-z],SATA、SCSI、SAS、USB等设备的名称为sd[a-z]

分区概念

将一个磁盘逻辑的分为几个区,每个区当做独立磁盘,以方便使用管理。

不同分区用:设备名称+分区号方式表示,sda1、sda2。

主流的分区机制分为MBR和GPT两种。

MBR

MBR(MasterBootRecord)是传统的分区机制,应用于绝大多数使用BIOS的PC

设备。

MBR支持32bit和64bit系统

MBR支持分区数量有限

MBR只支持不超过2T的硬盘,超过2T的硬盘将之恩给你使用2T空间(有第三方解决方法)

MBR结构

前416引导代码部分,接下来4个16字节是分区表,剩下的两个字节启动标识

(55hAAh)

MBR分区

主分区

最多只能创建4个主分区

扩展分区

一个扩展分区会占用一个主分区位置

逻辑分区

linux最多支持63个IDE分区和15个SCSI分区

GPT(GUIDPartitionTable)是一个较新的分区机制,解决了MBR得很多缺点。

*支持超过2T的硬盘

*向后兼容MBR

*必选使用64bit系统

*Mac、Linux系统都能支持GPT分区格式

Windows764bit、windowsServer200864bit支持GPT

FDISK分区工具

fdisk是来自IBM的老牌分区工具,支持绝大多数操作系统,几乎所有的Linux

的发行版本都装fdisk,包括在Linux的rescue模式下的依然能够使用。

fdisk是一个基于MBR的分区工具,所以如果需要使用GPT,则无法使用fdisk进行

分区。

fdisk命令只有具有超级用户权限才能够运行

使用fdisk-I可以列出所有安装的磁盘进行其分区信息

使用fdisk/dev/sda可以对目标磁盘进行分区操作

分区之后需要使用partprobe命令让内核更新分区信息,否则需要重启才能识别

新的分区

/proc/partitions文件也可用来查看分区信息。

文件系统

操作系统通过文件系统管理文件及数据,磁盘或区分需要创建文件系统之后

才能够为操作系统使用,创建文件系统的过程又称之为格式化。

*没有文件系统的设备又称之为裸设备。

*常见的文件系统有fat32、NTFS、ext2、ext3、ext4、xfs、HFS等

*文件系统之间的区别:日志、支持的分区大小、支持的单个文件大小、性能等。

windows下的主流文件系统是:NTFS

Linux下的主流文件系统是:Ext3、Ext4。

MKE2FS

命令mke2fs用来创建文件系统

mke2fs-text4/dev/sda3

常用的参数:

-bblocksize指定文件系统块大小。

-c建立文件系统时检查坏损块

-Llabel指定卷标

-j建立文件系统日志

命令mkfs也可用于创建文件系统,相较于mke2fs简单,但是支持的参数较少,不能进行

精细化的控制。

*mkfs.ext3/dev/sda3

命令dumpe2fs可以用来查看分区的文件系统信息

dumpe2fs/dev/sda2

JOURNAL日志

带日志的文件系统(ext3、ext4)拥有较强的稳定性,在出现错误时可以进行恢复。

使用带日志的文件系统,文件系统会使用一个叫做“两阶段提交”的方式进行磁盘操作,

当进行磁盘操作时,文件系统进行一下操作:

(1)文件系统将准备进行的事务的具体内容写入日志

(2)文件系统进行操作

(3)操作成功后,将事物的具体内容从日志中删除

这样做的好处是,当事物执行的时候如果出现意外(如断电或磁盘故障)

可以通过查询日志进行恢复操作。缺点是回丧失一定的性能(额外的日志读写操作)。

命令e2label可以用来为文件系统添加标签

e2label/dev/sda2显示sda2的系统标签

e2label/dev/sda2LINUXCASAT将sda2的系统标签设置为LINUXCAST

命令fsck用来检查并修复损坏的文件系统

fsck/dev/sda2

*使用-y参数不提示而直接进行修复。

*默认fsck会自动判断文件系统类型,如果文件系统损坏较为严重,请使用

—t参数指定文件系统类型

*对于识别未文件的损坏数据(文件系统无记录),fsck会将该文件放入

lost+found目录

系统启动时会将磁盘进行fsck操作。

挂在操作

磁盘或分区创建好文件系统后,需要挂载到一个目录才能够使用。

windows或Mac系统会自动挂载,一旦创建号文件系统后回自动挂在到系统上,

windows上称之为C盘,D盘等。

linux需要手工进行挂载操作或配置系统进行自动挂载。

mount命令

在linux系统中,我们通过mount命令将格式化好的磁盘或分区挂载到一个

目录上。

mount/dev/sda3a(要挂载的分区)/mnt(挂载点)

常用参数:

不带参数的mount命令会显示所有已挂载的文件系统

-t指定文件系统的类型

-o指定挂载选项

ro,rw以只读或读写形式挂载,默认是rw

sync代表不使用缓存,而是对所有操作直接写入磁盘。

async代表使用缓存,默认是async

noatime代表每次访问文件时不更新文件的访问时间

atime代表每次访问文件时更新文件的访问时间

remount重新挂载文件系统。

命令umount用来卸载已挂载的文件系统,相当于windows中的弹出

umount文件系统/挂载点

umount/dev/sda3==umount/mnt

如果出现deviceisbusy报错,则表示该文件系统正在被使用,无法卸载,

可以使用以下命令查看使用文件系统的进程:

fuser-m/mnt

也可使用命令lsof查看正在被使用的文件:

lsof/mnt

自动挂载

配置文件/etc/fstab用来定义需要自动挂载的文件系统

fstab中每一行挂载配置,格式如下:

*要挂载的设备也可以使用LABEL进行识别,使用LABEL=LINUXCAST取代/dev/sda3

*mount-a命令会挂载所有fstab中定义的自动挂载项。

获取帮助

linux提供了极为详细的帮助工具及文档,几乎所有命令都可以使用-h

或--help参数获取使用方法、参数信息等。

man命令式Linux中最为常用的帮助命令,将要获取帮助的命令作为参数

运行man命令就可以获取相应的文档帮助。

man-k关键字用来查询包含该关键字的文档。

info与man类似,但是提供的信息更为详细深入,以类似网页的形式显示。

man与info都可以通过“/+关键字”方式进行搜索。

用户、组

当我们使用Linux时,需要以一个用户的身份登入,一个进程也需要以一个用户的身份

运行,用户限制使用者或进程可以使用、不可以使用哪些资源。

组用来方便组织管理用户

*每个用户拥有一个UserID,操作系统实际使用的是用户ID,而非用户名

*每个用户属于一个主组,属于一个活多个附属组

*每个组拥有一个GroupID

*每个进程以一个用于身份运行,并受该用户可访问的资源限制

*每个可登录用户拥有一个指定的shell

用户ID为32位,从0开始,但是为了和老式系统兼容,用户ID限制在60000以下。

用户分为以下三种:

-root用户(ID为0的用户为root用户)

-系统用户(1-499)

-普通用户(500以上)

系统中的文件都有一个所属用户及所属组

使用id命令可以显示当前用户的信息

使用passwd命令可以修改当前用户密码

相关文件

/etc/passwd保存用户信息

/etc/shadow保存用户密码(加密的)

/etc/group保存组信息

查看登录的用户

命令whoami显示当前用户

命令who显示有哪些用户已经登录系统

命令w显示有哪些用户已经登录并且在干什么

创建一个用户

命令Useradd用以创建一个新用户

useraddnash_su

这个命令会执行以下操作:

1,在/etc/passwd中添加用户信息

2,如果使用passwd命令创建密码,则将密码加密保存在/etc/shadow中

3,为用户建议一个新的家目录/home/nash_su

4,将/etc/skel中得文件复制到用户的家目录中。

5,建立一个与用户用户名相同的组,新建用户默认属于这个同名组

命令useradd支持以下参数:

-d家目录

-s登录shell

-uuserid

-g主组

-G附属组

也可以通过直接修改/etc/passwd的方式实现,但是不建议

修改用户信息

命令usermod用来修改用户信息

usermod参数username

命令usermod支持以下参数:

-l新用户名

-u新userid

-d用户家目录位置

-g用户所属主组

-G用户所属附属组

-L锁定用户使其不能登录

-U解除锁定

删除用户

命令userdel用以删除指定用户

userdelnash_su(保留用户的家目录)

userdel-rnash_su(同时删除用户的家目录)

几乎所有操作系统都有组的概念,通过组,我们可以更加方便的归类、管理用户。

一般来讲,我们使用部门、职能或地理区域的分类方式来创建使用组。

每个组都有一个组ID

组信息保存在/etc/group中

每个用户拥有一个主组,同时还可以拥有最多31个附属组

创建、修改、删除组

命令groupadd用以创建组:

groupaddlinuxcast

命令groupmod用以修改组信息:

groupmod-nnewnameoldname修改组名

groupmod-gnewGidoldGid修改组ID

命令groupdel用以删除组:

groupdellinuxcast

权限

权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。

系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制

来限制哪些用户、哪些组可以对特定文件进行什么样的操作。

每个进程都是以某个用户的身份运行,所以进程的权限与该用户的权限一样,用户

的权限大,该进程拥有的权限就大。

文件权限

Linux中,每个文件拥有三种权限以下三种权限

权限对文件的影响对目录的影响

r(读取)可读取文件的内容可列出目录内容

w(写入)可修改文件内容可在目录中创建删除文件

x(执行)可以作为命令执行可访问目录内容

目录必须拥有x权限,否则无法查看内容

UGO

Linux权限基于UGO模型进行控制:

U代表User,G代表Group,O代表Other

每一个文件的权限基于UGO进行设置

权限三个一组(rwx),对应UGO分别设置

每一个文件拥有一个所属用户和所属组,对应UG,不属于该文件所属用户或所属组

的使用O权限

命令ls-l可以查看当前目录下文件的详细信息:

-rw-r--r--@1mjcstaff1516611519:33linux_cmd.txt

-rw-r--r--UGO

1链接数量

mjcU:所属用户

staffG:所属组

15166大小

11519:33时间

linux_cmd.txt文件名

修改文件所属用户、组

命令chown用以改变文件的所属用户。

chownnash_sulinuxcast.net

-R参数递归的修改目录下的所有文件的所属用户

命令chgrp用以改变文件的所属组

chgrpnash_sulinuxcast.net

-R参数递归的修改目录下的所有文件的所属组。

修改权限:

命令chmod用以修改文件的权限

chmod模式文件

模式为如下格式:

u,g,o分别代表用户、组和其他。

a可以代指ugo

+-代表假如或删除对应的权限。

rwx代表三种权限。

命令chmod也支持以数字方式修改权限,三个权限分别有三个数字表示

-r=4

-w=2

-x=1

使用数字表示权限时,魅族权限分别为对应数字之:

rw=4+2=6

rwx=4+2+1=7

r-x=4+1=5

rz命令复制文件

相关推荐