Linux-Befehlsliste

Freigeben: 2023-08-02 15:55:12
nach vorne
1111 Leute haben es durchsucht

Linux-Befehlsliste

Hinweis: Um das Lesen des Codes zu erleichtern, wurde das #, das den Administratormodus angibt, aus dem Artikelcodeblock entfernt. Dies ist kein Fehler. Machen Sie keinen Fehler! ! 1. Grundlegende Bedienbefehle Laufendes Programm stoppen

Strg+D-Taste – entspricht Beenden, Beenden

Strg+L-Taste – Bildschirm löschen

1.1 Herunterfahren und neu starten

1. Der Befehl zum Herunterfahren: Shutdown

wird hauptsächlich auf Servern im Linux-Bereich verwendet, und Herunterfahrvorgänge kommen selten vor. Schließlich gibt es kein Ende für die Ausführung eines Dienstes auf dem Server, es sei denn, es liegen besondere Umstände vor, er wird als letztes Mittel heruntergefahren.

Der korrekte Herunterfahrvorgang ist: sync > reboot > halt

Zum Beispiel können Sie den folgenden Befehl zum Herunterfahren ausführen:

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 nowhalt 关闭系统,等同于shutdown –h now 和 poweroff
Nach dem Login kopieren

Das Folgende ist ein einfaches Beispiel.


Linux-Befehlsliste

Befehl zum Abbrechen des geplanten Herunterfahrens: Shutdown -c

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

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

2.重启命令:reboot

Linux-Befehlsliste

1.2 帮助命令

–-help命令

shutdown --help:ifconfig --help:查看网卡信息
Nach dem Login kopieren

man命令(命令说明书)

man shutdown注意:man shutdown 打开命令说明书之后,使用按键q退出
Nach dem Login kopieren

二、目录操作命令

我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。

其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。

首先我们需要先知道什么是绝对路径与相对路径。

  • 绝对路径:路径的写法,由根目录 / 写起,例如:/usr/share/doc 这个目录。

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

2.1 目录切换 cd

命令:cd 目录

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

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

2.2 目录查看 ls [-al]

命令:ls [-al]

语法:

ls [-aAdfFhilnrRSt] 目录名称ls [--color={never,auto,always}] 目录名称ls [--full-time] 目录名称
Nach dem Login kopieren

ls 查看当前目录下的所有目录和文件ls -a 查看当前目录下的所有目录和文件(包括隐藏的文件)ls -l 或 ll 列表查看当前目录下的所有目录和文件(列表查看,显示更多信息)ls /dir 查看指定目录下的所有目录和文件 如:ls /usr

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

ls -al ~
Nach dem Login kopieren

2.3 目录操作【增,删,改,查】

2.3.1 创建目录【增】 mkdir

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

语法:

mkdir [-mp] 目录名称
Nach dem Login kopieren

选项与参数:

  • -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~

  • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

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

cd /tmp[root@www tmp] mkdir test    <==创建一名为 test 的新目录[root@www tmp] mkdir test1/test2/test3/test4mkdir: cannot create directory `test1/test2/test3/test4&#39;: No such file or directory       <== 没办法直接创建此目录啊![root@www tmp] mkdir -p test1/test2/test3/test4
Nach dem Login kopieren

加了这个 -p 的选项,可以自行帮你创建多层目录!

实例:创建权限为 rwx–x—x 的目录。

[root@www tmp] mkdir -m 711 test2[root@www tmp] ls -ldrwxr-xr-x  3 root  root 4096 Jul 18 12:50 testdrwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
Nach dem Login kopieren

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

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

2.3.2 删除目录或文件【删】rm

 rm [-fir] 文件或目录
Nach dem Login kopieren
Nach dem Login kopieren

选项与参数:

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;

  • -i :互动模式,在删除前会询问使用者是否动作

  • -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

删除文件:rm 文件 删除当前目录下的文件rm -f 文件 删除当前目录的的文件(不询问)

删除目录:rm -r aaa 递归删除当前目录下的aaa目录rm -rf aaa 递归删除当前目录下的aaa目录(不询问)

全部删除:rm -rf 将当前目录下的所有目录和文件全部删除rm -rf / 【慎用!慎用!慎用!】将根目录下的所有文件全部删除

注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了方便大家的记忆,无论删除任何目录或文件,都直接使用 rm -rf 目录/文件/压缩包

rmdir (删除空的目录)

语法:

 rmdir [-p] 目录名称
Nach dem Login kopieren

选项与参数:

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

删除 runoob 目录

[root@www tmp] rmdir runoob
Nach dem Login kopieren

将 mkdir 实例中创建的目录(/tmp 底下)删除掉!

[root@www tmp] ls -l   <==看看有多少目录存在?drwxr-xr-x  3 root  root 4096 Jul 18 12:50 testdrwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1drwx--x--x  2 root  root 4096 Jul 18 12:54 test2[root@www tmp] rmdir test   <==可直接删除掉,没问题[root@www tmp] rmdir test1  <==因为尚有内容,所以无法删除!rmdir: `test1&#39;: 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
Nach dem Login kopieren

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

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

2.3.3 目录修改【改】mv 和 cp

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

语法:

[root@www ~] mv [-fiu] source destination[root@www ~] mv [options] source1 source2 source3 .... directory
Nach dem Login kopieren

选项与参数:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

  • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

cp (复制文件或目录)

cp 即拷贝文件和目录。

语法:

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

选项与参数:

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

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

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

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

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

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

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

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

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

一、重命名目录命令:mv 当前目录 新目录例如:mv aaa bbb 将目录aaa改为bbb注意:mv的语法不仅可以对目录进行重命名而且也可以对各种文件,压缩包等进行 重命名的操作

二、剪切目录命令:mv 目录名称 目录的新位置示例:将/usr/tmp目录下的aaa目录剪切到 /usr目录下面 mv /usr/tmp/aaa /usr注意:mv语法不仅可以对目录进行剪切操作,对文件和压缩包等都可执行剪切操作

三、拷贝目录命令:cp -r 目录名称 目录拷贝的目标位置 -r代表递归示例:将/usr/tmp目录下的aaa目录复制到 /usr目录下面 cp /usr/tmp/aaa /usr注意:cp命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r递归

2.3.4 搜索目录【查】find

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

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;
Nach dem Login kopieren

命令:find 目录 参数 文件名称

部分参数:

find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

-amin n : 在过去 n 分钟内被读取过

-anewer file : 比文件 file 更晚被读取过的文件

-atime n : 在过去n天内被读取过的文件

-cmin n : 在过去 n 分钟内被修改过

-cnewer file :比文件 file 更新的文件

-ctime n : 在过去n天内被修改过的文件

实例

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

find . -name "*.c"
Nach dem Login kopieren

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

find . -type f
Nach dem Login kopieren

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

find . -ctime -20
Nach dem Login kopieren

2.4 当前目录显示 pwd

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

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

[root@www ~] pwd [-P]
Nach dem Login kopieren

选项与参数:

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

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

[root@www ~] pwd/root   <== 显示出目录啦~
Nach dem Login kopieren

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

[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/maillrwxrwxrwx 1 root root 10 Sep  4 17:54 /var/mail -> spool/mail# 看到这里应该知道为啥了吧?因为 /var/mail 是连结档,连结到 /var/spool/mail # 所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!
Nach dem Login kopieren

三、文件操作命令

3.1 文件操作【增,删,改,查】

3.1.1 新建文件【增】touch

Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

ls -l 可以显示档案的时间记录。

语法

touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
Nach dem Login kopieren
  • 参数说明

  • a 改变档案的读取时间记录。

  • m 改变档案的修改时间记录。

  • c 假如目的档案不存在,不会建立新的档案。与 —no-create 的效果一样。

  • f 不使用,是为了与其他 unix 系统的相容性而保留。

  • r 使用参考档的时间记录,与 —file 的效果一样。

  • d 设定时间与日期,可以使用各种不同的格式。

  • t 设定档案的时间记录,格式与 date 指令相同。

  • –no-create 不会建立新档案。

  • –help 列出指令格式。

  • –version 列出版本讯息。

实例

使用指令”touch”修改文件”testfile”的时间属性为当前系统时间,输入如下命令:

$ touch testfile                #修改文件的时间属性
Nach dem Login kopieren

首先,使用ls命令查看testfile文件的属性,如下所示:

$ ls -l testfile                #查看文件的时间属性  #原来文件的修改时间为16:09  -rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile
Nach dem Login kopieren

执行指令”touch”修改文件属性以后,并再次查看该文件的时间属性,如下所示:

$ touch testfile                #修改文件时间属性为当前系统时间  $ ls -l testfile                #查看文件的时间属性  #修改后文件的时间属性为当前系统时间  -rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile
Nach dem Login kopieren

使用指令”touch”时,如果指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件”file”,输入如下命令:

$ touch file            #创建一个名为“file”的新的空白文件
Nach dem Login kopieren

3.1.2 删除文件 【删】 rm

rm (移除文件或目录)

语法:

 rm [-fir] 文件或目录
Nach dem Login kopieren
Nach dem Login kopieren

选项与参数:

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;

  • -i :互动模式,在删除前会询问使用者是否动作

  • -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

将创建的 bashrc 删除掉!

[root@www tmp]# rm -i bashrcrm: remove regular file `bashrc&#39;? y
Nach dem Login kopieren

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

3.1.3 修改文件【改】 vi或vim

先来个vim键盘图!

Linux-Befehlsliste

vi/vim 的使用

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

3.1.3.1 命令模式:

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

Tastatureingaben in diesem Zustand werden von Vim als Befehle statt als Eingabe von Zeichen erkannt. Wenn wir zu diesem Zeitpunkt beispielsweise i drücken, geben wir kein Zeichen ein. i wird als Befehl behandelt.

Im Folgenden sind einige häufig verwendete Befehle aufgeführt:

  • iWechseln Sie in den Eingabemodus, um Zeichen einzugeben.

  • x Löschen Sie das Zeichen an der aktuellen Cursorposition.

  • :Wechseln Sie in den Endzeilen-Befehlsmodus, um Befehle in der Endzeile einzugeben.

Wenn Sie Text bearbeiten möchten: Starten Sie Vim, rufen Sie den Befehlsmodus auf, drücken Sie i, um in den Eingabemodus zu wechseln.

Der Befehlsmodus verfügt nur über einige der grundlegendsten Befehle, Sie müssen sich also immer noch auf den Befehlsmodus in der unteren Zeile verlassen, um weitere Befehle einzugeben.

3.1.3.2 Eingabemodus

Drücken Sie i im Befehlsmodus, um in den Eingabemodus zu gelangen.

Im Eingabemodus können Sie folgende Tasten verwenden:

  • Character -Tasten und Umschaltkombination , geben Sie Zeichen ein, Eingeben Sie Taste, Zeilenfeed

  • back Space, Backpace -Taste, löschen Sie das Zeichen vor dem Cursor

  • del , Löschtaste, ein Zeichen nach dem Cursor löschen

  • Richtungstasten, Cursor im Text bewegen

  • HOME/

    ENDE
  • , Cursor an den Anfang/Ende der Zeile bewegen
  • Bild hoch /

    Bild runter
  • , Seite nach oben/unten blättern
  • Einfügen, Cursor in den Eingabe-/Ersetzungsmodus schalten, der Cursor wird zu einem vertikalen Balken/Unterstrich

  • ESC, Eingabemodus verlassen, in den Befehlsmodus wechseln

  • 3.1.3.4 Unterzeilen-BefehlsmodusDrücken Sie: (englischer Doppelpunkt) im Befehlsmodus, um in den Unterzeilen-Befehlsmodus zu gelangen.

  • Im unteren Zeilenbefehlsmodus können Sie Befehle mit einem oder mehreren Zeichen eingeben, und es stehen viele Befehle zur Verfügung.

Im unteren Zeilenbefehlsmodus lauten die grundlegenden Befehle (der Doppelpunkt wurde weggelassen):

q Beenden Sie das Programm

    w Speichern Sie die Datei

Drücken Sie die ESC-Taste, um den Endzeilen-Befehlsmodus jederzeit zu verlassen.

Einfach ausgedrückt können wir uns diese drei Modi als die folgenden Symbole vorstellen:

Linux-Befehlsliste

Datei öffnen

Befehl: vi Beispiel für einen Dateinamen: Öffnen Sie die aa.txt-Datei über aa im aktuellen Verzeichnis .txt oder vim aa.txt

Hinweis: Nachdem Sie die Datei mit dem vi-Editor geöffnet haben, kann sie nicht bearbeitet werden, da sie sich im Befehlsmodus befindet. Klicken Sie auf die Tastatur i/a/o, um in den Bearbeitungsmodus zu gelangen.

Dateien bearbeiten

Öffnen Sie die Datei mit dem vi-Editor und klicken Sie auf die Tasten: i, a oder o, um in den Bearbeitungsmodus zu gelangen.

i: Beginnen Sie mit dem Einfügen vor dem Zeichen, an dem sich der Cursor befindet: a: Beginnen Sie mit dem Einfügen nach dem Zeichen, an dem sich der Cursor befindet. o: Beginnen Sie mit dem Einfügen einer neuen Zeile unterhalb der Zeile, an der sich der Cursor befindet

Linux-Befehlsliste

Bearbeitung speichern oder abbrechen

Datei speichern:

Schritt 1: ESC Befehlszeilenmodus aufrufen Schritt 2: Bottom-Line-Modus aufrufen Schritt 3: wq Speichern und Bearbeitung beenden

Bearbeitung abbrechen:

Schritt 1: ESC, um den Befehlszeilenmodus aufzurufen. Schritt 2: Den Endzeilenmodus aufrufen. Schritt 3: q! Machen Sie diese Änderung rückgängig und beenden Sie die Bearbeitung die Datei:

cat zeigt den Dateiinhalt ab der ersten Zeile an

  • tac beginnt mit der Anzeige ab der letzten Zeile, Sie können sehen, dass tac rückwärts geschrieben ist!

  • nl Wenn angezeigt, geben Sie die Zeilennummer aus!

  • mehr Dateiinhalt Seite für Seite anzeigen

  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!

  • head 只看头几行

  • tail 只看尾巴几行

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

3.1.4.1 cat

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

语法:

cat [-AbEnTv]
Nach dem Login kopieren

选项与参数:

  • -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;

  • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!

  • -E :将结尾的断行字节 $ 显示出来;

  • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;

  • -T :将 [tab] 按键以 ^I 显示出来;

  • -v :列出一些看不出来的特殊字符

检看 /etc/issue 这个文件的内容:

[root@www ~] cat /etc/issueCentOS release 6.4 (Final)Kernel \r on an \m
Nach dem Login kopieren

3.1.3.2 tac

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

[root@www ~] tac /etc/issueKernel \r on an \mCentOS release 6.4 (Final)
Nach dem Login kopieren

3.1.3.3 nl

显示行号

语法:

nl [-bnw] 文件
Nach dem Login kopieren

选项与参数:

  • -b :指定行号指定的方式,主要有两种:-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);-b t :如果有空行,空的那一行不要列出行号(默认值);

  • -n :列出行号表示的方法,主要有三种:-n ln :行号在荧幕的最左方显示;-n rn :行号在自己栏位的最右方显示,且不加 0 ;-n rz :行号在自己栏位的最右方显示,且加 0 ;

  • -w :行号栏位的占用的位数。

实例一:用 nl 列出 /etc/issue 的内容

牛逼啊!接私活必备的 N 个开源项目!赶快收藏吧
Nach dem Login kopieren
[root@www ~] nl /etc/issue     1  CentOS release 6.4 (Final)     2  Kernel \r on an \m123
Nach dem Login kopieren

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

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

  • 空白键 (space):代表向下翻一页;

  • Enter :代表向下翻『一行』;

  • /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;

  • :f :立刻显示出档名以及目前显示的行数;

  • q :代表立刻离开 more ,不再显示该文件内容。

  • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

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

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

  • 空白键 :向下翻动一页;

  • [pagedown]:向下翻动一页;

  • [pageup] :向上翻动一页;

  • /字串 :向下搜寻『字串』的功能;

  • ?字串 :向上搜寻『字串』的功能;

  • n :重复前一个搜寻 (与 / 或 ? 有关!)

  • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)

  • q :离开 less 这个程序;

3.1.3.7 head

取出文件前面几行

语法:

head [-n number] 文件
Nach dem Login kopieren

选项与参数:

  • -n :后面接数字,代表显示几行的意思

[root@www ~] head /etc/man.config
Nach dem Login kopieren

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

[root@www ~] head -n 20 /etc/man.config
Nach dem Login kopieren

3.1.3.8 tail

取出文件后面几行

语法:

tail [-n number] 文件
Nach dem Login kopieren

选项与参数:

  • -n :后面接数字,代表显示几行的意思

  • -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

[root@www ~] tail /etc/man.config# 默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:[root@www ~] tail -n 20 /etc/man.config
Nach dem Login kopieren

3.2 权限修改

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

使用权限 : 所有使用者

语法

chmod [-cfvR] [--help] [--version] mode file...
Nach dem Login kopieren

参数说明

mode : 权限设定字串,格式如下 :

[ugoa...][[+-=][rwxX]...][,...]
Nach dem Login kopieren

其中:

  • u repräsentiert den Eigentümer der Datei, g repräsentiert die Person, die zur gleichen Gruppe wie der Eigentümer der Datei gehört, o repräsentiert andere Personen und a repräsentiert alle drei.

  • + bedeutet das Hinzufügen von Berechtigungen, - bedeutet das Aufheben von Berechtigungen, = bedeutet nur das Festlegen von Berechtigungen.

  • r bedeutet lesbar, w bedeutet beschreibbar, x bedeutet ausführbar, X bedeutet nur, wenn die Datei ein Unterverzeichnis ist oder die Datei als ausführbar festgelegt wurde.

Weitere Parameterbeschreibungen:

  • -c: Wenn die Dateiberechtigungen tatsächlich geändert wurden, wird die Änderungsaktion angezeigt.

  • -f: Wenn die Dateiberechtigungen nicht geändert werden können, wird die Änderungsaktion nicht angezeigt Fehlermeldung

  • -v: Zeigt die Details der Berechtigungsänderungen an

  • -R: Nehmen Sie die gleichen Berechtigungsänderungen für alle Dateien und Unterverzeichnisse im aktuellen Verzeichnis vor (d. h. ändern Sie sie einzeln rekursiv).

  • –Hilfe: Hilfsanweisungen anzeigen

  • –Version: Version anzeigen

Es gibt zwei Möglichkeiten, Berechtigungen festzulegen. Sie können Zahlen oder Symbole verwenden, um Berechtigungen zu ändern.

Dateiberechtigungen zum Ändern des Zahlentyps:

Linux-Befehlsliste

Dateiberechtigungen zum Ändern des Symboltyps:

Linux-Befehlsliste

4. Komprimierte Dateioperationen

Zu den häufig verwendeten Komprimierungs- und Dekomprimierungsbefehlen unter Linux gehören: tar, gzip, gunzip, bzip2, bunzip2, compress, uncompress, zip, unzip, rar, unrar usw.

4.1 Packen, Komprimieren und Dekomprimieren

Die gepackte Datei unter Linux ist .zip/.rar. Die komprimierte Datei unter Linux ist die gepackte und komprimierte Datei unter Linux: .tar.gz

Verpackte Dateien unter Linux enden im Allgemeinen mit .tar und Komprimierungsbefehle enden im Allgemeinen mit .gz. Unter normalen Umständen werden Packen und Komprimieren zusammen durchgeführt, und der Suffixname der gepackten und komprimierten Datei lautet im Allgemeinen .tar.gz.

4.1.1 tar

Der am häufigsten verwendete Paketbefehl ist tar. Das mit dem tar-Programm erstellte Paket wird oft als tar-Paket bezeichnet. Die Befehle für tar-Paketdateien enden normalerweise mit .tar. Nachdem Sie das TAR-Paket generiert haben, können Sie es mit anderen Programmen komprimieren. Lassen Sie uns also zunächst über die grundlegende Verwendung des TAR-Befehls sprechen.

Der Befehl tar verfügt über viele Optionen (Sie können ihn mit man tar anzeigen), es gibt jedoch nur einige häufig verwendete Optionen:

 tar -cf all.tar *.jpg
Nach dem Login kopieren

这条命令是将所有 .jpg 的文件打成一个名为 all.tar 的包。-c 是表示产生新的包,-f 指定包的文件名。

 tar -rf all.tar *.gif
Nach dem Login kopieren
Nach dem Login kopieren

这条命令是将所有 .gif 的文件增加到 all.tar 的包里面去,-r 是表示增加文件的意思。

 tar -uf all.tar logo.gif
Nach dem Login kopieren
Nach dem Login kopieren

这条命令是更新原来 tar 包 all.tar 中 logo.gif 文件,-u 是表示更新文件的意思。

 tar -tf all.tar
Nach dem Login kopieren
Nach dem Login kopieren

这条命令是列出 all.tar 包中所有文件,-t 是列出文件的意思。

 tar -xf all.tar
Nach dem Login kopieren
Nach dem Login kopieren

这条命令是解出 all.tar 包中所有文件,-x 是解开的意思。

以上就是 tar 的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压文件,tar 提供了一种特殊的功能。这就是 tar 可以在打包或解包的同时调用其它的压缩程序,比如调用 gzip、bzip2 等。

4.1.1.1 tar调用

gzip 是 GNU 组织开发的一个压缩程序,.gz 结尾的文件就是 gzip 压缩的结果。与 gzip 相对的解压程序是 gunzip。tar 中使用 -z 这个参数来调用gzip。下面来举例说明一下:

 tar -czf all.tar.gz *.jpg
Nach dem Login kopieren

这条命令是将所有 .jpg 的文件打成一个 tar 包,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,包名为 all.tar.gz。

 tar -xzf all.tar.gz
Nach dem Login kopieren

这条命令是将上面产生的包解开。

4.1.1.2 tar 调用 bzip2

bzip2 是一个压缩能力更强的压缩程序,.bz2 结尾的文件就是 bzip2 压缩的结果。

与 bzip2 相对的解压程序是 bunzip2。tar 中使用 -j 这个参数来调用 gzip。下面来举例说明一下:

 tar -cjf all.tar.bz2 *.jpg
Nach dem Login kopieren

这条命令是将所有 .jpg 的文件打成一个 tar 包,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,包名为 all.tar.bz2

 tar -xjf all.tar.bz2
Nach dem Login kopieren

这条命令是将上面产生的包解开。

4.1.1.3 tar 调用 compress

compress 也是一个压缩程序,但是好象使用 compress 的人不如 gzip 和 bzip2 的人多。.Z 结尾的文件就是 bzip2 压缩的结果。与 compress 相对的解压程序是 uncompress。tar 中使用 -Z 这个参数来调用 compress。下面来举例说明一下:

 tar -cZf all.tar.Z *.jpg
Nach dem Login kopieren

这条命令是将所有 .jpg 的文件打成一个 tar 包,并且将其用 compress 压缩,生成一个 uncompress 压缩过的包,包名为 all.tar.Z。

 tar -xZf all.tar.Z
Nach dem Login kopieren

这条命令是将上面产生的包解开。

有了上面的知识,你应该可以解开多种压缩文件了,下面对于 tar 系列的压缩文件作一个小结:

1) 对于.tar结尾的文件

tar -xf all.tar
Nach dem Login kopieren

2) 对于 .gz 结尾的文件

gzip -d all.gzgunzip all.gz
Nach dem Login kopieren

3)对于 .tgz 或 .tar.gz 结尾的文件

tar -xzf all.tar.gztar -xzf all.tgz
Nach dem Login kopieren

4) 对于 .bz2 结尾的文件

bzip2 -d all.bz2bunzip2 all.bz2
Nach dem Login kopieren

5) 对于 tar.bz2 结尾的文件

tar -xjf all.tar.bz2
Nach dem Login kopieren

6) 对于 .Z 结尾的文件

uncompress all.Z
Nach dem Login kopieren

7) 对于 .tar.Z 结尾的文件

tar -xZf all.tar.z
Nach dem Login kopieren

另外对于 Windows 下的常见压缩文件 .zip 和 .rar,Linux 也有相应的方法来解压它们:

1) 对于 .zip

linux 下提供了 zip 和 unzip 程序,zip 是压缩程序,unzip 是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:

 zip all.zip *.jpg
Nach dem Login kopieren

这条命令是将所有 .jpg 的文件压缩成一个 zip 包:

 unzip all.zip
Nach dem Login kopieren

这条命令是将 all.zip 中的所有文件解压出来。

2) 对于 .rar

要在 linux 下处理 .rar 文件,需要安装 RAR for Linux。下载地址:http://www.rarsoft.com/download.htm,下载后安装即可。

 tar -xzpvf rarlinux-x64-5.6.b5.tar.gz cd rar  make
Nach dem Login kopieren

这样就安装好了,安装后就有了 rar 和 unrar 这两个程序,rar 是压缩程序,unrar 是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:

 rar a all *.jpg
Nach dem Login kopieren

这条命令是将所有 .jpg 的文件压缩成一个 rar 包,名为 all.rar,该程序会将 .rar 扩展名将自动附加到包名后。

 unrar e all.rar
Nach dem Login kopieren

这条命令是将 all.rar 中的所有文件解压出来

4.2 扩展内容

tar

-c: 建立压缩档案 -x:解压 -t:查看内容 shell-r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件
Nach dem Login kopieren

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输出
Nach dem Login kopieren

下面的参数 -f 是必须的:

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
Nach dem Login kopieren

# tar -cf all.tar *.jpg

这条命令是将所有 .jpg 的文件打成一个名为 all.tar 的包。-c 是表示产生新的包,-f 指定包的文件名。

 tar -rf all.tar *.gif
Nach dem Login kopieren
Nach dem Login kopieren

这条命令是将所有 .gif 的文件增加到 all.tar 的包里面去。-r 是表示增加文件的意思。

 tar -uf all.tar logo.gif
Nach dem Login kopieren
Nach dem Login kopieren

这条命令是更新原来 tar 包 all.tar 中 logo.gif 文件,-u 是表示更新文件的意思。

 tar -tf all.tar
Nach dem Login kopieren
Nach dem Login kopieren

这条命令是列出 all.tar 包中所有文件,-t 是列出文件的意思。

 tar -xf all.tar
Nach dem Login kopieren
Nach dem Login kopieren

这条命令是解出 all.tar 包中所有文件,-x 是解开的意思。

压缩

tar –cvf jpg.tar *.jpg       // 将目录里所有jpg文件打包成 tar.jpg tar –czf jpg.tar.gz *.jpg    // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,命名为 jpg.tar.gz tar –cjf jpg.tar.bz2 *.jpg   // 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,命名为jpg.tar.bz2 tar –cZf jpg.tar.Z *.jpg     // 将目录里所有 jpg 文件打包成 jpg.tar 后,并且将其用 compress 压缩,生成一个 umcompress 压缩过的包,命名为jpg.tar.Z rar a jpg.rar *.jpg          // rar格式的压缩,需要先下载 rar for linux zip jpg.zip *.jpg            // zip格式的压缩,需要先下载 zip for linux
Nach dem Login kopieren

解压

tar –xvf file.tar         // 解压 tar 包 tar -xzvf file.tar.gz     // 解压 tar.gz tar -xjvf file.tar.bz2    // 解压 tar.bz2 tar –xZvf file.tar.Z      // 解压 tar.Z unrar e file.rar          // 解压 rar unzip file.zip            // 解压 zip
Nach dem Login kopieren

总结

1、*.tar 用 tar –xvf 解压 2、*.gz 用 gzip -d或者gunzip 解压 3、*.tar.gz和*.tgz 用 tar –xzf 解压 4、*.bz2 用 bzip2 -d或者用bunzip2 解压 5、*.tar.bz2用tar –xjf 解压 6、*.Z 用 uncompress 解压 7、*.tar.Z 用tar –xZf 解压 8、*.rar 用 unrar e解压 9、*.zip 用 unzip 解压
Nach dem Login kopieren

五、查找命令

5.1 grep

grep命令是一种强大的文本搜索工具

使用实例:

ps -ef | grep sshd  查找指定ssh服务进程 ps -ef | grep sshd | grep -v grep 查找指定服务进程,排除gerp身 ps -ef | grep sshd -c 查找指定进程个数
Nach dem Login kopieren

从文件内容查找匹配指定字符串的行:

$ grep "被查找的字符串" 文件名
Nach dem Login kopieren

例子:在当前目录里第一级文件夹中寻找包含指定字符串的 .in 文件

grep "thermcontact" /.in
Nach dem Login kopieren

从文件内容查找与正则表达式匹配的行:

$ grep –e "正则表达式" 文件名
Nach dem Login kopieren

查找时不区分大小写:

$ grep –i "被查找的字符串" 文件名
Nach dem Login kopieren

查找匹配的行数:

$ grep -c “被查找的字符串” 文件名

从文件内容查找不匹配指定字符串的行:

$ grep –v "被查找的字符串" 文件名
Nach dem Login kopieren

5.2 find

find命令在目录结构中搜索文件,并对搜索结果执行指定的操作。

find 默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。另外,搜索公众号编程技术圈后台回复“1024”,获取一份惊喜礼包。

使用实例:

find . -name "*.log" -ls  在当前目录查找以.log结尾的文件,并显示详细信息。find /root/ -perm 600   查找/root/目录下权限为600的文件 find . -type f -name "*.log"  查找当目录,以.log结尾的普通文件 find . -type d | sort   查找当前所有目录并排序 find . -size +100M  查找当前目录大于100M的文件
Nach dem Login kopieren

从根目录开始查找所有扩展名为 .log 的文本文件,并找出包含 “ERROR” 的行:

$ find / -type f -name "*.log" | xargs grep "ERROR"
Nach dem Login kopieren

例子:从当前目录开始查找所有扩展名为 .in 的文本文件,并找出包含 “thermcontact” 的行:

find . -name "*.in" | xargs grep "thermcontact"
Nach dem Login kopieren

5.3 locate

locate 让使用者可以很快速的搜寻某个路径。默认每天自动更新一次,所以使用locate 命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。如果数据库中没有查询的数据,则会报出locate: can not stat () `/var/lib/mlocate/mlocate.db’: No such file or directory该错误!updatedb即可!

yum -y install mlocate 如果是精简版CentOS系统需要安装locate命令

使用实例:

updatedblocate /etc/sh 搜索etc目录下所有以sh开头的文件 locate pwd 查找和pwd相关的所有文件
Nach dem Login kopieren

5.4 whereis

whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。

使用实例:

whereis ls    将和ls文件相关的文件都查找出来
Nach dem Login kopieren

5.5 which

which命令的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。

使用实例:

which pwd  查找pwd命令所在路径 which java  查找path中java的路径
Nach dem Login kopieren

六、su、sudo

6.1 su

Linux su命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。

使用权限:所有使用者。

语法

su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
Nach dem Login kopieren

参数说明

  • -f 或 —fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh

  • -m -p 或 —preserve-environment 执行 su 时不改变环境变数

  • -c command 或 —command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者

  • -s shell 或 —shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell

  • –help 显示说明文件

  • –version 显示版本资讯

  • - -l 或 —login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root

  • USER 欲变更的使用者帐号

  • ARG 传入新的 shell 参数

实例

变更帐号为 root 并在执行 ls 指令后退出变回原使用者

su -c ls root
Nach dem Login kopieren

变更帐号为 root 并传入 -f 参数给新执行的 shell

su root -f
Nach dem Login kopieren
Nach dem Login kopieren

变更帐号为 clsung 并改变工作目录至 clsung 的家目录(home dir)

su - clsung
Nach dem Login kopieren
Nach dem Login kopieren

切换用户

hnlinux@runoob.com:~$ whoami //显示当前用户hnlinuxhnlinux@runoob.com:~$ pwd //显示当前目录/home/hnlinuxhnlinux@runoob.com:~$ su root //切换到root用户密码:root@runoob.com:/home/hnlinux# whoami rootroot@runoob.com:/home/hnlinux# pwd/home/hnlinux
Nach dem Login kopieren
Nach dem Login kopieren

切换用户,改变环境变量

hnlinux@runoob.com:~$ whoami //显示当前用户hnlinuxhnlinux@runoob.com:~$ pwd //显示当前目录/home/hnlinuxhnlinux@runoob.com:~$ su - root //切换到root用户密码:root@runoob.com:/home/hnlinux# whoami rootroot@runoob.com:/home/hnlinux# pwd //显示当前目录/root
Nach dem Login kopieren
Nach dem Login kopieren

su用于用户之间的切换。但是切换前的用户依然保持登录状态。如果是root 向普通或虚拟用户切换不需要密码,反之普通用户切换到其它任何用户都需要密码验证。

su test:切换到test用户,但是路径还是/root目录su - test : 切换到test用户,路径变成了/home/testsu : 切换到root用户,但是路径还是原来的路径su - : 切换到root用户,并且路径是/rootsu不足:如果某个用户需要使用root权限、则必须要把root密码告诉此用户。退出返回之前的用户:exit
Nach dem Login kopieren
Nach dem Login kopieren

6.2 sudo

sudo是为所有想使用root权限的普通用户设计的。可以让普通用户具有临时使用root权限的权利。只需输入自己账户的密码即可。

进入sudo配置文件命令:

vi /etc/sudoer或者visudo
Nach dem Login kopieren

案例:允许hadoop用户以root身份执行各种应用命令,需要输入hadoop用户的密码。hadoop ALL=(ALL) ALL

案例:只允许hadoop用户以root身份执行ls 、cat命令,并且执行时候免输入密码。配置文件中:hadoop ALL=NOPASSWD: /bin/ls, /bin/cat

su root -f
Nach dem Login kopieren
Nach dem Login kopieren

变更帐号为 clsung 并改变工作目录至 clsung 的家目录(home dir)

su - clsung
Nach dem Login kopieren
Nach dem Login kopieren

切换用户

hnlinux@runoob.com:~$ whoami //显示当前用户hnlinuxhnlinux@runoob.com:~$ pwd //显示当前目录/home/hnlinuxhnlinux@runoob.com:~$ su root //切换到root用户密码:root@runoob.com:/home/hnlinux# whoami rootroot@runoob.com:/home/hnlinux# pwd/home/hnlinux
Nach dem Login kopieren
Nach dem Login kopieren

切换用户,改变环境变量

hnlinux@runoob.com:~$ whoami //显示当前用户hnlinuxhnlinux@runoob.com:~$ pwd //显示当前目录/home/hnlinuxhnlinux@runoob.com:~$ su - root //切换到root用户密码:root@runoob.com:/home/hnlinux# whoami rootroot@runoob.com:/home/hnlinux# pwd //显示当前目录/root
Nach dem Login kopieren
Nach dem Login kopieren

su用于用户之间的切换。但是切换前的用户依然保持登录状态。如果是root 向普通或虚拟用户切换不需要密码,反之普通用户切换到其它任何用户都需要密码验证。

su test:切换到test用户,但是路径还是/root目录su - test : 切换到test用户,路径变成了/home/testsu : 切换到root用户,但是路径还是原来的路径su - : 切换到root用户,并且路径是/rootsu不足:如果某个用户需要使用root权限、则必须要把root密码告诉此用户。退出返回之前的用户:exit
Nach dem Login kopieren
Nach dem Login kopieren

七、下载与安装 yum

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

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

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

7.1 yum 语法

yum [options] [command] [package ...]
Nach dem Login kopieren
  • options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为”yes”),-q(不显示安装的过程)等等。

  • command:要进行的操作。

  • package操作的对象。

7.2 yum常用命令

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

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

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

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

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

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

  • 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-develSetting up Install ProcessParsing package install argumentsResolving 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 updatedfilelists.xml.gz          100% |=========================| 1.6 MB    00:05filelists.xml.gz          100% |=========================| 138 kB    00:00-> Finished Dependency Resolution……(省略)
Nach dem Login kopieren

实例 2

移除 pam-devel

[root@www ~] yum remove pam-develSetting up Remove ProcessResolving Dependencies  <==同样的,先解决属性相依的问题--> Running transaction check---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be erased--> Finished Dependency ResolutionDependencies Resolved============================================================================= Package                 Arch       Version          Repository        Size=============================================================================Removing: pam-devel               i386       0.99.6.2-4.el5   installed         495 kTransaction Summary=============================================================================Install      0 Package(s)Update       0 Package(s)Remove       1 Package(s)  <==还好,并没有属性相依的问题,单纯移除一个软件Is this ok [y/N]: yDownloading Packages:Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction  Erasing   : pam-devel                    ######################### [1/1]Removed: pam-devel.i386 0:0.99.6.2-4.el5Complete!
Nach dem Login kopieren

实例 3

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

[root@www ~] yum list pam*Installed Packagespam.i386                  0.99.6.2-3.27.el5      installedpam_ccreds.i386           3-5                    installedpam_krb5.i386             2.2.14-1               installedpam_passwdqc.i386         1.0.2-1.2.2            installedpam_pkcs11.i386           0.5.3-23               installedpam_smb.i386              1.1.7-7.2.1            installedAvailable Packages <==底下则是『可升级』的或『未安装』的pam.i386                  0.99.6.2-4.el5         basepam-devel.i386            0.99.6.2-4.el5         basepam_krb5.i386             2.2.14-10              base
Nach dem Login kopieren

7.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.backup1
Nach dem Login kopieren

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

  • CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo

  • CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo

  • CentOS7 :http://mirrors.163.com/.help/CentOS7-Base-163.repo

wget http://mirrors.163.com/.help/CentOS6-Base-163.repomv CentOS6-Base-163.repo CentOS-Base.repo
Nach dem Login kopieren

运行以下命令生成缓存

yum clean allyum makecache
Nach dem Login kopieren

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

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

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

八. Linux 三剑客(awk,sed,grep)

awk、sed、grep更适合的方向:

  • grep 更适合单纯的查找或匹配文本

  • sed 更适合编辑匹配到的文本

  • awk 更适合格式化文本,对文本进行较复杂格式处理

8.1 awk

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。

之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。

语法

awk [选项参数] &#39;script&#39; var=value file(s)或awk [选项参数] -f scriptfile var=value file(s)
Nach dem Login kopieren

选项参数说明:

  • -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报告信息的版本。

基本用法

log.txt文本内容如下:

2 this is a test3 Are you like awkThis&#39;s a test10 There are orange,apple,mongo
Nach dem Login kopieren

用法一:

awk &#39;{[pattern] action}&#39; {filenames}   # 行匹配语句 awk &#39;&#39; 只能用单引号
Nach dem Login kopieren

实例:

# 每行按空格或TAB分割,输出文本中的1、4项 $ awk &#39;{print $1,$4}&#39; log.txt --------------------------------------------- 2 a 3 like This&#39;s 10 orange,apple,mongo # 格式化输出 $ awk &#39;{printf "%-8s %-10s\n",$1,$4}&#39; log.txt --------------------------------------------- 2        a 3        like This&#39;s 10       orange,apple,mongo
Nach dem Login kopieren

用法二:

awk -F  #-F相当于内置变量FS, 指定分割字符
Nach dem Login kopieren

实例:

# 使用","分割 $  awk -F, &#39;{print $1,$2}&#39;   log.txt --------------------------------------------- 2 this is a test 3 Are you like awk This&#39;s a test 10 There are orange apple # 或者使用内建变量 $ awk &#39;BEGIN{FS=","} {print $1,$2}&#39;     log.txt --------------------------------------------- 2 this is a test 3 Are you like awk This&#39;s a test 10 There are orange apple # 使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割 $ awk -F &#39;[ ,]&#39;  &#39;{print $1,$2,$5}&#39;   log.txt --------------------------------------------- 2 this test 3 Are awk This&#39;s a 10 There apple
Nach dem Login kopieren

用法三:

awk -v  # 设置变量
Nach dem Login kopieren

实例:

 $ awk -va=1 &#39;{print $1,$1+a}&#39; log.txt --------------------------------------------- 2 3 3 4 This&#39;s 1 10 11 $ awk -va=1 -vb=s &#39;{print $1,$1+a,$1b}&#39; log.txt --------------------------------------------- 2 3 2s 3 4 3s This&#39;s 1 This&#39;ss 10 11 10s
Nach dem Login kopieren

用法四:

awk -f {awk脚本} {文件名}
Nach dem Login kopieren

实例:

 $ awk -f cal.awk log.txt
Nach dem Login kopieren

运算符

Connect Addieren, Subtrahieren Multiplikation, Division und Berechnung Yu unäre Addition, Subtraktion und logische Negation
运算符描述

= += -= = /= %= ^= *=赋值

?:C条件表达式

\\
逻辑或
&&逻辑与

<
Space

+ -

* / %

+ - !

^ *Potenzierung

++ – steigend oder fallend, als Präfix oder Suffix

$ Feldreferenz

inArray-Mitglied

过滤第一列大于2的行

$ awk &#39;$1>2&#39; log.txt    #命令#输出3 Are you like awkThis&#39;s a test10 There are orange,apple,mongo12345
Nach dem Login kopieren

过滤第一列等于2的行

$ awk &#39;$1==2 {print $1,$3}&#39; log.txt    #命令#输出2 is123
Nach dem Login kopieren

过滤第一列大于2并且第二列等于’Are’的行。另外,搜索公众号Java架构师技术后台回复“面试题”,获取一份惊喜礼包。

$ awk &#39;$1>2 && $2=="Are" {print $1,$2,$3}&#39; log.txt    #命令#输出3 Are you123
Nach dem Login kopieren

内建变量

DATEINAMEFNRFS IGNORECASENFOFMTOFS
变量描述
$n当前记录的第n个字段,字段间由FS分隔
$0完整的输入记录
ARGC命令行参数的数目
ARGIND命令行中当前文件的位置(从0开始算)
ARGV包含命令行参数的数组
CONVFMT数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组
ERRNO最后一个系统错误的描述
Feldbreitenliste (durch Leertaste getrennt)
Aktueller Dateiname
Zeilennummern werden für jede Datei separat gezählt
Feldtrennzeichen (Standard ist beliebiges Leerzeichen)
Wenn wahr, führen Sie eine Übereinstimmung unter Ignorierung der Groß- und Kleinschreibung durch.
Die Anzahl der Felder in einem Datensatz. Die Anzahl der gelesenen Datensätze ist Zeile Zahl, beginnend mit 1
Zahlenausgabeformat (Standardwert ist %.6g)
Trennzeichen für Ausgabedatensätze (Ausgabe-Neuzeilenzeichen), verwenden Sie das angegebene Symbol, um die neue Zeile bei der Ausgabe zu ersetzen Talisman
ORSDas Ausgabedatensatztrennzeichen (der Standardwert ist ein Zeilenumbruchzeichen)
RLENGTHDie Länge der Zeichenfolge, die von der Match-Funktion abgeglichen wird
RSDas Datensatztrennzeichen (der Standardwert ist ein Zeilenumbruchzeichen) ) Die erste Position der Zeichenfolge, mit der die Match-Funktion übereinstimmt
$ awk &#39;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}&#39;  log.txtFILENAME ARGC  FNR   FS   NF   NR  OFS  ORS   RS---------------------------------------------log.txt    2    1         5    1log.txt    2    2         5    2log.txt    2    3         3    3log.txt    2    4         4    4$ awk -F\&#39; &#39;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}&#39;  log.txtFILENAME ARGC  FNR   FS   NF   NR  OFS  ORS   RS---------------------------------------------log.txt    2    1    &#39;    1    1log.txt    2    2    &#39;    1    2log.txt    2    3    &#39;    2    3log.txt    2    4    &#39;    1    4# 输出顺序号 NR, 匹配文本行号$ awk &#39;{print NR,FNR,$1,$2,$3}&#39; log.txt---------------------------------------------1 1 2 this is2 2 3 Are you3 3 This&#39;s a test4 4 10 There are# 指定输出分割符$  awk &#39;{print $1,$2,$5}&#39; OFS=" $ "  log.txt---------------------------------------------2 $ this $ test3 $ Are $ awkThis&#39;s $ a $10 $ There $
Nach dem Login kopieren

使用正则,字符串匹配

# 输出第二列包含 "th",并打印第二列与第四列$ awk &#39;$2 ~ /th/ {print $2,$4}&#39; log.txt---------------------------------------------this a
Nach dem Login kopieren

~ 表示模式开始。// 中是模式。

# 输出包含 "re" 的行$ awk &#39;/re/ &#39; log.txt---------------------------------------------3 Are you like awk10 There are orange,apple,mongo
Nach dem Login kopieren

忽略大小写

$ awk &#39;BEGIN{IGNORECASE=1} /this/&#39; log.txt---------------------------------------------2 this is a testThis&#39;s a test
Nach dem Login kopieren

模式取反

$ awk &#39;$2 !~ /th/ {print $2,$4}&#39; log.txt---------------------------------------------Are likeaThere orange,apple,mongo$ awk &#39;!/th/ {print $2,$4}&#39; log.txt---------------------------------------------Are likeaThere orange,apple,mongo
Nach dem Login kopieren

awk脚本

关于 awk 脚本,我们需要注意两个关键词 BEGIN 和 END。

  • BEGIN{ 这里面放的是执行前的语句 }

  • END {这里面放的是处理完所有的行后要执行的语句 }

  • {这里面放的是处理每一行时要执行的语句}

假设有这么一个文件(学生成绩表):

$ cat score.txtMarry   2143 78 84 77Jack    2321 66 78 45Tom     2122 48 77 71Mike    2537 87 97 95Bob     2415 40 57 62
Nach dem Login kopieren

我们的 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}123456789101112131415161718192021222324
Nach dem Login kopieren

我们来看一下执行结果:

$ awk -f cal.awk score.txtNAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL---------------------------------------------Marry  2143     78       84       77      239Jack   2321     66       78       45      189Tom    2122     48       77       71      196Mike   2537     87       97       95      279Bob    2415     40       57       62      159---------------------------------------------  TOTAL:       319      393      350AVERAGE:     63.80    78.60    70.00
Nach dem Login kopieren

另外一些实例

AWK 的 hello world 程序为:

BEGIN { print "Hello, world!" }
Nach dem Login kopieren

计算文件大小

$ ls -l *.txt | awk &#39;{sum+=$5} END {print sum}&#39;--------------------------------------------------666581
Nach dem Login kopieren

从文件中找出长度大于 80 的行:

awk &#39;length>80&#39; log.txt
Nach dem Login kopieren

打印九九乘法表

seq 9 | sed &#39;H;g&#39; | awk -v RS=&#39;&#39; &#39;{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}&#39;
Nach dem Login kopieren

8.2 sed

Linux sed 命令是利用脚本来处理文本文件。

sed 可依照脚本的指令来处理、编辑文本文件。

Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

语法

sed [-hnV][-e<script>][-f<script文件>][文本文件]
Nach dem Login kopieren

参数说明

  • -e<script>--expression=<script> 以选项中指定的script来处理输入的文本文件。

  • -f

    文件>文件>
  • -h或–help 显示帮助。

  • -n或–quiet或–silent 仅显示script处理后的结果。

  • -V或–version 显示版本信息。

动作说明

  • a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~

  • c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!

  • d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;

  • i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);

  • p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~

  • s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

实例

在testfile文件的第四行后添加一行,并将结果输出到标准输出,在命令行提示符下输入如下命令:

sed -e 4a\newLine testfile
Nach dem Login kopieren
Nach dem Login kopieren

首先查看testfile中的内容如下:

$ cat testfile #查看testfile 中的内容  HELLO LINUX!  Linux is a free unix-type opterating system.  This is a linux testfile!  Linux test
Nach dem Login kopieren

使用sed命令后,输出结果如下:

$ sed -e 4a\newline testfile #使用sed 在第四行后添加新字符串  HELLO LINUX! #testfile文件原有的内容  Linux is a free unix-type opterating system.  This is a linux testfile!  Linux test  newline
Nach dem Login kopieren

以行为单位的新增/删除

将 /etc/passwd 的内容列出并且列印行号,同时,请将第 2~5 行删除!

[root@www ~] nl /etc/passwd | sed &#39;2,5d&#39;1 root:x:0:0:root:/root:/bin/bash6 sync:x:5:0:sync:/sbin:/bin/sync7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown.....(后面省略).....
Nach dem Login kopieren

sed 的动作为 ‘2,5d’ ,那个 d 就是删除!因为 2-5 行给他删除了,所以显示的数据就没有 2-5 行罗~ 另外,注意一下,原本应该是要下达 sed -e 才对,没有 -e 也行啦!同时也要注意的是, sed 后面接的动作,请务必以 ‘’ 两个单引号括住喔!

只要删除第 2 行

nl /etc/passwd | sed &#39;2d&#39;
Nach dem Login kopieren

要删除第 3 到最后一行

nl /etc/passwd | sed &#39;3,$d&#39;
Nach dem Login kopieren

在第二行后(亦即是加在第三行)加上『drink tea?』字样!

[root@www ~] nl /etc/passwd | sed &#39;2a drink tea&#39;1 root:x:0:0:root:/root:/bin/bash2 bin:x:1:1:bin:/bin:/sbin/nologindrink tea3 daemon:x:2:2:daemon:/sbin:/sbin/nologin.....(后面省略).....
Nach dem Login kopieren

那如果是要在第二行前

nl /etc/passwd | sed &#39;2i drink tea&#39;
Nach dem Login kopieren

如果是要增加两行以上,在第二行后面加入两行字,例如 Drink tea or … drink beer?

[root@www ~] nl /etc/passwd | sed &#39;2a Drink tea or ......\> drink beer ?&#39;1 root:x:0:0:root:/root:/bin/bash2 bin:x:1:1:bin:/bin:/sbin/nologinDrink tea or ......drink beer ?3 daemon:x:2:2:daemon:/sbin:/sbin/nologin.....(后面省略).....
Nach dem Login kopieren

每一行之间都必须要以反斜杠『 \ 』来进行新行的添加喔!所以,上面的例子中,我们可以发现在第一行的最后面就有 \ 存在。

以行为单位的替换与显示

将第2-5行的内容取代成为『No 2-5 number』呢?

[root@www ~] nl /etc/passwd | sed &#39;2,5c No 2-5 number&#39;1 root:x:0:0:root:/root:/bin/bashNo 2-5 number6 sync:x:5:0:sync:/sbin:/bin/sync.....(后面省略).....
Nach dem Login kopieren

透过这个方法我们就能够将数据整行取代了!

仅列出 /etc/passwd 文件内的第 5-7 行

[root@www ~] nl /etc/passwd | sed -n &#39;5,7p&#39;5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6 sync:x:5:0:sync:/sbin:/bin/sync7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
Nach dem Login kopieren

可以透过这个 sed 的以行为单位的显示功能, 就能够将某一个文件内的某些行号选择出来显示。

数据的搜寻并显示

搜索 /etc/passwd有root关键字的行

nl /etc/passwd | sed &#39;/root/p&#39;1  root:x:0:0:root:/root:/bin/bash1  root:x:0:0:root:/root:/bin/bash2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh3  bin:x:2:2:bin:/bin:/bin/sh4  sys:x:3:3:sys:/dev:/bin/sh5  sync:x:4:65534:sync:/bin:/bin/sync....下面忽略
Nach dem Login kopieren

如果root找到,除了输出所有行,还会输出匹配行。

使用-n的时候将只打印包含模板的行。

nl /etc/passwd | sed -n &#39;/root/p&#39;1  root:x:0:0:root:/root:/bin/bash
Nach dem Login kopieren

数据的搜寻并删除

删除/etc/passwd所有包含root的行,其他行输出

nl /etc/passwd | sed  &#39;/root/d&#39;2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh3  bin:x:2:2:bin:/bin:/bin/sh....下面忽略#第一行的匹配root已经删除了
Nach dem Login kopieren

数据的搜寻并执行命令

搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把bash替换为blueshell,再输出这行:

nl /etc/passwd | sed -n &#39;/root/{s/bash/blueshell/;p;q}&#39;    1  root:x:0:0:root:/root:/bin/blueshell
Nach dem Login kopieren

最后的q是退出。

数据的搜寻并替换

除了整行的处理模式之外, sed 还可以用行为单位进行部分数据的搜寻并取代。基本上 sed 的搜寻与替代的与 vi 相当的类似!他有点像这样:

sed &#39;s/要被取代的字串/新的字串/g&#39;
Nach dem Login kopieren

先观察原始信息,利用 /sbin/ifconfig 查询 IP

[root@www ~] /sbin/ifconfig eth0eth0 Link encap:Ethernet HWaddr 00:90:CC:A6:34:84inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0inet6 addr: fe80::290:ccff:fea6:3484/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1.....(以下省略).....
Nach dem Login kopieren

本机的ip是192.168.1.100。

将 IP 前面的部分予以删除

[root@www ~] /sbin/ifconfig eth0 | grep &#39;inet addr&#39; | sed &#39;s/^.*addr://g&#39;192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
Nach dem Login kopieren

接下来则是删除后续的部分,亦即:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0

将 IP 后面的部分予以删除

[root@www ~] /sbin/ifconfig eth0 | grep &#39;inet addr&#39; | sed &#39;s/^.*addr://g&#39; | sed &#39;s/Bcast.*$//g&#39;192.168.1.100
Nach dem Login kopieren

多点编辑

一条sed命令,删除/etc/passwd第三行到末尾的数据,并把bash替换为blueshell

nl /etc/passwd | sed -e &#39;3,$d&#39; -e &#39;s/bash/blueshell/&#39;1  root:x:0:0:root:/root:/bin/blueshell2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
Nach dem Login kopieren

-e表示多点编辑,第一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为blueshell。

直接修改文件内容(危险动作)

sed 可以直接修改文件的内容,不必使用管道命令或数据流重导向!不过,由於这个动作会直接修改到原始的文件,所以请你千万不要随便拿系统配置来测试!我们还是使用文件 regular_express.txt 文件来测试看看吧!

regular_express.txt 文件内容如下:

[root@www ~] cat regular_express.txt runoob.google.taobao.facebook.zhihu-weibo-
Nach dem Login kopieren

利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !

[root@www ~] sed -i &#39;s/\.$/\!/g&#39; regular_express.txt[root@www ~] cat regular_express.txt runoob!google!taobao!facebook!zhihu-weibo-
Nach dem Login kopieren

:q:q

利用 sed 直接在 regular_express.txt 最后一行加入 # This is a test:

[root@www ~] sed -i &#39;$a # This is a test&#39; regular_express.txt[root@www ~] cat regular_express.txt runoob!google!taobao!facebook!zhihu-weibo-# This is a test
Nach dem Login kopieren

由於 $ 代表的是最后一行,而 a 的动作是新增,因此该文件最后新增 # This is a test

sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!

追加行的说明:

sed -e 4a\newLine testfile
Nach dem Login kopieren
Nach dem Login kopieren

a 动作是在匹配的行之后追加字符串,追加的字符串中可以包含换行符(实现追加多行的情况)。

追加一行的话前后都不需要添加换行符 \n,只有追加多行时在行与行之间才需要添加换行符(最后一行最后也无需添加,添加的话会多出一个空行)。

man sed 信息:

Append text, which has each embedded newline preceded by a backslash.
Nach dem Login kopieren

例如:

4 行之后添加一行:

sed -e &#39;4 a newline&#39; testfile
Nach dem Login kopieren

4 行之后追加 2 行:

sed -e &#39;4 a newline\nnewline2&#39; testfile
Nach dem Login kopieren

4 行之后追加 3 行(2 行文字和 1 行空行)

sed -e &#39;4 a newline\nnewline2\n&#39; testfile
Nach dem Login kopieren

4 行之后追加 1 行空行:

#错误:sed -e &#39;4 a \n&#39; testfilesed -e &#39;4 a \ &#39; testfile 实际上
Nach dem Login kopieren

实际上是插入了一个含有一个空格的行,插入一个完全为空的空行没有找到方法(不过应该没有这个需求吧,都要插入行了插入空行干嘛呢?)

添加空行:

# 可以添加一个完全为空的空行sed &#39;4 a \\&#39;# 可以添加两个完全为空的空行sed &#39;4 a \\n&#39;
Nach dem Login kopieren

8.3 grep

Linux grep 命令用于查找文件里符合条件的字符串。

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

语法

grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
Nach dem Login kopieren

参数

  • -a oder —text: Binärdaten nicht ignorieren.

  • -A oder —after-context= : Zusätzlich zur Anzeige der Spalte, die dem Vorlagenstil entspricht, und Anzeige des Inhalts nach der Zeile.

  • -b oder —Byte-Offset: Bevor Sie die Zeile anzeigen, die dem Stil entspricht, geben Sie die Nummer des ersten Zeichens der Zeile an.

  • -B oder –before-context= : Zusätzlich zur Anzeige der Zeile, die dem Stil entspricht, und Anzeige des Inhalts vor der Zeile.

  • -c oder —count: Zählt die Anzahl der Spalten, die dem Stil entsprechen.

  • -C oder —context= oder - : Zusätzlich zur Anzeige der Zeile, die dem Stil entspricht, und Anzeige Der Inhalt vor und nach der Zeile.

  • -d oder —directories= : Dieser Parameter muss verwendet werden, wenn Verzeichnisse anstelle von zu durchsuchenden Dateien angegeben werden, andernfalls meldet der grep-Befehl die Informationen und stoppt die Aktion .

  • -e