linux学习笔记(1)

linux就该这么学》读书笔记

Shell简介

计算机硬件是由运算器、控制器、存储器和输入/输出设备等共同组成,系统内核就是让各种硬件协同工作的程序。Linux系统内核负责完成对硬件资源的分配和任务调度等任务。

Shell,也称为终端,它相当于用户与内核之间的翻译官——用户将命令输入终端,Shell就会调用程序服务来完成某些特定的工作。当前许多主流的Linux系统默认使用的Shell是Bash(Bourne-Again Shell)解释器,其优势主要有:

l  命令和参数仅需输入前几位就可以用Tab键补全

l  支持使用上下方向键查看历史Linux命令

l  具有强大的批处理脚本

l  支持命令别名

Shell既是一种命令语言,又是一种程序设计语言。

第2章新手必须掌握的Linux命令

查看命令帮助

man命令

man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。命令使用过程中的按键及其作用如下:

按键

用处

空格键

向下翻一页

PaGe down

向下翻一页

PaGe up

向上翻一页

home

直接前往首页

end

直接前往尾页

/

从上至下搜索某个关键词,如“/linux”

?

从下至上搜索某个关键词,如“?linux”

n

定位到下一个搜索到的关键词

N

定位到上一个搜索到的关键词

q

退出帮助文档

Man命令参数:

help选项

“--help”选项并不是一个“独立”的工具。命令的选项通常由一个或两个连字符后跟一个或多个字母来指定。选项出现在所调用的工具名后,用空格隔开。工具的其它参数都跟在选项后,也用空格隔开。“--help”选项就像分页程序“| less”一样,它所提供的是一种快捷、高效的帮助。

info命令

就内容来说,info页面比man page编写得要更好、更容易理解,也更友好,但man page使用起来确实要更容易得多。一个man page只有一页,而info页面几乎总是将它们的内容组织成多个区段(称为节点),每个区段也可能包含子区段(称为子节点)。理解这个命令的窍门就是不仅要学习如何在单独的Info页面中浏览导航,还要学习如何在节点和子节点之间切换。可能刚开始会一时很难在info页面的节点之间移动和找到你要的东西,真是具有讽刺意味:原本以为对于新手来说,某个东西比man命令会更好些,但实际上学习和使用起来更困难。

几个常用快捷键:

?键:它就会显示info的常用快捷键。

N键:显示(相对于本节点的)下一节点的文档内容。

P键:显示(相对于本节点的)前一节点的文档内容。

U键:进入当前命令所在的主题。

M键:敲M键后输入命令的名称就可以查看该命令的帮助文档了。

G键:敲G键后输入主题名称,进入该主题。

L键:回到上一个访问的页面。

SPACE键:向前滚动一页。

BACKUP或DEL键:向后滚动一页。

Q:退出info。

常用系统工作命令

echo命令

echo命令用于在终端输出字符串或者变量提取后的值,命令格式为:

echo [字符串 | $变量]

例如:

[root@linuxprobe~]# echo $SHELL

/bin/bash

date命令

date命令用于显示及设置系统的时间或日期,命令格式为:

date [选项] [+指定的格式]

只需在date命令中输入以“+”号开头的参数,即可按照指定格式来输出系统的时间或日期。date命令中的参数以及作用:

参数

作用

%t

跳格[Tab]

%H

小时(0023

%I

小时(0012

%M

分钟(0059

%S

秒(0059

%j

今年中的第几天

%Y

四位年

%m

两位月(01..12)

%d

例如:

[root@linuxprobe ~]# date "+%Y-%m-%d %H:%M:%S"
2017-08-24 16:29:12
[root@linuxprobe ~]# date -s "20170901 8:30:00"
Fri Sep 1 08:30:00 CST 2017

reboot命令

reboot命令用于重启系统,由于重启计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用root管理员来重启。

poweroff命令

poweroff命令用于关闭系统,和reboot一样,poweroff也会涉及硬件资源的管理权限,所以也只有root管理员可以执行。

wget命令

wget命令用于在终端下载网络文件,格式为:

wget [选项] URL

例如:

[root@linuxprobe ~]# wget https://www.linuxprobe.com/docs/LinuxProbe.pdf
--
2017-08-24 19:30:12 -- https://www.linuxprobe.com/docs/LinuxProbe.pdf
Resolving www.linuxprobe.com (
www.linuxprobe.com)... 220.181.105.185
Connecting to www.linuxprobe.com (www.linuxprobe.com)|220.181.105.185|:80...connected.
HTTP request sent, awaiting response... 
200 OK
Length: 
45948568 (44M) [application/pdf]
Saving to: ‘LinuxProbe.pdf’
100%[===========================================>] 45,948,568 32.9MB/in 1.3s
2017-08-24 19:30:14 (32.9 MB/s) - ‘LinuxProbe.pdf’ saved [45948568/45948568]

ps命令

ps命令用于查看系统中的进程状态,格式为“ps[参数]”。Ps命令最常用的参数有:

-a     显示所有进程(包括其他用户的进程)

-u     用户以及其他详细信息

-x     显示没有控制终端的进程

Ps命令经常与管道搭配使用,用来抓取与某个指定服务进程所对应的PID。Linux系统中,进程有5种常见的状态:运行、中断、不可中断、僵死和停止。

R(运行):进程正在运行或在运行队列中等待。

S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该   状态。

D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。

Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。

T(停止):进程收到停止信号后停止运行。

top命令

top命令用于动态地监视进程活动和系统负载信息。

pidof

pidof用于查询某个指定服务进程的PID。

kill

Kill命令用于终止某个指定PID的服务进程,格式为“kill[参数] [PID]”

killall

killall用于终止某个指定名称的服务所对应的全部进程,格式为“killall [参数] [服务名称]”

系统状态检查命令

ifconfig命令

Ifconfig(interfaceconfiguration的缩写)用来获取网卡配置与网络状态等信息,如IP地址,子网掩码等,也可以用来设置这些信息

uname命令

uname命令用来获取当前系统内核的名称和信息,命令格式为“uname [-a]”

在使用uname命令时,一般会固定搭配上-a参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。如果要查看当前系统的详细版本信息,则需要查看系统release文件,如

[root@linuxprobe ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.0 (Maipo)

uptime命令

uptime命令用于显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近1分钟、5分钟、15分钟内的压力情况。示例:

[root@linuxprobe ~]# uptime
22:49:55 up 10 min, 2 users, load average: 0.01, 0.19, 0.18

free命令

free命令用于显示系统已使用和空闲内存。在使用free命令时,可以结合使用-h参数以更人性化的方式输出当前内存的实时使用量信息。示例:

[root@linuxprobe ~]# free –h
        total    used    free    shared   buffers cached
Mem:    1.8G     1.3G    542M    9.8M     1.6M    413M
-/+ buffers/cache:                869M     957M                     
Swap:   2.0G     0B      2.0G    

who命令

who命令用于查看当前登入主机的用户终端信息。

last命令

last命令用于查看所有的系统登录记录。

history命令

history命令用于显示历史执行过的命令,每个命令前面会显示一个编号,然后可以用“!+编号”的形式再次执行该命令。“history -c”用于清除当前用户所有的历史命令。

sosreport命令

sosreport命令用于收集系统配置及架构信息并输出诊断文档。当Linux系统出现故障需要联系技术支持人员时,大多数时候都要先使用这个命令来简单收集系统的运行状态和服务配置信息,以便让技术支持人员能够远程解决一些小问题,亦或让他们能提前了解某些复杂问题。Sosreport适用于CentOS和RedHat,在SuSE中,类似的命令为supportconfig,不过它们可能都需要自己安装之后才能使用。

工作目录切换命令

pwd命令

pwd命令用于显示用户当前所处的工作目录

cd命令

cd命令用于切换工作目录。可以使用“cd -”命令返回到上一次所处的目录,使用“cd..”命令进入上级目录,以及使用“cd ~”命令切换到当前用户的家目录,亦或使用“cd ~username”切换到其他用户的家目录

ls命令

ls命令用于显示目录下的文件信息。所处的工作目录不同,当前工作目录下的文件肯定也不同。使用ls命令的“-a”参数看到全部文件(包括隐藏文件),使用“-l”参数可以查看文件的属性、大小等详细信息。将这两个参数整合之后,再执行ls命令即可查看当前目录中的所有文件并输出这些文件的属性信息

文本文件编辑命令

cat命令

cat命令用于查看纯文本文件,通常适用于内容较少时。可以使用命令“cat –n filename”在查看文件的同时显示行号。

more命令

more命令用于查看纯文本文件,适用于内容较多时,more命令会在最下面使用百分比的形式来提示您已经阅读了多少内容。您还可以使用空格键或回车键向下翻页

head命令

head命令用来查看纯文本文件的前N行,命令格式为“head[选项] [文件]”,示例:

[root@linuxprobe ~]# head -n 6  initial-setup-ks.cfg 
#version=RHEL7
# X Window System configuration information
xconfig  --startxonboot
 
# License agreement
eula --agreed

tail命令

tail命令用于查看纯文本文档的最后N行,类似于head命令;或者用于持续刷新文档内容,这在想要实时查看最新日志文件时非常实用,命令格式为“tail –f 文件名”

tr命令

tr(translate)命令用于替换文本文件中的字符。

wc命令

wc命令用于统计指定文本的行数、字数和字节数,格式为“wc [选项] 文本”。wc的选项及其作用如下:

-l      只显示行数

-w    只显示单词数

-c     只显示字节数

stat命令

stat命令用于查看文件的存储信息和时间信息等。

cut命令

cut命令用于按列提取文本字符,命令格式为“cut选项 [文件]”。Cut命令需要使用“-b”,“-c”和“-f”单个选项之一。如,获取文件每行第一个单词的命令可以用:

cut –d ‘ ‘ –f 1 test.txt

diff命令

diff命令用于比较多个文本文件的差异。不仅可以使用—brief选项来确认两个文件是否不同,还可以使用-c选项来详细比较出多个文件的差异之处。

文件目录管理命令

touch命令

touch命令用于创建一个空白文件,或者修改文件时间。Touch命令选项的作用如下:

-a     仅修改“读取时间”(atime)

-m    仅修改“修改时间”(mtime)

-d     同时修改atime与mtime

cp命令

cp命令用于复制文件或目录,格式为“cp [选项] 源文件 目标文件” 。如果目标文件是目录,则会把源文件复制到该目录中;如果目标文件也是普通文件,则会询问是否要覆盖它;如果目标文件不存在,则执行正常的复制操作。

mkdir命令

mkdir命令用于创建空白的目录,格式为“mkdir[选项] 目录”,除了能创建单个空白目录外,mkdir命令还可以结合-p参数来递归创建出具有嵌套叠层关系的文件目录

mv命令

mv命令用于剪切文件或将文件重命名,格式为“mv[选项] 源文件 [目标路径|目标文件名]”。如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名

rm命令

rm命令用于删除文件或目录,格式为“rm [选项] 文件”。想要删除一个目录,需要在rm命令后面一个-r参数才可以,否则删除不掉

dd命令

dd命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“dd [参数]”。

它能够让用户按照指定大小和个数的数据块来复制文件的内容。当然如果愿意的话,还可以在复制过程中转换其中的数据。Linux系统中有一个名为/dev/zero的设备文件。因为这个文件不会占用系统存储空间,但却可以提供无穷无尽的数据,因此可以使用它作为dd命令的输入文件,来生成一个指定大小的文件。dd命令的参数及作用如下:

if      输入的文件名称

of     输出的文件名称

bs     设置每个“块”的大小

count       设置要复制“块”的个数

file命令

file命令用于查看文件的类型,格式为“file 文件名”

打包压缩和搜索命令

tar命令

tar命令用于对文件进行打包压缩和解压。tar命令常用选项作用如下:

-c     创建压缩文件

-x     解开压缩文件

-t      查看压缩包内有哪些文件

-z      用Gzip压缩或解压

-j      用bzip2压缩或解压

-v     显示压缩或解压的过程

-f      目标文件名

-p     保留原始的权限与属性

-P     使用绝对路径来压缩

-C     指定解压到的目录

-c参数用于创建压缩文件,-x参数用于解压文件,因此这两个参数不能同时使用。其次,-z参数指定使用Gzip格式来压缩或解压文件,-j参数指定使用bzip2格式来压缩或解压文件。用户使用时则是根据文件的后缀来决定应使用何种格式参数进行解压。在执行某些压缩或解压操作时,可能需要花费数个小时,如果屏幕一直没有输出,您一方面不好判断打包的进度情况,另一方面也会怀疑电脑死机了,因此非常推荐使用-v参数向用户不断显示压缩或解压的过程。-C参数用于指定要解压到哪个指定的目录。-f参数特别重要,它必须放到参数的最后一位,代表要压缩或解压的软件包名称。

一般使用“tar -czvf 压缩包名称.tar.gz 要打包的目录”命令把指定的文件进行打包压缩;

相应的解压命令为“tar -xzvf 压缩包名称.tar.gz”

示例:

[root@linuxprobe ~]# tar czvf etc.tar.gz /etc
[root@linuxprobe ~]# tar xzvf etc.tar.gz -C /root/etc

grep命令

grep命令用于在文本中搜索关键字。格式为“grep[选项] [文件]”。常用选项及其作用如下:

-b     将可执行文件(binary)当作文本文件(text)来搜索

-c     仅显示找到的行数

-i      忽略大小写

-n     显示行号

-v     反向选择——仅列出没有“关键词”的行。

find命令

find命令用于按照指定的条件来查找文件,命令格式为“find [查找路径] 寻找条件操作”。可以使用不同的文件特性作为寻找条件(如文件名、大小、修改时间、权限等信息),一旦匹配成功则默认将信息显示到屏幕上。

Find常用选项及其作用如下:

-name      匹配名称

-perm       匹配权限(mode为完全匹配,-mode为包含即可)

-user        匹配所有者

-group     匹配所有组

-mtime -n +n   匹配修改内容的时间(-n指n天以内,+n指n天以前)

-atime -n +n    匹配访问文件的时间(-n指n天以内,+n指n天以前)

-ctime -n +n    匹配修改文件权限的时间(-n指n天以内,+n指n天以前)

-nouser    匹配无所有者的文件

-nogroup 匹配无所有组的文件

第3章管道符、重定向与环境变量

输入输出重定向

输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。在日常的学习和工作中,相较于输入重定向,我们使用输出重定向的频率更高,所以又将输出重定向分为了标准输出重定向错误输出重定向两种不同的技术,以及清空写入追加写入两种模式。

标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入。

标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。

错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。

输入重定向中用到的符号及其作用:

命令 < 文件

将文件作为命令的标准输入

命令 << 分界符

从标准输入中读入,直到遇见分界符才停止

命令 < 文件1 > 文件2

将文件1作为命令的标准输入并将标准输出到文件2

输出重定向中用到的符号及其作用:

命令 > 文件

将标准输出重定向到一个文件中(清空原有文件的数据)

命令 2> 文件

将错误输出重定向到一个文件中(清空原有文件的数据)

命令 >> 文件

将标准输出重定向到一个文件中(追加到原有内容的后面)

命令 2>> 文件

将错误输出重定向到一个文件中(追加到原有内容的后面)

命令 >> 文件 2>&1 

命令 &>> 文件

将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

管道命令符

管道命令符的作用是把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入。这个管道符就像一个法宝,我们可以将它套用到其他不同的命令上,比如用翻页的形式查看/etc目录中的文件列表及属性信息。示例:

[root@linuxprobe ~]# ls -l /etc/ | more

命令行通配符

通配符就是通用的匹配信息的符号,比如星号(*)代表匹配零个或多个字符,问号(?)代表匹配单个字符,中括号内加上数字[0-9]代表匹配0~9之间的单个数字的字符,而中括号内加上字母[abc]则是代表匹配a、b、c三个字符中的任意一个字符。

常用转义字符

反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串。

单引号(''):转义其中所有的变量为单纯的字符串。

双引号(""):保留其中的变量属性,不进行转义处理。

反引号(``):把其中的命令执行后返回结果。

重要的环境变量

作为一名态度谨慎、有经验的运维人员,在接手了一台Linux系统后一定会在执行命令前先检查PATH变量中是否有可疑的目录。可以使用env命令来查看到Linux系统中所有的环境变量。Linux系统中最重要的一些环境变量如下:

变量名称

作用

HOME

用户的主目录(即家目录)

SHELL

用户在使用的Shell解释器名称

HISTSIZE

输出的历史命令记录条数

HISTFILESIZE

保存的历史命令记录条数

MAIL

邮件保存路径

LANG

系统语言、语系名称

RANDOM

生成一个随机数字

PS1

Bash解释器的提示符

PATH

定义解释器搜索用户执行命令的路径

EDITOR

用户默认的文本编辑器

变量是由固定的变量名与用户或系统设置的变量值两部分组成的,我们完全可以自行创建变量,来满足工作需求。如果工作需要,可以使用export命令将其提升为全局变量,这样其他用户也就可以使用它了。



猜你喜欢

转载自blog.csdn.net/weixin_42534940/article/details/81016621