一、Linux 基础

1. Linux 简介

1.1 Linux 简介


Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。


文章目录

  • 1 Linux 的发行版
  • 2 Linux 应用领域
  • 3 Linux vs Windows

1.2 Linux 的发行版

Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。

目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。


1.3 Linux 应用领域

今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)组合。

目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎。

  • 巴西联邦政府由于支持 Linux 而世界闻名。
  • 有新闻报道俄罗斯军队自己制造的 Linux 发布版的,做为 G.H.ost 项目已经取得成果。
  • 印度的 Kerala 联邦计划在向全联邦的高中推广使用 Linux。
  • 中华人民共和国为取得技术独立,在龙芯处理器中排他性地使用 Linux。
  • 在西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如 Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex。
  • 葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh?es 笔记本电脑和 e-escola 政府软件。
  • 法国和德国同样开始逐步采用 Linux。

1.3 Linux vs Windows

目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。主要区别如下

比较WindowsLinux
界面界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。
驱动程序驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。
使用使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。图形界面使用简单,容易入门。文字界面,需要学习才能掌握。
学习系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。
软件每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。大部分软件都可以自由获取,同样功能的软件选择较少。

2. Linux 安装

2.1 Linux 安装

本章节我们将为大家介绍 Linux 的安装,安装步骤比较繁琐,现在其实云服务器挺普遍的,价格也便宜,如果直接不想搭建,也可以直接买一台学习用用,参考各大云服务器比较。

本章节以 centos6.4 为例。

centos 下载地址:

可以去官网下载最新版本:https://www.centos/download/

以下针对各个版本的ISO镜像文件,进行一一说明:

  • CentOS-7.0-x86_64-DVD-1503-01.iso : 标准安装版,一般下载这个就可以了(推荐)
  • CentOS-7.0-x86_64-NetInstall-1503-01.iso : 网络安装镜像(从网络安装或者救援系统)
  • CentOS-7.0-x86_64-Everything-1503-01.iso: 对完整版安装盘的软件进行补充,集成所有软件。(包含centos7的一套完整的软件包,可以用来安装系统或者填充本地镜像)
  • CentOS-7.0-x86_64-GnomeLive-1503-01.iso: GNOME桌面版
  • CentOS-7.0-x86_64-KdeLive-1503-01.iso: KDE桌面版
  • CentOS-7.0-x86_64-livecd-1503-01.iso : 光盘上运行的系统,类拟于winpe
  • CentOS-7.0-x86_64-minimal-1503-01.iso : 精简版,自带的软件最少

**注:**建议安装64位Linux系统。
旧版本下载地址:https://wiki.centos/Download

接下来你需要将下载的Linux系统刻录成光盘或U盘。

**注:**你也可以在Window上安装VMware虚拟机来安装Linux系统。


文章目录

  • 1 Linux 安装步骤
  • 2 Cloud Studio

2.2 Linux 安装步骤

1、首先,使用光驱或U盘或你下载的Linux ISO文件进行安装。

界面说明:

Install or upgrade an existing system 安装或升级现有的系统

install system with basic video driver 安装过程中采用基本的显卡驱动

Rescue installed system 进入系统修复模式

Boot from local drive 退出安装从硬盘启动

Memory test 内存检测

注:用联想E49安装时选择第一项安装时会出现屏幕显示异常的问题,后改用第二项安装时就没有出现问题

2、这时直接”skip”就可以了

3、出现引导界面,点击”next”

4、选中”English(English)”否则会有部分乱码问题

5、键盘布局选择”U.S.English”

6、选择”Basic Storage Devices”点击”Next”

7、询问是否忽略所有数据,新电脑安装系统选择”Yes,discard any data”

8、Hostname填写格式”英文名.姓”

9、网络设置安装图示顺序点击就可以了

10、时区可以在地图上点击,选择”shanghai”并取消System clock uses UTC前面的对勾

11、设置root的密码

12、硬盘分区,一定要按照图示点选

13、调整分区,必须要有/home这个分区,如果没有这个分区,安装部分软件会出现不能安装的问题

14、询问是否格式化分区

15、将更改写入到硬盘

16、引导程序安装位置

17、最重要的一步,也是本教程最关键的一步,也是其他教程没有提及的一步,按图示顺序点击

18、取消以下内容的所有选项

Applications

Base System

Servers

并对Desktops进行如下设置

即取消如下选项:

Desktop Debugging and Performance Tools

Desktop Platform

Remote Desktop Clients

Input Methods****中仅保留ibus-pinyin-1.3.8-1.el6.x86_64,其他的全部取消

19、选中Languages,并选中右侧的Chinese Support然后点击红色区域

20、调整完成后如下图所示

21、至此,一个最精简的桌面环境就设置完成了,

22、安装完成,重启

23、重启之后,的License Information

24、Create User

Username:填写您的英文名(不带.姓)

Full Name:填写您的英文名.姓(首字母大写)

25、”Date and Time” 选中 “Synchronize data and time over the network”

Finsh之后系统将重启

26、第一次登录,登录前不要做任何更改,这个很重要!!!登录之后紧接着退出

第二次登录,选择语言,在红色区域选择下拉小三角,选other,选中”汉语(中国)”

27、登录之后,请一定按照如下顺序点击!

至此,CentOS安装完成,如有其他问题,请随时与我联系!!

如果你使用的是 VMware,可以参考:VMware 安装 Centos7

3. Linux 云服务器

3.1 Linux 云服务器

自己安装服务器还是麻烦了些,现在一般都推荐大家使用云服务器,比较方便,价格也不贵。

目前市场上的云服务器很多,这边比较下腾讯云跟阿里云的服务器优惠活动,现在看来腾讯云性价比会高一些。


文章目录

  • 1 腾讯云
  • 2 阿里云
  • 3 腾讯云服务器使用

3.2 腾讯云

年末腾讯云活动已开始,以下几款性价比非常高,有几款是需要抢购的,大家看好时间基本能拿到。

  • 1、1核2G 99/年,可以用来学习,Linux 知识对技术人员的成才非常重要。
  • 2、2核4G 488/年。
  • 3、另外还有香港的服务器,如果做网站不想去备案,可以考虑,香港速度还是很快的。

每个时间点都有不同的配置跟价格,具体信息,可以点击下面的图片:

另外企业用户还有更高配置的,价格也很实惠:


3.3 阿里云

阿里也有一些活动,不分新老用户,可以领红包参与满减活动,续费也有专门的优惠券,有需求的也可以关注下。

具体信息,可以点击下面的图片。

注意:阿里云突发性能型的服务器真的只能自己学习用,如果要用对外提供服务要慎重选择,因为它性能瓶颈限制很大,不过价格便宜就是了。

新用户专场,价格还是很实惠的(2核4G5M-3年 ¥935.55):

老户专场,价格也还行:

5 折活动页:


3.4 腾讯云服务器使用

本章节以腾讯云服务器为例。

1、首先点击下图购买(更多服务器的配置信息见下文):

2、登陆腾讯云控制台,查看已购买的服务器:

3、在使用腾讯云服务器前,我们需要先创建一个 SSH 密钥,点击左侧的 SSH 密钥 (使用密钥登录比密码更安全):

输入密钥名称,然后点击确定,就会自动生成一个密钥,密钥会自动下载到本地,请保存好下载的密钥,密钥文件名就是你输入的密钥名称。

4、接着我们勾选已经创建的密钥,点击 绑定/解绑实例 按钮,弹窗中会出现我们的 ECS 服务器,将其绑定到这个密钥即可:

5、返回实例列表,点击实例右侧的 登录 按钮,弹窗中点击立即登录,这是会弹出一个新的浏览器窗口,我们选择密钥登录,密钥文件就是在第三个步骤创建的:

当然你可以选择第三方客户端登录(如:SecureCRT),用户名为 ubuntu,其他系统估计略有不同,然后导入对应的 key 即可。

4. Linux 系统启动过程

Linux 系统启动过程

linux启动时我们会看到许多启动信息。

Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:

  • 内核的引导。
  • 运行 init。
  • 系统初始化。
  • 建立终端 。
  • 用户登录系统。

init程序的类型:

  • SysV: init, CentOS 5之前, 配置文件: /etc/inittab。
  • Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。
  • Systemd: systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。

文章目录

  • 1 内核引导
  • 2 运行init
    • 2.1 运行级别
  • 3 系统初始化
  • 4 建立终端
  • 5 用户登录系统
  • 6 图形模式与文字模式的切换方式
  • 7 Linux 关机

4.1 内核引导

当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。

操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。


4.2 运行init

init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。

init 程序首先是需要读取配置文件 /etc/inittab。

4.3 运行级别

许多程序需要开机启动。它们在Windows叫做”服务”(service),在Linux就叫做”守护进程”(daemon)。

init进程的一大任务,就是去运行这些开机启动的程序。

但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。

Linux允许为不同的场合,分配不同的开机启动程序,这就叫做”运行级别”(runlevel)。也就是说,启动时根据”运行级别”,确定要运行哪些程序。

Linux系统有7个运行级别(runlevel):

  • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
  • 运行级别2:多用户状态(没有NFS)
  • 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
  • 运行级别4:系统未使用,保留
  • 运行级别5:X11控制台,登陆后进入图形GUI模式
  • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

4.4 系统初始化

在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。

它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。

l5:5:wait:/etc/rc.d/rc 5

Shell

这一行表示以5为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个Shell脚本,它接受5作为参数,去执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本,/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些连接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。

而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。

/etc/rc.d/rc5.d/中的rc启动脚本通常是K或S开头的连接文件,对于以 S 开头的启动脚本,将以start参数来运行。

而如果发现存在相应的脚本也存在K打头的连接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。

这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。

至于在每个运行级中将运行哪些守护进程,用户可以通过chkconfig或setup中的”System Services”来自行设定。


4.5 建立终端

rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。

init接下来会打开6个终端,以便用户登录系统。在inittab中的以下6行就是定义了6个终端:

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

Shell

从上面可以看出在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。

同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。


4.6 用户登录系统

一般来说,用户的登录方式有三种:

  • (1)命令行登录
  • (2)ssh登录
  • (3)图形界面登录

对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入 KDE、Gnome 等窗口管理器。

而本文主要讲的还是文本方式登录的情况:当我们看到mingetty的登录界面时,我们就可以输入用户名和密码来登录系统了。

Linux 的账号验证程序是 login,login 会接收 mingetty 传来的用户名作为用户名参数。

然后 login 会对用户名进行分析:如果用户名不是 root,且存在 /etc/nologin 文件,login 将输出 nologin 文件的内容,然后退出。

这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许 root 用户登录,如果不存在这个文件,则 root 用户可以在任何终端上登录。

/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。


4.7 图形模式与文字模式的切换方式

Linux预设提供了六个命令窗口终端机让我们来登录。

默认我们登录的就是第一个窗口,也就是tty1,这个六个窗口分别为tty1,tty2 … tty6,你可以按下Ctrl + Alt + F1 ~ F6 来切换它们。

如果你安装了图形界面,默认情况下是进入图形界面的,此时你就可以按Ctrl + Alt + F1 ~ F6来进入其中一个命令窗口界面。

当你进入命令窗口界面后再返回图形界面只要按下Ctrl + Alt + F7 就回来了。

如果你用的vmware 虚拟机,命令窗口切换的快捷键为 Alt + Space + F1~F6. 如果你在图形界面下请按Alt + Shift + Ctrl + F1~F6 切换至命令窗口。


4.8 Linux 关机

在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

正确的关机流程为:sync > shutdown > reboot > halt

关机指令为:shutdown ,你可以man shutdown 来看一下帮助文档。

例如你可以运行如下命令关机:

sync 将数据由内存同步到硬盘中。

shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:

shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。

shutdown –h now 立马关机

shutdown –h 20:25 系统会在今天20:25关机

shutdown –h +10 十分钟后关机

shutdown –r now 系统立马重启

shutdown –r +10 系统十分钟后重启

reboot 就是重启,等同于 shutdown –r now

halt 关闭系统,等同于shutdown –h now 和 poweroff

Shell

最后总结一下,不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。

关机的命令有 shutdown –h now halt poweroffinit 0 , 重启系统的命令有 shutdown –r now reboot init 6

5. Linux 系统目录结构

Linux 系统目录结构
登录系统后,在当前命令窗口下输入命令:

ls /

Shell

你会看到如下图所示:

树状目录结构:

以下是对这些目录的解释:

  • /bin

    bin是Binary的缩写, 这个目录存放着最经常使用的命令。

  • /boot:

    这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /dev :
    dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

  • /etc:
    这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home
    用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

  • /lib
    这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

  • /lost+found
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  • /media
    linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

  • /mnt
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

  • /opt
    这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc
    这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    
  • /root
    该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin
    s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

  • /selinux
    这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

  • /srv
    该目录存放一些服务启动之后需要提取的数据。

  • /sys

    这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

    sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。

    该文件系统是内核设备树的一个直观反映。

    当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp
    这个目录是用来存放一些临时文件的。

  • /usr
    这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

  • /usr/bin:
    系统用户使用的应用程序。

  • /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。

  • /usr/src:
    内核源代码默认的放置目录。

  • /var
    这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • /run
    是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

6.Linux 忘记密码解决方法

Linux 忘记密码解决方法
很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可。

步骤如下:

6.1 重启linux系统

3 秒之内要按一下回车,出现如下界面

然后输入e

在 第二行最后边输入 single,有一个空格。具体方法为按向下尖头移动到第二行,按”e”进入编辑模式

在后边加上single 回车

最后按”b”启动,启动后就进入了单用户模式了

此时已经进入到单用户模式了,你可以更改root密码了。更密码的命令为 passwd

使用系统安装光盘的救援模式

救援模式即rescue ,这个模式主要是应用于,系统无法进入的情况。如,grub损坏或者某一个配置文件修改出错。如何使用rescue模式呢?

光盘启动,按F5 进入rescue模式

输入linux rescue 回车

选择语言,笔者建议你选择英语

选择us 键盘

这里问你是否启动网络,有时候可能会联网调试。我们选no

这里告诉我们,接下来会把系统挂载在/mnt/sysimage 中。

其中有三个选项:

  • Continue 就是挂载后继续下一步。
  • Read-Only 挂载成只读,这样更安全,有时文件系统损坏时,只读模式会防止文件系统近一步损坏。
  • Skip就是不挂载,进入一个命令窗口模式。

这里我们选择Continue。

至此,系统已经挂载到了/mnt/sysimage中。接下来回车,输入chroot /mnt/sysimage 进入管理员环境。

提示: 其实也可以到rescue模式下更改root的密码的。这个rescue模式和windows PE系统很相近。

当运行了chroot /mnt/sysimage/ 后,再ls 看到目录结构和原来系统中的目录结构是一样的。

没错!现在的环境和原来系统的环境是一模一样的。你可以输入exit 或者按Ctrl + D退出这个环境。然后你再ls 看一下

这个目录其实就是rescue模式下的目录结构,而我们的系统文件全部在 /mnt/sysimage目录下。

7. Linux 远程登录

Linux 远程登录

Linux 一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的 Linux 服务器。

这时我们就需要远程登录到Linux服务器来管理维护系统。

Linux 系统中是通过 ssh 服务实现的远程登录功能,默认 ssh 服务端口号为 22。

Window 系统上 Linux 远程登录客户端有 SecureCRT, Putty, SSH Secure Shell 等,本文以 Putty 为例来登录远程服务器。

Putty 下载地址:https://www.putty/

如果你下载了 Putty,请双击 putty.exe 然后弹出如下的窗口。

在Host Name( or IP address) 下面的框中输入你要登录的远程服务器IP(可以通过ifconfig命令查看服务器ip),然后回车。

此时,提示我们输入要登录的用户名。

输入root 然后回车,再输入密码,就能登录到远程的linux系统了。


7.1 使用密钥认证机制远程登录linux

SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定。

SSH 为建立在应用层和传输层基础上的安全协议。

首先使用工具 PUTTYGEN.EXE 生成密钥对。打开工具 PUTTYGEN.EXE 后如下图所示:

该工具可以生成三种格式的key :SSH-1(RSA) SSH-2(RSA) SSH-2(DSA) ,我们采用默认的格式即 SSH-2(RSA)。Number of bits in a generated key 这个是指生成的key的大小,这个数值越大,生成的key就越复杂,安全性就越高。这里我们写 2048。

然后单击Generate 开始生成密钥对:

注意的是,在这个过程中鼠标要来回的动,否则这个进度条是不会动的。

到这里,密钥对已经生成了。你可以给你的密钥输入一个密码,(在Key Passphrase那里)也可以留空。然后点 Save public key 保存公钥,点 Save private Key 保存私钥。笔者建议你放到一个比较安全的地方,一来防止别人偷窥,二来防止误删除。接下来就该到远程 linux 主机上设置了。

1)创建目录 /root/.ssh 并设置权限

[root@localhost ~]# mkdir /root/.ssh mkdir 命令用来创建目录,以后会详细介绍,暂时只了解即可。

[root@localhost ~]# chmod 700 /root/.ssh chmod 命令是用来修改文件属性权限的,以后会详细介绍。

2)创建文件 / root/.ssh/authorized_keys

[root@localhost ~]# vim /root/.ssh/authorized_keys vim 命令是编辑一个文本文件的命令,同样在后续章节详细介绍。

3)打开刚才生成的public key 文件,建议使用写字板打开,这样看着舒服一些,复制从AAAA开头至 “—- END SSH2 PUBLIC KEY —-” 该行上的所有内容,粘贴到/root/.ssh/authorized_keys 文件中,要保证所有字符在一行。(可以先把复制的内容拷贝至记事本,然后编辑成一行载粘贴到该文件中)。

在这里要简单介绍一下,如何粘贴,用vim打开那个文件后,该文件不存在,所以vim会自动创建。按一下字母”i”然后同时按shift + Insert 进行粘贴(或者单击鼠标右键即可),前提是已经复制到剪切板中了。粘贴好后,然后把光标移动到该行最前面输入 ssh-rsa ,然后按空格。再按ESC,然后输入冒号wq 即 :wq 就保存了。格式如下图:

4)再设置putty选项,点窗口左侧的SSh –> Auth ,单击窗口右侧的Browse… 选择刚刚生成的私钥, 再点Open ,此时输入root,就不用输入密码就能登录了。

如果在前面你设置了Key Passphrase ,那么此时就会提示你输入密码的。为了更加安全建议大家要设置一个Key Passphrase。

8. Linux 文件基本属性

Linux 文件基本属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:

[root@www /]# ls -l
total 64
dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot
……

Shell

实例中,bin文件的第一个属性用”d”表示。”d”在Linux中代表该文件是一个目录文件。

在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。

  • 当为[ d ]则是目录
  • 当为[ – ]则是文件;
  • 若是[ l ]则表示为链接文档(link file);
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ – ]而已。

每个文件的属性由左边第一部分的10个字符来确定(如下图)。

从左至右用0-9这些数字来表示。

第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。

第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。

其中,第1、4、7位表示读权限,如果用”r”字符表示,则有读权限,如果用”-“字符表示,则没有读权限;

第2、5、8位表示写权限,如果用”w”字符表示,则有写权限,如果用”-“字符表示没有写权限;第3、6、9位表示可执行权限,如果用”x”字符表示,则有执行权限,如果用”-“字符表示,则没有执行权限。


文章目录

  • 1 Linux文件属主和属组
  • 2 更改文件属性
    • 2.1 chgrp:更改文件属组
    • 2.2 chown:更改文件属主,也可以同时更改文件属组
    • 2.3 chmod:更改文件9个属性
    • 2.4 符号类型改变文件权限

8.1 Linux文件属主和属组

[root@www /]# ls -l
total 64
drwxr-xr-x 2 root  root  4096 Feb 15 14:46 cron
drwxr-xr-x 3 mysql mysql 4096 Apr 21  2014 mysql
……

Shell

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
在以上实例中,mysql 文件是一个目录文件,属主和属组都为 mysql,属主有可读、可写、可执行的权限;与属主同组的其他用户有可读和可执行的权限;其他用户也有可读和可执行的权限。
对于 root 用户来说,一般情况下,文件的权限对其不起作用。

8.2 更改文件属性

chgrp:更改文件属组

语法:

chgrp [-R] 属组名 文件名

Shell

参数选项

  • -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

chown:更改文件属主,也可以同时更改文件属组

语法:

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

Shell

进入 /root 目录(~)将install.log的拥有者改为bin这个账号:

[root@www ~] cd ~
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log

Shell

将install.log的拥有者与群组改回为root:

[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

Shell

chmod:更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。

Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。

先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

  • r:4
  • w:2
  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= — = 0+0+0 = 0

所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:

chmod [-R] xyz 文件或目录

Shell

选项与参数:

  • xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
  • -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么命令如下:

[root@www ~]# ls -al .bashrc
-rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc
[root@www ~]# chmod 777 .bashrc
[root@www ~]# ls -al .bashrc
-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

Shell

那如果要将权限变成 -rwxr-xr– 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754。

符号类型改变文件权限

还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:

  • (1)user
  • (2)group
  • (3)others

那么我们就可以使用 u, g, o 来代表三种身份的权限!

此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:

chmodu g o a+(加入) -(除去) =(设定)r w x文件或目录

如果我们需要将文件权限设置为 -rwxr-xr– ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定:

#  touch test1    // 创建 test1 文件
# ls -al test1    // 查看 test1 默认权限
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
# chmod u=rwx,g=rx,o=r  test1    // 修改 test1 权限
# ls -al test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1

Shell

而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

#  chmod  a-x test1
# ls -al test1
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1

Shell

[赞(0)](javascript:😉

9. Linux 文件与目录管理

Linux 文件与目录管理

我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。
其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。
在开始本教程前我们需要先知道什么是绝对路径与相对路径。

  • 绝对路径:
    路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
  • 相对路径:
    路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法啦!

文章目录

  • 1 处理目录的常用命令
    • 1.1 ls (列出目录)
    • 1.2 cd (切换目录)
    • 1.3 pwd (显示目前所在的目录)
    • 1.4 mkdir (创建新目录)
    • 1.5 rmdir (删除空的目录)
    • 1.6 cp (复制文件或目录)
    • 1.7 rm (移除文件或目录)
    • 1.8 mv (移动文件与目录,或修改名称)
  • 2 Linux 文件内容查看
    • 2.1 cat
    • 2.2 tac
    • 2.3 nl
    • 2.4 more
    • 2.5 less
    • 2.6 head
    • 2.7 tail

9.1 处理目录的常用命令

接下来我们就来看几个常见的处理目录的命令吧:

  • ls: 列出目录及文件名
  • cd:切换目录
  • pwd:显示目前的目录
  • mkdir:创建一个新的目录
  • rmdir:删除一个空的目录
  • cp: 复制文件或目录
  • rm: 移除文件或目录
  • mv: 移动文件与目录,或修改文件与目录的名称

你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。

ls (列出目录)

在Linux系统当中, ls 命令可能是最常被运行的。

语法:

[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
[root@www ~]# ls [--color={never,auto,always}] 目录名称
[root@www ~]# ls [--full-time] 目录名称

Shell

选项与参数:

  • -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
  • -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
  • -l :长数据串列出,包含文件的属性与权限等等数据;(常用)

将家目录下的所有文件列出来(含属性与隐藏档)

[root@www ~]# ls -al ~

Shell

cd (切换目录)

cd是Change Directory的缩写,这是用来变换工作目录的命令。

语法:

cd [相对路径或绝对路径]

Shell

#使用 mkdir 命令创建 geekdoc 目录
[root@www ~]# mkdir geekdoc

#使用绝对路径切换到 geekdoc 目录
[root@www ~]# cd /root/geekdoc/

#使用相对路径切换到 geekdoc 目录
[root@www ~]# cd ./geekdoc/

# 表示回到自己的家目录,亦即是 /root 这个目录
[root@www geekdoc]# cd ~

# 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
[root@www ~]# cd ..

Shell

接下来大家多操作几次应该就可以很好的理解 cd 命令的。

pwd (显示目前所在的目录)

pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。

[root@www ~]# pwd [-P]

Shell

选项与参数:

  • -P :显示出确实的路径,而非使用连结 (link) 路径。

实例:单纯显示出目前的工作目录:

[root@www ~]# pwd
/root   <== 显示出目录啦~

Shell

实例显示出实际的工作目录,而非连结档本身的目录名而已。

[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 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!

Shell

mkdir (创建新目录)

如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。

语法:

mkdir [-mp] 目录名称

Shell

选项与参数:

  • -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
  • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

实例:请到/tmp底下尝试创建数个新目录看看:

[root@www ~]# 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

Shell

加了这个 -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

Shell

上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。

如果我们使用 -m ,如上例我们给予 -m 711 来给予新的目录 drwx–x–x 的权限。

rmdir (删除空的目录)

语法:

rmdir [-p] 目录名称

Shell

选项与参数:

  • **-p :**连同上一级『空的』目录也一起删除

删除 geekdoc 目录

[root@www tmp]# rmdir geekdoc/

Shell

将 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

Shell

利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 一次删除。

不过要注意的是,这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录。

cp (复制文件或目录)

cp 即拷贝文件和目录。

语法:

[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory

Shell

选项与参数:

  • -a:

    相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)

  • **-d:**若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;

  • **-f:**为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;

  • **-i:**若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)

  • **-l:**进行硬式连结(hard link)的连结档创建,而非复制文件本身;

  • **-p:**连同文件的属性一起复制过去,而非使用默认属性(备份常用);

  • **-r:**递归持续复制,用於目录的复制行为;(常用)

  • **-s:**复制成为符号连结档 (symbolic link),亦即『捷径』文件;

  • **-u:**若 destination 比 source 旧才升级 destination !

用 root 身份,将 root 目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc

[root@www ~]# cp ~/.bashrc /tmp/bashrc
[root@www ~]# cp -i ~/.bashrc /tmp/bashrc
cp: overwrite `/tmp/bashrc'? n  <==n不覆盖,y为覆盖

Shell

rm (移除文件或目录)

语法:

rm [-fir] 文件或目录

Shell

选项与参数:

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  • -i :互动模式,在删除前会询问使用者是否动作
  • -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

将刚刚在 cp 的实例中创建的 bashrc 删除掉!

[root@www tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y

Shell

如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!

mv (移动文件与目录,或修改名称)

语法:

[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory

Shell

选项与参数:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

复制一文件,创建一目录,将文件移动到目录中

[root@www ~]# cd /tmp
[root@www tmp]# cp ~/.bashrc bashrc
[root@www tmp]# mkdir mvtest
[root@www tmp]# mv bashrc mvtest

Shell

将某个文件移动到某个目录去,就是这样做!

将刚刚的目录名称更名为 mvtest2

[root@www tmp]# mv mvtest mvtest2

Shell


9.2 Linux 文件内容查看

Linux系统中使用以下命令来查看文件的内容:

  • cat 由第一行开始显示文件内容
  • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
  • nl 显示的时候,顺道输出行号!
  • more 一页一页的显示文件内容
  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
  • head 只看头几行
  • tail 只看尾巴几行

你可以使用 *man [命令]*来查看各个命令的使用文档,如 :man cp。

cat

由第一行开始显示文件内容

语法:

cat [-AbEnTv]

Shell

选项与参数:

  • -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

Shell

tac

tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:

[root@www ~]# tac /etc/issue

Kernel \r on an \m
CentOS release 6.4 (Final)

Shell

nl

显示行号

语法:

nl [-bnw] 文件

Shell

选项与参数:

  • -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

Shell

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%)  <== 重点在这一行喔!你的光标也会在这里等待你的命令

Shell

在 more 这个程序的运行过程中,你有几个按键可以按的:

  • 空白键 (space):代表向下翻一页;
  • Enter :代表向下翻『一行』;
  • /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
  • :f :立刻显示出档名以及目前显示的行数;
  • q :代表立刻离开 more ,不再显示该文件内容。
  • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

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
....(中间省略)....
:   <== 这里可以等待你输入命令!

Shell

less运行时可以输入的命令有:

  • 空白键 :向下翻动一页;
  • [pagedown]:向下翻动一页;
  • [pageup] :向上翻动一页;
  • /字串 :向下搜寻『字串』的功能;
  • ?字串 :向上搜寻『字串』的功能;
  • n :重复前一个搜寻 (与 / 或 ? 有关!)
  • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
  • q :离开 less 这个程序;

head

取出文件前面几行

语法:

head [-n number] 文件

Shell

选项与参数:

  • -n :后面接数字,代表显示几行的意思
[root@www ~]# head /etc/man.config

Shell

默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:

[root@www ~]# head -n 20 /etc/man.config

Shell

tail

取出文件后面几行

语法:

tail [-n number] 文件

Shell

选项与参数:

  • -n :后面接数字,代表显示几行的意思
  • -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
[root@www ~]# tail /etc/man.config
# 默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:
[root@www ~]# tail -n 20 /etc/man.config

10. Linux 用户和用户组管理

Linux 用户和用户组管理

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个唯一的用户名和各自的口令。

用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

实现用户账号的管理,要完成的工作主要有如下几个方面:

  • 用户账号的添加、删除与修改。
  • 用户口令的管理。
  • 用户组的管理。

文章目录

  • 1 Linux系统用户账号的管理
  • 2 Linux系统用户组的管理
  • 3 与用户账号有关的系统文件
  • 4 拥有帐户文件
  • 5 添加批量用户

10.1 Linux系统用户账号的管理

用户账号的管理工作主要涉及到用户账号的添加、修改和删除。

添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。

1、添加新的用户账号使用useradd命令,其语法如下:

useradd 选项 用户名

Shell

参数说明:

  • 选项:
    • -c comment 指定一段注释性描述。
    • -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
    • -g 用户组 指定用户所属的用户组。
    • -G 用户组,用户组 指定用户所属的附加组。
    • -s Shell文件 指定用户的登录Shell。
    • -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
  • 用户名:
    指定新账号的登录名。

实例1

# useradd –d  /home/sam -m sam

Shell

此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录 /home/sam(/home为默认的用户主目录所在的父目录)。

实例2

# useradd -s /bin/sh -g group –G adm,root gem

Shell

此命令新建了一个用户gem,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。

这里可能新建组:#groupadd group及groupadd adm

增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。

Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。

2、删除帐号

如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。

删除一个已有的用户账号使用userdel命令,其格式如下:

userdel 选项 用户名

Shell

常用的选项是 -r,它的作用是把用户的主目录一起删除。

例如:

# userdel -r sam

Shell

此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

3、修改帐号

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。

修改已有用户的信息使用usermod命令,其格式如下:

usermod 选项 用户名

Shell

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。

另外,有些系统可以使用选项:-l 新用户名

这个选项指定一个新的账号,即将原来的用户名改为新的用户名。

例如:

# usermod -s /bin/ksh -d /home/z –g developer sam

Shell

此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。

4、用户口令的管理

用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。

指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:

passwd 选项 用户名

Shell

可使用的选项:

  • -l 锁定口令,即禁用账号。
  • -u 口令解锁。
  • -d 使账号无口令。
  • -f 强迫用户下次登录时修改口令。

如果默认用户名,则修改当前用户的口令。

例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:

$ passwd 
Old password:****** 
New password:******* 
Re-enter new password:*******

Shell

如果是超级用户,可以用下列形式指定任何用户的口令:

# passwd sam 
New password:******* 
Re-enter new password:*******

Shell

普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。

为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。

为用户指定空口令时,执行下列形式的命令:

# passwd -d sam

Shell

此命令将用户 sam 的口令删除,这样用户 sam 下一次登录时,系统就不再允许该用户登录了。

passwd 命令还可以用 -l(lock) 选项锁定某一用户,使其不能登录,例如:

# passwd -l sam

Shell


10.2 Linux系统用户组的管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

1、增加一个新的用户组使用groupadd命令。其格式如下:

groupadd 选项 用户组

Shell

可以使用的选项有:

  • -g GID 指定新用户组的组标识号(GID)。
  • -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

实例1:

# groupadd group1

Shell

此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。

实例2:

# groupadd -g 101 group2

Shell

此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。

2、如果要删除一个已有的用户组,使用groupdel命令,其格式如下:

groupdel 用户组

Shell

例如:

# groupdel group1

Shell

此命令从系统中删除组group1。

3、修改用户组的属性使用groupmod命令。其语法如下:

groupmod 选项 用户组

Shell

常用的选项有:

  • -g GID 为用户组指定新的组标识号。
  • -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
  • -n新用户组 将用户组的名字改为新名字

实例1:

# groupmod -g 102 group2

Shell

此命令将组group2的组标识号修改为102。

实例2:

# groupmod –g 10000 -n group3 group2

Shell

此命令将组group2的标识号改为10000,组名修改为group3。

4、如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。

用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:

$ newgrp root

Shell

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。


10.3 与用户账号有关的系统文件

完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。

与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。

下面分别介绍这些文件的内容。

1、/etc/passwd文件是用户管理工作涉及的最重要的一个文件。

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。

这个文件对所有用户都是可读的。它的内容类似下面的例子:

cat /etc/passwd

root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/home/sam:/bin/sh

Shell

从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

Shell

1)”用户名”是代表用户账号的字符串。

通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(😃,因为冒号在这里是分隔符。

为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。

2)“口令”一些系统中,存放着加密后的用户口令字。

虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

3)“用户标识号”是一个整数,系统内部用它来标识用户。

一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。

通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

4)“组标识号”字段记录的是用户所属的用户组。

它对应着/etc/group文件中的一条记录。

5)“注释性描述”字段记录着用户的一些个人情况。

例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。

6)“主目录”,也就是用户的起始工作目录。

它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

7)用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。

Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。

系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。

用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。

利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。

8)系统中有一类用户称为伪用户(pseudo users)。

这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。

常见的伪用户如下所示:

伪 用 户 含 义 
bin 拥有可执行的用户命令文件 
sys 拥有系统文件 
adm 拥有帐户文件 
uucp UUCP使用 
lp lp或lpd子系统使用 
nobody NFS使用

Shell


10.4 拥有帐户文件

1、除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit, cron, mail, usenet等,它们也都各自为相关的进程和文件所需要。

由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。
有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。

2、/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生

它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用”:”隔开。这些字段是:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

Shell

  1. “登录名”是与/etc/passwd文件中的登录名相一致的用户账号
  2. “口令”字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
  3. “最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。
  4. “最小时间间隔”指的是两次修改口令之间所需的最小天数。
  5. “最大时间间隔”指的是口令保持有效的最大天数。
  6. “警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
  7. “不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
  8. “失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

下面是/etc/shadow的一个例子:

cat /etc/shadow

root:Dnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::
bin:*::0:0::::
sys:*::0:0::::
adm:*::0:0::::
uucp:*::0:0::::
nuucp:*::0:0::::
auth:*::0:0::::
cron:*::0:0::::
listen:*::0:0::::
lp:*::0:0::::
sam:EkdiSECLWPdSa:9740:0:0::::

Shell

3、用户组的所有信息都存放在/etc/group文件中。

将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。

每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。

当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。

用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。

用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:

组名:口令:组标识号:组内用户列表

Shell

  1. “组名”是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
  2. “口令”字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
  3. “组标识号”与用户标识号类似,也是一个整数,被系统内部用来标识组。
  4. “组内用户列表”是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

/etc/group文件的一个例子如下:

root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam

Shell

10.5 添加批量用户

添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户的方法。Linux系统提供了创建大量用户的工具,可以让您立即创建大量用户,方法如下:

1)先编辑一个文本用户文件。

每一列按照/etc/passwd密码文件的格式书写,要注意每个用户的用户名、UID、宿主目录都不可以相同,其中密码栏可以留做空白或输入x号。一个范例文件user.txt内容如下:

user001::600:100:user:/home/user001:/bin/bash
user002::601:100:user:/home/user002:/bin/bash
user003::602:100:user:/home/user003:/bin/bash
user004::603:100:user:/home/user004:/bin/bash
user005::604:100:user:/home/user005:/bin/bash
user006::605:100:user:/home/user006:/bin/bash

Shell

(2)以root身份执行命令 /usr/sbin/newusers,从刚创建的用户文件 user.txt中导入数据,创建用户:

# newusers < user.txt

Shell

然后可以执行命令 vipwvi /etc/passwd 检查 /etc/passwd 文件是否已经出现这些用户的数据,并且用户的宿主目录是否已经创建。

(3)执行命令/usr/sbin/pwunconv。

/etc/shadow 产生的 shadow 密码解码,然后回写到 /etc/passwd 中,并将/etc/shadowshadow密码栏删掉。这是为了方便下一步的密码转换工作,即先取消 shadow password 功能。

# pwunconv

Shell

(4)编辑每个用户的密码对照文件。

格式为:

用户名:密码

Shell

实例文件 passwd.txt 内容如下:

user001:123456
user002:123456
user003:123456
user004:123456
user005:123456
user006:123456

Shell

(5)以 root 身份执行命令 /usr/sbin/chpasswd

创建用户密码,chpasswd 会将经过 /usr/bin/passwd 命令编码过的密码写入 /etc/passwd 的密码栏。

# chpasswd < passwd.txt

Shell

(6)确定密码经编码写入/etc/passwd的密码栏后。

执行命令 /usr/sbin/pwconv 将密码编码为 shadow password,并将结果写入 /etc/shadow

# pwconv

Shell

这样就完成了大量用户的创建了,之后您可以到/home下检查这些用户宿主目录的权限设置是否都正确,并登录验证用户密码是否正确。

11. Linux 磁盘管理

Linux 磁盘管理

Linux磁盘管理好坏直接关系到整个系统的性能问题。

Linux磁盘管理常用三个命令为df、du和fdisk。

  • df:列出文件系统的整体磁盘使用量
  • du:检查磁盘空间使用量
  • fdisk:用于磁盘分区

文章目录

  • 1 df
  • 2 du
  • 3 fdisk
  • 4 磁盘格式化
  • 5 磁盘检验
  • 6 磁盘挂载与卸除

11.1 df

df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

语法:

df [-ahikHTm] [目录或文件名]

Shell

选项与参数:

  • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
  • -k :以 KBytes 的容量显示各文件系统;
  • -m :以 MBytes 的容量显示各文件系统;
  • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
  • -H :以 M=1000K 取代 M=1024K 的进位方式;
  • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
  • -i :不用硬盘容量,而以 inode 的数量来显示

实例 1

将系统内所有的文件系统列出来!

[root@www ~]# df
Filesystem      1K-blocks      Used Available Use% Mounted on
/dev/hdc2         9920624   3823112   5585444  41% /
/dev/hdc3         4956316    141376   4559108   4% /home
/dev/hdc1          101086     11126     84741  12% /boot
tmpfs              371332         0    371332   0% /dev/shm

Shell

在 Linux 底下如果 df 没有加任何选项,那么默认会将系统内所有的
(不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来!

实例 2

将容量结果以易读的容量格式显示出来

[root@www ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hdc2             9.5G  3.7G  5.4G  41% /
/dev/hdc3             4.8G  139M  4.4G   4% /home
/dev/hdc1              99M   11M   83M  12% /boot
tmpfs                 363M     0  363M   0% /dev/shm

Shell

实例 3

将系统内的所有特殊文件格式及名称都列出来

[root@www ~]# df -aT
Filesystem    Type 1K-blocks    Used Available Use% Mounted on
/dev/hdc2     ext3   9920624 3823112   5585444  41% /
proc          proc         0       0         0   -  /proc
sysfs        sysfs         0       0         0   -  /sys
devpts      devpts         0       0         0   -  /dev/pts
/dev/hdc3     ext3   4956316  141376   4559108   4% /home
/dev/hdc1     ext3    101086   11126     84741  12% /boot
tmpfs        tmpfs    371332       0    371332   0% /dev/shm
none   binfmt_misc         0       0         0   -  /proc/sys/fs/binfmt_misc
sunrpc  rpc_pipefs         0       0         0   -  /var/lib/nfs/rpc_pipefs

Shell

实例 4

将 /etc 底下的可用的磁盘容量以易读的容量格式显示

[root@www ~]# df -h /etc
Filesystem            Size  Used Avail Use% Mounted on
/dev/hdc2             9.5G  3.7G  5.4G  41% /

Shell


11.2 du

Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。

语法:

du [-ahskm] 文件或目录名称

Shell

选项与参数:

  • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
  • -h :以人们较易读的容量格式 (G/M) 显示;
  • -s :列出总量而已,而不列出每个各别的目录占用容量;
  • -S :不包括子目录下的总计,与 -s 有点差别。
  • -k :以 KBytes 列出容量显示;
  • -m :以 MBytes 列出容量显示;

实例 1

只列出当前目录下的所有文件夹容量(包括隐藏文件夹):

[root@www ~]# du
8       ./test4     <==每个目录都会列出来
8       ./test2
....中间省略....
12      ./.gconfd   <==包括隐藏文件的目录
220     .           <==这个目录(.)所占用的总量

Shell

直接输入 du 没有加任何选项时,则 du 会分析当前所在目录的文件与目录所占用的硬盘空间。

实例 2

将文件的容量也列出来

[root@www ~]# du -a
12      ./install.log.syslog   <==有文件的列表了
8       ./.bash_logout
8       ./test4
8       ./test2
....中间省略....
12      ./.gconfd
220     .

Shell

实例 3

检查根目录底下每个目录所占用的容量

[root@www ~]# du -sm /*
7       /bin
6       /boot
.....中间省略....
0       /proc
.....中间省略....
1       /tmp
3859    /usr     <==系统初期最大就是他了啦!
77      /var

Shell

通配符 * 来代表每个目录。

与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。


11.3 fdisk

fdisk 是 Linux 的磁盘分区表操作工具。

语法:

fdisk [-l] 装置名称

Shell

选项与参数:

  • -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时,
    则系统将会把整个系统内能够搜寻到的装置的分区均列出来。

实例 1

列出所有分区信息

[root@AY120919111755c246621 tmp]# fdisk -l

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *           1        2550    20480000   83  Linux
/dev/xvda2            2550        2611      490496   82  Linux swap / Solaris

Disk /dev/xvdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x56f40944

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb2               1        2610    20964793+  83  Linux

Shell

实例 2

找出你系统中的根目录所在磁盘,并查阅该硬盘内的相关信息

[root@www ~]# df /            <==注意:重点在找出磁盘文件名而已
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hdc2              9920624   3823168   5585388  41% /

[root@www ~]# fdisk /dev/hdc  <==仔细看,不要加上数字喔!
The number of cylinders for this disk is set to 5005.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):     <==等待你的输入!

Shell

输入 m 后,就会看到底下这些命令介绍

Command (m for help): m   <== 输入 m 后,就会看到底下这些命令介绍
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition            <==删除一个partition
   l   list known partition types
   m   print this menu
   n   add a new partition           <==新增一个partition
   o   create a new empty DOS partition table
   p   print the partition table     <==在屏幕上显示分割表
   q   quit without saving changes   <==不储存离开fdisk程序
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit  <==将刚刚的动作写入分割表
   x   extra functionality (experts only)

Shell

离开 fdisk 时按下 q,那么所有的动作都不会生效!相反的, 按下w就是动作生效的意思。

Command (m for help): p  <== 这里可以输出目前磁盘的状态

Disk /dev/hdc: 41.1 GB, 41174138880 bytes        <==这个磁盘的文件名与容量
255 heads, 63 sectors/track, 5005 cylinders      <==磁头、扇区与磁柱大小
Units = cylinders of 16065 * 512 = 8225280 bytes <==每个磁柱的大小

   Device Boot      Start         End      Blocks   Id  System
/dev/hdc1   *           1          13      104391   83  Linux
/dev/hdc2              14        1288    10241437+  83  Linux
/dev/hdc3            1289        1925     5116702+  83  Linux
/dev/hdc4            1926        5005    24740100    5  Extended
/dev/hdc5            1926        2052     1020096   82  Linux swap / Solaris
# 装置文件名 启动区否 开始磁柱    结束磁柱  1K大小容量 磁盘分区槽内的系统

Command (m for help): q

Shell

想要不储存离开吗?按下 q 就对了!不要随便按 w 啊!

使用 p 可以列出目前这颗磁盘的分割表信息,这个信息的上半部在显示整体磁盘的状态。


11.4 磁盘格式化

磁盘分割完毕后自然就是要进行文件系统的格式化,格式化的命令非常的简单,使用 mkfs(make filesystem) 命令。

语法:

mkfs [-t 文件系统格式] 装置文件名

Shell

选项与参数:

  • -t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)

实例 1

查看 mkfs 支持的文件格式

[root@www ~]# mkfs[tab][tab]
mkfs         mkfs.cramfs  mkfs.ext2    mkfs.ext3    mkfs.msdos   mkfs.vfat

Shell

按下两个[tab],会发现 mkfs 支持的文件格式如上所示。

实例 2

将分区 /dev/hdc6(可指定你自己的分区) 格式化为 ext3 文件系统:

[root@www ~]# mkfs -t ext3 /dev/hdc6
mke2fs 1.39 (29-May-2006)
Filesystem label=                <==这里指的是分割槽的名称(label)
OS type: Linux
Block size=4096 (log=2)          <==block 的大小配置为 4K 
Fragment size=4096 (log=2)
251392 inodes, 502023 blocks     <==由此配置决定的inode/block数量
25101 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=515899392
16 block groups
32768 blocks per group, 32768 fragments per group
15712 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912

Writing inode tables: done
Creating journal (8192 blocks): done <==有日志记录
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
# 这样就创建起来我们所需要的 Ext3 文件系统了!简单明了!

Shell


11.5 磁盘检验

fsck(file system check)用来检查和维护不一致的文件系统。

若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。

语法:

fsck [-t 文件系统] [-ACay] 装置名称

Shell

选项与参数:

  • -t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数
  • -s : 依序一个一个地执行 fsck 的指令来检查
  • -A : 对/etc/fstab 中所有列出来的 分区(partition)做检查
  • -C : 显示完整的检查进度
  • -d : 打印出 e2fsck 的 debug 结果
  • -p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行
  • -R : 同时有 -A 条件时,省略 / 不检查
  • -V : 详细显示模式
  • -a : 如果检查有错则自动修复
  • -r : 如果检查有错则由使用者回答是否修复
  • -y : 选项指定检测每个文件是自动输入yes,在不确定那些是不正常的时候,可以执行 # fsck -y 全部检查修复。

实例 1

查看系统有多少文件系统支持的 fsck 命令:

[root@www ~]# fsck[tab][tab]
fsck         fsck.cramfs  fsck.ext2    fsck.ext3    fsck.msdos   fsck.vfat

Shell

实例 2

强制检测 /dev/hdc6 分区:

[root@www ~]# fsck -C -f -t ext3 /dev/hdc6 
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
vbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks

Shell

如果没有加上 -f 的选项,则由于这个文件系统不曾出现问题,检查的经过非常快速!若加上 -f 强制检查,才会一项一项的显示过程。


11.6 磁盘挂载与卸除

Linux 的磁盘挂载使用 mount 命令,卸载使用 umount 命令。

磁盘挂载语法:

mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n]  装置文件名  挂载点

Shell

实例 1

用默认的方式,将刚刚创建的 /dev/hdc6 挂载到 /mnt/hdc6 上面!

[root@www ~]# mkdir /mnt/hdc6
[root@www ~]# mount /dev/hdc6 /mnt/hdc6
[root@www ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
.....中间省略.....
/dev/hdc6              1976312     42072   1833836   3% /mnt/hdc6

Shell

磁盘卸载命令 umount 语法:

umount [-fn] 装置文件名或挂载点

Shell

选项与参数:

  • -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
  • -n :不升级 /etc/mtab 情况下卸除。

卸载/dev/hdc6

[root@www ~]# umount /dev/hdc6

12. Linux vi/vim

Linux vi/vim

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。

但是目前我们使用比较多的是 vim 编辑器。

vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

相关文章:史上最全Vim快捷键键位图 — 入门到进阶


文章目录

  • 1 什么是 vim?
  • 2 vi/vim 的使用
    • 2.1 命令模式:
    • 2.2 输入模式
    • 2.3 底线命令模式
  • 3 vi/vim 使用实例
    • 3.1 使用 vi/vim 进入一般模式
    • 3.2 按下 i 进入输入模式(也称为编辑模式),开始编辑文字
    • 3.3 按下 ESC 按钮回到一般模式
    • 3.4 在一般模式中按下 :wq 储存后离开 vi
  • 4 vi/vim 按键说明
    • 4.1 第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等
    • 4.2 第二部分:一般模式切换到编辑模式的可用的按钮说明
    • 4.3 第三部分:一般模式切换到指令行模式的可用的按钮说明

12.1 什么是 vim?

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。

连 vim 的官方网站 (http://www.vim) 自己也说 vim 是一个程序开发工具而不是文字处理软件。

vim 键盘图:


12.2 vi/vim 的使用

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。 这三种模式的作用分别是:

命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

以下是常用的几个命令:

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令。

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式

在命令模式下按下i就进入了输入模式。

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

  • q 退出程序
  • w 保存文件

按ESC键可随时退出底线命令模式。

简单的说,我们可以将这三个模式想成底下的图标来表示:


21.3 vi/vim 使用实例

使用 vi/vim 进入一般模式

如果你想要使用 vi 来建立一个名为 geekdoc.txt 的文件时,你可以这样做:

$ vim geekdoc.txt

Shell

直接输入 vi 文件名 就能够进入 vi 的一般模式了。请注意,记得 vi 后面一定要加文件名,不管该文件存在与否!

按下 i 进入输入模式(也称为编辑模式),开始编辑文字

在一般模式之中,只要按下 i, o, a 等字符就可以进入输入模式了!

在编辑模式当中,你可以发现在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示。

这个时候,键盘上除了 Esc 这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以你可以进行任何的编辑。

按下 ESC 按钮回到一般模式

好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下 Esc 这个按钮即可!马上你就会发现画面左下角的 – INSERT – 不见了!

在一般模式中按下 :wq 储存后离开 vi

OK,我们要存档了,存盘并离开的指令很简单,输入 :wq 即可保存离开!

OK! 这样我们就成功创建了一个 geekdoc.txt 的文件。


12.4 vi/vim 按键说明

除了上面简易范例的 i, Esc, :wq 之外,其实 vim 还有非常多的按键可以使用。

第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等

移动光标的方法
h 或 向左箭头键(←)光标向左移动一个字符
j 或 向下箭头键(↓)光标向下移动一个字符
k 或 向上箭头键(↑)光标向上移动一个字符
l 或 向右箭头键(→)光标向右移动一个字符
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 “30j” 或 “30↓” 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!
[Ctrl] + [f]屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b]屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d]屏幕『向下』移动半页
[Ctrl] + [u]屏幕『向上』移动半页
+光标移动到非空格符的下一行
光标移动到非空格符的上一行
n那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 则光标会向后面移动 20 个字符距离。
0 或功能键[Home]这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End]移动到这一行的最后面字符处(常用)
H光标移动到这个屏幕的最上方那一行的第一个字符
M光标移动到这个屏幕的中央那一行的第一个字符
L光标移动到这个屏幕的最下方那一行的第一个字符
G移动到这个档案的最后一行(常用)
nGn 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
gg移动到这个档案的第一行,相当于 1G 啊! (常用)
nn 为数字。光标向下移动 n 行(常用)
搜索替换
/word向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)
?word向光标之上寻找一个字符串名称为 word 的字符串。
n这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
N这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词!
:n1,n2s/word1/word2/gn1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则: 『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g 或 :%s/word1/word2/g从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用)
删除、复制与贴上
x, X在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
nxn 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
dd删除游标所在的那一整行(常用)
nddn 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
d1G删除光标所在到第一行的所有数据
dG删除光标所在到最后一行的所有数据
d$删除游标所在处,到该行的最后一个字符
d0那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy复制游标所在的那一行(常用)
nyyn 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
y1G复制游标所在行到第一行的所有数据
yG复制游标所在行到最后一行的所有数据
y0复制光标所在的那个字符到该行行首的所有数据
y$复制光标所在的那个字符到该行行尾的所有数据
p, Pp 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行! 举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推到变成 30 行。 (常用)
J将光标所在行与下一行的数据结合成同一行
c重复删除多个数据,例如向下删除 10 行,[ 10cj ]
u复原前一个动作。(常用)
[Ctrl]+r重做上一个动作。(常用)
这个 u 与 [Ctrl]+r 是很常用的指令!一个是复原,另一个则是重做一次~ 利用这两个功能按键,你的编辑,嘿嘿!很快乐的啦!
.不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)

第二部分:一般模式切换到编辑模式的可用的按钮说明

进入输入或取代的编辑模式
i, I进入输入模式(Insert mode): i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。 (常用)
a, A进入输入模式(Insert mode): a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
o, O进入输入模式(Insert mode): 这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』; O 为在目前光标所在处的上一行输入新的一行!(常用)
r, R进入取代模式(Replace mode): r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
上面这些按键中,在 vi 画面的左下角处会出现『–INSERT–』或『–REPLACE–』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔!
[Esc]退出编辑模式,回到一般模式中(常用)

第三部分:一般模式切换到指令行模式的可用的按钮说明

指令行的储存、离开等指令
:w将编辑的数据写入硬盘档案中(常用)
:w!若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!
:q离开 vi (常用)
:q!若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
:wq储存后离开,若为 :wq! 则为强制储存后离开 (常用)
ZZ这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!
:w [filename]将编辑的数据储存成另一个档案(类似另存新档)
:r [filename]在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
:n1,n2 w [filename]将 n1 到 n2 的内容储存成 filename 这个档案。
:! command暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中察看 /home 底下以 ls 输出的档案信息!
vim 环境的变更
:set nu显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu与 set nu 相反,为取消行号!

特别注意,在 vi/vim 中,数字是很有意义的!数字通常代表重复做几次的意思! 也有可能是代表去到第几个什么什么的意思。

举例来说,要删除 50 行,则是用 『50dd』 对吧! 数字加在动作之前,如我要向下移动 20 行呢?那就是『20j』或者是『20↓』即可。

13. linux yum 命令

linux yum 命令

yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。

基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

文章目录

  • 1 yum 语法
  • 2 yum常用命令
  • 3 国内 yum 源
    • 3.1 安装步骤

13.1 yum 语法

yum [options] [command] [package ...]

Shell

  • **options:**可选,选项包括-h(帮助),-y(当安装过程提示选择全部为”yes”),-q(不显示安装的过程)等等。
  • **command:**要进行的操作。
  • package操作的对象。

13.2 yum常用命令

  • 1.列出所有可更新的软件清单命令:yum check-update

  • 2.更新所有软件命令:yum update

  • 3.仅安装指定的软件命令:yum install <package_name>

  • 4.仅更新指定的软件命令:yum update <package_name>

  • 5.列出所有可安裝的软件清单命令:yum list

  • 6.删除软件包命令:yum remove <package_name>

  • 7.查找软件包
    命令:yum search

  • 8.清除缓存命令:

    • yum clean packages: 清除缓存目录下的软件包
    • yum clean headers: 清除缓存目录下的 headers
    • yum clean oldheaders: 清除缓存目录下旧的 headers
    • yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers

实例 1

安装 pam-devel

[root@www ~]# yum install pam-devel
Setting up Install Process
Parsing package install arguments
Resolving Dependencies  <==先检查软件的属性相依问题
--> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated
--> Processing Dependency: pam = 0.99.6.2-4.el5 for package: pam-devel
--> Running transaction check
---> Package pam.i386 0:0.99.6.2-4.el5 set to be updated
filelists.xml.gz          100% |=========================| 1.6 MB    00:05
filelists.xml.gz          100% |=========================| 138 kB    00:00
-> Finished Dependency Resolution
……(省略)

Shell

实例 2

移除 pam-devel

[root@www ~]# yum remove pam-devel
Setting up Remove Process
Resolving Dependencies  <==同样的,先解决属性相依的问题
--> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Removing:
 pam-devel               i386       0.99.6.2-4.el5   installed         495 k

Transaction Summary
=============================================================================
Install      0 Package(s)
Update       0 Package(s)
Remove       1 Package(s)  <==还好,并没有属性相依的问题,单纯移除一个软件

Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing   : pam-devel                    ######################### [1/1]

Removed: pam-devel.i386 0:0.99.6.2-4.el5
Complete!

Shell

实例 3

利用 yum 的功能,找出以 pam 为开头的软件名称有哪些?

[root@www ~]# yum list pam*
Installed Packages
pam.i386                  0.99.6.2-3.27.el5      installed
pam_ccreds.i386           3-5                    installed
pam_krb5.i386             2.2.14-1               installed
pam_passwdqc.i386         1.0.2-1.2.2            installed
pam_pkcs11.i386           0.5.3-23               installed
pam_smb.i386              1.1.7-7.2.1            installed
Available Packages <==底下则是『可升级』的或『未安装』的
pam.i386                  0.99.6.2-4.el5         base
pam-devel.i386            0.99.6.2-4.el5         base
pam_krb5.i386             2.2.14-10              base

Shell


13.3 国内 yum 源

网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错。

将yum源设置为163 yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。

安装步骤

首先备份/etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

Shell

下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)

  • CentOS5 :http://mirrors.163/.help/CentOS5-Base-163.repo
  • CentOS6 :http://mirrors.163/.help/CentOS6-Base-163.repo
  • CentOS7 :http://mirrors.163/.help/CentOS7-Base-163.repo
wget http://mirrors.163/.help/CentOS6-Base-163.repo
mv CentOS6-Base-163.repo CentOS-Base.repo

Shell

运行以下命令生成缓存

yum clean all
yum makecache

Shell

除了网易之外,国内还有其他不错的 yum 源,比如中科大和搜狐。

中科大的 yum 源,安装方法查看:https://lug.ustc.edu/wiki/mirrors/help/centos

sohu 的 yum 源安装方法查看: http://mirrors.sohu/help/centos.html

14. VMware 安装 Centos7 超详细过程

文章目录

  • 1 1.软硬件准备
  • 2 2.虚拟机准备
  • 3 3.安装CentOS

1.软硬件准备

软件:推荐使用 VMware,我用的是 VMware 12

镜像:CentOS6 ,如果没有镜像可以在阿里云下载 https://mirrors.aliyun/centos/

硬件:因为是在宿主机上运行虚拟化软件安装centos,所以对宿主机的配置有一定的要求。最起码I5CPU双核、硬盘500G、内存4G以上。

2.虚拟机准备

1.打开VMware选择新建虚拟机

2.典型安装与自定义安装

典型安装:VMware会将主流的配置应用在虚拟机的操作系统上,对于新手来很友好。

自定义安装:自定义安装可以针对性的把一些资源加强,把不需要的资源移除。避免资源的浪费。

这里我选择自定义安装。

3.虚拟机兼容性选择

这里要注意兼容性,如果是VMware12创建的虚拟机复制到VM11、10或者更低的版本会出现一不兼容的现象。如果是用VMware10创建的虚拟机在VMware12中打开则不会出现兼容性问题。

4.选择稍后安装操作系统

5.操作系统的选择

这里选择之后安装的操作系统,正确的选择会让vm tools更好的兼容。这里选择linux下的CentOS

6.虚拟机位置与命名

虚拟机名称就是一个名字,在虚拟机多的时候方便自己找到。

VMware的默认位置是在C盘下,我这里改成F盘。

7.处理器与内存的分配

处理器分配要根据自己的实际需求来分配。在使用过程中CPU不够的话是可以再增加的。这次只做安装CentOS演示,所以处理器与核心都选1.

内存也是要根据实际的需求分配。我的宿主机内存是8G所以我给虚拟机分配2G内存。

8.网络连接类型的选择,网络连接类型一共有桥接、NAT、仅主机和不联网四种。

桥接:选择桥接模式的话虚拟机和宿主机在网络上就是平级的关系,相当于连接在同一交换机上。

NAT:NAT模式就是虚拟机要联网得先通过宿主机才能和外面进行通信。

仅主机:虚拟机与宿主机直接连起来

桥接与NAT模式访问互联网过程,如下图所示

桥接与NAT区别

这里选择桥接模式

9.其余两项按虚拟机默认选项即可

10.磁盘容量

磁盘容量暂时分配100G即可后期可以随时增加,不要勾选立即分配所有磁盘,否则虚拟机会将100G直接分配给CentOS,会导致宿主机所剩硬盘容量减少。
勾选将虚拟磁盘拆分成多个文件,这样可以使虚拟机方便用储存设备拷贝复制。

11.磁盘名称,默认即可

12.取消不需要的硬件

点击自定义硬件

选择声卡、打印机等不需要的硬件然后移除。

13.点击完成,已经创建好虚拟机。

3.安装CentOS

1.连接光盘

右击刚创建的虚拟机,选择设置

先选择CD/DVD,再选择使用ISO映像文件,最后选择浏览找到下载好的镜像文件。启动时连接一定要勾选上后确定。

2.开启虚拟机

3.安装操作系统

开启虚拟机后会出现以下界面:

  • Install CentOS 7 安装CentOS 7
  • Test this media & install CentOS 7 测试安装文件并安装CentOS 7
  • Troubleshooting 修复故障

选择第一项,安装直接CentOS 7,回车,进入下面的界面

选择安装过程中使用的语言,这里选择英文、键盘选择美式键盘。点击Continue

首先设置时间

时区选择上海,查看时间是否正确。然后点击Done

选择需要安装的软件

选择 Server with Gui,然后点击Done

选择安装位置,在这里可以进行磁盘划分。

选择i wil configure partitioning(我将会配置分区),然后点击done

如下图所示,点击加号,选择/boot,给boot分区分200M。最后点击Add

然后以同样的办法给其他三个区分配好空间后点击Done

然后会弹出摘要信息,点击AcceptChanges(接受更改)

设置主机名与网卡信息

首先要打开网卡,然后查看是否能获取到IP地址(我这里是桥接),再更改主机名后点击Done。

最后选择Begin Installation(开始安装)

设置root密码

设置root密码后点击Done

点击USER CREATION 创建管理员用户

输入用户名密码后点击Done

等待系统安装完毕重启系统即可

二、Linux 命令

1. Linux 命令大全

Linux 命令大全

Linux 命令大全
1、文件管理
cat chattr chgrp chmod
chown cksum cmp diff
diffstat file find git
gitview indent cut ln
less locate lsattr mattrib
mc mdel mdir mktemp
more mmove mread mren
mtools mtoolstest mv od
paste patch rcp rm
slocate split tee tmpwatch
touch umask which cp
whereis mcopy mshowfat rhmask
scp awk read updatedb
2、文档编辑
col colrm comm csplit
ed egrep ex fgrep
fmt fold grep ispell
jed joe join look
mtype pico rgrep sed
sort spell tr expr
uniq wc let
3、文件传输
lprm lpr lpq lpd
bye ftp uuto uupick
uucp uucico tftp ncftp
ftpshut ftpwho ftpcount
4、磁盘管理
cd df dirs du
edquota eject mcd mdeltree
mdu mkdir mlabel mmd
mrd mzip pwd quota
mount mmount rmdir rmt
stat tree umount ls
quotacheck quotaoff lndir repquota
quotaon
5、磁盘维护
badblocks cfdisk dd e2fsck
ext2ed fsck fsck.minix fsconf
fdformat hdparm mformat mkbootdisk
mkdosfs mke2fs mkfs.ext2 mkfs.msdos
mkinitrd mkisofs mkswap mpartition
swapon symlinks sync mbadblocks
mkfs.minix fsck.ext2 fdisk losetup
mkfs sfdisk swapoff
6、网络通讯
apachectl arpwatch dip getty
mingetty uux telnet uulog
uustat ppp-off netconfig nc
httpd ifconfig minicom mesg
dnsconf wall netstat ping
pppstats samba setserial talk
traceroute tty newaliases uuname
netconf write statserial efax
pppsetup tcpdump ytalk cu
smbd testparm smbclient shapecfg
7、系统管理
adduser chfn useradd date
exit finger fwhios sleep
suspend groupdel groupmod halt
kill last lastb login
logname logout ps nice
procinfo top pstree reboot
rlogin rsh sliplogin screen
shutdown rwho sudo gitps
swatch tload logrotate uname
chsh userconf userdel usermod
vlock who whoami whois
newgrp renice su skill
w id groupadd free
8、系统设置
reset clear alias dircolors
aumix bind chroot clock
crontab declare depmod dmesg
enable eval export pwunconv
grpconv rpm insmod kbdconfig
lilo liloconfig lsmod minfo
set modprobe ntsysv mouseconfig
passwd pwconv rdate resize
rmmod grpunconv modinfo time
setup sndconfig setenv setconsole
timeconfig ulimit unset chkconfig
apmd hwclock mkkickstart fbset
unalias SVGATextMode gpasswd
9、备份压缩
ar bunzip2 bzip2 bzip2recover
gunzip unarj compress cpio
dump uuencode gzexe gzip
lha restore tar uudecode
unzip zip zipinfo
**10、设备管理 **
setleds loadkeys rdev dumpkeys
MAKEDEV poweroff

2. 其他命令

  • Linux bc 命令

  • Linux tail 命令

  • Linux xargs 命令

3. 扩展文章

  • Linux 常用命令全拼

4. 命令详细

(1) Linux- cat 命令

Linux cat命令
Linux 命令大全

cat 命令用于连接文件并打印到标准输出设备上。
使用权限
所有使用者
语法格式

cat [-AbeEnstTuv] [--help] [--version] fileName

Shell

参数说明:
-n 或 –number:由 1 开始对所有输出的行数编号。

-b 或 –number-nonblank:和 -n 相似,只不过对于空白行不编号。

-s 或 –squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。

-v 或 –show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。

-E 或 –show-ends : 在每行结束处显示 $。

-T 或 –show-tabs: 将 TAB 字符显示为 ^I。

-A, –show-all:等价于 -vET。

**-e:**等价于”-vE”选项;

**-t:**等价于”-vT”选项;
实例:
把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:

cat -n textfile1 > textfile2

Shell

把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:

cat -b textfile1 textfile2 >> textfile3

Shell

清空 /etc/test.txt 文档内容:

cat /dev/null > /etc/test.txt

Shell

cat 也可以用来制作镜像文件。例如要制作软盘的镜像文件,将软盘放好后输入:

cat /dev/fd0 > OUTFILE

Shell

相反的,如果想把 image file 写到软盘,输入:

cat IMG_FILE > /dev/fd0

Shell

  • \1. OUTFILE 指输出的镜像文件名。
  • \2. IMG_FILE 指镜像文件。
  • \3. 若从镜像文件写回 device 时,device 容量需与相当。
  • \4. 通常用制作开机磁片。

Linux 命令大全

(2) Linux- chattr 命令

Linux chattr命令
Linux 命令大全

Linux chattr命令用于改变文件属性。

这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

  1. a:让文件或目录仅供附加用途。
  2. b:不更新文件或目录的最后存取时间。
  3. c:将文件或目录压缩后存放。
  4. d:将文件或目录排除在倾倒操作之外。
  5. i:不得任意更动文件或目录。
  6. s:保密性删除文件或目录。
  7. S:即时更新文件或目录。
  8. u:预防意外删除。

语法

chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]

Shell

参数
-R 递归处理,将指定目录下的所有文件及子目录一并处理。

-v<版本编号> 设置文件或目录版本。

-V 显示指令执行过程。

+<属性> 开启文件或目录的该项属性。

-<属性> 关闭文件或目录的该项属性。

=<属性> 指定文件或目录的该项属性。

用chattr命令防止系统中某个关键文件被修改:

chattr +i /etc/resolv.conf

Shell

lsattr /etc/resolv.conf

Shell

会显示如下属性

----i-------- /etc/resolv.conf

Shell

让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:

chattr +a /var/log/messages

Shell

Linux 命令大全

(3) Linux- chgrp 命令

Linux chgrp命令

Linux 命令大全

Linux chgrp命令用于变更文件或目录的所属群组。

在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。
语法

chgrp [-cfhRv][--help][--version][所属群组][文件或目录...]chgrp [-cfhRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]

Shell

参数说明
-c或–changes 效果类似”-v”参数,但仅回报更改的部分。

-f或–quiet或–silent  不显示错误信息。

-h或–no-dereference  只对符号连接的文件作修改,而不更动其他任何相关文件。

-R或–recursive  递归处理,将指定目录下的所有文件及子目录一并处理。

-v或–verbose  显示指令执行过程。

–help  在线帮助。

–reference=<参考文件或目录>  把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。

–version  显示版本信息。

实例1:改变文件的群组属性:

chgrp -v bin log2012.log

Shell

输出:

[root@localhost test]# ll
---xrw-r-- 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]# chgrp -v bin log2012.log

Shell

“log2012.log” 的所属组已更改为 bin

[root@localhost test]# ll
---xrw-r-- 1 root bin  302108 11-13 06:03 log2012.log

Shell

说明:
将log2012.log文件由root群组改为bin群组

实例2:根据指定文件改变文件的群组属性

chgrp --reference=log2012.log log2013.log

Shell

输出:

[root@localhost test]# ll
---xrw-r-- 1 root bin  302108 11-13 06:03 log2012.log
-rw-r--r-- 1 root root     61 11-13 06:03 log2013.log
[root@localhost test]#  chgrp --reference=log2012.log log2013.log 
[root@localhost test]# ll
---xrw-r-- 1 root bin  302108 11-13 06:03 log2012.log
-rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log

Shell

说明:
改变文件log2013.log 的群组属性,使得文件log2013.log的群组属性和参考文件log2012.log的群组属性相同

Linux 命令大全

(4) Linux- chmod 命令

Linux chmod命令

Linux 命令大全

Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以藉以控制文件如何被他人所调用。

使用权限 : 所有使用者
语法

chmod [-cfvR] [--help] [--version] mode file...

Shell

参数说明
mode : 权限设定字串,格式如下 :

[ugoa...][[+-=][rwxX]...][,...]

Shell

其中:

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

其他参数说明:

  • -c : 若该文件权限确实已经更改,才显示其更改动作
  • -f : 若该文件权限无法被更改也不要显示错误讯息
  • -v : 显示权限变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
  • –help : 显示辅助说明
  • –version : 显示版本

将文件 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt

Shell

将文件 file1.txt 设为所有人皆可读取 :

chmod a+r file1.txt

Shell

将文件 file1.txt 与 file2.txt 设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt

Shell

将 ex1.py 设定为只有该文件拥有者可以执行 :

chmod u+x ex1.py

Shell

将目前目录下的所有文件与子目录皆设为任何人可读取 :

chmod -R a+r *

Shell

此外chmod也可以用数字来表示权限如 :

chmod 777 file

Shell

语法为:

chmod abc file

Shell

其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1

  • 若要rwx属性则4+2+1=7;
  • 若要rw-属性则4+2=6;
  • 若要r-x属性则4+1=5。
chmod a=rwx file

Shell

chmod 777 file

Shell

效果相同

chmod ug=rwx,o=x file

Shell

chmod 771 file

Shell

效果相同

若用chmod 4755 filename可使此程序具有root的权限

Linux 命令大全

(5) Linux- chown 命令

Linux chown命令

Linux 命令大全

Linux/Unix 是多人多工操作系统,所有的文件皆有拥有者。利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。

一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的文件拥有者,也没有权限把自己的文件拥有者改设为别人。只有系统管理者(root)才有这样的权限。

使用权限 : root
语法

chown [-cfhvR] [--help] [--version] user[:group] file...

Shell

参数 :

  • user : 新的文件拥有者的使用者 ID
  • group : 新的文件拥有者的使用者组(group)
  • -c : 显示更改的部分的信息
  • -f : 忽略错误信息
  • -h :修复符号链接
  • -v : 显示详细的处理信息
  • -R : 处理指定目录以及其子目录下的所有文件
  • –help : 显示辅助说明
  • –version : 显示版本

将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :

chown runoob:runoobgroup file1.txt

Shell

将目前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup:

chown -R runoob:runoobgroup *

Shell

Linux 命令大全

(6) Linux- cksum 命令

Linux cksum命令

Linux 命令大全

Linux cksum命令用于检查文件的CRC是否正确。确保文件从一个系统传输到另一个系统的过程中不被损坏。

CRC是一种排错检查方式,该校验法的标准由CCITT所指定,至少可检测到99.998%的已知错误。

指定文件交由指令”cksum”进行校验后,该指令会返回校验结果供用户核对文件是否正确无误。若不指定任何文件名称或是所给予的文件名为”-“,则指令”cksum”会从标准输入设备中读取数据。
语法

cksum [--help][--version][文件...]

Shell

参数

  • –help:在线帮助。
  • –version:显示版本信息。
  • 文件…:需要进行检查的文件路径

实例
使用指令”cksum”计算文件”testfile1″的完整性,输入如下命令:

$ cksum testfile1

Shell

以上命令执行后,将输出校验码等相关的信息,具体输出信息如下所示:

1263453430 78 testfile1         //输出信息

Shell

上面的输出信息中,”1263453430″表示校验码,”78″表示字节数。

**
注意:**如果文件中有任何字符被修改,都将改变计算后CRC校验码的值。

Linux 命令大全

(7) Linux- cmp 命令

Linux cmp命令

Linux 命令大全

Linux cmp命令用于比较两个文件是否有差异。

当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有所差异,预设会标示出第一个不同之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为”-“,则cmp指令会从标准输入设备读取数据。
语法

cmp [-clsv][-i <字符数目>][--help][第一个文件][第二个文件]

Shell

参数

  • -c或–print-chars  除了标明差异处的十进制字码之外,一并显示该字符所对应字符。
  • -i<字符数目>或–ignore-initial=<字符数目>  指定一个数目。
  • -l或–verbose  标示出所有不一样的地方。
  • -s或–quiet或–silent  不显示错误信息。
  • -v或–version  显示版本信息。
  • –help  在线帮助。

要确定两个文件是否相同,请输入:

cmp prog.o.bak prog.o

Shell

这比较 prog.o.bak 和 prog.o。如果文件相同,则不显示消息。如果文件不同,则显示第一个不同的位置;例如:

prog.o.bak prog.o differ: char 4, line 1

Shell

如果显示消息 cmp: EOF on prog.o.bak,则 prog.o 的第一部分与 prog.o.bak 相同,但在 prog.o 中还有其他数据。

Linux 命令大全https://geek-docs/linux/linux-command/linux-command-manual.html)

(8) Linux- diff 命令

Linux diff命令

Linux 命令大全

Linux diff命令用于比较文件的差异。

diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。
语法

diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]

Shell

参数

-<行数>  指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。

-a或–text  diff预设只会逐行比较文本文件。

-b或–ignore-space-change  不检查空格字符的不同。

  • -B或–ignore-blank-lines  不检查空白行。
  • -c  显示全部内文,并标出不同之处。
  • -C<行数>或–context<行数>  与执行”-c-<行数>”指令相同。
  • -d或–minimal  使用不同的演算法,以较小的单位来做比较。
  • -D<巨集名称>或ifdef<巨集名称>  此参数的输出格式可用于前置处理器巨集。
  • -e或–ed  此参数的输出格式可用于ed的script文件。
  • -f或-forward-ed  输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
  • -H或–speed-large-files  比较大文件时,可加快速度。
  • -l<字符或字符串>或–ignore-matching-lines<字符或字符串>  若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
  • -i或–ignore-case  不检查大小写的不同。
  • -l或–paginate  将结果交由pr程序来分页。
  • -n或–rcs  将比较结果以RCS的格式来显示。
  • -N或–new-file  在比较目录时,若文件A仅出现在某个目录中,预设会显示:
  • Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
  • -p  若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
  • -P或–unidirectional-new-file  与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
  • -q或–brief  仅显示有无差异,不显示详细的信息。
  • -r或–recursive  比较子目录中的文件。
  • -s或–report-identical-files  若没有发现任何差异,仍然显示信息。
  • -S<文件>或–starting-file<文件>  在比较目录时,从指定的文件开始比较。
  • -t或–expand-tabs  在输出时,将tab字符展开。
  • -T或–initial-tab  在每行前面加上tab字符以便对齐。
  • -u,-U<列数>或–unified=<列数>  以合并的方式来显示文件内容的不同。
  • -v或–version  显示版本信息。
  • -w或–ignore-all-space  忽略全部的空格字符。
  • -W<宽度>或–width<宽度>  在使用-y参数时,指定栏宽。
  • -x<文件名或目录>或–exclude<文件名或目录>  不比较选项中所指定的文件或目录。
  • -X<文件>或–exclude-from<文件>  您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。
  • -y或–side-by-side  以并列的方式显示文件的异同之处。
  • –help  显示帮助。
  • –left-column  在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
  • –suppress-common-lines  在使用-y参数时,仅显示不同之处。

实例1:比较两个文件

[root@localhost test3]# diff log2014.log log2013.log 
3c3
< 2014-03
---
> 2013-03
8c8
< 2013-07
---
> 2013-08
11,12d10
< 2013-11
< 2013-12

Shell

上面的”3c3″和”8c8″表示log2014.log和log20143log文件在3行和第8行内容有所不同;”11,12d10″表示第一个文件比第二个文件多了第11和12行。
实例2:并排格式输出

[root@localhost test3]# diff log2014.log log2013.log  -y -W 50
2013-01                 2013-01
2013-02                 2013-02
2014-03               | 2013-03
2013-04                 2013-04
2013-05                 2013-05
2013-06                 2013-06
2013-07                 2013-07
2013-07               | 2013-08
2013-09                 2013-09
2013-10                 2013-10
2013-11               <
2013-12               <
[root@localhost test3]# diff log2013.log log2014.log  -y -W 50
2013-01                 2013-01
2013-02                 2013-02
2013-03               | 2014-03
2013-04                 2013-04
2013-05                 2013-05
2013-06                 2013-06
2013-07                 2013-07
2013-08               | 2013-07
2013-09                 2013-09
2013-10                 2013-10
                      > 2013-11
                      > 2013-12

Shell

说明:

  • “|”表示前后2个文件内容有不同
  • “<“表示后面文件比前面文件少了1行内容
  • “&gt”表示后面文件比前面文件多了1行内容

Linux 命令大全

(9) Linux- diffstat 命令

Linux diffstat命令

Linux 命令大全

Linux diffstat命令根据diff的比较结果,显示统计数字。

diffstat读取diff的输出结果,然后统计各文件的插入,删除,修改等差异计量。
语法

diff [-wV][-n <文件名长度>][-p <文件名长度>]

Shell

参数

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

用户也可以直接使用”|”将diff指令所输出的结果直接送给diffstat指令进行统计结果的显示。

使用该指令时,若所比较的文件或者子目录不在当前目录下,则应该使用其完整路径。

将目录”test1″和”test2″下的同名文件”testf.txt”使用diff指令进行比较。然后使用diffstat指令对结果进行统计显示,输入如下命令:

$ diff test1 test2 | diffstat   #进行比较结果的统计显示

Shell

注意:使用这条命令可以非常方便地实现统计显示的功能。

对于查看文件中的内容,用户可以通过指令”cat”进行查看即可,具体操作如下:

$ cat test1/testf.txt           #查看test1/testf的内容  
abc  
def  
ghi  
jkl  
mno  
pqr  
stu  
vws  
$ cat test2/testf.txt           #查看test2/testf的内容  
abc  
def  
ghi  
jkl  
mno

Shell

从上面的文件内容显示,可以看到两个文件内容的差别。现在来运行刚才的命令,对文件比较的结果进行统计显示,结果如下:

testfile | 2 +-             #统计信息输出显示  
1 file changed, 1 insertion(+), 1 deletion(-)

Shell

Linux 命令大全

(10) Linux- file 命令

Linux file命令

Linux 命令大全

Linux file命令用于辨识文件类型。

通过file指令,我们得以辨识该文件的类型。
语法

file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]

Shell

参数

  • -b  列出辨识结果时,不显示文件名称。
  • -c  详细显示指令执行过程,便于排错或分析程序执行的情形。
  • -f<名称文件>  指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
  • -L  直接显示符号连接所指向的文件的类别。
  • -m<魔法数字文件>  指定魔法数字文件。
  • -v  显示版本信息。
  • -z  尝试去解读压缩文件的内容。
  • [文件或目录…] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

显示文件类型:

[root@localhost ~]# file install.log
install.log: UTF-8 Unicode text

[root@localhost ~]# file -b install.log      <== 不显示文件名称
UTF-8 Unicode text

[root@localhost ~]# file -i install.log      <== 显示MIME类别。
install.log: text/plain; charset=utf-8

[root@localhost ~]# file -b -i install.log
text/plain; charset=utf-8

Shell

显示符号链接的文件类型

[root@localhost ~]# ls -l /var/mail
lrwxrwxrwx 1 root root 10 08-13 00:11 /var/mail -> spool/mail

[root@localhost ~]# file /var/mail
/var/mail: symbolic link to `spool/mail'

[root@localhost ~]# file -L /var/mail
/var/mail: directory

[root@localhost ~]# file /var/spool/mail
/var/spool/mail: directory

[root@localhost ~]# file -L /var/spool/mail
/var/spool/mail: directory

Shell

Linux 命令大全

(11) Linux- find 命令

Linux find命令

Linux 命令大全

Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
语法

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

Shell

参数说明 :

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天内被修改过的文件

-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name

-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。

d: 目录

c: 字型装置文件

b: 区块装置文件

p: 具名贮列

f: 一般文件

l: 符号连结

s: socket

-pid n : process id 是 n 的文件

你可以使用 ( ) 将运算式分隔,并使用下列运算。

exp1 -and exp2

! expr

-not expr

exp1 -or exp2

exp1, exp2

将目前目录及其子目录下所有延伸档名是 c 的文件列出来。

# find . -name "*.c"

Shell

将目前目录其其下子目录中所有一般文件列出

# find . -type f

Shell

将目前目录及其子目录下所有最近 20 天内更新过的文件列出

# find . -ctime -20

Shell

查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:

# find /var/log -type f -mtime +7 -ok rm {} \;

Shell

查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:

# find . -type f -perm 644 -exec ls -l {} \;

Shell

为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:

# find / -type f -size 0 -exec ls -l {} \;

Shell

Linux 命令大全

(12) Linux- git 命令

Linux git命令

Linux 命令大全

Linux git命令是文字模式下的文件管理员。

git是用来管理文件的程序,它十分类似DOS下的Norton Commander,具有互动式操作界面。它的操作方法和Norton Commander几乎一样。
语法

git

Shell

操作说明:

  • F1 :执行info指令,查询指令相关信息,会要求您输入欲查询的名称。
  • F2 :执行cat指令,列出文件内容。
  • F3 :执行gitview指令,观看文件内容。
  • F4 :执行vi指令,编辑文件内容。
  • F5 :执行cp指令,复制文件或目录,会要求您输入目标文件或目录。
  • F6 :执行mv指令,移动文件或目录,或是更改其名称,会要求您输入目标文件或目录。
  • F7 :执行mkdir指令,建立目录。
  • F8 :执行rm指令,删除文件或目录。
  • F9 :执行make指令,批处理执行指令或编译程序时,会要求您输入相关命令。
  • F10 :离开git文件管理员。

Linux 命令大全

(13) Linux- gitview 命令

Linux gitview命令

Linux 命令大全

Linux gitview命令用于观看文件的内容,它会同时显示十六进制和ASCII格式的字码。
语法

gitview [-bchilv][文件]

Shell

参数

  • -b  单色模式,不使用ANSI控制码显示彩色。
  • -c  彩色模式,使用ANSI控制码显示色彩。
  • -h  在线帮助。
  • -i  显示存放gitview程序的所在位置。
  • -l  不使用先前的显示字符。
  • -v  显示版本信息。

使用指令gitview以彩色模式观看文件”/home/ rootlocal/demo.txt”中的内容,输入如下命令:

$ gitview -c /home/rootlocal/demo.txt      #使用gitview指令观看指定文件内容

Shell

Linux 命令大全

(14) Linux- indent 命令

Linux indent命令

Linux 命令大全

Linux indent命令用于调整C原始代码文件的格式。

indent可辨识C的原始代码文件,并加以格式化,以方便程序设计师阅读。
语法

indent [参数][源文件] 或 indent [参数][源文件][-o 目标文件]

Shell

参数

  • -bad或–blank-lines-after-declarations  在声明区段或加上空白行。
  • -bap或–blank-lines-after-procedures  在程序或加上空白行。
  • -bbb或–blank-lines-after-block-comments  在注释区段后加上空白行。
  • -bc或–blank-lines-after-commas  在声明区段中,若出现逗号即换行。
  • -bl或–braces-after-if-line  if(或是else,for等等)与后面执行区段的”{“不同行,且”}”自成一行。
  • -bli<缩排格数>或–brace-indent<缩排格数>  设置{ }缩排的格数。
  • -br或–braces-on-if-line  if(或是else,for等等)与后面执行跛段的”{“不同行,且”}”自成一行。
  • -bs或–blank-before-sizeof  在sizeof之后空一格。
  • -c<栏数>或–comment-indentation<栏数>  将注释置于程序码右侧指定的栏位。
  • -cd<栏数>或–declaration-comment-column<栏数>  将注释置于声明右侧指定的栏位。
  • -cdb或–comment-delimiters-on-blank-lines  注释符号自成一行。
  • -ce或–cuddle-else  将else置于”}”(if执行区段的结尾)之后。
  • -ci<缩排格数>或–continuation-indentation<缩排格数>  叙述过长而换行时,指定换行后缩排的格数。
  • -cli<缩排格数>或–case-indentation-<缩排格数>  使用case时,switch缩排的格数。
  • -cp<栏数>或-else-endif-column<栏数>  将注释置于else与elseif叙述右侧定的栏位。
  • -cs或–space-after-cast  在cast之后空一格。
  • -d<缩排格数>或-line-comments-indentation<缩排格数>  针对不是放在程序码右侧的注释,设置其缩排格数。
  • -di<栏数>或–declaration-indentation<栏数>  将声明区段的变量置于指定的栏位。
  • -fc1或–format-first-column-comments  针对放在每行最前端的注释,设置其格式。
  • -fca或–format-all-comments  设置所有注释的格式。
  • -gnu或–gnu-style  指定使用GNU的格式,此为预设值。
  • -i<格数>或–indent-level<格数>  设置缩排的格数。
  • -ip<格数>或–parameter-indentation<格数>  设置参数的缩排格数。
  • -kr或–k-and-r-style  指定使用Kernighan&Ritchie的格式。
  • -lp或–continue-at-parentheses  叙述过长而换行,且叙述中包含了括弧时,将括弧中的每行起始栏位内容垂直对其排列。
  • -nbad或–no-blank-lines-after-declarations  在声明区段后不要加上空白行。
  • -nbap或–no-blank-lines-after-procedures  在程序后不要加上空白行。
  • -nbbb或–no-blank-lines-after-block-comments  在注释区段后不要加上空白行。
  • -nbc或–no-blank-lines-after-commas  在声明区段中,即使出现逗号,仍旧不要换行。
  • -ncdb或–no-comment-delimiters-on-blank-lines  注释符号不要自成一行。
  • -nce或–dont-cuddle-else  不要将else置于”}”之后。
  • -ncs或–no-space-after-casts  不要在cast之后空一格。
  • -nfc1或–dont-format-first-column-comments  不要格式化放在每行最前端的注释。
  • -nfca或–dont-format-comments  不要格式化任何的注释。
  • -nip或–no-parameter-indentation  参数不要缩排。
  • -nlp或–dont-line-up-parentheses  叙述过长而换行,且叙述中包含了括弧时,不用将括弧中的每行起始栏位垂直对其排列。
  • -npcs或–no-space-after-function-call-names  在调用的函数名称之后,不要加上空格。
  • -npro或–ignore-profile  不要读取indent的配置文件.indent.pro。
  • -npsl或–dont-break-procedure-type  程序类型与程序名称放在同一行。
  • -nsc或–dont-star-comments  注解左侧不要加上星号(*)。
  • -nsob或–leave-optional-semicolon  不用处理多余的空白行。
  • -nss或–dont-space-special-semicolon  若for或while区段仅有一行时,在分号前不加上空格。
  • -nv或–no-verbosity  不显示详细的信息。
  • -orig或–original  使用Berkeley的格式。
  • -pcs或–space-after-procedure-calls  在调用的函数名称与”{“之间加上空格。
  • -psl或–procnames-start-lines  程序类型置于程序名称的前一行。
  • -sc或–start-left-side-of-comments  在每行注释左侧加上星号(*)。
  • -sob或–swallow-optional-blank-lines  删除多余的空白行。
  • -ss或–space-special-semicolon  若for或swile区段今有一行时,在分号前加上空格。
  • -st或–standard-output  将结果显示在标准输出设备。
  • -T  数据类型名称缩排。
  • -ts<格数>或–tab-size<格数>  设置tab的长度。
  • -v或–verbose  执行时显示详细的信息。
  • -version  显示版本信息。

Indent代码格式化说明

使用的indent参数含义
–blank-lines-after-declarationsbad变量声明后加空行
–blank-lines-after-proceduresbap函数结束后加空行
–blank-lines-before-block-commentsbbb块注释前加空行
–break-before-boolean-operatorbbo较长的行,在逻辑运算符前分行
–blank-lines-after-commasnbc变量声明中,逗号分隔的变量不分行
–braces-after-if-linebl“if”和”{“分做两行
–brace-indent 0bli0“{“不继续缩进
–braces-after-struct-decl-linebls定义结构,”struct”和”{“分行
–comment-indentationnc33语句后注释开始于行33
–declaration-comment-columnncd33变量声明后注释开始于行33
–comment-delimiters-on-blank-linesncdb不将单行注释变为块注释
–cuddle-do-whilencdw“do — while”的”while”和其前面的”}”另起一行
–cuddle-elsence“else”和其前面的”}”另起一行
–case-indentation 0cli0switch中的case语句所进0个空格
–else-endif-columnncp33#else, #endif后面的注释开始于行33
–space-after-castcs在类型转换后面加空格
–line-comments-indentation nd0单行注释(不从1列开始的),不向左缩进
–break-function-decl-argsnbfda关闭:函数的参数一个一行
–declaration-indentationndi2变量声明,变量开始于2行,即不必对齐
–format-first-column-commentsnfc1不格式化起于第一行的注释
–format-all-commentsnfca不开启全部格式化注释的开关
–honour-newlineshnlPrefer to break long lines at the position of newlines in the input.
–indent-levelni4设置缩进多少字符,如果为tab的整数倍,用tab来缩进,否则用空格填充。
–parameter-indentationnip5旧风格的函数定义中参数说明缩进5个空格
–line-length 75l75非注释行最长75
–continue-at-parentheseslp续行从上一行出现的括号开始
–space-after-procedure-callspcs函数和”(“之间插入一个空格
–space-after-parenthesesnprs在”(”后”)”前不插入空格
–procnames-start-linespsl将函数名和返回类型放在两行定义
–space-after-forsaffor后面有空格
–space-after-ifsaiif后面有空格
–space-after-whilesawwhile后面有空格
–start-left-side-of-commentsnsc不在生成的块注释中加*
–swallow-optional-blank-linesnsob不去掉可添加的空行
–space-special-semicolonnss一行的for或while语句,在”;”前不加空。
–tab-sizets4一个tab为4个空格(要能整除”-in”)
–use-tabsut使用tab来缩进

Linux 命令大全

(15) Linux- cut 命令

Linux cut命令

Linux 命令大全

Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字。
语法

cut  [-bn] [file]
cut [-c] [file]
cut [-df] [file]

Shell

使用说明:

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

如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

参数:

  • -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
  • -c :以字符为单位进行分割。
  • -d :自定义分隔符,默认为制表符。
  • -f :与-d一起使用,指定显示哪个区域。
  • -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
    范围之内,该字符将被写出;否则,该字符将被排除

当你执行who命令时,会输出类似如下的内容:

$ who
rocrocket :0           2009-01-08 11:07
rocrocket pts/0        2009-01-08 11:23 (:0.0)
rocrocket pts/1        2009-01-08 14:15 (:0.0)

Shell

如果我们想提取每一行的第3个字节,就这样:

$ who|cut -b 3
c
c

Shell

Linux 命令大全

(16) Linux- ln 命令

Linux ln命令

Linux 命令大全

Linux ln命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
语法

ln [参数][源文件或目录][目标文件或目录]

Shell

其中参数的格式为
[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]

[–help] [–version] [–]

命令功能 :
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。

软链接

  • 1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
  • 2.软链接可以 跨文件系统 ,硬链接不可以
  • 3.软链接可以对一个不存在的文件名进行链接
  • 4.软链接可以对目录进行链接

硬链接

  • 1.硬链接,以文件副本的形式存在。但不占用实际空间。
  • 2.不允许给目录创建硬链接
  • 3.硬链接只有在同一个文件系统中才能创建

命令参数
必要参数

  • -b 删除,覆盖以前建立的链接
  • -d 允许超级用户制作目录的硬链接
  • -f 强制执行
  • -i 交互模式,文件存在则提示用户是否覆盖
  • -n 把符号链接视为一般目录
  • -s 软链接(符号链接)
  • -v 显示详细的处理过程

选择参数

  • -S “-S<字尾备份字符串> “或 “–suffix=<字尾备份字符串>”
  • -V “-V<备份方式>”或”–version-control=<备份方式>”
  • –help 显示帮助信息
  • –version 显示版本信息

给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:

ln -s log2013.log link2013

Shell

输出:

[root@localhost test]# ll
-rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log
[root@localhost test]# ln -s log2013.log link2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log

Shell

给文件创建硬链接,为log2013.log创建硬链接ln2013,log2013.log与ln2013的各项属性相同

ln log2013.log ln2013

Shell

输出:

[root@localhost test]# ll
lrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin      61 11-13 06:03 log2013.log
[root@localhost test]# ln log2013.log ln2013
[root@localhost test]# ll
lrwxrwxrwx 1 root root     11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 2 root bin      61 11-13 06:03 ln2013
-rw-r--r-- 2 root bin      61 11-13 06:03 log2013.log

Shell

Linux 命令大全

(17) Linux- less 命令

Linux less命令

Linux 命令大全

less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
语法

less [参数] 文件

Shell

参数说明

  • -b 设置缓冲区的大小
  • -e 当文件显示结束后,自动离开
  • -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
  • -g 只标志最后搜索的关键词
  • -i 忽略搜索时的大小写
  • -m 显示类似more命令的百分比
  • -N 显示每行的行号
  • -o 将less 输出的内容在指定文件中保存起来
  • -Q 不使用警告音
  • -s 显示连续空行为一行
  • -S 行过长时间将超出部分舍弃
  • -x 将”tab”键显示为规定的数字空格
  • /字符串:向下搜索”字符串”的功能
  • ?字符串:向上搜索”字符串”的功能
  • n:重复前一个搜索(与 / 或 ? 有关)
  • N:反向重复前一个搜索(与 / 或 ? 有关)
  • b 向上翻一页
  • d 向后翻半页
  • h 显示帮助界面
  • Q 退出less 命令
  • u 向前滚动半页
  • y 向前滚动一行
  • 空格键 滚动一页
  • 回车键 滚动一行
  • [pagedown]: 向下翻动一页
  • [pageup]: 向上翻动一页

1、查看文件

less log2013.log

Shell

2、ps查看进程信息并通过less分页显示

ps -ef |less

Shell

3、查看命令历史使用记录并通过less分页显示

[root@localhost test]# history | less
22  scp -r tomcat6.0.32 root@192.168.120.203:/opt/soft
23  cd ..
24  scp -r web root@192.168.120.203:/opt/
25  cd soft
26  ls
……省略……

Shell

4、浏览多个文件

less log2013.log log2014.log

Shell

说明:

输入 :n后,切换到 log2014.log
输入 :p 后,切换到log2013.log
附加备注
1.全屏导航

  • ctrl + F – 向前移动一屏
  • ctrl + B – 向后移动一屏
  • ctrl + D – 向前移动半屏
  • ctrl + U – 向后移动半屏

2.单行导航

  • j – 向前移动一行
  • k – 向后移动一行

3.其它导航

  • G – 移动到最后一行
  • g – 移动到第一行
  • q / ZZ – 退出 less 命令

4.其它有用的命令

  • v – 使用配置的编辑器编辑当前文件
  • h – 显示 less 的帮助文档
  • &pattern – 仅显示匹配模式的行,而不是整个文件

5.标记导航

当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置:

  • ma – 使用 a 标记文本的当前位置
  • ‘a – 导航到标记 a 处

Linux 命令大全

(18) Linux- locate 命令

Linux locate命令

Linux 命令大全

Linux locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。

一般情况我们只需要输入 locate your_file_name 即可查找指定文件。
语法

locate [-d ][--help][--version][范本样式...]

Shell

参数:

  • -d或–database= 配置locate指令使用的数据库。locate指令预设的数据库位于/var/lib/slocate目录里,文档名为slocate.db,您可使用 这个参数另行指定。
  • –help  在线帮助。
  • –version  显示版本信息。

查找passwd文件,输入以下命令:

locate passwd

Shell

附加说明
locate与find 不同: find 是去硬盘找,locate 只在/var/lib/slocate资料库中找。

locate的速度比find快,它并不是真的查找,而是查数据库,一般文件数据库在/var/lib/slocate/slocate.db中,所以locate的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:

locate -u

Shell

Linux 命令大全

(19) Linux- lsattr 命令

Linux lsattr命令

Linux 命令大全

Linux lsattr命令用于显示文件属性。

用chattr执行改变文件或目录的属性,可执行lsattr指令查询其属性。
语法

lsattr [-adlRvV][文件或目录...]

Shell

参数

  • -a  显示所有文件和目录,包括以”.”为名称开头字符的额外内建,现行目录”.”与上层目录”…”。
  • -d  显示,目录名称,而非其内容。
  • -l  此参数目前没有任何作用。
  • -R  递归处理,将指定目录下的所有文件及子目录一并处理。
  • -v  显示文件或目录版本。
  • -V  显示版本信息。

1、用chattr命令防止系统中某个关键文件被修改:

# chattr +i /etc/resolv.conf

Shell

然后用mv /etc/resolv.conf等命令操作于该文件,都是得到Operation not permitted 的结果。

vim编辑该文件时会提示W10: Warning: Changing a readonly file错误。要想修改此文件就要把i属性去掉:

chattr -i /etc/resolv.conf

Shell

使用 lsattr 命令来显示文件属性:

# lsattr /etc/resolv.conf

Shell

输出结果为:

----i-------- /etc/resolv.conf

Shell

2、让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:

# chattr +a /var/log/messages

Shell

Linux 命令大全

(20) Linux- mattrib 命令

Linux mattrib命令

Linux 命令大全

Linux mattrib命令用来变更或显示MS-DOS文件的属性。

mattrib为mtools工具指令,模拟MS-DOS的attrib指令,可变更MS-DOS文件的属性。
语法

mattrib [-a|+a] [-h|+h] [-r|+r] [-s|+s] [-/] [-X] msdosfile [ msdosfiles ... ]

Shell

参数

  • -a/+a 除去/设定备份属性。
  • -h/+h 除去/设定隐藏属性。
  • -r/+r 除去/设定唯读属性。
  • -s/+s 除去/设定系统属性。
  • -/ 递回的处理包含所有子目录下的档案。
  • -X 以较短的格式输出结果。

列出 A 槽 MSDOS 格式磁片上所有文件的属性。

mattrib a:

Shell

除去 A 槽磁片上 msdos.sys 档案的隐藏、系统与唯读属性。

mattrib -h -s -r a:msdos.sys

Shell

除去 A 槽磁片上包含子目录下所有档案的唯读属性。

mattrib -r -/ a:*.*

Shell

Linux 命令大全

(21) Linux- mc 命令

Linux mc命令

Linux 命令大全

Linux mc命令用于提供一个菜单式的文件管理程序。

执行mc之后,将会看到菜单式的文件管理程序,共分成4个部分。
语法

mc [-abcdfhkPstuUVx][-C <参数>][-l <文件>][-v <文件>][目录]

Shell

参  数

  • -a  当mc程序画线时不用绘图字符画线。
  • -b  使用单色模式显示。
  • -c  使用彩色模式显示。
  • -C<参数>  指定显示的颜色。
  • -d  不使用鼠标。
  • -f  显示mc函数库所在的目录。
  • -h  显示帮助。
  • -k  重设softkeys成预设置。
  • -l<文件>  在指定文件中保存ftpfs对话窗的内容。
  • -P  程序结束时,列出最后的工作目录。
  • -s  用慢速的终端机模式显示,在这模式下将减少大量的绘图及文字显示。
  • -t  使用TEMPCAP变量设置终端机,而不使用预设置。
  • -u  不用目前的shell程序。
  • -U  使用目前的shell程序。
  • -v<文件>  使用mc的内部编辑器来显示指定的文件。
  • -V  显示版本信息。
  • -x  指定以xterm模式显示。

Linux MC 相关操作

命令按键描 述
F9 or Esc+9激活菜单栏
Tab在两个窗口间移动
F10 or Esc+0退出MC
Control-Enter or Alt-Enter可以将文件名拷贝到命令行
F1 or Esc+1打开帮助页面

虽然MC很好用,不过我还是建议大家使用命令行工具!

Linux 命令大全

(22) Linux- mdel 命令

Linux mdel命令

Linux 命令大全

Linux mdel命令用来删除 MSDOS 格式的档案。

在删除只读之前会有提示信息产生。
语法

mdel [-v] msdosfile [ msdosfiles ... ]

Shell

参数:

  • -v 显示更多的讯息。

将 A 槽磁片根目录中的 autoexec.bat 删除。

mdel a:autoexec.bat .

Shell

Linux 命令大全

(23) Linux- mdir 命令

Linux mdir命令

Linux 命令大全

Linux mdir命令用于显示MS-DOS目录。

mdir为mtools工具指令,模拟MS-DOS的dir指令,可显示MS-DOS文件系统中的目录内容。
语法

mdir [-afwx/][目录]

Shell

参数

  • -/ 显示目录下所有子目录与文件。
  • -a  显示隐藏文件。
  • -f  不显示磁盘所剩余的可用空间。
  • -w  仅显示目录或文件名称,并以横排方式呈现,以便一次能显示较多的目录或文件。
  • -X  仅显示目录下所有子目录与文件的完整路径,不显示其他信息。

显示a盘中的内容

$ mdir -/ a:\*

Shell

以上命令执行后,mdir将显示指定盘”a:\”中的所有子目录及其中的文件信息,如下所示:

Volume in drive A has no label  #加载信息  
Volume Serial Number is 13D2~055C  
Directory for A:\                   #以下为目录信息  
./TEST <DIR> 2011-08-23 16:59     
#显示格式为文件名,目录大小,修改时间  
AUTORUN.INF 265 2011-08-23 16:53  
AUTORUN.BAT 43 2011-08-23 16:56  
3 files 308 bytes               #统计总大小  
724 325 bytes free              #剩余空间

Shell

Linux 命令大全

(24) Linux- mktemp 命令

Linux mktemp命令

Linux 命令大全

Linux mktemp命令用于建立暂存文件。

mktemp建立的一个暂存文件,供shell script使用。
语法

mktemp [-qu][文件名参数]

Shell

参数

  • -q  执行时若发生错误,不会显示任何信息。
  • -u  暂存文件会在mktemp结束前先行删除。
  • [文件名参数]  文件名参数必须是以”自订名称.XXXXXX”的格式。

使用mktemp 命令生成临时文件时,文件名参数应当以”文件名.XXXX”的形式给出,mktemp 会根据文件名参数建立一个临时文件。在命令行提示符输入如下命令:

mktemp tmp.xxxx #生成临时文件

Shell

使用该命令后,可使用dir 或ls看当前目录,得到如下结果:

cmd@cmd-desktop:~$ mktemp tmp.xxxx #生成临时文件  
cmd@cmd-desktop:~$dir #查看当前目录  
file test testfile testfile1 tmp.3847 #生成了tmp.3847

Shell

由此可见,生成的临时文件为tmp.3847,其中,文件名参数中的”XXXX”被4 个随机产生的字符所取代。

Linux 命令大全

(25) Linux- more 命令

Linux more命令

Linux 命令大全

Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
语法

more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]

Shell

参数

  • -num 一次显示的行数
  • -d 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声
  • -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
  • -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
  • -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
  • -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
  • -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
  • -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
  • +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
  • +num 从第 num 行开始显示
  • fileNames 欲显示内容的文档,可为复数个数

逐页显示 testfile 文档内容,如有连续两行以上空白行则以一行空白行显示。

more -s testfile

Shell

从第 20 行开始显示 testfile 之文档内容。

more +20 testfile

Shell

常用操作命令

  • Enter 向下n行,需要定义。默认为1行
  • Ctrl+F 向下滚动一屏
  • 空格键 向下滚动一屏
  • Ctrl+B 返回上一屏
  • = 输出当前行的行号
  • :f 输出文件名和当前行的行号
  • V 调用vi编辑器
  • !命令 调用Shell,并执行命令
  • q 退出more

Linux 命令大全

(26) Linux- mmove 命令

Linux mmove命令

Linux 命令大全

Linux mmove命令用于在MS-DOS文件系统中,移动文件或目录,或更改名称。

mmove为mtools工具命令,模拟MS-DOS的move命令,可在MS-DOS文件系统中移动现有的文件或目录,或是更改现有文件或目录的名称。
语法

mmove [源文件或目录...][目标文件或目录]

Shell

参数说明:

  • [目标文件或目录]:

    执行操作后的目标文件或目录路径

使用指令mmove将文件”autorun.bat”移动到目录”test”中,输入如下命令:

$ mmove autorun.bat test        #移动文件到目录test中

Shell

以上命令执行以后,指令mmove会将文件”autorun.bat”移动到指定目录”test”中。

注意:用户可以使用mdir指令查看移动后的文件或目录信息。

Linux 命令大全

(27) Linux- mread 命令

Linux mread命令

Linux 命令大全

Linux mread命令用于将MS-DOS文件复制到Linux/Unix的目录中。

mread为mtools工具命令,可将MS-DOS文件复制到Linux的文件系统中。这个命令目前已经不常用,一般都使用mcopy命令来代替。
语法

mread [MS-DOS文件...][Linux文件或目录]

Shell

参数说明:

使用指令mread将盘”a:\”中的所有内容复制到当前工作目录下,输入如下命令:

$ mread a:\* ./     #将a盘上的所有文件复制到当前工作目录

Shell

执行该命令前,可以先使用mdir命令查看原来的目录结构。执行mread之后,可使用ls命令再次查看复制之后的文件结构,结果如下所示:

$ mdir -/ a:\*      #查看a盘中的文件  
Volume in drive A has no label          #加载信息  
Volume Serial Number is 13D2~055C  
Directory for A:/                   #以下为目录信息  
./TEST <DIR> 2011-08-23 16:59         
#显示格式为文件名,目录大小,修改时间  
AUTORUN.INF 265 2011-08-23 16:53  
AUTORUN.BAT 43 2011-08-23 16:56  
3 files 308 bytes                       #统计总大小  
724 325 bytes free                  #剩余空间  
$ mread A:\* ./     #将a盘上所有文件复制到当前工作目录  
$ ls                                    #查看文件或子目录信息  
TEST AUTORUN.INF AUTORUN.BAT            #显示复制后的内容

Shell

Linux 命令大全

(28) Linux- mren 命令

Linux mren命令

Linux 命令大全

Linux mren命令用于更改MS-DOS文件或目录的名称,或是移动文件或目录。

mren为MS-DOS工具指令,与DOS下的ren指令相似,可以实现更改MS-DOS文件或目录名称。

源文件必须是磁盘上已经存在的文件,若忽略盘符及路径,则表示当前盘及当前目录的文件。

新文件名是所要更换的文件名称。新文件名称前不可以加与源文件不同的盘符及路径,因为该命令只能更改同一盘上的文件名称。
语法

mren [源文件或目录...][目标文件或目录]

Shell

参数说明:

  • 源文件或目录…:
    执行操作的源文件名或者源文件路径
  • [目标文件或目录]:
    执行操作的目标文件名或者目标文件路径

使用指令mren将a盘下的文件”autorun.bat”的文件名修改为”auto.bat”,输入如下命令:

$ mren a:\autorun.bat auto.bat  
#将文件autorun.bat重命名为auto.bat

Shell

使用该命令前后使用mdir命令查看并对比,得到结果如下:

$ mdir -/ a:\*                  #查看a盘中的文件  
Volume in drive A has no label  #加载信息  
Volume Serial Number is 13D2~055C  
Directory for A:\                   #以下为目录信息  
./TEST <DIR> 2011-08-23 16:59       #文件名,目录大小,修改时间  
AUTORUN.BAT 43 2011-08-23 16:56  
3 files 308 bytes                   #统计总大小  
724 325 bytes free              #剩余空间  
#将文件autorun.bat重命名为auto.bat  
$ mren a:\autorun.bat auto.bat        
$ mdir -/ a:\*                  #再次查看a盘中文件  
Volume in drive A has no label      #加载信息  
Volume Serial Number is 13D2~055C  
Directory for A:\                   #以下为目录信息  
./TEST <DIR> 2011-08-23 16:59       #文件名目录大小 修改时间  
#文件名被改为auto.bat,修改时间改为当前系统时间  
AUTO.BAT 43 2011-08-23 16:56          
3 files 308 bytes                   #统计总大小  
724 325 bytes free              #剩余空间

Shell

Linux 命令大全

(29) Linux- mtools 命令

Linux mtools命令

Linux 命令大全

Linux mtools命令用于显示mtools支持的指令。

mtools为MS-DOS文件系统的工具程序,可模拟许多MS-DOS的指令。这些指令都是mtools的符号连接,因此会有一些共同的特性。
语法

mtools

Shell

参数说明

  • -a  长文件名重复时自动更改目标文件的长文件名。
  • -A  短文件名重复但长文件名不同时自动更改目标文件的短文件名。
  • -o  长文件名重复时,将目标文件覆盖现有的文件。
  • -O  短文件名重复但长文件名不同时,将目标文件覆盖现有的文件。
  • -r  长文件名重复时,要求用户更改目标文件的长文件名。
  • -R  短文件名重复但长文件名不同时,要求用户更改目标文件的短文件名。
  • -s  长文件名重复时,则不处理该目标文件。
  • -S  短文件名重复但长文件名不同时,则不处理该目标文件。
  • -v  执行时显示详细的说明。
  • -V  显示版本信息。

显示 mtools软件包所支持的MS-DOS命令。

在命令提示符中直接输入mtools,可显示其所支持的MS-DOS命令,如下所示:

$ mtools #显示所支持的MS-DOS命令  
Supported commands: #命令列表  
mattrib, mbadblocks, mcat, mcd, mclasserase, mcopy, mdel, mdeltree  
mdir, mdoctorfat, mdu, mformat, minfo, mlabel, mmd, mmount  
mpartition, mrd, mread, mmove, mren, mshowfat, mtoolstest, mtype  
mwrite, mzip

Shell

Linux 命令大全

(30) Linux- mtoolstest 命令

Linux mtoolstest命令

Linux 命令大全

Linux mtoolstest命令用于测试并显示mtools的相关设置。

mtoolstest为mtools工具指令,可读取与分析mtools的配置文件,并在屏幕上显示结果。
语法

mtoolstest

Shell

在命令行中直接输入mtoolstest,即可显示mtools软件包当前的配置信息,结果如下:

$ mtoolstest #显示mtools 软件包当前的配置信息  
drive J: #mtools软件包当前的配置信息列表  
#fn=0 mode=0 builtin  
file="/dev/sdb4" fat_bits=16 
tracks=0 heads=0 sectors=0 hidden=0 
offset=0x0 
partition=0 
mformat_only  
drive Z:  
#fn=0 mode=0 builtin  
file="/dev/sdb4" fat_bits=16 
tracks=0 heads=0 sectors=0 hidden=0 
offset=0x0 
partition=0 
mformat_only  
drive X:  
#fn=0 mode=0 builtin  
file="$DISPLAY" fat_bits=0 
tracks=0 heads=0 sectors=0 hidden=0 
offset=0x0 
partition=0 
drive A:  
#fn=2 mode=128 defined in /etc/mtools.conf  
file="/dev/fd0" fat_bits=0 
tracks=0 heads=0 sectors=0 hidden=0 
offset=0x0 
partition=0 
exclusive  
drive B:  
#fn=2 mode=128 defined in /etc/mtools.conf  
file="/dev/fd1" fat_bits=0 
tracks=0 heads=0 sectors=0 hidden=0 
offset=0x0 
partition=0 
exclusive  
drive M:  
#fn=2 mode=0 defined in /etc/mtools.conf  
file="/var/lib/dosemu/hdimage.first" fat_bits=0 
tracks=0 heads=0 sectors=0 hidden=0 
offset=0x80 
partition=1 
drive N:  
#fn=2 mode=0 defined in /etc/mtools.conf  
file="/var/lib/dosemu/fdimage" fat_bits=0 
tracks=0 heads=0 sectors=0 hidden=0 
offset=0x0 
partition=0 
mtools_fat_compatibility=0 
mtools_skip_check=0 
mtools_lower_case=0

Shell

Linux 命令大全

(31) Linux- mv 命令

Linux mv 命令

Linux 命令大全

Linux mv 命令用来为文件或目录改名、或将文件或目录移入其它位置。
语法

mv [options] source dest
mv [options] source... directory

Shell

参数说明

  • -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件;
  • -f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;

mv参数设置与运行结果

命令格式运行结果
mv 文件名 文件名将源文件名改为目标文件名
mv 文件名 目录名将文件移动到目标目录
mv 目录名 目录名目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名
mv 目录名 文件名出错

将文件 aaa 更名为 bbb :

mv aaa bbb

Shell

将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs。

mv info/ logs

Shell

再如将/usr/student下的所有文件和目录移到当前目录下,命令行为:

$ mv /usr/student/*  .

Shell

Linux 命令大全

(32) Linux- od 命令

Linux od命令

Linux 命令大全

Linux od命令用于输出文件内容。

od指令会读取所给予的文件的内容,并将其内容以八进制字码呈现出来。
语法

od [-abcdfhilovx][-A <字码基数>][-j <字符数目>][-N <字符数目>][-s <字符串字符数>][-t <输出格式>][-w <每列字符数>][--help][--version][文件...]

Shell

参数

  • -a  此参数的效果和同时指定”-ta”参数相同。
  • -A<字码基数>  选择要以何种基数计算字码。
  • -b  此参数的效果和同时指定”-toC”参数相同。
  • -c  此参数的效果和同时指定”-tC”参数相同。
  • -d  此参数的效果和同时指定”-tu2″参数相同。
  • -f  此参数的效果和同时指定”-tfF”参数相同。
  • -h  此参数的效果和同时指定”-tx2″参数相同。
  • -i  此参数的效果和同时指定”-td2″参数相同。
  • -j<字符数目>或–skip-bytes=<字符数目>  略过设置的字符数目。
  • -l  此参数的效果和同时指定”-td4″参数相同。
  • -N<字符数目>或–read-bytes=<字符数目>  到设置的字符数目为止。
  • -o  此参数的效果和同时指定”-to2″参数相同。
  • -s<字符串字符数>或–strings=<字符串字符数>  只显示符合指定的字符数目的字符串。
  • -t<输出格式>或–format=<输出格式>  设置输出格式。
  • -v或–output-duplicates  输出时不省略重复的数据。
  • -w<每列字符数>或–width=<每列字符数>  设置每列的最大字符数。
  • -x  此参数的效果和同时指定”-h”参数相同。
  • –help  在线帮助。
  • –version  显示版本信息。

创建 tmp 文件:

$ echo abcdef g > tmp
$ cat tmp
abcdef g

Shell

使用 od 命令:

$ od -b tmp
0000000 141 142 143 144 145 146 040 147 012
0000011

Shell

使用单字节八进制解释进行输出,注意左侧的默认地址格式为八字节:

$ od -c tmp
0000000   a   b   c   d   e   f       g  \n
0000011

Shell

使用ASCII码进行输出,注意其中包括转义字符

$ od -t d1 tmp
0000000   97   98   99  100  101  102   32  103   10
0000011

Shell

使用单字节十进制进行解释

$ od -A d -c tmp
0000000   a   b   c   d   e   f       g  \n
0000009

Shell

Linux 命令大全

(33) Linux- paste 命令

Linux paste命令

Linux 命令大全

Linux paste 命令用于合并文件的列。

paste 指令会把每个文件以列对列的方式,一列列地加以合并。
语法

paste [-s][-d <间隔字符>][--help][--version][文件...]

Shell

参数

  • -d<间隔字符>或–delimiters=<间隔字符>  用指定的间隔字符取代跳格字符。
  • -s或–serial  串列进行而非平行处理。
  • –help  在线帮助。
  • –version  显示帮助信息。
  • [文件…] 指定操作的文件路径

使用paste指令将文件”file”、”testfile”、”testfile1″进行合并,输入如下命令:

paste file testfile testfile1 #合并指定文件的内容

Shell

但是,在执行以上命令之前,首先使用”cat”指令对3个文件内容进行查看,显示如下所示:

$ cat file                  #file文件的内容  
xiongdan 200  
lihaihui 233  
lymlrl 231  
$ cat testfile              #testfile文件的内容  
liangyuanm  ss  
$ cat testfile1             #testfile1文件的内容  
huanggai 56  
zhixi 73

Shell

当合并指令”$ paste file testfile testfile1″执行后,程序界面中将显示合并后的文件内容,如下所示:

xiongdan 200  
lihaihui 233  
lymlrl 231  
liangyuanm  ss  
huanggai 56  
zhixi 73

Shell

若使用paste指令的参数”-s”,则可以将一个文件中的多行数据合并为一行进行显示。例如,将文件”file”中的3行数据合并为一行数据进行显示,输入如下命令

$ paste -s file             #合并指定文件的多行数据

Shell

上面的命令执行后,显示的数据内容如下所示:

xiongdan 200 lihaihui 233 lymlrl 231

Shell

注意:参数”-s”只是将testfile文件的内容调整显示方式,并不会改变原文件的内容格式。

Linux 命令大全

(34) Linux- patch 命令

Linux patch命令

Linux 命令大全

Linux patch命令用于修补文件。

patch指令让用户利用设置修补文件的方式,修改,更新原始文件。倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行。如果配合修补文件的方式则能一次修补大批文件,这也是Linux系统核心的升级方法之一。
语法

patch [-bceEflnNRstTuvZ][-B <备份字首字符串>][-d <工作目录>][-D <标示符号>][-F <监别列数>][-g <控制数值>][-i <修补文件>][-o <输出文件>][-p <剥离层级>][-r <拒绝文件>][-V <备份方式>][-Y <备份字首字符串>][-z <备份字尾字符串>][--backup-if -mismatch][--binary][--help][--nobackup-if-mismatch][--verbose][原始文件 <修补文件>] 或 path [-p <剥离层级>] < [修补文件]

Shell

参数

  • -b或–backup  备份每一个原始文件。
  • -B<备份字首字符串>或–prefix=<备份字首字符串>  设置文件备份时,附加在文件名称前面的字首字符串,该字符串可以是路径名称。
  • -c或–context  把修补数据解译成关联性的差异。
  • -d<工作目录>或–directory=<工作目录>  设置工作目录。
  • -D<标示符号>或–ifdef=<标示符号>  用指定的符号把改变的地方标示出来。
  • -e或–ed  把修补数据解译成ed指令可用的叙述文件。
  • -E或–remove-empty-files  若修补过后输出的文件其内容是一片空白,则移除该文件。
  • -f或–force  此参数的效果和指定”-t”参数类似,但会假设修补数据的版本为新 版本。
  • -F<监别列数>或–fuzz<监别列数>  设置监别列数的最大值。
  • -g<控制数值>或–get=<控制数值>  设置以RSC或SCCS控制修补作业。
  • -i<修补文件>或–input=<修补文件>  读取指定的修补文件。
  • -l或–ignore-whitespace  忽略修补数据与输入数据的跳格,空格字符。
  • -n或–normal  把修补数据解译成一般性的差异。
  • -N或–forward  忽略修补的数据较原始文件的版本更旧,或该版本的修补数据已使 用过。
  • -o<输出文件>或–output=<输出文件>  设置输出文件的名称,修补过的文件会以该名称存放。
  • -p<剥离层级>或–strip=<剥离层级>  设置欲剥离几层路径名称。
  • -f<拒绝文件>或–reject-file=<拒绝文件>  设置保存拒绝修补相关信息的文件名称,预设的文件名称为.rej。
  • -R或–reverse  假设修补数据是由新旧文件交换位置而产生。
  • -s或–quiet或–silent  不显示指令执行过程,除非发生错误。
  • -t或–batch  自动略过错误,不询问任何问题。
  • -T或–set-time  此参数的效果和指定”-Z”参数类似,但以本地时间为主。
  • -u或–unified  把修补数据解译成一致化的差异。
  • -v或–version  显示版本信息。
  • -V<备份方式>或–version-control=<备份方式>  用”-b”参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用”-z”参数变更,当使用”-V”参数指定不同备份方式时,也会产生不同字尾的备份字符串。
  • -Y<备份字首字符串>或–basename-prefix=–<备份字首字符串>  设置文件备份时,附加在文件基本名称开头的字首字符串。
  • -z<备份字尾字符串>或–suffix=<备份字尾字符串>  此参数的效果和指定”-B”参数类似,差别在于修补作业使用的路径与文件名若为src/linux/fs/super.c,加上”backup/”字符串后,文件super.c会备份于/src/linux/fs/backup目录里。
  • -Z或–set-utc  把修补过的文件更改,存取时间设为UTC。
  • –backup-if-mismatch  在修补数据不完全吻合,且没有刻意指定要备份文件时,才备份文件。
  • –binary  以二进制模式读写数据,而不通过标准输出设备。
  • –help  在线帮助。
  • –nobackup-if-mismatch  在修补数据不完全吻合,且没有刻意指定要备份文件时,不要备份文件。
  • –verbose  详细显示指令的执行过程。

使用patch指令将文件”testfile1″升级,其升级补丁文件为”testfile.patch”,输入如下命令:

$ patch -p0 testfile1 testfile.patch    #使用补丁程序升级文件

Shell

使用该命令前,可以先使用指令”cat”查看”testfile1″的内容。在需要修改升级的文件与原文件之间使用指令”diff”比较可以生成补丁文件。具体操作如下所示:

$ cat testfile1                 #查看testfile1的内容  
Hello,This is the firstfile!  
$ cat testfile2                 #查看testfile2的内容  
Hello,Thisisthesecondfile!  
$ diff testfile1 testfile2          #比较两个文件  
1c1  
<Hello,Thisisthefirstfile!  
---  
>Hello,Thisisthesecondfile!  
#将比较结果保存到tetsfile.patch文件  
$ diff testfile1 testfile2>testfile.patch     
$ cat testfile.patch                #查看补丁包的内容  
1c1  
<Hello,Thisisthefirstfile!  
---  
>Hello,Thisisthesecondfile!  
#使用补丁包升级testfile1文件  
$ patch -p0 testfile1 testfile.patch      
patching file testfile1  
$cat testfile1                  #再次查看testfile1的内容  
#testfile1文件被修改为与testfile2一样的内容  
Hello,This is the secondfile!

Shell

注意:上述命令代码中,”$ diff testfile1 testfile2>testfile. patch”所使用的操作符”>”表示将该操作符左边的文件数据写入到右边所指向的文件中。在这里,即是指将两个文件比较后的结果写入到文件”testfile.patch”中。

Linux 命令大全

(35) Linux- rcp 命令

Linux rcp命令

Linux 命令大全

Linux rcp命令用于复制远程文件或目录。

rcp指令用在远端复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。
语法

rcp [-pr][源文件或目录][目标文件或目录]

Shell

rcp [-pr][源文件或目录...][目标文件]

Shell

参数

-p  保留源文件或目录的属性,包括拥有者,所属群组,权限与时间。

-r  递归处理,将指定目录下的文件与子目录一并处理。

使用rcp指令复制远程文件到本地进行保存。

设本地主机当前账户为rootlocal,远程主机账户为root,要将远程主机(218.6.132.5)主目录下的文件”testfile”复制到本地目录”test”中,则输入如下命令:

rcp root@218.6.132.5:./testfile testfile  #复制远程文件到本地  
rcp root@218.6.132.5:home/rootlocal/testfile testfile  
#要求当前登录账户cmd 登录到远程主机  
rcp 218.6.132.5:./testfile testfile

Shell

注意:指令”rcp”执行以后不会有返回信息,仅需要在目录”test”下查看是否存在文件”testfile”。若存在,则表示远程复制操作成功,否则远程复制操作失败。

Linux 命令大全

(36) Linux- rm 命令

Linux rm命令

Linux 命令大全

Linux rm命令用于删除一个文件或者目录。
语法

rm [options] name...

Shell

参数

  • -i 删除前逐一询问确认。
  • -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
  • -r 将目录及以下之档案亦逐一删除。

删除文件可以直接使用rm命令,若删除目录则必须配合选项”-r”,例如:

# rm  test.txt 
rm:是否删除 一般文件 "test.txt"? y  
# rm  homework  
rm: 无法删除目录"homework": 是一个目录  
# rm  -r  homework  
rm:是否删除 目录 "homework"? y

Shell

删除当前目录下的所有文件及目录,命令行为:

rm  -r  *

Shell

文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。

Linux 命令大全

(37) Linux- slocate 命令

Linux slocate命令

Linux 命令大全

Linux slocate命令查找文件或目录。

slocate本身具有一个数据库,里面存放了系统中文件与目录的相关信息。
语法

slocate [-u][--help][--version][-d <目录>][查找的文件]

Shell

参数

  • -d<目录>或–database=<目录>  指定数据库所在的目录。
  • -u  更新slocate数据库。
  • –help  显示帮助。
  • –version  显示版本信息。

使用指令”slocate”显示文件名中含有关键字”fdisk”的文件路径信息,输入如下命令:

$ slocate fdisk #显示文件名中含有fdisk关键字的文件的路径信息

Shell

执行以上命令后,指令执行的输出信息如下:

$ slocate fdisk #显示文件名中含有fdisk 关键字的文件的路径信息  
/root/cfdisk        #搜索到的文件路径列表  
/root/fdisk  
/root/sfdisk  
/usr/include/grub/ieee1275/ofdisk.h  
/usr/share/doc/util-Linux/README.cfdisk  
/usr/share/doc/util-Linux/README.fdisk.gz  
/usr/share/doc/util-Linux/examples/sfdisk.examples.gz

Shell

Linux 命令大全

(38) Linux- split 命令

Linux split命令

Linux 命令大全

Linux split命令用于将一个文件分割成数个。

该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。
语法

split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]

Shell

参数说明

  • -<行数> :
    指定每多少行切成一个小文件
  • -b<字节> :
    指定每多少字节切成一个小文件
  • –help :
    在线帮助
  • –version :
    显示版本信息
  • -C<字节> :
    与参数”-b”相似,但是在切
    割时将尽量维持每行的完整性
  • [输出文件名] :
    设置切割后文件的前置文件名,
    split会自动在前置文件名后再加上编号

使用指令”split”将文件”README”每6行切割成一个文件,输入如下命令:

$ split -6 README       #将README文件每六行分割成一个文件

Shell

以上命令执行后,指令”split”会将原来的大文件”README”切割成多个以”x”开头的小文件。而在这些小文件中,每个文件都只有6行内容。

使用指令”ls”查看当前目录结构,如下所示:

$ ls                                #执行ls指令  
#获得当前目录结构  
README xaa xad xag xab xae xah xac xaf xai

Shell

Linux 命令大全

(39) Linux- tee 命令

Linux tee命令

Linux 命令大全

Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。

tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
语法

tee [-ai][--help][--version][文件...]

Shell

参数

  • -a或–append  附加到既有文件的后面,而非覆盖它.
  • -i或–ignore-interrupts  忽略中断信号。
  • –help  在线帮助。
  • –version  显示版本信息。

使用指令”tee”将用户输入的数据同时保存到文件”file1″和”file2″中,输入如下命令:

$ tee file1 file2                   #在两个文件中复制内容

Shell

以上命令执行后,将提示用户输入需要保存到文件的数据,如下所示:

My Linux                        #提示用户输入数据  
My Linux                        #输出数据,进行输出反馈

Shell

此时,可以分别打开文件”file1″和”file2″,查看其内容是否均是”My Linux”即可判断指令”tee”是否执行成功。

Linux 命令大全

(40) Linux- tmpwatch 命令

Linux tmpwatch命令

Linux 命令大全

Linux tmpwatch命令用于删除暂存文件。

执行tmpwatch指令可删除不必要的暂存文件,您可以设置文件超期时间,单位以小时计算。
语法

tmpwatch [-afqv][--test][超期时间][目录...]

Shell

参数

  • -a或–all  删除任何类型的文件。
  • -f或–force  强制删除文件或目录,其效果类似rm指令的”-f”参数。
  • -q或–quiet  不显示指令执行过程。
  • -v或–verbose  详细显示指令执行过程。
  • -test  仅作测试,并不真的删除文件或目录。

使用指令”tmpwatch”删除目录”/tmp”中超过一天未使用的文件,输入如下命令:

$ tmpwatch 24 /tmp/ #删除/tmp目录中超过一天未使用的文件

Shell

以上命令执行后,其执行结果如下所示:

removing directctmp/orbit-tom if not empty

Shell

注意:该指令需要root权限,因此在使用tmpwatch命令前应该使用su命令切换用户。切换管理权限操作如下所示:

$ su                                #切换到root用户  
口令:**********                   #输入用户密码

Shell

Linux 命令大全

(41) Linux- touch 命令

Linux touch命令

Linux 命令大全

Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

ls -l 可以显示档案的时间记录。
语法

touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]

Shell

  • 参数说明
  • a 改变档案的读取时间记录。
  • m 改变档案的修改时间记录。
  • c 假如目的档案不存在,不会建立新的档案。与 –no-create 的效果一样。
  • f 不使用,是为了与其他 unix 系统的相容性而保留。
  • r 使用参考档的时间记录,与 –file 的效果一样。
  • d 设定时间与日期,可以使用各种不同的格式。
  • t 设定档案的时间记录,格式与 date 指令相同。
  • –no-create 不会建立新档案。
  • –help 列出指令格式。
  • –version 列出版本讯息。

使用指令”touch”修改文件”testfile”的时间属性为当前系统时间,输入如下命令:

$ touch testfile                #修改文件的时间属性

Shell

首先,使用ls命令查看testfile文件的属性,如下所示:

$ ls -l testfile                #查看文件的时间属性  
#原来文件的修改时间为16:09  
-rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile

Shell

执行指令”touch”修改文件属性以后,并再次查看该文件的时间属性,如下所示:

$ touch testfile                #修改文件时间属性为当前系统时间  
$ ls -l testfile                #查看文件的时间属性  
#修改后文件的时间属性为当前系统时间  
-rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile

Shell

使用指令”touch”时,如果指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件”file”,输入如下命令:

$ touch file            #创建一个名为“file”的新的空白文件

Shell

Linux 命令大全

(42) Linux- umask 命令

Linux umask命令

Linux 命令大全

Linux umask命令指定在建立文件时预设的权限掩码。

umask可用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
语法

umask [-S][权限掩码]

Shell

参数说明

-S  以文字的方式来表示权限掩码。

使用指令”umask”查看当前权限掩码,则输入下面的命令:

$ umask                         #获取当前权限掩码

Shell

执行上面的指令后,输出信息如下:

0022

Shell

接下来,使用指令”mkdir”创建一个目录,并使用指令”ls”获取该目录的详细信息,输入命令如下:

$ mkdir test1                       #创建目录  
$ ls –d –l test1/                   #显示目录的详细信息

Shell

执行上面的命令后,将显示新创建目录的详细信息,如下所示:

drwxr-xr-x 2 rootlocal rootlocal 4096 2011-9-19 21:46 test1/

Shell

注意:在上面的输出信息中,”drwxr-xr-x”=”777-022=755″。

Linux 命令大全

(43) Linux- which 命令

Linux which命令

Linux 命令大全

Linux which命令用于查找文件。

which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
语法

which [文件...]

Shell

参数

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

使用指令”which”查看指令”bash”的绝对路径,输入如下命令:

$ which bash

Shell

上面的指令执行后,输出信息如下所示:

/bin/bash                   #bash可执行程序的绝对路径

Shell

Linux 命令大全

(44) Linux- cp 命令

Linux cp命令

Linux 命令大全

Linux cp命令主要用于复制文件或目录。
语法

cp [options] source dest

Shell

cp [options] source... directory

Shell

参数说明

  • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
  • -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
  • -f:覆盖已经存在的目标文件而不给出提示。
  • -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答”y”时目标文件将被覆盖。
  • -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
  • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
  • -l:不复制文件,只是生成链接文件。

使用指令”cp”将当前目录”test/”下的所有文件复制到新目录”newtest”下,输入如下命令:

$ cp –r test/ newtest

Shell

注意:用户使用该指令复制目录时,必须使用参数”-r”或者”-R”。

Linux 命令大全

(45) Linux- whereis 命令

Linux whereis命令

Linux 命令大全

Linux whereis命令用于查找文件。

该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。

该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。

语法

whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]

Shell

参数

-b  只查找二进制文件。

-B<目录>  只在设置的目录下查找二进制文件。

-f  不显示文件名前的路径名称。

-m  只查找说明文件。

-M<目录>  只在设置的目录下查找说明文件。

-s  只查找原始代码文件。

-S<目录>  只在设置的目录下查找原始代码文件。

-u  查找不包含指定类型的文件。

使用指令”whereis”查看指令”bash”的位置,输入如下命令:

$ whereis bash

Shell

上面的指令执行后,输出信息如下所示:

bash:/bin/bash/etc/bash.bashrc/usr/share/man/man1/bash.1.gz

Shell

注意:以上输出信息从左至右分别为查询的程序名、bash路径、bash的man 手册页路径。

如果用户需要单独查询二进制文件或帮助文件,可使用如下命令:

$ whereis -b bash 
$ whereis -m bash

Shell

输出信息如下:

$ whereis -b bash               #显示bash 命令的二进制程序  
bash: /bin/bash /etc/bash.bashrc /usr/share/bash    # bash命令的二进制程序的地址  
$ whereis -m bash               #显示bash 命令的帮助文件  
bash: /usr/share/man/man1/bash.1.gz  #bash命令的帮助文件地址

Shell

Linux 命令大全

(46) Linux- mcopy 命令

Linux mcopy命令

Linux 命令大全

Linux mcopy命令用来复制 MSDOS 格式文件到 Linux 中,或是由 Linux 中复制 MSDOS 文件到磁片上。

mcopy 可复制单一的文件到所指定的文件名称,或是复制数个文件到所指定的目录之中。来源与目的文件可为 MSDOS 或是 Linux 文件。

mcopy指令是一种mtools工具指令,可以在DOS系统中复制文件或者在DOS与Linux操作系统之间进行文件复制。
语法

mcopy [-bnmpQt/][源文件][目标文件或目录]

Shell

参数

  • b 批处理模式。这是为大量的文件复制进行最佳化的选项,但是当在复制文件过程中产生 crash 时,会有安全性的问题产生。/ 递回的复制。包含目录所含文件与其下所有子目录中的文件。
  • -n 覆盖其他文件时,不需要进行确认而直接覆盖
  • m 将源文件修改时间设置为目标文件的修改时间。
  • p 将源文件的属性设置为目标文件的属性。
  • Q 当复制多个文件产生错误时,尽快结束程序。
  • t 转换为文本文件。
  • o 在覆盖 MSDOS 文件时不会出现警示讯息。

将 A 盘根目录中的 autoexec.bat 复制到目前工作目录之下:

mcopy a:autoexec.bat .

Shell

当复制的内容包括子目录和文件时,必须使用参数”-/”递归操作,因此该命令为:

mcopy -/ A:\*

Shell

执行该命令前先使用mdir 命令查看原来的目录结构,执行mcopy 之后可使用ls 命令查看复制之后Linux系统中的文件结构,结果如下:

cmd@cmd-desktop:~$ mdir -/ a:\* #查看A 盘中的文件  
Volume in drive A has no label #加载信息  
Volume Serial Number is 13D2~055C  
Directory for A:/ #以下为目录信息  
#文件名目录大小 修改时间  
./TEST <DIR> 2009-09-23 16:59  
AUTORUN.INF 265 2009-09-23 16:53  
AUTORUN.BAT 43 2009-09-23 16:56  
3 files 308 bytes #统计总大小  
724 325 bytes free #剩余空间  
cmd@cmd-desktop:~$ mcopy -/ A:\* #将A盘上的所有文件复制到当前工作目录  
cmd@cmd-desktop:~$ls  
TEST AUTORUN.INF AUTORUN.BAT #A盘中的内容复制到Linux文件系统结构中

Shell

Linux 命令大全

(47) Linux- mshowfat 命令

Linux mshowfat命令

Linux 命令大全

Linux mshowfat命令用于显示MS-DOS文件在FAT中的记录。

mshowfat为mtools工具指令,可显示MS-DOS文件在FAT中的记录编号。
语法

mshowfat [文件...]

Shell

参数说明:

[文件…]:
执行操作的文件相对路径或者绝对路径

使用指令mshowfat查看文件”autorun.bat”的FAT信息,输入如下命令:
>

$ mshowfat autorun.bat

Shell

以上命令执行后,文件”autorun.bat”的FAT相关信息将会被显示出来。

注意:执行操作的文件必须是DOS文件系统下的文件。

Linux 命令大全

(48) Linux- rhmask 命令

Linux rhmask命令

Linux rhmask命令
Linux 命令大全

Linux rhmask命令用于对文件进行加密和解密操作。

执行rhmask指令可制作加密过的文件,方便用户在公开的网络上传输该文件,而不至于被任意盗用。
语法

rhmask [加密文件][输出文件] 或 rhmask [-d][加密文件][源文件][输出文件]

Shell

参数

  • -d  产生加密过的文件。

使用指令”rhmask”将加密文件”code.txt”进行加密后,另存为输出文件”demo.txt”,输入如下命令:

$ rhmask code.txt demo.txt

Shell

以上命令执行后,文件”code.txt”将被加密后,另存为已经加密的文件”demo.txt”。

注意:该指令有两种语法,用户可以有选择性地进行使用即可。

Linux 命令大全

(49) Linux- scp 命令

Linux scp命令

Linux 命令大全

Linux scp 命令用于 Linux 之间复制文件和目录。

scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。
语法

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2

Shell

简易写法:

scp [可选参数] file_source file_target

Shell

参数说明:

  • -1:
    强制scp命令使用协议ssh1
  • -2:
    强制scp命令使用协议ssh2
  • -4:
    强制scp命令只使用IPv4寻址
  • -6:
    强制scp命令只使用IPv6寻址
  • -B:
    使用批处理模式(传输过程中不询问传输口令或短语)
  • -C:
    允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
  • -p:保留原文件的修改时间,访问时间和访问权限。
  • -q:
    不显示传输进度条。
  • -r:
    递归复制整个目录。
  • -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
  • -c cipher:
    以cipher将数据传输进行加密,这个选项将直接传递给ssh。
  • -F ssh_config:
    指定一个替代的ssh配置文件,此参数直接传递给ssh。
  • -i identity_file:
    从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
  • -l limit:
    限定用户所能使用的带宽,以Kbit/s为单位。
  • -o ssh_option:
    如果习惯于使用ssh_config(5)中的参数传递方式,
  • -P port:注意是大写的P, port是指定数据传输用到的端口号
  • -S program:
    指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

1、从本地复制到远程
命令格式:

scp local_file remote_username@remote_ip:remote_folder 
或者 
scp local_file remote_username@remote_ip:remote_file 
或者 
scp local_file remote_ip:remote_folder 
或者 
scp local_file remote_ip:remote_file

Shell

  • 第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;
  • 第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;

应用实例:

scp /home/space/music/1.mp3 root@www.runoob:/home/root/others/music 
scp /home/space/music/1.mp3 root@www.runoob:/home/root/others/music/001.mp3 
scp /home/space/music/1.mp3 www.runoob:/home/root/others/music 
scp /home/space/music/1.mp3 www.runoob:/home/root/others/music/001.mp3

Shell

复制目录命令格式:

scp -r local_folder remote_username@remote_ip:remote_folder 
或者 
scp -r local_folder remote_ip:remote_folder

Shell

  • 第1个指定了用户名,命令执行后需要再输入密码;
  • 第2个没有指定用户名,命令执行后需要输入用户名和密码;

应用实例:

scp -r /home/space/music/ root@www.runoob:/home/root/others/ 
scp -r /home/space/music/ www.runoob:/home/root/others/

Shell

上面命令将本地 music 目录复制到远程 others 目录下。
2、从远程复制到本地
从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可,如下实例

应用实例:

scp root@www.runoob:/home/root/others/music /home/space/music/1.mp3 
scp -r www.runoob:/home/root/others/ /home/space/music/

Shell

说明
1.如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号,命令格式如下:

#scp 命令使用端口号 4588
scp -P 4588 remote@www.runoob:/usr/local/sin.sh /home/administrator

Shell

2.使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的。

Linux 命令大全

(50) Linux- awk 命令

Linux awk 命令

Linux 命令大全

AWK是一种处理文本文件的语言,是一个强大的文本分析工具。

之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
语法

awk [选项参数] 'script' var=value file(s)awk [选项参数] -f scriptfile var=value file(s)

Shell

选项参数说明:

  • -F fs or –field-separator fs
    指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
  • -v var=value or –asign var=value
    赋值一个用户定义变量。
  • -f scripfile or –file scriptfile
    从脚本文件中读取awk命令。
  • -mf nnn and -mr nnn
    对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
  • -W compact or –compat, -W traditional or –traditional
    在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。
  • -W copyleft or –copyleft, -W copyright or –copyright
    打印简短的版权信息。
  • -W help or –help, -W usage or –usage
    打印全部awk选项和每个选项的简短说明。
  • -W lint or –lint
    打印不能向传统unix平台移植的结构的警告。
  • -W lint-old or –lint-old
    打印关于不能向传统unix平台移植的结构的警告。
  • -W posix
    打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符=不能代替和=;fflush无效。
  • -W re-interval or –re-inerval
    允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。
  • -W source program-text or –source program-text
    使用program-text作为源代码,可与-f命令混用。
  • -W version or –version
    打印bug报告信息的版本。

文章目录

1 基本用法
2 运算符
3 内建变量
4 使用正则,字符串匹配
5 忽略大小写
6 模式取反
7 awk脚本
8 另外一些实例
1 基本用法

log.txt文本内容如下:

2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo

Shell

用法一:

awk '{[pattern] action}' {filenames}   # 行匹配语句 awk '' 只能用单引号

Shell

实例:

# 每行按空格或TAB分割,输出文本中的1、4项
 $ awk '{print $1,$4}' log.txt
 ---------------------------------------------
 2 a
 3 like
 This's
 10 orange,apple,mongo
 # 格式化输出
 $ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
 ---------------------------------------------
 2        a
 3        like
 This's
 10       orange,apple,mongo

Shell

用法二:

awk -F  #-F相当于内置变量FS, 指定分割字符

Shell

实例:

# 使用","分割
 $  awk -F, '{print $1,$2}'   log.txt
 ---------------------------------------------
 2 this is a test
 3 Are you like awk
 This's a test
 10 There are orange apple
 # 或者使用内建变量
 $ awk 'BEGIN{FS=","} {print $1,$2}'     log.txt
 ---------------------------------------------
 2 this is a test
 3 Are you like awk
 This's a test
 10 There are orange apple
 # 使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割
 $ awk -F '[ ,]'  '{print $1,$2,$5}'   log.txt
 ---------------------------------------------
 2 this test
 3 Are awk
 This's a
 10 There apple

Shell

用法三:

awk -v  # 设置变量

Shell

实例:

$ awk -va=1 '{print $1,$1+a}' log.txt
 ---------------------------------------------
 2 3
 3 4
 This's 1
 10 11
 $ awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt
 ---------------------------------------------
 2 3 2s
 3 4 3s
 This's 1 This'ss
 10 11 10s

Shell

用法四:

awk -f {awk脚本} {文件名}

Shell

实例:

$ awk -f cal.awk log.txt

Shell


2 运算符
运算符描述
= += -= *= /= %= ^= **=赋值
?:C条件表达式
||逻辑或
&&逻辑与
~ 和 !~匹配正则表达式和不匹配正则表达式
< <= > >= != ==关系运算符
空格连接
+ –加,减
* / %乘,除与求余
+ – !一元加,减和逻辑非
^ ***求幂
++ —增加或减少,作为前缀或后缀
$字段引用
in数组成员

过滤第一列大于2的行

$ awk '$1>2' log.txt    #命令
#输出
3 Are you like awk
This's a test
10 There are orange,apple,mongo

Shell

过滤第一列等于2的行

$ awk '$1==2 {print $1,$3}' log.txt    #命令
#输出
2 is

Shell

过滤第一列大于2并且第二列等于’Are’的行

$ awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt    #命令
#输出
3 Are you

Shell


3 内建变量
变量描述
$n当前记录的第n个字段,字段间由FS分隔
$0完整的输入记录
ARGC命令行参数的数目
ARGIND命令行中当前文件的位置(从0开始算)
ARGV包含命令行参数的数组
CONVFMT数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组
ERRNO最后一个系统错误的描述
FIELDWIDTHS字段宽度列表(用空格键分隔)
FILENAME当前文件名
FNR各文件分别计数的行号
FS字段分隔符(默认是任何空格)
IGNORECASE如果为真,则进行忽略大小写的匹配
NF一条记录的字段的数目
NR已经读出的记录数,就是行号,从1开始
OFMT数字的输出格式(默认值是%.6g)
OFS输出记录分隔符(输出换行符),输出时用指定的符号代替换行符
ORS输出记录分隔符(默认值是一个换行符)
RLENGTH由match函数所匹配的字符串的长度
RS记录分隔符(默认是一个换行符)
RSTART由match函数所匹配的字符串的第一个位置
SUBSEP数组下标分隔符(默认值是/034)
$ awk 'BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";printf "---------------------------------------------\n"} {printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}'  log.txt
FILENAME ARGC  FNR   FS   NF   NR  OFS  ORS   RS
---------------------------------------------
log.txt    2    1         5    1
log.txt    2    2         5    2
log.txt    2    3         3    3
log.txt    2    4         4    4
$ awk -F\' 'BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";printf "---------------------------------------------\n"} {printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}'  log.txt
FILENAME ARGC  FNR   FS   NF   NR  OFS  ORS   RS
---------------------------------------------
log.txt    2    1    '    1    1
log.txt    2    2    '    1    2
log.txt    2    3    '    2    3
log.txt    2    4    '    1    4
# 输出顺序号 NR, 匹配文本行号
$ awk '{print NR,FNR,$1,$2,$3}' log.txt
---------------------------------------------
1 1 2 this is
2 2 3 Are you
3 3 This's a test
4 4 10 There are
# 指定输出分割符
$  awk '{print $1,$2,$5}' OFS=" $ "  log.txt
---------------------------------------------
2 $ this $ test
3 $ Are $ awk
This's $ a $
10 $ There $

Shell


4 使用正则,字符串匹配
# 输出第二列包含 "th",并打印第二列与第四列
$ awk '$2 ~ /th/ {print $2,$4}' log.txt
---------------------------------------------
this a

Shell

~ 表示模式开始。// 中是模式。

# 输出包含"re" 的行
$ awk '/re/ ' log.txt
---------------------------------------------
3 Are you like awk
10 There are orange,apple,mongo

Shell


5 忽略大小写
$ awk 'BEGIN{IGNORECASE=1} /this/' log.txt
---------------------------------------------
2 this is a test
This's a test

Shell


6 模式取反
$ awk '$2 !~ /th/ {print $2,$4}' log.txt
---------------------------------------------
Are like
a
There orange,apple,mongo
$ awk '!/th/ {print $2,$4}' log.txt
---------------------------------------------
Are like
a
There orange,apple,mongo

Shell


7 awk脚本

关于awk脚本,我们需要注意两个关键词BEGIN和END。

  • BEGIN{ 这里面放的是执行前的语句 }
  • END {这里面放的是处理完所有的行后要执行的语句 }
  • {这里面放的是处理每一行时要执行的语句}

假设有这么一个文件(学生成绩表):

$ cat score.txt
Marry   2143 78 84 77
Jack    2321 66 78 45
Tom     2122 48 77 71
Mike    2537 87 97 95
Bob     2415 40 57 62

Shell

我们的awk脚本如下:

$ cat cal.awk
#!/bin/awk -f
#运行前
BEGIN {
    math = 0
    english = 0
    computer = 0
 
    printf "NAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL\n"
    printf "---------------------------------------------\n"
}
#运行中
{
    math+=$3
    english+=$4
    computer+=$5
    printf "%-6s %-6s %4d %8d %8d %8d\n", $1, $2, $3,$4,$5, $3+$4+$5
}
#运行后
END {
    printf "---------------------------------------------\n"
    printf "  TOTAL:%10d %8d %8d \n", math, english, computer
    printf "AVERAGE:%10.2f %8.2f %8.2f\n", math/NR, english/NR, computer/NR
}

Shell

我们来看一下执行结果:

$ awk -f cal.awk score.txt
NAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL
---------------------------------------------
Marry  2143     78       84       77      239
Jack   2321     66       78       45      189
Tom    2122     48       77       71      196
Mike   2537     87       97       95      279
Bob    2415     40       57       62      159
---------------------------------------------
  TOTAL:       319      393      350
AVERAGE:     63.80    78.60    70.00

Shell


8 另外一些实例

AWK的hello world程序为:

BEGIN { print "Hello, world!" }

Shell

计算文件大小

$ ls -l *.txt | awk '{sum+=$6} END {print sum}'
--------------------------------------------------
666581

Shell

从文件中找出长度大于80的行

awk 'length>80' log.txt

Shell

打印九九乘法表

seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'

Shell

更多内容:

  • AWK 工作原理

  • AWK 数组

  • AWK 条件语句与循环

  • AWK 用户自定义函数

  • AWK 内置函数

  • 8 个有力的 Awk 内建变量

  • AWK 官方手册

Linux 命令大全

(51) Linux- read 命令

Linux read 命令
Linux 命令大全

Linux 命令大全

(52) Linux- updatedb 命令

Linux updatedb 命令
Linux 命令大全

Linux 命令大全

(53) Linux- col 命令

Linux col命令
Linux 命令大全

Linux 命令大全

(54) Linux- colrm 命令

Linux colrm命令
Linux 命令大全

Linux 命令大全

(55) Linux- comm 命令

Linux comm命令
Linux 命令大全

Linux 命令大全

(56) Linux- csplit 命令

Linux csplit命令
Linux 命令大全

Linux 命令大全

(57) Linux- ed 命令

Linux ed命令
Linux 命令大全

Linux 命令大全

(58) Linux- egrep 命令

Linux egrep命令
Linux 命令大全

Linux 命令大全

(59) Linux- ex 命令

Linux ex命令
Linux 命令大全

Linux 命令大全

(60) Linux- fgrep 命令

Linux fgrep命令
Linux 命令大全

Linux 命令大全

(61) Linux- fmt 命令

Linux fmt命令
Linux 命令大全

Linux 命令大全

(62) Linux- fold 命令

Linux fold命令
Linux 命令大全

Linux 命令大全

(63) Linux- grep 命令

Linux grep 命令
Linux 命令大全

Linux 命令大全

(64) Linux- ispell 命令

Linux ispell命令
Linux 命令大全

Linux 命令大全

(65) Linux- jed 命令

Linux jed命令
Linux 命令大全

Linux 命令大全

(66) Linux- joe 命令

Linux joe命令
Linux 命令大全

Linux 命令大全

(67) Linux- join 命令

Linux join命令
Linux 命令大全

Linux 命令大全

(68) Linux- look 命令

Linux look命令
Linux 命令大全

Linux 命令大全

(69) Linux- mtype 命令

Linux mtype命令
Linux 命令大全

Linux 命令大全

(70) Linux- pico 命令

Linux pico命令
Linux 命令大全

Linux 命令大全

(71) Linux- rgrep 命令

Linux rgrep命令
Linux 命令大全

Linux 命令大全

(72) Linux- sed 命令

Linux sed 命令
Linux 命令大全

Linux 命令大全

(73) Linux- sort 命令

Linux sort命令
Linux 命令大全

Linux 命令大全

(74) Linux- spell 命令

Linux spell命令
Linux 命令大全

Linux 命令大全

(75) Linux- tr 命令

Linux tr命令
Linux 命令大全

Linux 命令大全

(76) Linux- expr 命令

Linux expr命令
Linux 命令大全

Linux 命令大全

(77) Linux- uniq 命令

Linux uniq 命令
Linux 命令大全

Linux 命令大全

(78) Linux- wc 命令

Linux wc命令
Linux 命令大全

Linux 命令大全

(79) Linux- let 命令

Linux let 命令
Linux 命令大全

Linux 命令大全

(80) Linux- lprm 命令

Linux lprm命令
Linux 命令大全

Linux 命令大全

(81) Linux- lpr 命令

Linux lpr命令
Linux 命令大全

Linux 命令大全

(82) Linux- lpq 命令

Linux lpq命令
Linux 命令大全

Linux 命令大全

(83) Linux- lpd 命令

Linux lpd命令
Linux 命令大全

Linux 命令大全

(84) Linux- bye 命令

Linux bye命令
Linux 命令大全

Linux 命令大全

(85) Linux- ftp 命令

Linux ftp命令
Linux 命令大全

Linux 命令大全

(86) Linux- uuto 命令

Linux uuto命令
Linux 命令大全

Linux 命令大全

(87) Linux- uupick 命令

Linux uupick命令
Linux 命令大全

Linux 命令大全

(88) Linux- uucp 命令

Linux uucp命令
Linux 命令大全

Linux 命令大全

(89) Linux- uucico 命令

Linux uucico命令
Linux 命令大全

Linux 命令大全

(90) Linux- tftp 命令

Linux tftp命令
Linux 命令大全

Linux 命令大全

(91) Linux- ncftp 命令

Linux ncftp命令
Linux 命令大全

Linux 命令大全

(92) Linux- ftpshut 命令

Linux ftpshut命令
Linux 命令大全

Linux 命令大全

(93) Linux- ftpwho 命令

Linux ftpwho命令
Linux 命令大全

Linux 命令大全

(94) Linux- ftpcount 命令

Linux ftpcount命令
Linux 命令大全

Linux 命令大全

(95) Linux- cd 命令

Linux cd命令
Linux 命令大全

Linux 命令大全

(96) Linux- df 命令

Linux df命令
Linux 命令大全

Linux 命令大全

(97) Linux- dirs 命令

Linux dirs命令
Linux 命令大全

Linux 命令大全

(98) Linux- du 命令

Linux du命令
Linux 命令大全

Linux 命令大全

(99) Linux- edquota 命令

Linux edquota命令
Linux 命令大全

Linux 命令大全

(100) Linux- eject 命令

Linux eject命令
Linux 命令大全

Linux 命令大全

(101) Linux- mcd 命令

Linux mcd命令
Linux 命令大全

Linux 命令大全

(102) Linux- mdeltree 命令

Linux mdeltree命令
Linux 命令大全

Linux 命令大全

(103) Linux- mdu 命令

Linux mdu命令
Linux 命令大全

Linux 命令大全

(104) Linux- mkdir 命令

Linux mkdir命令
Linux 命令大全

Linux 命令大全

(105) Linux- mlabel 命令

Linux mlabel命令
Linux 命令大全

Linux 命令大全

(106) Linux- mmd 命令

Linux mmd命令
Linux 命令大全

Linux 命令大全

(107) Linux- mrd 命令

Linux mrd命令
Linux 命令大全

Linux 命令大全

(108) Linux- mzip 命令

Linux mzip命令
Linux 命令大全

Linux 命令大全

(109) Linux- pwd 命令

Linux pwd命令
Linux 命令大全

Linux 命令大全

(110) Linux- quota 命令

Linux quota命令
Linux 命令大全

Linux 命令大全

(111) Linux- mount 命令

Linux mount命令
Linux 命令大全

Linux 命令大全

(112) Linux- mmount 命令

Linux mmount命令
Linux 命令大全

Linux 命令大全

(113) Linux- rmdir 命令

Linux rmdir命令
Linux 命令大全

Linux 命令大全

(114) Linux- rmt 命令

Linux rmt命令
Linux 命令大全

Linux 命令大全

(115) Linux- stat 命令

Linux stat命令
Linux 命令大全

Linux 命令大全

(116) Linux- tree 命令

Linux tree命令
Linux 命令大全

Linux 命令大全

(117) Linux- umount 命令

Linux umount命令
Linux 命令大全

Linux 命令大全

(118) Linux- ls 命令

Linux ls命令
Linux 命令大全

Linux 命令大全

(119) Linux- quotacheck 命令

Linux quotacheck命令
Linux 命令大全

Linux 命令大全

(120) Linux- quotaoff 命令

Linux quotaoff命令
Linux 命令大全

Linux 命令大全

(121) Linux- lndir 命令

Linux lndir命令
Linux 命令大全

Linux 命令大全

(122) Linux- repquota 命令

Linux repquota命令
Linux 命令大全

Linux 命令大全

(123) Linux- quotaon 命令

Linux quotaon命令
Linux 命令大全

Linux 命令大全

(124) Linux- badblocks 命令

Linux badblocks命令
Linux 命令大全

Linux 命令大全

(125) Linux- cfdisk 命令

Linux cfdisk命令
Linux 命令大全

Linux 命令大全

(126) Linux- dd 命令

Linux dd命令
Linux 命令大全

Linux 命令大全

(127) Linux- e2fsck 命令

Linux e2fsck命令
Linux 命令大全

Linux 命令大全

(128) Linux- ext2ed 命令

Linux ext2ed命令
Linux 命令大全

Linux 命令大全

(129) Linux- fsck 命令

Linux fsck命令
Linux 命令大全

Linux 命令大全

(130) Linux- fsck.minix 命令

Linux fsck.minix命令
Linux 命令大全

Linux 命令大全

(131) Linux- fsconf 命令

Linux fsconf命令
Linux 命令大全

Linux 命令大全

(132) Linux- fdformat 命令

Linux fdformat命令
Linux 命令大全

Linux 命令大全

(133) Linux- hdparm 命令

Linux hdparm命令
Linux 命令大全

Linux 命令大全

(134) Linux- mformat 命令

Linux mformat命令
Linux 命令大全

Linux 命令大全

(135) Linux- mkbootdisk 命令

Linux mkbootdisk命令
Linux 命令大全

Linux 命令大全

(136) Linux- mkdosfs 命令

Linux mkdosfs命令
Linux 命令大全

Linux 命令大全

(137) Linux- mke2fs 命令

Linux mke2fs命令
Linux 命令大全

Linux 命令大全

(138) Linux- mkfs.ext2 命令

Linux mkfs.ext2命令
Linux 命令大全

Linux 命令大全

(139) Linux- mkfs.msdos 命令

Linux mkfs.msdos命令
Linux 命令大全

Linux 命令大全

(140) Linux- mkinitrd 命令

Linux mkinitrd命令
Linux 命令大全

Linux 命令大全

(141) Linux- mkisofs 命令

Linux mkisofs命令
Linux 命令大全

Linux 命令大全

(142) Linux- mkswap 命令

Linux mkswap命令
Linux 命令大全

Linux 命令大全

(143) Linux- mpartition 命令

Linux mpartition命令
Linux 命令大全

Linux 命令大全

(144) Linux- swapon 命令

Linux swapon命令
Linux 命令大全

Linux 命令大全

(145) Linux- symlinks 命令

Linux symlinks命令
Linux 命令大全

Linux 命令大全

(146) Linux- sync 命令

Linux sync命令
Linux 命令大全

Linux 命令大全

(147) Linux- mbadblocks 命令

Linux mbadblocks命令
Linux 命令大全

Linux 命令大全

(148) Linux- mkfs.minix 命令

Linux mkfs.minix命令
Linux 命令大全

Linux 命令大全

(149) Linux- fsck.ext2 命令

Linux fsck.ext2命令
Linux 命令大全

Linux 命令大全

(150) Linux- fdisk 命令

Linux fdisk命令
Linux 命令大全

Linux 命令大全

(151) Linux- losetup 命令

Linux losetup命令
Linux 命令大全

Linux 命令大全

(152) Linux- mkfs 命令

Linux mkfs命令
Linux 命令大全

Linux 命令大全

(153) Linux- sfdisk 命令

Linux sfdisk命令
Linux 命令大全

Linux 命令大全

(154) Linux- swapoff 命令

Linux swapoff命令
Linux 命令大全

Linux 命令大全

(155) Linux- apachectl 命令

Linux apachectl命令
Linux 命令大全

Linux 命令大全

(156) Linux- arpwatch 命令

Linux arpwatch命令
Linux 命令大全

Linux 命令大全

(157) Linux- dip 命令

Linux dip命令
Linux 命令大全

Linux 命令大全

(158) Linux- getty 命令

Linux getty命令
Linux 命令大全

Linux 命令大全

(159) Linux- mingetty 命令

Linux mingetty命令
Linux 命令大全

Linux 命令大全

(160) Linux- uux 命令

Linux uux命令
Linux 命令大全

Linux 命令大全

(161) Linux- telnet 命令

Linux telnet命令
Linux 命令大全

Linux 命令大全

(162) Linux- uulog 命令

Linux uulog命令
Linux 命令大全

Linux 命令大全

(163) Linux- uustat 命令

Linux uustat命令
Linux 命令大全

Linux 命令大全

(164) Linux- ppp-off 命令

Linux ppp-off命令
Linux 命令大全

Linux 命令大全

(165) Linux- netconfig 命令

Linux netconfig命令
Linux 命令大全

Linux 命令大全

(166) Linux- nc 命令

Linux nc命令
Linux 命令大全

Linux 命令大全

(167) Linux- httpd 命令

Linux httpd命令
Linux 命令大全

Linux 命令大全

(168) Linux- ifconfig 命令

Linux ifconfig命令
Linux 命令大全

Linux 命令大全

(169) Linux- minicom 命令

Linux minicom命令
Linux 命令大全

Linux 命令大全

(170) Linux- mesg 命令

Linux mesg命令
Linux 命令大全

Linux 命令大全

(171) Linux- dnsconf 命令

Linux dnsconf命令
Linux 命令大全

Linux 命令大全

(172) Linux- wall 命令

Linux wall命令
Linux 命令大全

Linux 命令大全

(173) Linux- netstat 命令

Linux netstat命令
Linux 命令大全

Linux 命令大全

(174) Linux- ping 命令

Linux ping命令
Linux 命令大全

Linux 命令大全

(175) Linux- pppstats 命令

Linux pppstats命令
Linux 命令大全

Linux 命令大全

(176) Linux- samba 命令

Linux samba命令
Linux 命令大全

Linux 命令大全

(177) Linux- setserial 命令

Linux setserial命令
Linux 命令大全

Linux 命令大全

(178) Linux- talk 命令

Linux talk命令
Linux 命令大全

Linux 命令大全

(179) Linux- traceroute 命令

Linux traceroute命令
Linux 命令大全

Linux 命令大全

(180) Linux- tty 命令

Linux tty命令
Linux 命令大全

Linux 命令大全

(181) Linux- newaliases 命令

Linux newaliases命令
Linux 命令大全

Linux 命令大全

(182) Linux- uuname 命令

Linux uuname命令
Linux 命令大全

Linux 命令大全

(183) Linux- netconf 命令

Linux netconf命令
Linux 命令大全

Linux 命令大全

(184) Linux- write 命令

Linux write命令
Linux 命令大全

Linux 命令大全

(185) Linux- statserial 命令

Linux statserial命令
Linux 命令大全

Linux 命令大全

(186) Linux- efax 命令

Linux efax命令
Linux 命令大全

Linux 命令大全

(187) Linux- pppsetup 命令

Linux pppsetup命令
Linux 命令大全

Linux 命令大全

(188) Linux- tcpdump 命令

Linux tcpdump命令
Linux 命令大全

Linux 命令大全

(189) Linux- ytalk 命令

Linux ytalk命令
Linux 命令大全

Linux 命令大全

(190) Linux- cu 命令

Linux cu命令
Linux 命令大全

Linux 命令大全

(191) Linux- smbd 命令

Linux smbd命令
Linux 命令大全

Linux 命令大全

(192) Linux- testparm 命令

Linux testparm命令
Linux 命令大全

Linux 命令大全

(193) Linux- smbclient 命令

Linux smbclient命令
Linux 命令大全

Linux 命令大全

(194) Linux- shapecfg 命令

Linux shapecfg命令
Linux 命令大全

Linux 命令大全

(195) Linux- adduser 命令

Linux adduser命令
Linux 命令大全

Linux 命令大全

(196) Linux- chfn 命令

Linux chfn命令
Linux 命令大全

Linux 命令大全

(197) Linux- useradd 命令

Linux useradd命令
Linux 命令大全

Linux 命令大全

(198) Linux- date 命令

Linux date命令
Linux 命令大全

Linux 命令大全

(199) Linux- exit 命令

Linux exit命令
Linux 命令大全

Linux 命令大全

(200) Linux- finger 命令

Linux finger命令
Linux 命令大全

Linux 命令大全

(201) Linux- fwhios 命令

Linux fwhios命令
Linux 命令大全

Linux 命令大全

(202) Linux- sleep 命令

Linux sleep命令
Linux 命令大全

Linux 命令大全

(203) Linux- suspend 命令

Linux suspend命令
Linux 命令大全

Linux 命令大全

(204) Linux- groupdel 命令

Linux groupdel命令
Linux 命令大全

Linux 命令大全

(205) Linux- groupmod 命令

Linux groupmod命令
Linux 命令大全

Linux 命令大全

(206) Linux- halt 命令

Linux halt命令
Linux 命令大全

Linux 命令大全

(207) Linux- kill 命令

Linux kill命令
Linux 命令大全

Linux 命令大全

(208) Linux- last 命令

Linux last命令
Linux 命令大全

Linux 命令大全

(209) Linux- lastb 命令

Linux lastb命令
Linux 命令大全

Linux 命令大全

(210) Linux- login 命令

Linux login命令
Linux 命令大全

Linux 命令大全

(211) Linux- logname 命令

Linux logname命令
Linux 命令大全

Linux 命令大全

(212) Linux- logout 命令

Linux logout命令
Linux 命令大全

Linux 命令大全

(213) Linux- ps 命令

Linux ps命令
Linux 命令大全

Linux 命令大全

(214) Linux- nice 命令

Linux nice命令
Linux 命令大全

Linux 命令大全

(215) Linux- procinfo 命令

Linux procinfo命令
Linux 命令大全

Linux 命令大全

(216) Linux- top 命令

Linux top命令
Linux 命令大全

Linux 命令大全

(217) Linux- pstree 命令

Linux pstree命令
Linux 命令大全

Linux 命令大全

(218) Linux- reboot 命令

Linux reboot命令
Linux 命令大全

Linux 命令大全

(219) Linux- rlogin 命令

Linux rlogin命令
Linux 命令大全

Linux 命令大全

(220) Linux- rsh 命令

Linux rsh命令
Linux 命令大全

Linux 命令大全

(221) Linux- sliplogin 命令

Linux sliplogin命令
Linux 命令大全

Linux 命令大全

(222) Linux- screen 命令

Linux screen命令
Linux 命令大全

Linux 命令大全

(223) Linux- shutdown 命令

Linux shutdown命令
Linux 命令大全

Linux 命令大全

(224) Linux- rwho 命令

Linux rwho命令
Linux 命令大全

Linux 命令大全

(225) Linux- sudo 命令

Linux sudo命令
Linux 命令大全

Linux 命令大全

(226) Linux- gitps 命令

Linux gitps命令
Linux 命令大全

Linux 命令大全

(227) Linux- swatch 命令

Linux swatch命令
Linux 命令大全

Linux 命令大全

(228) Linux- tload 命令

Linux tload命令
Linux 命令大全

Linux 命令大全

(229) Linux- logrotate 命令

Linux logrotate命令
Linux 命令大全

Linux 命令大全

(230) Linux- uname 命令

Linux uname命令
Linux 命令大全

Linux 命令大全

(231) Linux- chsh 命令

Linux chsh命令
Linux 命令大全

Linux 命令大全

(232) Linux- userconf 命令

Linux userconf命令
Linux 命令大全

Linux 命令大全

(233) Linux- userdel 命令

Linux userdel命令
Linux 命令大全

Linux 命令大全

(234) Linux- usermod 命令

Linux usermod命令
Linux 命令大全

Linux 命令大全

(235) Linux- vlock 命令

Linux vlock命令
Linux 命令大全

Linux 命令大全

(236) Linux- who 命令

Linux who命令
Linux 命令大全

Linux 命令大全

(237) Linux- whoami 命令

Linux whoami命令
Linux 命令大全

Linux 命令大全

(238) Linux- whois 命令

Linux whois命令
Linux 命令大全

Linux 命令大全

(239) Linux- newgrp 命令

Linux newgrp命令
Linux 命令大全

Linux 命令大全

(240) Linux- renice 命令

Linux renice命令
Linux 命令大全

Linux 命令大全

(241) Linux- su 命令

Linux su命令
Linux 命令大全

Linux 命令大全

(242) Linux- skill 命令

Linux skill命令
Linux 命令大全

Linux 命令大全

(243) Linux- w 命令

Linux w命令
Linux 命令大全

Linux 命令大全

(244) Linux- id 命令

Linux id命令
Linux 命令大全

Linux 命令大全

(245) Linux- groupadd 命令

Linux groupadd 命令
Linux 命令大全

Linux 命令大全

(246) Linux- free 命令

Linux free命令
Linux 命令大全

Linux 命令大全

(247) Linux- reset 命令

Linux reset命令
Linux 命令大全

Linux 命令大全

(248) Linux- clear 命令

Linux clear命令
Linux 命令大全

Linux 命令大全

(249) Linux- alias 命令

Linux alias命令
Linux 命令大全

Linux 命令大全

(250) Linux- dircolors 命令

Linux dircolors命令
Linux 命令大全

Linux 命令大全

(251) Linux- aumix 命令

Linux aumix命令
Linux 命令大全

Linux 命令大全

(252) Linux- bind 命令

Linux bind命令
Linux 命令大全

Linux 命令大全

(253) Linux- chroot 命令

Linux chroot命令
Linux 命令大全

Linux 命令大全

(254) Linux- clock 命令

Linux clock命令
Linux 命令大全

Linux 命令大全

(255) Linux- crontab 命令

Linux crontab 命令
Linux 命令大全

Linux 命令大全

(256) Linux- declare 命令

Linux declare命令
Linux 命令大全

Linux 命令大全

(257) Linux- depmod 命令

Linux depmod命令
Linux 命令大全

Linux 命令大全

(258) Linux- dmesg 命令

Linux dmesg命令
Linux 命令大全

Linux 命令大全

(259) Linux- enable 命令

Linux enable命令
Linux 命令大全

Linux 命令大全

(260) Linux- eval 命令

Linux eval命令
Linux 命令大全

Linux 命令大全

(261) Linux- export 命令

Linux export命令
Linux 命令大全

Linux 命令大全

(262) Linux- pwunconv 命令

Linux pwunconv命令
Linux 命令大全

Linux 命令大全

(263) Linux- grpconv 命令

Linux grpconv命令
Linux 命令大全

Linux 命令大全

(264) Linux- rpm 命令

Linux rpm命令
Linux 命令大全

Linux 命令大全

(265) Linux- insmod 命令

Linux insmod命令
Linux 命令大全

Linux 命令大全

(266) Linux- kbdconfig 命令

Linux kbdconfig命令
Linux 命令大全

Linux 命令大全

(267) Linux- lilo 命令

Linux lilo命令
Linux 命令大全

Linux 命令大全

(268) Linux- liloconfig 命令

Linux liloconfig命令
Linux 命令大全

Linux 命令大全

(269) Linux- lsmod 命令

Linux lsmod命令
Linux 命令大全

Linux 命令大全

(270) Linux- minfo 命令

Linux minfo命令
Linux 命令大全

Linux 命令大全

(271) Linux- set 命令

Linux set命令
Linux 命令大全

Linux 命令大全

(272) Linux- modprobe 命令

Linux modprobe命令
Linux 命令大全

Linux 命令大全

(273) Linux- ntsysv 命令

Linux ntsysv命令
Linux 命令大全

Linux 命令大全

(274) Linux- mouseconfig 命令

Linux mouseconfig命令
Linux 命令大全

Linux 命令大全

(275) Linux- passwd 命令

Linux passwd命令
Linux 命令大全

Linux 命令大全

(276) Linux- pwconv 命令

Linux pwconv命令
Linux 命令大全

Linux 命令大全

(277) Linux- rdate 命令

Linux rdate命令
Linux 命令大全

Linux 命令大全

(278) Linux- resize 命令

Linux resize命令
Linux 命令大全

Linux 命令大全

(279) Linux- rmmod 命令

Linux rmmod命令
Linux 命令大全

Linux 命令大全

(280) Linux- grpunconv 命令

Linux grpunconv命令
Linux 命令大全

Linux 命令大全

(281) Linux- modinfo 命令

Linux modinfo命令
Linux 命令大全

Linux 命令大全

(282) Linux- time 命令

Linux time命令
Linux 命令大全

Linux 命令大全

(283) Linux- setup 命令

Linux setup命令
Linux 命令大全

Linux 命令大全

(284) Linux- sndconfig 命令

Linux sndconfig命令
Linux 命令大全

Linux 命令大全

(285) Linux- setenv 命令

Linux setenv命令
Linux 命令大全

Linux 命令大全

(286) Linux- setconsole 命令

Linux setconsole命令
Linux 命令大全

Linux 命令大全

(287) Linux- timeconfig 命令

Linux timeconfig命令
Linux 命令大全

Linux 命令大全

(288) Linux- ulimit 命令

Linux ulimit命令
Linux 命令大全

Linux 命令大全

(289) Linux- unset 命令

Linux unset命令
Linux 命令大全

Linux 命令大全

(290) Linux- chkconfig 命令

Linux chkconfig命令
Linux 命令大全

Linux 命令大全

(291) Linux- apmd 命令

Linux apmd命令
Linux 命令大全

Linux 命令大全

(292) Linux- hwclock 命令

Linux hwclock命令
Linux 命令大全

Linux 命令大全

(293) Linux- mkkickstart 命令

Linux mkkickstart命令
Linux 命令大全

Linux 命令大全

(294) Linux- fbset 命令

Linux fbset命令
Linux 命令大全

Linux 命令大全

(295) Linux- unalias 命令

Linux unalias命令
Linux 命令大全

Linux 命令大全

(296) Linux- SVGATextMode 命令

Linux SVGATextMode命令
Linux 命令大全

Linux 命令大全

(297) Linux- gpasswd 命令

Linux gpasswd 命令
Linux 命令大全

Linux 命令大全

(298) Linux- ar 命令

Linux ar命令
Linux 命令大全

Linux 命令大全

(299) Linux- bunzip2 命令

Linux bunzip2命令
Linux 命令大全

Linux 命令大全

(300) Linux- bzip2 命令

Linux bzip2命令
Linux 命令大全

Linux 命令大全

(301) Linux- bzip2recover 命令

Linux bzip2recover命令
Linux 命令大全

Linux 命令大全

(302) Linux- gunzip 命令

Linux gunzip命令
Linux 命令大全

Linux 命令大全

(303) Linux- unarj 命令

Linux unarj命令
Linux 命令大全

Linux 命令大全

(304) Linux- compress 命令

Linux compress命令
Linux 命令大全

Linux 命令大全

(305) Linux- cpio 命令

Linux cpio命令
Linux 命令大全

Linux 命令大全

(306) Linux- dump 命令

Linux dump命令
Linux 命令大全

Linux 命令大全

(307) Linux- uuencode 命令

Linux uuencode命令
Linux 命令大全

Linux 命令大全

(308) Linux- gzexe 命令

Linux gzexe命令
Linux 命令大全

Linux 命令大全

(309) Linux- gzip 命令

Linux gzip命令
Linux 命令大全

Linux 命令大全

(310) Linux- lha 命令

Linux lha命令
Linux 命令大全

Linux 命令大全

(311) Linux- restore 命令

Linux restore命令
Linux 命令大全

Linux 命令大全

(312) Linux- tar 命令

Linux tar命令
Linux 命令大全

Linux 命令大全

(313) Linux- uudecode 命令

Linux uudecode命令
Linux 命令大全

Linux 命令大全

(314) Linux- unzip 命令

Linux unzip命令
Linux 命令大全

Linux 命令大全

(315) Linux- zip 命令

Linux zip命令
Linux 命令大全

Linux 命令大全

(316) Linux- zipinfo 命令

Linux zipinfo命令
Linux 命令大全

Linux 命令大全

(317) Linux- setleds 命令

Linux setleds命令
Linux 命令大全

Linux 命令大全

(318) Linux- loadkeys 命令

Linux loadkeys命令
Linux 命令大全

Linux 命令大全

(319) Linux- rdev 命令

Linux rdev命令
Linux 命令大全

Linux 命令大全

(320) Linux- dumpkeys 命令

Linux dumpkeys命令
Linux 命令大全

Linux 命令大全

(321) Linux- MAKEDEV 命令

Linux MAKEDEV命令
Linux 命令大全

Linux 命令大全

(322) Linux- poweroff 命令

Linux poweroff命令
Linux 命令大全

Linux 命令大全

(323) Linux- bc 命令

Linux bc命令
Linux 命令大全

Linux 命令大全

(324) Linux- tail 命令

Linux tail命令
Linux 命令大全

Linux 命令大全

(325) Linux- xargs 命令

Linux xargs命令
Linux 命令大全

Linux 命令大全

(326) Linux- 常用命令 全拼

Linux 常用命令命令
Linux 命令大全

Linux 命令大全

(327) AWK 工作原理

Linux 常用命令命令
Linux 命令大全

Linux 命令大全

(328) AWK 数组

Linux 常用命令命令
Linux 命令大全

Linux 命令大全

(329) AWK 条件语句与循环

Linux 常用命令命令
Linux 命令大全

Linux 命令大全

(330) AWK 用户自定义函数

Linux 常用命令命令
Linux 命令大全

Linux 命令大全

(331) AWK 内置函数

Linux 常用命令命令
Linux 命令大全

Linux 命令大全

(332) 8 个有力的 Awk 内建变量

Linux 常用命令命令
Linux 命令大全

Linux 命令大全

更多推荐

Linux 教程: (Linux基础+命令大全)