Linux命令行界面
我们刚启动Linux系统的时候,看到的是X窗口,如果想要使用命令行,该怎么进入命令行界面呢?
在X窗口(桌面)右键->打开终端。此时,就可以看到Linux命令行界面了:
这里需要注意一下:**$代表普通用户,#代表root用户。**不同角色的用户拥有不同权限的命令,至于怎样求换用户等等,我们在下面的命令中会讲解到。
命令在线求助
先来了解一下Linux有多少命令呢?在命令行模式下,你可以直接按下两个“Tab键”,看看总共有多少命令可以让你用?
[root@localhost ~]# <==在这里不要输入任何字符,直接输入两次[tab]按键
Display all 2387 possibilities? (y or n) <==如果不想要看,按 n 离开
可以看到,一个2387条命令可以供使用,命令行的数目还是很多的。如果都要记下来,绝对会是让人疯的,那么我们就要掌握一个方法,面对一个陌生的命令,怎么去使用呢?
答案就是找男人啊!开玩笑,开玩笑。其实所谓找男人,就是找man(manual,操作系统的简称),可以通过man命令可以查看到某一个命令的使用方法。
比如,说想要查看su命令的使用方法:
[root@localhost ~]# man su
按回车键,就会显示出如下的内容:
如此一来,不就可以知道su命令的相关选项与参数了吗?真方便! 而出现的这个屏幕画面,我们称呼它为man page, 你可以在里头查询他的用法与相关的参数说明。
备注:进入man命令的功能后,你可以按下“空格键”往下翻页,可以按下“q键”来离开man的环境。 更多在man命令下的功能,在本小节后面会谈到的!
首先,在这个man page的第一行,你可以看到的是:SU(1),SU我们知道是命令的名称, 那么(1)代表什么呢?它代表的是:使用者在shell环境中可以操作的命令或可运行文件!除了1之外,常见的几个数字的意义是这样的:
代号 | 代表内容 |
---|---|
1 | 使用者在shell环境中可以操作的命令或可运行文件 |
2 | 系统核心可呼叫的函数与工具等 |
3 | 一些常用的函数(function)与函式库(library),大部分为C的函式库(libc) |
4 | 装置文件的说明,通常在/dev下的文件 |
5 | 配置文件或者是某些文件的格式 |
6 | 游戏(games) |
7 | 惯例与协议等,例如Linux文件系统、网络协议、ASCII code等等的说明 |
8 | 系统管理员可用的管理命令 |
9 | 跟kernel有关的文件 |
透过这张表格的说明, 未来你如果使用man page在察看某些数据时,就会知道该命令/文件所代表的基本意义是什么了。 举例来说,如果你下达了“man null”时,会出现的第一行是:NULL(4),对照一下上面的数字意义, 原来null竟然是一个装置文件!很容易了解了吧!
那么在man page当中我还可以利用哪些按键来帮忙查阅呢?
空格键 | 向下翻一页 |
---|---|
Page Down | 向下翻一页 |
Page Up | 向上翻一页 |
Home | 去到第一页 |
End | 去到最后一页 |
/string | 向下搜寻 string 这个字符串 |
?string | 向上搜寻 string 这个字符串 |
n | 利用 / 或 ? 来搜寻字符串时,可以用 n 来继续下一个搜寻 (不论是 / 或 ?) |
N | 利用 / 或 ? 来搜寻字符串时,可以用 N 来继续上一个搜寻 (不论是 / 或 ?) |
q | 结束这次的 man page |
要注意喔:上面的按键是在man page的画面当中才能使用的!
作为一个程序员,我们在进行项目部署和运维时,经常会用到一些linux命令,可是这些命令老是忘记,每次用到的时候都要去谷歌百度,很是麻烦!这不,为了自己使用方便,对常见的linux命令进行了系统的总结,以便在用到时能够快速地找到相关命令,同时有需要的朋友也可以参考搜藏该篇文章!文章对讲到的每个命令都有详细的参数解释,并且给出一些常用例子,因此也非常适合用来学习!
全文命令分为以下6个模块:
1、常用系统工作命令
2、系统状态检测命令
3、工作目录切换命令
4、文本文件编辑命令
5、文件目录管理命令
6、打包压缩与搜索命令
在说具体命令之前,读者应该清楚linux命令的基本格式,如下:
linux命令的格式
以下内容为具体的命令详解:
一、常用系统工作命令
0、按键命令
- Tab按键—命令补齐功能
- Ctrl+c按键—停掉正在运行的程序
- Ctrl+d按键—相当于exit,退出
- Ctrl+l按键—清屏
- Shift+pgup/pgdn实现虚拟机中的翻页
1、useradd命令
功能:添加用户
用法:useradd [选项] 用户名
选项 | 含义 |
---|---|
-g <群组> | 指定用户的所述群组 |
-G <群组> | 指定用户所属的附加群组 |
创建完用户后,会在/home目录下,自动创建这个用户的主目录。也可以有其他选项来禁止创建目录,这里就不多介绍了。
2、passwd命令
作用:设置账号密码
用法:passwd 用户名
注意:使用完passwd命令后,就会提示你“New UNIX password:”,这个时候,如果输入密码的时候,会发现密码并不显示出来!不要认为是出了故障,Linux哲学认为:一旦涉及到密码,就不会有任何显示,连“*”都不会,因为这会透露密码的长度。所以,什么都不要想,该怎么输就怎么输,不要受到影响就行了。
3、su命令
功能:切换用户
用法:su [选项] [用户名]
选项 | 含义 |
---|---|
-l,–login | 改变身份,同时也切换环境变量 |
-m,-p | 改变身份,不切换环境变量 |
-c,–command | 变更账号使用者,执行命令后再变回原来使用者 |
如果选项为空的时候,默认为改变身份,不切换环境变量;如果选项为“-”的时候,默认为改变身份,同时也切换环境变量;如果用户名为空的时候,默认为root。
4、关机和重启命令
在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。
正确的关机流程为:sync > shutdown > reboot > halt
4.1、shutdown命令
关机或重启.
对于shutdown命令,它是大家都推荐的一个安全的命令,通过参数-h或-r的配合来完成关机或重启。不过在linux系统中只有拥有root权限才可以使用这个命令。
所以,虽然大家都推荐用这个命令,但是这个命令用起来真的不太方便:想要用这个命令吗?先去获得root权限吧。
shutdown执行关机,是送信号给init,要求它改变运行级别,以此来关机。关机或重启实际上是运行级别的调整,所以也可以用init直接调整运行级别来进行关机或重启。
使用这个命令时,机器立即关机或重启。它也需要root权限。
为什么说shutdown命令是安全地将系统关机?
实际中有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的。因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失使系统处于不稳定的状态。甚至在有的系统中会损坏硬件设备。而在系统关机前使用shutdown命令,系统管理员会通知所有登录的用户系统将要关闭。并且login指令会被冻结,即新的用户不能再登录。直接关机或者延迟一定的时间才关机都是可能的,还有可能是重启。这是由所有进程〔process〕都会收到系统所送达的信号〔signal〕决定的。
shutdown执行它的工作是送信号〔signal〕给init程序,要求它改变 runlevel。
runlevel 0 被用来停机〔halt〕,runlevel 6 是用来重新激活〔reboot〕系统,而 runlevel 1则是被用来让系统进入管理工作可以进行的状态,这是预设的。
参数 | 说明 |
---|---|
-r | 在指定时间重启计算机。 |
-h | 在指定时间关闭计算机。 |
-p | 关闭操作系统,并调用poweroff关闭电源。 |
-k | 向系统中的登录者发送警告信息,并不真正执行关机操作。 |
-c | 取消目前正在执行的关机程序。这个选项没有时间参数,但是可以输入一个用来解释的讯息,而这信息将会送到每位系统登录者。 |
-n | 用init而是自己来关机。不鼓励使用这个选项,而且该选项所产生的后果往往不总是你所预期得到的。 |
-t | 在改变到其它runlevel之前,告诉init多久以后关机。 |
-f | 在重启计算器〔reboot〕时忽略fsck。 |
-F | 在重启计算器〔reboot〕时强迫fsck。 |
命令 | 说明 |
---|---|
shutdown -h 12:00 | 系统将在12时准时关机。 |
shutdown -h now | 立刻关机。 |
shutdown -r now | 立刻重启系统。 |
shutdown -h +10 | 系统将在10分钟后关机。 |
4.2、halt命令
关闭正在运行的linux操作系统,最简单的关机命令。
用halt命令来关机时,实际调用的是shutdown -h。halt 执行时将杀死应用进程,执行sync系统调用文件系统写操作完成后就会停止内核。
参数 | 说明 |
---|---|
-n | 关机时不执行sync操作,相关操作不写入日志文件‘/var/log/wtmp’中。 |
-w | 不真正的关机,仅在日志文件‘/var/log/wtmp’中添加相应的记录。 |
-d | 关机,相关操作不写入日志文件‘/var/log/wtmp’中。 |
-f | 强制关机,不调用shutdown操作。 |
-i | 关机前关掉所有的网络接口。 |
-p | 关机后切断系统电源。该选项为缺省选项。就是关机时调用poweroff。 |
4.3、poweroff命令
关闭正在运行的linux操作系统并切断系统电源,对于poweroff,网上说它是halt命令的链接,基本用法和 halt 差不多。
参数 | 说明 |
---|---|
-n | 关机时不执行sync操作,相关操作不写入日志文件‘/var/log/wtmp’中。 |
-w | 不真正的关机,仅在日志文件‘/var/log/wtmp’中添加相应的记录。 |
-d | 关机,相关操作不写入日志文件‘/var/log/wtmp’中。 |
-f | 强制关机,不调用shutdown操作。 |
-i | 关机前关掉所有的网络接口。 |
4.4、reboot命令
重启正在运行的linux操作系统
reboot的工作过程差不多跟halt一样。不过它是引发主机重启,而halt是关机。它的参数与halt相差不多。
参数 | 说明 |
---|---|
-n | 重启时不执行sync操作,相关操作不写入日志文件‘/var/log/wtmp’中。 |
-w | 不真正的重启,仅在日志文件‘/var/log/wtmp’中添加相应的记录。 |
-d | 重启,相关操作不写入日志文件‘/var/log/wtmp’中。 |
-f | 强制重启,不调用shutdown操作。 |
-i | 重启前关掉所有的网络接口。 |
4.5、init命令
操作系统启动运行方式。
init是所有进程的祖先,他是Linux系统操作中不可缺少的程序之一。它的进程号始终为1,所以发送TERM信号给init会终止所有的用户进程,守护进程等。
shutdown 就是使用这种机制。init定义了8个运行级别(runlevel),init 0为关机,init 1为重启。
命令 | 说明 |
---|---|
init 0 | 表示关机。 |
init 6 | 表示重启。 |
init 1 | 表示单用户命令行模式。 |
init 2 | 表示没有网络的多用户命令行模式。 |
init 3 | 表示多用户命令行模式(推荐使用这个模式)。 |
init 4 | 表示预留的未使用。 |
init 5 | 表示图形界面模式(安装有图形界面的系统的默认启动级别)。 |
5、帮助命令
5.1、help命令
其他各命令都可以通过xxx --help命令进行查看xxx命令的详细信息
5.2、man命令
次命令是一种命令说明书。
man shutdown
注意:man shutdown打开命令说明书之后,使用按键q退出
6、rpm命令
功能:软件安装
用法:rpm [选项] [安装文件]
选项 | 含义 |
---|---|
-i,–install | 安装指定的软件 |
-v | 显示指令执行过程 |
-h | 软件安装时列出标记 |
-q | 使用询问模式,当遇到任何问题时,rpm指令会先询问用户 |
-a | 查询所有套件 |
–force | 安装的包里有一些文件可能会覆盖现有的文件,强制安装 |
-e,–erase | 删除指定的套件 |
-l | 显示软件的文件列表 |
-p | 查询指定的RPM软件 |
例如:
[root@localhost ~]# rpm -qa //查看安装的所有软件
[root@localhost ~]# rpm -qa | grep mysql //查看是否安装了mysql
[root@localhost ~]# rpm -q mysql //获得mysql的文件全名
[root@localhost ~]# rpm -ql mysql-3.23.54a-11 //查看mysql的安装路径
[root@localhost ~]# rpm -ivh mysql-3.23.54a-11.rpm //安装mysql
[root@localhost ~]# rpm -e mysql-3.23.54a //卸载mysql
7、mount命令
功能:挂载文件系统
用法:mount [选项] 设备源 目标目录
选项 | 含义 |
---|---|
-a | 依照/etc/fstab的内容装载所有相关的硬盘 |
-l | 列出当前已挂载的设备、文件系统名称和挂载点 |
-t | 将后面的设备以指定类型的文件格式装载到挂载点上 |
-f | 通常用于除错,会使mount不执行实际的挂载动作,只模拟过程 |
8、umount命令
功能:卸载文件系统
用法:umount 目标目录
9、echo命令
10、date命令
11、wget命令
wget命令用于在终端中下载网络文件,格式为“ wget [参数 ] 下载地址”。
12、ps命令
ps命令用于查看系统中的进程状态,格式为“ ps [参数 ]”。
常用用法:ps aux或者ps lax
选项 | 含义 |
---|---|
-ef | 查看所有进程及其PID、系统时间、命令详细目录、执行者等 |
-aux | 除可显示-ef所有内容外,还可显示CPU及内存占有率、进程状态 |
-w | 显示加宽并且可以显示较多信息 |
13、top命令
(相当于window中的任务管理器)
top命令用于动态地监视进程活动与系统负载等信息,默认每10秒刷新一次。
作用:动态查看CPU的使用情况
用法:top
例子:
[root@localhost ~]# top
top - 09:44:56 up 16 days, 21:23, 1 user, load average: 9.59, 4.75, 1.92 # 第一行:top - 09:44:56(当前系统时间)、16 days(系统已经运行了16天)、1 user(用户当前登录)、load average: 9.59, 4.75, 1.92(系统负载,即任务队列的平均长度);
Tasks: 145 total, 2 running, 143 sleeping, 0 stopped, 0 zombie # 第二行:Tasks: 145 total(总进程数)、2 running(正在运行的进程数)、143 sleeping(睡眠的进程数)、0 stopped(停止的进程数)、0 zombie(冻结进程数);
Cpu(s): 99.8%us, 0.1%sy, 0.0%ni, 0.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st # 第三行:Cpu(s): 99.8%us(用户空间占用CPU百分比)、0.1%sy(内核空间占用CPU百分比)、0.0%ni(用户进程空间内改变过优先级的进程占用CPU百分比)、0.2%id(空闲CPU百分比)、0.0%wa(等待输入输出的CPU时间百分比)、0.0%hi、0.0%st;
Mem: 4147888k total, 2493092k used, 1654796k free, 158188k buffers # 第四行:Mem: 4147888k total(物理内存总量)、2493092k used(使用的物理内存总量)、1654796k free(空闲内存总量)、158188k buffers(用作内核缓存的内存量);
Swap: 5144568k total, 56k used, 5144512k free, 2013180k cached # 第五行:Swap: 5144568k total(交换区总量)、56k used(使用的交换区总量)、5144512k free(空闲交换区总量)、2013180k cached(缓冲的交换区总量)。
14、pidof命令
pidof命令用于查询某个指定服务进程的 PID值,格式为“ pidof [参数 ] [服务名称 ]”。
15、kill命令
kill命令用于终止某个指定 PID的服务进程,格式为“ kill [参数 ] [进程 PID]”。
16、killall命令
通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这些进程会比较麻烦,此时可以使用 killall命令来批量结束某个服务程序带有的全部进程。下面以 httpd服务程序为例,来结束其全部进程。
二、系统状态检测命令
1、ifconfig命令
功能:网络配置,此命令被用来获取网络接口配置信息并对此进行修改。
用法:ifconfig [选项] [网络接口]
选项 | 含义 |
---|---|
add<地址> | 设置网络设备IPv6的ip地址 |
del<地址> | 删除网络设备IPv6的IP地址 |
<网卡>up | 启动指定的网络接口 |
<网卡>down | 关闭指定的网络接口 |
<网卡>broadcast | 设置网络接口的广播地址 |
<网卡>pointopoint | 启动点对点方式 |
<网卡>空 | 设置指定接口设备的IP地址 |
<网卡>netmask | 设置接口的子网掩码 |
<网卡>media | 设置网络设备的媒介类型 |
例如:
[root@localhost ~]# ifconfig //显示网络设备信息(激活状态的)
说明:
eth0表示第一块网卡,其中HWaddr表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址)是00:0C:29:21:FC:FA;
inet addr用来表示网卡的IP地址,此网卡的IP地址是192.168.52.128,广播地址Bcast是192.168.52.255,掩码地址Mask是255.255.255.0;
lo是表示主机的回环地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 httpd服务器的指定到回环地址,在浏览器输入127.0.0.1就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。
- 第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址);
- 第二行:网卡的IP地址、子网、掩码;
- 第三行:UP(代表网卡开启状态)、RUNNING(代表网卡的网线被接上)、MULTICAST(支持组播)、MTU:1500(最大传输单元):1500字节。
- 第四、五行:接收、发送数据包情况统计;
- 第七行:接收、发送数据字节数统计信息。
[root@localhost ~]# ifconfig eth0 up //启动指定网卡
[root@localhost ~]# ifconfig eth0 down //关闭指定网卡
[root@localhost ~]# ifconfig eth0 add 33ffe:3240:800:1005::2/64 //为网卡eth0配置IPv6地址
[root@localhost ~]# ifconfig eth0 del 33ffe:3240:800:1005::2/64 //为网卡eth0删除IPv6地址
[root@localhost ~]# ifconfig eth0 192.168.2.10 //设置IP地址
[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 //设置IP、掩码
[root@localhost ~]# ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255 //设置IP、掩码、广播
注意:用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
2、netstat命令
功能:查看网络状态和端口状态
用法:netstat [选项]
选项 | 含义 |
---|---|
-a,–all | 显示所有连线中的Socket |
-l,–listening | 显示监控中的服务器的Socket |
-s,–statistice | 显示网络工作信息统计表 |
-t,–tcp | 显示TCP传输协议的连线状况 |
-u,–udp | 显示UDP传输协议的连线状况 |
-p,–programs | 显示正在使用Socket的程序识别码和程序名称 |
例如:
[root@localhost ~]# netstat -a //列出所有端口
[root@localhost ~]# netstat -at //列出所有tcp端口
[root@localhost ~]# netstat -au //列出所有udp端口
[root@localhost ~]# netstat -l //只显示监听端口
[root@localhost ~]# netstat -lt //只列出所有监听 tcp 端口
[root@localhost ~]# netstat -lu //只列出所有监听 udp 端口
[root@localhost ~]# netstat -s //显示所有端口的统计信息
[root@localhost ~]# netstat -st //显示TCP端口的统计信息
[root@localhost ~]# netstat -su //显示UDP端口的统计信息
3、uname命令
uname命令用于查看系统内核与系统版本等信息,格式为“ uname [-a]”。
在使用uname命令时,一般会固定搭配上 -a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。
4、uptime命令
uptime用于查看系统的负载信息,格式为 uptime。
uptime命令真的很棒,它可以显示当前系统时间、系统已运行 时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近 1分钟、 5分钟、 15分钟内的压力情况(下面加粗的信息部分);负载值越低越好,尽量不要长期超过 1,在生产环境中不要超过 5。
5、free命令
free用于显示当前系统中内存的使用量信息,格式为“ free [-h]”。
为了保证Linux系统不会因资源耗尽而突然宕机,运维人员需要时刻关注内存的使用量。在使用 free命令时,可以结合使用 -h参数以更人性化的方式输出当前内存的实时使用量信息。表 2-8所示为电脑上执行 free -h命令之后的输出信息。需要注意的是,输出信息中的中文注释是作者自行添加的内容,实际输出时没有相应的参数解释。
6、who命令
who用于查看当前登入主机的用户终端信息,格式为“ who [参数 ]”。
这三个简单的字母可以快速显示出所有正在登录本机的用户的名称以及他们正在开启的终端信息。
7、last命令
last命令用于查看所有系统的登录记录,格式为“ last [参数 ]”。
使用last命令可以查看本机的登录记录。但是,由于这些信息都是以日志文件的形式保存在系统中,因此黑客可以很容易地对内容进行篡改。千万不要单纯以该命令的输出信息而判断系统有无被恶意入侵!
8、history命令
用于显示历史执行过的命令,格式为“ history [-c]”。
history命令应该是作者最喜欢的命令。执行 history命令能显示出当前用户在本地计算机中执行过的最近 1000条命令记录。如果觉得 1000不够用,还可以自定义 /etc/profile文件中的HISTSIZE变量值。在使用 history命令时,如果使用 -c参数则会清空所有的命令历史记录。还可以使用“!编码数字”的方式来重复执行某一次的命令。总之, history命令有很多有趣的玩法等待您去开发。历史命令会被保存到用户家目录中的.bash history文件中。 Linux系统中以点(.)开头的文件均代表隐藏文件,这些文件大多数为系统服务文件,可以用 cat命令查看其文件内容。
要清空当前用户在本机上执行的Linux命令历史记录信息,可执行如下命令:
三、工作目录切换命令
我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。
其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
首先我们需要先知道什么是绝对路径与相对路径。
- 绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。 - 相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法啦!
1、pwd命令
pwd是 Print Working Directory的缩写,用于显示用户当前所处的工作目录,格式为“ pwd [选项 ]”。
[root@www ~] pwd [-P] 显示出确实的路径,而非使用连结 (link) 路径。
[root@www ~] cd /var/mail <==注意,/var/mail是一个连结档
[root@www mail] pwd
/var/mail <==列出目前的工作目录
[root@www mail] pwd -P
/var/spool/mail <==怎么回事?有没有加 -P 差很多~
[root@www mail] ls -ld /var/mail
lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail
# 看到这里应该知道为啥了吧?因为 /var/mail 是连结档,连结到 /var/spool/mail
# 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!
2、cd命令
cd是Change Directory的缩写,这一命令用于切换工作路径(目录),格式为“ cd [目录名称 ]”。
cd / 切换到根目录
cd /usr 切换到根目录下的usr目录
cd ../ 切换到上一级目录 或者 cd ..
cd ~ 切换到home目录
cd - 切换到上次访问的目录
这个命令应该是最常用的一个Linux命令了。可以通过 cd命令迅速、灵活地切换到不同的工作目录。除了常见的切换目录方式,还可以使用“ cd -”命令返回到上一次所处的目录使用“ cd…”命令进入上级目录 以 及使用“ cd ~”命令切换到当前用户的家目录,亦或使用cd ~username”切换到其他用户的家目录。例如,可以使用 cd 路径”的方式切换进 /etc目录中:
同样的道理,可使用下述命令切换到 /bin目录中:
此时,要返回到上一次的目录(即/etc目录),可执行如下命令:
还可以通过下面的命令快速切换到用户的家目录:
3、ls命令
ls命令用于显示目录中的文件信息,格式为“ ls [选项 ] [文件 ] ”。
ls [-aAdfFhilnrRSt] 目录名称
ls [--color={never,auto,always}] 目录名称
ls [--full-time] 目录名称
参数:
-a:全部的文件,连同隐藏文件(开头为 . 的文件)一起列出来(常用)
-A:列出全部的文件(连同隐藏文件,但不包括 . 与 .. 这两个目录)
-d:仅列出目录本身,而不是列出目录内的文件数据(常用)
-f:直接列出结果,而不进行排序(ls默认会以文件名排序)
-F:根据文件、目录等信息给予附加数据结构,例如:
*:代表可执行文件;
/:代表目录;
=:代表socket文件;
|:代表FIFO文件
-h:将文件容量以人类较易读的方式(例如GB,KB等)列出
-i:列出inode号码
-l:列出长数据串,包含文件的属性与权限等数据(常用)
PS:因为ls最常被用到的功能是 –l的参数,所以很多distribution在默认的情况中将 ll设置成为 ls –l的意思。
-n:列出UID与GID,而非用户与用户组的名称
-r:将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小
-R:连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来
-S:以文件容量大小排序,而不是文件名排序
-t:依时间排序,而不是用文件名
--color=never:不要依据文件特性给予颜色显示
--color=always:显示颜色
--color=auto:让系统自行依据设置来判断是否给予颜色
--full-time:以完整时间模式(包括年、月、日、时、分)输出
--time={atime,ctime}:输出访问时间或改变权限属性时间(ctime)而非内容更改时间(modification time)
范例一:将主文件夹下的所有文件列出来(含属性与隐藏文件)
ls –al ~
范例二:承上体,不显示颜色,但在文件名末显示出该文件名代表的类型(type)
ls –alf --color=never ~
范例三:完整呈现文件的修改时间
ls –al --full-time ~
范例四:呈现以bashrc_slink为开头的文件
ls –l bashrc_slink*
所处的工作目录不同,当前工作目录下的文件肯定也不同。使用 ls命令的“ “-a”参数看到全部文件(包括隐藏文件),使用“ “-l”参数可以查看文件的属性、大小等详细信息。将这两个参数整合之后,再执行 ls命令即可查看当前目录中的所有文件并输出这些文件的属性信息:
如果想要查看目录属性信息,则需要额外添加一个-d参数。例如 ,可使用如下命令查看/etc目录的权限与属性信息:
四、文本文件编辑命令
Linux系统中“一切都是文件”,而对服务程序进行配置自然也就是编辑程序的配置文件。如
果不能熟练地查阅系统或服务的配置文件,那以后工作时可就真的要尴尬了。本节将讲解几条用于查看文本文件内容的命令。
1、cat命令
cat命令用于查看纯文本文件(内容较少的),由第一行开始显示文件内容,格式为“ cat [选项 ] [文件 ]”。
cat [-AbEnTv]
选项与参数:
-A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字节 $ 显示出来;
-n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
检看 /etc/issue 这个文件的内容:
[root@www ~] cat /etc/issue
CentOS release 6.4 (Final)
Kernel \r on an \m
Linux系统中有多个用于查看文本内容的命令,每个命令都有自己的特点,比如这个 cat命令就是用于查看内容较少的纯文本文件的。 cat这个命令也很好记,因 为 cat在英语中是“猫”的意思,小猫咪是不是给您一种娇小、可爱的感觉呢?如果在查看文本内容时还想顺便显示行号的话,不妨在cat命令后面追加一个 -n参数:
2、tac命令
tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:
[root@www ~] tac /etc/issue
Kernel \r on an \m
CentOS release 6.4 (Final)
3、nl命令
显示行号
nl [-bnw] 文件
选项与参数:
-b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);
-n :列出行号表示的方法,主要有三种:
-n ln :行号在荧幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
-w :行号栏位的占用的位数。
实例:用 nl 列出 /etc/issue 的内容
[root@www ~] nl /etc/issue
1 CentOS release 6.4 (Final)
2 Kernel \r on an \m
4、more命令
more命令用于查看纯文本文件(内容较多的),一页一页翻动,格式为“ more [选项 ]文件”。
[root@www ~] more /etc/man_db.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
--More--(28%) <== 重点在这一行喔!你的光标也会在这里等待你的命令,然后通过键盘按键来进行下面的操作:
空白键 (space):代表向下翻一页;
Enter :代表向下翻『一行』;
/字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
:f :立刻显示出档名以及目前显示的行数;
q :代表立刻离开 more ,不再显示该文件内容。
b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
如果需要阅读长篇小说或者非常长的配置文件,那么“小猫咪”可就真的不适合了。因为一旦使用 cat命令阅读长篇的文本内容,信息就会在屏幕上快速翻滚,导致自己还没有来得及看到,内容就已经翻篇了。因此对于长篇的文本内容,推荐使用 more命令来查看。 more命令会在最下面使用百分比的形式来提示您已经阅读了多少内容。您还可以使用空格键或回车键向下翻页:
5、less命令
一页一页翻动,以下实例输出/etc/man.config文件的内容:
[root@www ~] less /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
: <== 这里可以等待你输入命令!然后通过键盘按键来进行下面的操作:
空白键 :向下翻动一页;
[pagedown]:向下翻动一页;
[pageup] :向上翻动一页;
/字串 :向下搜寻『字串』的功能;
?字串 :向上搜寻『字串』的功能;
n :重复前一个搜寻 (与 / 或 ? 有关!)
N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
q :离开 less 这个程序;
6、head命令
head命令用于查看纯文本文档的前 N行,格式为“ head [选项 ] [文件 ]”。
head [-n number] 文件
选项与参数:
-n :后面接数字,代表显示几行的意思
[root@www ~] head /etc/man.config
默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:
[root@www ~] head -n 20 /etc/man.config
在阅读文本内容时,谁也难以保证会按照从头到尾的顺序往下看完整个文件。如果只想查看文本中前 20行的内容,该怎么办呢? head命令可以派上用场了:
4、tail命令
tail命令用于查看纯文本文档的后 N行或持续刷新内容,格式为“ tail [选项 ] [文件 ]”。
tail [-n number] 文件
选项与参数:
-n :后面接数字,代表显示几行的意思
-f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
我们可能还会遇到另外一种情况,比如需要查看文本内容的最后20行,这时就需要用到tail命令了。 tail命令的操作方法与 head命令非常相似,只需要执行“ tail -n 20 文件名”命令就可以达到这样的效果。 tail命令最强悍的功能是可以持续刷新一个文件的内容,当想要实时查看最新日志文件时,这特别有用,此时的命令格式为“ tail -f 文件名”:
5、tr命令
tr命令用于替换文本文件中的字符,格式为“ tr [原始字符 ] [目标字符 ]”。
在很多时候,我们想要快速地替换文本中的一些词汇,又或者把整个文本内容都进行替换,如果进行手工替换,难免工作量太大,尤其是需要处理大批量的内容时,进行手工替换更是不现实。这时,就可以先使用 cat命令读取待处理的文本,然后通过管道符把这些文本内容传递给 tr命令进行替换操作即可。例如,把某个文本内容中的英文全部替换为大写:
6、wc命令
wc命令用于统计指定文本的行数、字数、字节数,格式为“ wc [参数 ] 文本”。
Linux系统中的 wc命令用于统计文本的行数、字数、字节数等。如果为了方便自己记住这个命令的作用,也可以联想到上厕所时好无聊,无聊到数完了手中的如厕读物上有多少行字。
wc的参数以及相应的作用如表 2-10所示。
在Linux系统中, passwd是用于保存系统账户信息的文件,要统计当前系统中有多少个用户,可以使用下面的命令来进行查询,是不是很神奇:
7、stat命令
stat命令用于查看文件的具体存储信息和时间等信息,格式为“ stat 文件名称”。
stat命令可以用于查看文件的存储信息和时间等信息,命令 stat anaconda-ks.cfg会显示出文件的三种时间状态(已加粗): Access、 Modify、 Change。这三种时间的区别将在下面的 touch命令中详细详解:
8、diff命令
diff命令用于比较多个文本文件的差异,格式为“ diff [参数 ] 文件”。
在使用diff命令时,不仅可以使用 --brief参数来确认两个文件是否不同,还可以使用 -c参数来详细比较出多个文件的差异之处,这绝对是判断文件是否被篡改的有力神器。例如,先使用 cat命令分别查看 diff A.txt和 diff B.txt文件的内容,然后进行比较:
接下来使用
diff --brief命令显示比较后的结果,判断文件是否相同:
最后使用带有
-c参数的 diff命令来描述文件内容具体的不同:
五、文件目录管理命令
1、touch命令
touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。,格式为“ touch [选项 ] [文件 ]”。
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
参数说明:
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。
–no-create 不会建立新档案。
–help 列出指令格式。
–version 列出版本讯息。
举例:
$ ls -l testfile #查看文件的时间属性
#原来文件的修改时间为16:09
-rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile
$ touch testfile #修改文件时间属性为当前系统时间
$ ls -l testfile #查看文件的时间属性
#修改后文件的时间属性为当前系统时间
-rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile
#使用指令"touch"时,如果指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件"file",输入如下命令:
$ touch file #创建一个名为“file”的新的空白文件
在创建空白的文本文件方面,这个touch命令相当简捷,简捷到没有必要铺开去讲。
比如, touch linuxprobe命令可以创建出一个名为 linuxprobe的空白文本文件。对 touch命令来讲,有难度的操作主要是体现在设置文件内容的修改时间( mtime)、文件权限或属性的更改时间( ctime)与文件的读取时间 atime)上面。 touch命令的参数及其作用如表 2-11所示。
接下来,我们先使用ls命令查看一个文件的修改时间,然后修改这个文件,最后再通过 touch命令把修改后的文件时间设置成修改 之前 的时间(很多黑客就是这样做的呢):
2、mkdir命令
mkdir(make directory)命令用于创建空白的新目录,格式为“ mkdir [选项 ] 目录”。
mkdir [-mp] 目录名称
选项与参数:
-m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
-p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
实例:创建权限为 rwx–x–x 的目录。
[root@www tmp] mkdir -m 711 test2
[root@www tmp] ls -l
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
# 上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。
# 如果我们使用 -m ,如上例我们给予 -m 711 来给予新的目录 drwx–x--x 的权限。
在Linux系统中,文件夹是最常见的文件类型之一。除了能创建单个空白目录外, mkdir命令还可以结合 -p参数来递归创建出具有嵌套叠层关系的文件目录。
cd /tmp
[root@www tmp] mkdir test <==创建一名为 test 的新目录
[root@www tmp] mkdir test1/test2/test3/test4
mkdir: cannot create directory `test1/test2/test3/test4':
No such file or directory <== 没办法直接创建此目录啊!
[root@www tmp] mkdir -p test1/test2/test3/test4
3、rmdir 命令
删除空的目录
rmdir [-p] 目录名称
选项与参数:
-p :连同上一级『空的』目录也一起删除
将 mkdir 实例中创建的目录(/tmp 底下)删除掉!
[root@www tmp] ls -l <==看看有多少目录存在?
drwxr-xr-x 3 root root 4096 Jul 18 12:50 test
drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
[root@www tmp] rmdir test <==可直接删除掉,没问题
[root@www tmp] rmdir test1 <==因为尚有内容,所以无法删除!
rmdir: `test1': Directory not empty
[root@www tmp] rmdir -p test1/test2/test3/test4
[root@www tmp] ls -l <==您看看,底下的输出中test与test1不见了!
drwx--x--x 2 root root 4096 Jul 18 12:54 test2
#注意:如果当test1下仍有其他文件或目录,采用第八行的命令时会出现test1删除失败,但是test1及其内的其他文件不会被删除,test1下的test2/test3/test4都会被删除
4、rm命令
rm命令用于删除文件或目录,格式为“ rm [选项 ] 文件”。
rm [-fir] 文件或目录
选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
删除文件:
rm 文件 :删除当前目录下的文件
rm -f 文件 :删除当前目录的的文件(不询问)
删除目录:
rm -r aaa :递归删除当前目录下的aaa目录
rm -rf aaa :递归删除当前目录下的aaa目录(不询问)
全部删除:
rm -rf * :将当前目录下的所有目录和文件全部删除
rm -rf /* :【自杀命令!慎用!慎用!慎用!】将根目录下的所有文件全部删除
#注意:星号(*)为通配符,代表的是0到无穷多个任意字符
#注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了方便大家的记忆,无论删除任何目录或文件,都直接使用 rm -rf 目录/文件/压缩包
在Linux系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在 rm命令后跟上 -f参数来强制删除。另外,想要删除一个目录,需要在 rm命令后面一个 -r参数才可以,否则删除不掉。我们来尝试删除前面创建的 install.log和 linux.log文件:
5、cp命令
cp命令用于复制文件或目录,格式为“ cp [选项 ] 源文件 目标文件”。
[root@www ~] cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~] cp [options] source1 source2 source3 .... directory
选项与参数:
-a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-r:递归持续复制,用於目录的复制行为;(常用)
-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
-u:若 destination 比 source 旧才升级 destination !
大家对文件复制操作应该不陌生,在Linux系统中,复制操作具体分为 3种情况:
-
如果目标文件是目录,则会把源文件复制到该目录中;
-
如果目标文件也是普通文件,则会询问是否要覆盖它;
-
如果目标文件不存在,则执行正常的复制操作。
cp命令的参数及其作用如表 2-12所示。
接下来,使用touch创建一个名为 install.log的普通空白文件,然后将其复制为一份名为x.log的备份文件,最后再使用 ls命令查看目录中的文件:
6、mv命令
mv命令用于剪切文件或将文件重命名,格式为“ mv [选项 ] 源文件 [目标路径 |目标文件名 ]”。
[root@www ~] mv [-fiu] source destination
[root@www ~] mv [options] source1 source2 source3 .... directory
选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)
剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名:
一、重命名目录
命令:mv 当前目录 新目录
例如:mv aaa bbb 将目录aaa改为bbb
注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行 重命名的操作
二、剪切目录
命令:mv 目录名称 目录的新位置
示例:将/usr/tmp目录下的aaa目录剪切到 /usr目录下面 mv /usr/tmp/aaa /usr
注意:mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作
三、拷贝目录
命令:cp -r 目录名称 目录拷贝的目标位置 -r代表递归
示例:将/usr/tmp目录下的aaa目录复制到 /usr目录下面 cp /usr/tmp/aaa /usr
注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r递归
7、dd命令
dd命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“ dd [参数 ]”。
dd命令是一个比较重要而且比较有特色的一个命令,它能够让用户按照指定大小和个数的数据块来复制文件的内容。 dd命令的参数及其作用如下表。
例如我们可以用dd命令从 /dev/zero设备文件中取出一个大小为 560MB的数据块,然后保存成名为 560 file的文件。在理解了这个命令后,以后就能随意创建任意大小的文件了:
dd命令的功能也绝不仅限于复制文件这么简单。如果您想把光驱设备中的光盘制作成 iso格式的镜像文件,在 Windows系统中需要借助于第三方软件才能做到,但在 Linux系统中可以直接使用 dd命令来压制出光盘镜像文件,将它 变成 一个可立即使用的 iso镜像:
8、file命令
file命令用于查看文件的类型,格式为“ file 文件名”。
在Linux系统中,由于文本、目录、设备等所有这些一切都统称为文件,而我们又不能单凭后缀就知道具体的文件类型,这时就需要使用 file命令来查看文件类型了。
六、打包压缩与搜索命令
在网络上,人们越来越倾向于传输压缩格式的文件,原因是压缩文件体积小,在网速相同的情况下,传输时间短。下面将学习如何在 Linux系统中对文件进行打包压缩与解压,以及让用户基于关键词在文本文件中搜索相匹配的信息、在整个文件系统中基于指定的名称或属性搜索特定文件。本节虽然只有 3条命令,但是其功能都比较复杂而且参数很多,因此放到了最后讲解。
1、tar命令
tar命令用于对文件进行打包压缩或解压,格式为“ tar [选项 ] [文件 ]”。
Windows的压缩文件的扩展名 .zip/.rar
linux中的打包文件:aa.tar
linux中的压缩文件:bb.gz
linux中打包并压缩的文件:.tar.gz
Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。
而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。
最常用的打包命令是 tar,使用 tar 程序打出来的包我们常称为 tar 包,tar 包文件的命令通常都是以 .tar 结尾的。生成 tar 包后,就可以用其它的程序来进行压缩了,所以首先就来讲讲 tar 命令的基本用法。
-c: 建立压缩档案
-x:解压
-t:查看内容 shell
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数 -f 是必须的:
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
1.1、实例
tar -cf all.tar *.jpg # 这条命令是将所有 .jpg 的文件打成一个名为 all.tar 的包。-c 是表示产生新的包,-f 指定包的文件名。
tar -rf all.tar *.gif # 这条命令是将所有 .gif 的文件增加到 all.tar 的包里面去。-r 是表示增加文件的意思。
tar -uf all.tar logo.gif # 这条命令是更新原来 tar 包 all.tar 中 logo.gif 文件,-u 是表示更新文件的意思。
tar -tf all.tar # 这条命令是列出 all.tar 包中所有文件,-t 是列出文件的意思。
tar -xf all.tar # 这条命令是解出 all.tar 包中所有文件,-x 是解开的意思。
1.2、压缩
tar -cvf jpg.tar *.jpg // 将目录里所有jpg文件打包成 tar.jpg
tar -czf jpg.tar.gz *.jpg // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,命名为 jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,命名为jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg // 将目录里所有 jpg 文件打包成 jpg.tar 后,并且将其用 compress 压缩,生成一个 umcompress 压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg // rar格式的压缩,需要先下载 rar for linux
zip jpg.zip *.jpg // zip格式的压缩,需要先下载 zip for linux
1.3、解压
tar -xvf file.tar // 解压 tar 包
tar -xzvf file.tar.gz // 解压 tar.gz
tar -xjvf file.tar.bz2 // 解压 tar.bz2
tar -xZvf file.tar.Z // 解压 tar.Z
unrar e file.rar // 解压 rar
unzip file.zip // 解压 zip
1) 对于 .zip
linux 下提供了 zip 和 unzip 程序,zip 是压缩程序,unzip 是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:
zip all.zip *.jpg
这条命令是将所有 .jpg 的文件压缩成一个 zip 包:
unzip all.zip
这条命令是将 all.zip 中的所有文件解压出来。
2) 对于 .rar
要在 linux 下处理 .rar 文件,需要安装 RAR for Linux。下载地址:http://www.rarsoft.com/download.htm,下载后安装即可。
tar -xzpvf rarlinux-x64-5.6.b5.tar.gz
cd rar
make
这样就安装好了,安装后就有了 rar 和 unrar 这两个程序,rar 是压缩程序,unrar 是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:
rar a all *.jpg
这条命令是将所有 .jpg 的文件压缩成一个 rar 包,名为 all.rar,该程序会将 .rar 扩展名将自动附加到包名后。
unrar e all.rar
这条命令是将 all.rar 中的所有文件解压出来
1.4、总结
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
以上就是 tar 的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压文件,tar 提供了一种特殊的功能。这就是 tar 可以在打包或解包的同时调用其它的压缩程序,比如调用 gzip、bzip2 等。
1.5、调用
1) tar调用gzip
gzip 是 GNU 组织开发的一个压缩程序,.gz 结尾的文件就是 gzip 压缩的结果。与 gzip 相对的解压程序是 gunzip。tar 中使用 -z 这个参数来调用gzip。下面来举例说明一下:
tar -czf all.tar.gz *.jpg
这条命令是将所有 .jpg 的文件打成一个 tar 包,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,包名为 all.tar.gz。
tar -xzf all.tar.gz
这条命令是将上面产生的包解开。
2) tar 调用 bzip2
bzip2 是一个压缩能力更强的压缩程序,.bz2 结尾的文件就是 bzip2 压缩的结果。
与 bzip2 相对的解压程序是 bunzip2。tar 中使用 -j 这个参数来调用 gzip。下面来举例说明一下:
tar -cjf all.tar.bz2 *.jpg
这条命令是将所有 .jpg 的文件打成一个 tar 包,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,包名为 all.tar.bz2
tar -xjf all.tar.bz2
这条命令是将上面产生的包解开。
3)tar 调用 compress
compress 也是一个压缩程序,但是好象使用 compress 的人不如 gzip 和 bzip2 的人多。.Z 结尾的文件就是 bzip2 压缩的结果。与 compress 相对的解压程序是 uncompress。tar 中使用 -Z 这个参数来调用 compress。下面来举例说明一下:
tar -cZf all.tar.Z *.jpg
这条命令是将所有 .jpg 的文件打成一个 tar 包,并且将其用 compress 压缩,生成一个 uncompress 压缩过的包,包名为 all.tar.Z。
tar -xZf all.tar.Z
这条命令是将上面产生的包解开。
tar命令的参数及其作用如表 2-14所示。
首先,-c参数用于创建压缩文件, ,-x参数用于解压文件,因此这两个参数不能同时使用。
其次 ,-z参数指定使用 Gzip格式来压缩或解压文件, ,-j参数指定使用 bzip2格式来压缩或解压文件。用户使用时则是根据文件的后缀来决定应使用何种格式参数进行解压。在执行某些压缩或解压操作时,可能需要花费数个小时,如果屏幕一直没有输出,您一方面不好判断打包的进度情况,另一方面也会怀疑电脑死机了,因此非常推荐使用 -v参数向用户不断显 示压缩或解压的过程。 -C参数用于指定要解压到哪个指定的目录。 -f参数特别重要,它必须放到参数的最后一位,代表要压缩或解压的软件包名称。刘遄老师一般使用“ tar -czvf 压缩包名称 .tar.gz 要打包的目录”命令把指定的文件进行打包压缩;相应的解压命令为“ tar -xzvf 压缩包名称 .tar.gz”。下面我们来逐个演示下打包压缩与解压的操作。先使用 tar命令把 /etc目录通过 gzip格式进行打包压缩,并把文件命名为 etc.tar.gz
接下来将打包后的压缩包文件指定解压到/root/etc目录中(先使用 mkdir命令来创建/root/etc目录):
2、grep命令
grep命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为“ grep [选项 ] [文件 ]”。
grep命令的参数及其作用如下表。
grep命令是用途最广泛的文本搜索匹配工具,虽然有很多参数,但是大多数基本上都用不到。我们在这里只讲两个最最常用的参数 :-n参数用来显示搜索到信息的行号; ;-v参数用于反选信息(即没有包含关键词的所有信息行)。这两个参数几乎能完成您日后 80%的工作需要,至于其他上百个参数,即使以后在工作期间遇到了,再使用 man grep命令查询也来得及。在Linux系统中, ,/etc/passwd文件是保存着所 有的用户信息,而一旦用户的登录终端被设置成 /sbin/nologin,则不再允许登录系统,因此可以使用 grep命令来查找出当前系统中不允许登录系统的所有用户信息:
3、find命令
find命令用来在指定目录下按照指定条件查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。格式为“ find [查找路径 ] 寻找条件 操作”。
“Linux系统中的一切都是文件”,接下来就要见证这句话的分量了。
find path -option [ -print ] [ -exec -ok command ] {} \;
命令:find 目录 参数 文件名称
部分参数:
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
在 Linux系统中,搜索工作一般都是通过 find命令来完成的,它可以使用不同的文件特性作为寻找条件(如文件名、大小、修改时间、权限等信息),一旦匹配成功则默认将信息显示到屏幕上。 find命令的参数以及作用如表 2-16所示。
这里需要重点讲解一下-exec参数重要的作用。这个参数用于把 find命令搜索到的结果交由紧随其后的命令作进一步处理,它十分类似于管道符技术,并且由于 find命令对参数的特殊要求,因此虽然 exec是长格式形式,但依然只需要一个减号(-)。
根据文件系统层次标准(Filesystem Hierarchy Standard)协议 Linux系统中的配置文件会保存到 /etc目录中。如果要想获取到该目录中所有以 host开头的文件列表,可以执行如下命令:
如果要在整个系统中搜索权限中包括SUID权限的所有文件(详见第 5章),只需使用 -4000即可:
4、which命令
which命令的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
使用实例:
which pwd # 查找pwd命令所在路径
which java # 查找path中java的路径
5、whereis命令
whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。
使用实例:
whereis ls # 将和ls文件相关的文件都查找出来
6、locate/updatedb命令
locate 让使用者可以很快速的搜寻某个路径。默认每天自动更新一次,所以使用locate 命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。如果数据库中没有查询的数据,则会报出locate: can not stat () `/var/lib/mlocate/mlocate.db’: No such file or directory该错误!updatedb即可!
yum -y install mlocate 如果是精简版CentOS系统需要安装locate命令
使用实例:
updatedb
locate /etc/sh 搜索etc目录下所有以sh开头的文件
locate pwd 查找和pwd相关的所有文件
七、终端中的编辑器(vi)
00. 目标
vi
简介- 打开和新建文件
- 三种工作模式
- 常用命令
- 分屏命令
- 常用命令速查图
01. vi
简介
1.1 学习 vi
的目的
- 在工作中,要对 服务器 上的文件进行 简单 的修改,可以使用
ssh
远程登录到服务器上,并且使用vi
进行快速的编辑即可 - 常见需要修改的文件包括:
- 源程序
- 配置文件,例如
ssh
的配置文件~/.ssh/config
- 在没有图形界面的环境下,要编辑文件,
vi
是最佳选择!- 每一个要使用 Linux 的程序员,都应该或多或少的学习一些
vi
的常用命令
1.2 vi 和 vim
- 在很多
Linux
发行版中,直接把vi
做成vim
的软连接
vi
vi
是Visual interface
的简称,是Linux
中 最经典 的文本编辑器vi
的核心设计思想 —— 让程序员的手指始终保持在键盘的核心区域,就能完成所有的编辑操作
vi
的特点:- 没有图形界面 的 功能强大 的编辑器
- 只能是编辑 文本内容,不能对字体、段落进行排版
- 不支持鼠标操作
- 没有菜单
- 只有命令
vi
编辑器在 系统管理、服务器管理 编辑文件时,其功能永远不是图形界面的编辑器能比拟的
vim
vim = vi improved
vim
是从vi
发展出来的一个文本编辑器,支持 代码补全、编译 及 错误跳转 等方便编程的功能特别丰富,在程序员中被广泛使用,被称为 编辑器之神
查询软连接命令(知道)
- 在很多
Linux
发行版中直接把vi
做成vim
的软连接
# 查找 vi 的运行文件
$ which vi
$ ls -l /usr/bin/vi
$ ls -l /etc/alternatives/vi
$ ls -l /usr/bin/vim.basic
# 查找 vim 的运行文件
$ which vim
$ ls -l /usr/bin/vim
$ ls -l /etc/alternatives/vim
$ ls -l /usr/bin/vim.basic
02. 打开和新建文件
- 在终端中输入
vi
在后面跟上文件名 即可
$ vi 文件名
- 如果文件已经存在,会直接打开该文件
- 如果文件不存在,会新建一个文件
2.1 打开文件并且定位行
-
在日常工作中,有可能会遇到 打开一个文件,并定位到指定行 的情况
-
例如:在开发时,知道某一行代码有错误,可以 快速定位 到出错代码的位置
-
这个时候,可以使用以下命令打开文件
$ vi 文件名 +行数 #输入的时候包含加号
提示:如果只带上
+
而不指定行号,会直接定位到文件末尾,表示继续添加内容
2.2 异常处理
- 如果
vi
异常退出,在磁盘上可能会保存有 交换文件 - 下次再使用
vi
编辑该文件时,会看到以下屏幕信息,按下字母d
可以 删除交换文件 即可
提示:按下键盘时,注意关闭输入法
03. 三种工作模式
-
vi
有三种基本工作模式:- 命令模式
- 打开文件首先进入命令模式,是使用
vi
的 入口 - 通过 命令 对文件进行常规的编辑操作,例如:定位、翻页、复制、粘贴、删除……
- 在其他图形编辑器下,通过 快捷键 或者 鼠标 实现的操作,都在 命令模式 下实现
- 打开文件首先进入命令模式,是使用
- 末行模式 —— 执行 保存、退出 等操作
- 要退出
vi
返回到控制台,需要在末行模式下输入命令 - 末行模式 是
vi
的 出口
- 要退出
- 编辑模式 —— 正常的编辑文字
- 命令模式
提示:在
Touch Bar
的 Mac 电脑上 ,按ESC
不方便,可以使用CTRL + [
替代
末行模式命令
命令 | 英文 | 功能 |
---|---|---|
w | write | 保存 |
q | quit | 退出,如果没有保存,不允许退出 |
q! | quit | 强行退出,不保存退出 |
wq | write & quit | 保存并退出 |
x | 保存并退出 |
04. 常用命令
命令线路图
- 重复次数
- 在命令模式下,先输入一个数字,再跟上一个命令,可以让该命令 重复执行指定次数
- 移动和选择(多练)
vi
之所以快,关键在于 能够快速定位到要编辑的代码行- 移动命令 能够 和 编辑操作 命令 组合使用
- 编辑操作
- 删除、复制、粘贴、替换、缩排
- 撤销和重复
- 查找替换
- 编辑
学习提示
vi
的命令较多,不要期望一下子全部记住,个别命令忘记了,只是会影响编辑速度而已- 在使用
vi
命令时,注意 关闭中文输入法
4.1 移动(基本)
- 要熟练使用
vi
,首先应该学会怎么在 命令模式 下样快速移动光标 - 编辑操作命令,能够和 移动命令 结合在一起使用
1) 上、下、左、右
命令 | 功能 | 手指 |
---|---|---|
h | 向左 | 食指 |
j | 向下 | 食指 |
k | 向上 | 中指 |
l | 向右 | 无名指 |
2) 行内移动
命令 | 英文 | 功能 |
---|---|---|
w | word | 向后移动一个单词 |
b | back | 向前移动一个单词 |
0 | 行首 | |
^ | 行首,第一个不是空白字符的位置 | |
$ | 行尾 |
3) 行数移动
命令 | 英文 | 功能 |
---|---|---|
gg | go | 文件顶部 |
G | go | 文件末尾 |
数字gg | go | 移动到 数字 对应行数 |
数字G | go | 移动到 数字 对应行数 |
:数字 | 移动到 数字 对应行数 |
4) 屏幕移动
命令 | 英文 | 功能 |
---|---|---|
Ctrl + b | back | 向上翻页 |
Ctrl + f | forward | 向下翻页 |
H | Head | 屏幕顶部 |
M | Middle | 屏幕中间 |
L | Low | 屏幕底部 |
4.2 移动(程序)
1) 段落移动
vi
中使用 空行 来区分段落- 在程序开发时,通常 一段功能相关的代码会写在一起 —— 之间没有空行
命令 | 功能 |
---|---|
{ | 上一段 |
} | 下一段 |
2) 括号切换
- 在程序世界中,
()
、[]
、{}
使用频率很高,而且 都是成对出现的
命令 | 功能 |
---|---|
% | 括号匹配及切换 |
3) 标记
- 在开发时,某一块代码可能需要稍后处理,例如:编辑、查看
- 此时先使用
m
增加一个标记,这样可以 在需要时快速地跳转回来 或者 执行其他编辑操作 - 标记名称 可以是
a~z
或者A~Z
之间的任意 一个 字母 - 添加了标记的 行如果被删除,标记同时被删除
- 如果 在其他行添加了相同名称的标记,之前添加的标记也会被替换掉
命令 | 英文 | 功能 |
---|---|---|
mx | mark | 添加标记 x,x 是 a~z 或者 A~Z 之间的任意一个字母 |
'x | 直接定位到标记 x 所在位置 |
4.3 选中文本(可视模式)
- 学习
复制
命令前,应该先学会 怎么样选中 要复制的代码 - 在
vi
中要选择文本,需要先使用Visual
命令切换到 可视模式 vi
中提供了 三种 可视模式,可以方便程序员选择 选中文本的方式- 按
ESC
可以放弃选中,返回到 命令模式
命令 | 模式 | 功能 |
---|---|---|
v | 可视模式 | 从光标位置开始按照正常模式选择文本 |
V | 可视行模式 | 选中光标经过的完整行 |
Ctrl + v | 可视块模式 | 垂直方向选中文本 |
- 可视模式下,可以和 移动命令 连用,例如:
ggVG
能够选中所有内容
4.4 撤销和恢复撤销
- 在学习编辑命令之前,先要知道怎样撤销之前一次 错误的 编辑动作!
命令 | 英文 | 功能 |
---|---|---|
u | undo | 撤销上次命令 |
CTRL + r | redo | 恢复撤销的命令 |
4.5 删除文本
命令 | 英文 | 功能 |
---|---|---|
x | cut | 删除光标所在字符,或者选中文字 |
d(移动命令) | delete | 删除移动命令对应的内容 |
dd | delete | 删除光标所在行,可以 ndd 复制多行 |
D | delete | 删除至行尾 |
提示:如果使用 可视模式 已经选中了一段文本,那么无论使用
d
还是x
,都可以删除选中文本
- 删除命令可以和 移动命令 连用,以下是常见的组合命令:
* dw # 从光标位置删除到单词末尾
* d0 # 从光标位置删除到一行的起始位置
* d} # 从光标位置删除到段落结尾
* ndd # 从光标位置向下连续删除 n 行
* d代码行G # 从光标所在行 删除到 指定代码行 之间的所有代码
* d'a # 从光标所在行 删除到 标记a 之间的所有代码
4.6 复制、粘贴
vi
中提供有一个 被复制文本的缓冲区- 复制 命令会将选中的文字保存在缓冲区
- 删除 命令删除的文字会被保存在缓冲区
- 在需要的位置,使用 粘贴 命令可以将缓冲区的文字插入到光标所在位置
命令 | 英文 | 功能 |
---|---|---|
y(移动命令) | copy | 复制 |
yy | copy | 复制一行,可以 nyy 复制多行 |
p | paste | 粘贴 |
提示
- 命令
d
、x
类似于图形界面的 剪切操作 ——CTRL + X
- 命令
y
类似于图形界面的 复制操作 ——CTRL + C
- 命令
p
类似于图形界面的 粘贴操作 ——CTRL + V
vi
中的 文本缓冲区同样只有一个,如果后续做过 复制、剪切 操作,之前缓冲区中的内容会被替换
注意
vi
中的 文本缓冲区 和系统的 剪贴板 不是同一个- 所以在其他软件中使用
CTRL + C
复制的内容,不能在vi
中通过P
命令粘贴 - 可以在 编辑模式 下使用 鼠标右键粘贴
4.7 替换
命令 | 英文 | 功能 | 工作模式 |
---|---|---|---|
r | replace | 替换当前字符 | 命令模式 |
R | replace | 替换当前行光标后的字符 | 替换模式 |
R
命令可以进入 替换模式,替换完成后,按下ESC
可以回到 命令模式- 替换命令 的作用就是不用进入 编辑模式,对文件进行 轻量级的修改
4.8 缩排和重复执行
命令 | 功能 |
---|---|
>> | 向右增加缩进 |
<< | 向左减少缩进 |
. | 重复上次命令 |
- 缩排命令 在开发程序时,统一增加代码的缩进 比较有用!
- 一次性 在选中代码前增加 4 个空格,就叫做 增加缩进
- 一次性 在选中代码前删除 4 个空格,就叫做 减少缩进
- 在 可视模式 下,缩排命令只需要使用 一个
>
或者<
在程序中,缩进 通常用来表示代码的归属关系
- 前面空格越少,代码的级别越高
- 前面空格越多,代码的级别越低
4.9 查找
常规查找
命令 | 功能 |
---|---|
/str | 查找 str |
- 查找到指定内容之后,使用
Next
查找下一个出现的位置:n
: 查找下一个N
: 查找上一个
- 如果不想看到高亮显示,可以随便查找一个文件中不存在的内容即可
单词快速匹配
命令 | 功能 |
---|---|
* | 向后查找当前光标所在单词 |
# | 向前查找当前光标所在单词 |
- 在开发中,通过单词快速匹配,可以快速看到这个单词在其他什么位置使用过
4.10 查找并替换
- 在
vi
中查找和替换命令需要在 末行模式 下执行 - 记忆命令格式:
:%s///g
1) 全局替换
- 一次性替换文件中的 所有出现的旧文本
- 命令格式如下:
:%s/旧文本/新文本/g
2) 可视区域替换
- 先选中 要替换文字的 范围
- 命令格式如下:
:s/旧文本/新文本/g
3) 确认替换
- 如果把末尾的
g
改成gc
在替换的时候,会有提示!推荐使用!
:%s/旧文本/新文本/gc
y
-yes
替换n
-no
不替换a
-all
替换所有q
-quit
退出替换l
-last
最后一个,并把光标移动到行首^E
向下滚屏^Y
向上滚屏
4.11 插入命令
- 在
vi
中除了常用的i
进入 编辑模式 外,还提供了以下命令同样可以进入编辑模式:
命令 | 英文 | 功能 | 常用 |
---|---|---|---|
i | insert | 在当前字符前插入文本 | 常用 |
I | insert | 在行首插入文本 | 较常用 |
a | append | 在当前字符后添加文本 | |
A | append | 在行末添加文本 | 较常用 |
o | 在当前行后面插入一空行 | 常用 | |
O | 在当前行前面插入一空行 | 常用 |
演练 1 —— 编辑命令和数字连用
- 在开发中,可能会遇到连续输入
N
个同样的字符
在
Python
中有简单的方法,但是其他语言中通常需要自己输入
- 例如:
**********
连续 10 个星号
要实现这个效果可以在 命令模式 下
- 输入
10
,表示要重复 10 次 - 输入
i
进入 编辑模式 - 输入
*
也就是重复的文字 - 按下
ESC
返回到 命令模式,返回之后vi
就会把第2、3
两步的操作重复10
次
提示:正常开发时,在 进入编辑模式之前,不要按数字
演练 2 —— 利用 可视块 给多行代码增加注释
- 在开发中,可能会遇到一次性给多行代码 增加注释 的情况
在
Python
中,要给代码增加注释,可以在代码前增加一个#
要实现这个效果可以在 命令模式 下
- 移动到要添加注释的 第 1 行代码,按
^
来到行首 - 按
CTRL + v
进入 可视块 模式 - 使用
j
向下连续选中要添加的代码行 - 输入
I
进入 编辑模式,并在 行首插入,注意:一定要使用 I - 输入
#
也就是注释符号 - 按下
ESC
返回到 命令模式,返回之后vi
会在之前选中的每一行代码 前 插入#
05. 分屏命令
- 属于
vi
的高级命令 —— 可以 同时编辑和查看多个文件
5.1 末行命令扩展
末行命令 主要是针对文件进行操作的:保存、退出、保存&退出、搜索&替换、另存、新建、浏览文件
命令 | 英文 | 功能 |
---|---|---|
:e . | edit | 会打开内置的文件浏览器,浏览要当前目录下的文件 |
:n 文件名 | new | 新建文件 |
:w 文件名 | write | 另存为,但是仍然编辑当前文件,并不会切换文件 |
提示:切换文件之前,必须保证当前这个文件已经被保存!
- 已经学习过的 末行命令:
命令 | 英文 | 功能 |
---|---|---|
:w | write | 保存 |
:q | quit | 退出,如果没有保存,不允许退出 |
:q! | quit | 强行退出,不保存退出 |
:wq | write & quit | 保存并退出 |
:x | 保存并退出 | |
:%s///gc | 确认搜索并替换 |
在实际开发中,可以使用
w
命令 阶段性的备份代码
5.2 分屏命令
- 使用 分屏命令,可以 同时编辑和查看多个文件
命令 | 英文 | 功能 |
---|---|---|
:sp [文件名] | split | 横向增加分屏 |
:vsp [文件名] | vertical split | 纵向增加分屏 |
1) 切换分屏窗口
分屏窗口都是基于
CTRL + W
这个快捷键的,w
对应的英文单词是window
命令 | 英文 | 功能 |
---|---|---|
w | window | 切换到下一个窗口 |
r | reverse | 互换窗口 |
c | close | 关闭当前窗口,但是不能关闭最后一个窗口 |
q | quit | 退出当前窗口,如果是最后一个窗口,则关闭 vi |
o | other | 关闭其他窗口 |
2) 调整窗口大小
分屏窗口都是基于
CTRL + W
这个快捷键的,w
对应的英文单词是window
命令 | 英文 | 功能 |
---|---|---|
+ | 增加窗口高度 | |
- | 减少窗口高度 | |
> | 增加窗口宽度 | |
< | 减少窗口宽度 | |
= | 等分窗口大小 |
调整窗口宽高的命令可以和数字连用,例如:
5 CTRL + W +
连续 5 次增加高度
06. 常用命令速查图
vimrc
vimrc
是vim
的配置文件,可以设置 vim 的配置,包括:热键、配色、语法高亮、插件 等Linux
中vimrc
有两个位置,家目录下的配置文件优先级更高
/etc/vim/vimrc
~/.vimrc
-
常用的插件有:
- 代码补全
- 代码折叠
- 搜索
- Git 集成
- ……
-
网上有很多高手已经配置好的针对
python
开发的vimrc
文件,可以下载过来直接使用,或者等大家多Linux
比较熟悉后,再行学习!
八、文件权限修改命令
Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以藉以控制文件如何被他人所调用。
1、chmod 命令
使用权限 : 所有使用者
chmod [-cfvR] [--help] [--version] mode file...
参数说明
mode : 权限设定字串,格式如下 :
[ugoa...][[+-=][rwxX]...][,...]
其中:
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
权限的设定方法有两种, 分别可以使用数字或者是符号来进行权限的变更。
数字类型改变档案权限:
符号类型改变档案权限:
- W
这个快捷键的,
w对应的英文单词是
window`
命令 | 英文 | 功能 |
---|---|---|
w | window | 切换到下一个窗口 |
r | reverse | 互换窗口 |
c | close | 关闭当前窗口,但是不能关闭最后一个窗口 |
q | quit | 退出当前窗口,如果是最后一个窗口,则关闭 vi |
o | other | 关闭其他窗口 |
2) 调整窗口大小
分屏窗口都是基于
CTRL + W
这个快捷键的,w
对应的英文单词是window
命令 | 英文 | 功能 |
---|---|---|
+ | 增加窗口高度 | |
- | 减少窗口高度 | |
> | 增加窗口宽度 | |
< | 减少窗口宽度 | |
= | 等分窗口大小 |
调整窗口宽高的命令可以和数字连用,例如:
5 CTRL + W +
连续 5 次增加高度
06. 常用命令速查图
[外链图片转存中…(img-RsBJQBp1-1620299372187)]
vimrc
vimrc
是vim
的配置文件,可以设置 vim 的配置,包括:热键、配色、语法高亮、插件 等Linux
中vimrc
有两个位置,家目录下的配置文件优先级更高
/etc/vim/vimrc
~/.vimrc
-
常用的插件有:
- 代码补全
- 代码折叠
- 搜索
- Git 集成
- ……
-
网上有很多高手已经配置好的针对
python
开发的vimrc
文件,可以下载过来直接使用,或者等大家多Linux
比较熟悉后,再行学习![外链图片转存中…(img-H5Q2hsCL-1620299372188)]
八、文件权限修改命令
Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以藉以控制文件如何被他人所调用。
1、chmod 命令
使用权限 : 所有使用者
chmod [-cfvR] [--help] [--version] mode file...
参数说明
mode : 权限设定字串,格式如下 :
[ugoa...][[+-=][rwxX]...][,...]
其中:
u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
权限的设定方法有两种, 分别可以使用数字或者是符号来进行权限的变更。
数字类型改变档案权限:
[外链图片转存中…(img-g2oTSVDF-1620299372188)]
符号类型改变档案权限:
[外链图片转存中…(img-FkDHtV7q-1620299372189)]