初学Linux

Linux操作系统,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早在AT&T的贝尔实验室开发。
OS组成部分
linux系统一般有4个主要部分:Kernel(内核)、Shell(人机交互界面)、File System(文件系统)、Application(应用程序)。Kernel、Shell、File System一起形成了基本的操作系统,它们使得用户可以运行程序、管理文件并使用系统。
linux Kernel
Kernel是操作系统的核心,具有很多最基本功能,如虚拟内存、多任务、共享库、需求加载、可执行程序和TCP/IP网络功能。linux Kernel的mode分为一下几个部分:存储管理、CPU和进程管理、文件管理、设备管理和驱动、网络通信、系统的初始化和系统调用等。
linux Shell
Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户的命令并把它送到内核去执行,是一个命令解析器。另外,shell编程序语言具有普通编程语言编写的shell程序与其他应用程序具有同样的效果。bash是linux默认的shell
linux File System
文件系统是文件存放磁盘等存储设备上的组织方式。

路径问题
路径分为Absolute Pathname(绝对路径)和Relative Pathname(相对路径)
Absolute Pathname:是从盘符开始的路径
Relative Pathname:是从当前路径开始的

linux的文件系统结构
初学Linux_第1张图片
bin(binaries)存放二进制可执行文件
sbin(super user binaries)存放二进制可执行文件,只有root才能访问
etc(etcetera)存放系统配置文件
/etc/passwd
在linux中,/etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本信息。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作,这个文件对所有用户都是可读的。
/etc/shadow
现在linux系统中,口令不再直接保存到passwd文件中,通常将passwd文件中的口令字段使用一个“x”来代替,将/etc/shadow作为真正的口令文件,用于保存包括个人口令在内的数据。当然shadow文件是不能被普通用户读取的,只有超级用户才有权读取。
“口令”字段存放的是加密后的用户口令字,如过为空,则对应的用户没有口令,登录时不需要口令;*号代表帐号被锁定;!!表示这个密码已经过期。
6 开头的,表明是用SHA-512加密的。
1 表明是用MD5加密的。
2 表明是用Blowfishi加密的。
5 是用SHA-256加密的。
usr(unix shared resources)用于存放共享的系统文件
home存放用户文件的根目录
root超级用户目录
dev(device)用于存放设备文件
mnt(mountain)系统管理员安装临时文件系统的安装点
boot存放系统引导时使用的各种文件
tmp(temporary)用于存放各种临时文件
var(variable)用于存放运行时需要改变数据的文件

Linux基础命令的学习
clear:(ctrl+l):清除这个屏幕上的内容。

pwd:显示当前路径。

cd:切换目录,接受绝对路径和当前路径。

ls:列出当前路径的文件和目录。
-l:列出长数据串,包含文件的属性与权限数据等。
例如:drwxr-xr-x
开头第一个字母:
字母“-”表示该文件是一个普通文件。
字母“d”表示该文件是一个目录,字母“d”是dirtectory(目 录)的缩写。
字母“l”表示该文件是一个链接文件。字母“l”是link(链接)的缩写。类似于Windows下的快捷方式。
Linux中的七种文件类型分别为:d目录文件、l符号连接、s套接字文件、b块设备文件,二进制文件、c字符设备文件、p命名管道文件、-普通文件,或者更准确的说,不属于以上几种文件。
剩下的九个字母,表示该文件的权限,每三个分成一组,第一组表示所属者的权限,第二组表示同组人的权限,最后一组表示其他人的权限。其中,r表示只读,w表示只写,x表示可执行。上面那个例子表示的是:这是一个目录文件,自己可读可写可执行,同组人和其他人只能读和执行,不能写。
-a:列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)
-d:仅列出目录本身,而不是列出目录的文件数据
-h:将文件容量以较易读的方式(GB,kB等)列出来
-R:连同子目录的内容一起列出来(递归列出),等于该目录下所有的文件都会显示出来

chmod:用于改变文件或者目录的访问权限。用户用它控制文件或者目录的访问权限。一种包含文字表达式的文字设定法,另一种是包含数字的数字设定法。
文字设定法
chmod [who] [+|-|=] [mode]文件名
操作对象who可是下述字母中的任意一个或者它们的组合:
—u表示“用户(user)”,即文件或者目录的所有者。
—g表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
—o表示“其他(others)用户”。
—a表示“所有(all)用户”,它是系统默认值。
操作符号可以是:
—+添加某个权限。
— -取消某个权限。
— =赋予给定权限并取消其他所有权限(如果有的话)
在一个命令行中可以给出多个权限方式,期间用逗号隔开。例如:
chmod g+r, o+r example
—-数字设定法
了解用数字表示的属性的含义:0表示没有权限,1表示可写权限,4表示可读权限。然后将其想加,所有数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
例如,如果想让某个文件的属主有读/写两种权限,需要把4(可读)+2(可写)=6(读/写)。
数字设定法的一般形式为:
chmod [mode] 文件名
chmod 777 File 给文件File的所属者同组人和其他人都赋予可读可写可执行的权限。

touch:创建一个新的普通文件。

mkdir:用来创建目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。
-p:创建多个目录,p代表parent父母,例如 mkdir -p dir1/dir2 创建目录dir1和目录dir2,并且目录dir2在目录dir1的下面。
-m:创建权限为什么的目录,例如:mkdir -m 777 dir1 创建一个权限为777的目录dir1.

cp:用来复制文件到另一个文件中,或者复制目录到另一个目录中,包含目录里面的内容。cp指令用于复制文件或者目录,如同时指定两个以上的文件或者目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或者目录复制到此目录中。若同时指定多个文件或者目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
-i或–interactive覆盖文件之前先询问用户。
-r递归处理,将指定目录下的文件与子目录一并处理。
cp -r file1 file2 file3 dir1 dir2 同时将文件File1 File2 File3 dir1复制到dir2中

mv:移动文件、目录或者给文件或者目录重命名。
mv 文件名 文件名 将原文件改名为目标文件
mv 文件名 目录名 将文件移动到目标目录
mv 目录名 目录名 目标目录已存在,将原目录移动到目标目录;目标目录不存在则改名

rm&rmdir:删除文件,删除目录。rmdir 只能删除空目录 rm -r能删除所有目录
注意:rm不仅可以删除目录,也可以删除其他文件或者压缩包,为了增强大家的记忆,无论删除任何目录或者文件,都直接使用rm -rf 目录/文件/压缩包

man Linux下的帮助
man XX
info XX
XX -help

cat:将文件中的内容显示到屏幕上,将两个或者两个以上的文件连接到一个大文件中。
/dev/null :Linux黑洞 这个文件永远为空,可以用来清空文件
; > b : 清空文件

more:将文件中的内容分屏显示到屏幕上。
+n 从第n行开始显示
-n 定义屏幕大小为n行
/pattern 在每个档案显示前搜寻该字符串(pattern)
-c 从顶部清屏,然后显示。
-d 提示“Press space to continue,q to quit(按空格键继续,按q键退出)”
-l 忽略(ctrl +l)换页字符

head & tail :显示文件的前几行或者最后几行。
head -number fileName 例如 head -5 a 显示a文件的前五行

id & users :显示用户的信息
id root
id 1000

who & w:都是查看用户的操作,系统管理员若想知道某一时刻用户的行为,只需要输入命令w第一行显示系统的汇总信息,字段分别表示系统当前时间、系统运行时间、登陆系统用户总数及系统平均负载信息。 从第二行开始构成一个登录用户信息列表,共有8个栏目,分别显示各个用户正在做的事情及该用户所占用的系统资源。
USER:显示登陆用户帐号名。用户重复登陆,该帐号也会重复出现。
TTY:用户登陆所用的终端。
FROM:显示用户在何处登陆系统。
LOGIN@:是LOGIN AT的意思,表示登陆进入系统的时间。
IDLE:用户空闲时间,从用户上一次任务结束后,开始记时。
JCPU:以终端代号来区分,表示在这段时间内,所有与该终端相关的进程任务所耗费的CPU时间。
PCPU:指WHAT域的任务执行后耗费的CPU时间。
WHAT:表示当前执行的任务。
查看某用户是否登陆系统用户很多的时候,可以在w后面加上某个用户名,则会查看该用户执行任务的情况。

find : find path -option [ -print ] [ -exec -ok command ] {} \;
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
print: find命令将匹配的文件输出到标准输出。
exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为 command’ { } \;,注意{ }和\;之间的空格。
ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
——find命令中的选项
-name filename:查找名为filename的文件
-perm:按执行权限来查找
-user username:按文件属主来查找
-mtime -n/+n:按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n/+n:按文件访问时间来查找文件
-type b/d/c/p/l/f:按文件类型,块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件

grep : Linux系统中grep命令是一种强大的文本搜索工具,它能搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 grep [option(s)] string filename
i 忽略大小写
v:显示不包含匹配文本的所有行。
grep ‘test’ d*:显示所有以d开头的文件中包含 test的行。
grep ‘test’ aa bb cc:显示在aa,bb,cc文件中匹配test的行。
grep ‘[a-z]{5}’ aa:显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

wc :Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
wc [options] filename(s)
c:统计字节数。
w:统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串
l:统计行数。
Q1:统计目前服务器上在做vi操作的用户的数量
w | grep vi | wc -l

ps :列出当前系统中正在运行的进程(process)。
-e :所有的进程均显示出来,与A具有同样的效用
-f :做一个更为完整的输出。
U:显示指定用户下运行的进程

top :当前进程所占cpu的百分比,按q退出

kill :杀死后台正在运行的程序
jobs:查看后台正在运行的程序
fg %jobs号 把后台正在运行的程序调到前台
bg %jobs号 把前台正在运行的程序重新调到后台
sleep 1000 在前台运行
sleep 1000 & 在后台运行
Ctrl + z 将前台任务暂时挂起
Ctrl +c 强制结束程序
pkill sleep 批量杀死后台程序

ping : 测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”、不能打开网页时会说“你先ping网关地址192.168.1.1试试”。
linux下的ping和windows下的ping稍有区别,linux下ping不会自动终止,需要按ctrl+c终止或者用参数-c指定要求完成的回应次数。

ifconfig :查看本机IP地址

telnet :telnet命令通常用来远程登录。
telnet localhost 23      连接本地的主机,端口号为23

ftp :控制在本地机和远程机之间传送文件
ls 列出远程机的当前目录
cd 在远程机上改变工作目录
lcd 在本地机上改变工作目录
ascii 设置文件传输方式为ASCII模式
binary 设置文件传输方式为二进制模式
close 终止当前的ftp会话
hash 每次传输完数据缓冲区中的数据后就显示一个#号
get(mget) 从远程机传送指定文件到本地机
put(mput) 从本地机传送指定文件到远程机

su:临时切换用户身份
su在不加任何参数,默认切换到root用户,但并没有改变root登录环境
su加参数-,表示默认切换到root用户,并且改变root用户的环境
sudo:能把某些超级用户权限有针对性的下放
sudo命令不需要普通用户知道root的密码,使用su切换用户需要输入所切换到的用户的密码,而使用sudo则是当前用户的密码

程序初始化文件
环境变量: 用来存储操作系统或者第三方应用软件所需要使用的一些参数。
初始化文件的特征: 初始化文件中包含在shell启动时执行的命令和变量设置。
bash系统级别初始化文件:/etc/profile
bash用户级别初始化文件:~/.bashrc
bash下面的环境变量的配置: variable=value
实例:VAR1=briup;
echo VAR1(echo:)unsetechoecho VAR1" echo VAR1' echo$VAR1 也是普通字符 其中\是转义字符

PATH:指定可执行程序的搜索路径
which和whereis
都是搜索执行程序的全路径
区别:which是到PATH里面找;whereis是在文件系统里面找

history:显示以前输入的命令输入到屏幕的外壳
!n n代表的是number数字,表示执行历史的第几条命令
!! 表示执行上一条命令

alias :别名,用一个短的命令来代替一个长的命令。
alias c = clear
如果不把它配置到配置文件中,只能在当前的shell中使用
如何配置到配置文件中,用vi编辑器打开并把alias 写进去就好
vi ~/.bashrc

PS1:是终端命令之前的提示,可以使用PS1=VALUE来赋值

.bashrc :配置文件
配置文件中的 umask 表示的是权限掩码
新建目录默认权限:777-umask值;
新建文件默认权限:777-umask值后去掉执行权;
如果umask值为0033,问新建目录、文件默认权限?
新建目录为 : 777-033=744 所属者可读可写可执行,同组人和其他人都只能读
新建文件为 : 777-033=744 744 - 100 =644 所属者可读可写,同组任何其他人只能读。

export:使环境变量在当前shell和子shell中都可用。

Linux中的vi编辑器
vi是所有UNIX系统都会提供的屏幕编辑器,他提供了一个视窗设备,通过它可以编辑文本。当然,对UNIX系统略有所知的人,或多或少都觉的vi超级难用,但vi是最基本的编辑器,学好了vi,以后在UNIX世界里必然畅行无阻、游刃有余。
vi的模式
基本上vi可分为三种操作状态,分为是命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last Line mode),各模式的功能区分如下:
Command mode:控制屏幕光标的移动,字符或者光标的删除,移动复制某区段及进入Insert mode下,或者到Last Line mode。
Insert mode:唯有在Insert mode下,才可做文字数据输入,按Esc等可以回到Command mode。
Last Line mode:将存储文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。
打开vi
vi filename 打开一个文件或者创建一个文件打开,
vi 打开一个新的文件,稍后别命名。
切换到Insert mode编辑文本
i 在光标当前位置插入
a 在光标所在位置插入
o 在光标所在下一行插入
删除文本
x 删除一个字符
dw 删除当前词
3dw 删除三个词
dd 删除当前行
5dd 删除五行
修改文本
r 替换一个字符
cw 替换一个单词
cc 替换一行
C 替换从光标至行尾
复制粘贴文本
yw 拷贝词
yy 拷贝行(或y)
p 当前行下粘贴
:1,2co3 拷贝行1,行2在行3之后
:4,5m6 移动行4,行5在行6之后
保存和退出文件
:w 存盘
:w newfile 存成新文件
:wq 存盘退出vi(或ZZ,或:x)
:q! 强行退出,不存盘

Linux中的元字符、通配符
通配符是由shell处理的(不是所涉及到命令语句处理,其实我们在shell各个命令中也没有发现有这些通配符介绍),它只会出现在命令的“参数”里(它不用在命令名称里,也不用在操作符上)。shell会将其当作路径或者文件名去在磁盘上搜寻可能的匹配,若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。总之,通配符实际上就是一种shell实现的路径扩展功能。
(*) 匹配0或者多个字符
(?)匹配任意一个字符
([list])匹配list中的任意单一字符
([!!list])匹配除list中的任意单一字符
([c1-c2])匹配c1到c2中的任意单一字符如[0-9] [a-z]
({string1,string2,…})匹配string1或者string2(或者更多)其一字符串。
元字符
shell中除了有通配符之外,由shell负责预先解析后,将处理结果传给命令行之外,shell还有一系列自己的其他特殊字符。
; 在前一个命令结束时,而忽略其返回值,继续执行下一个命令
| 命令管线(前面命令的输出结果作为后面内容的输入内容)
(< > >>) 重定向输出后者输入位置(重导向)

你可能感兴趣的:(linux)