linux 学习总结

下列是linux学习的基本知识点梳理:

Vim编辑器

vi:visual interface

模式化:

编辑模式:命令模式

输入模式

末行模式

编辑模式--》输入模式

i:insert

a:append

o:new line

I:行首

A:行尾

O:新建上方

编辑模式--》输入模式

ESC

编辑模式--》末行模式

末行模式--》编辑模式

ESC

打开Vim

vim

vim  /path/to/somewhere

+# :#为行号

关闭vim

:q  直接退出

:q! 强制退出

:wq  保存退出  同:x  ;ZZ

光标跳转

h:左

j:下

k:上

l:右

单词件跳转

w:下一个单词词首

e:当前或下一个单词词尾

b:当前或前一个单词词首

行内间跳转

^:跳转至行首第一个非空白字符

0:跳转至行首

$:跳转至行尾

行间移动:

#G:

1G  第一行    G:尾行

编辑命令

字符编辑

x:删除光标所在处的字符

r:替换光标所在处的字符

删除

d:删除

d^:删除至行首

d$:删除至行尾

dd:删除整行

dw   de   db

删除内容会被vim编辑器保存至缓存区当中

粘贴

p

如果此复制或者删除的内容不是一正行

p:粘贴至当前光标所在处后面

P(大写):粘贴至当前光标所在处前面

如果复制或者删除的是一整行

p:粘贴至行下方

P:粘贴至行上方

复制

y

y^      y$      y0

yw      ye      yb

yy  复制整行

改变

c

同y  d  操作

撤销此前操作

u :undo

撤销此前编辑操作

#u

Ctrl+r 回复之前撤销操作

.:重复前一个编辑操作

翻屏操作

Ctrl+f  向后翻一屏

Ctrl+b  向前翻一屏

Ctrl+d  向后翻半屏

Ctrl+u  向前翻半屏

vim 的末行模式

(1)地址  定界

:start_pos , end_pos

#:第#行

#,#:#行到#行

#,+#:#行到后面#行

.:当前行

$:最后一行

%:全文,相当于(1,$)

/part1/ :第一次被此模式匹配到的行

后可跟编辑命令

d  y      w r

(2)查找

/PATTERN  :向尾部进行

?PATTERN:想首部进行

n:与命令向反方向

N:与命令向同方向

(3)查找替换

s:在末行模式下,在地址定界的范围内完成查找替换操作

s/要查找的内容/要替换的内容/修饰符

要查找的内容:可使用模式

要替换的内容:不能使用模式,但可以使用后引用符,以引用前面模式中的分组括号所                                                                           匹配到的内容

&:引用查找的内容匹配到正文中

修饰符

i:忽略大小写

g:全局替换

/:用于分割符,所以,要查找的内容或替换的内容中出现此符号,要使用\对其进行转意

\/

分割符可以替换成其他符号:@  #

多文件模式:

vim  file1 file2

:next  下一个

:first

:prev

:last

:wqall

:q!all

多窗口分割

vim  -o | O  file1 file2

单文件窗口分割

Ctrl + w  ,s  :水平分割

Ctrl  +w ,v  :垂直分割

定制vim的某些特性

(1)行号

显示:set nu

禁用:set nonu

(2)括号匹配

显示:set sm

禁用:set nosm

(3)自动缩进

显示:set ai

禁用:set noai

(4)高亮搜索

显示:set hlsearch

禁用: set nohlsearch

(5)语法着色

显示:syntax on

禁用  : syntax off

:help   获取帮助

特性设定的永久生效方式:

全局配置文件:/etc/vimrc

用户个人配置文件:~/.vimrc

例:

复制/etc/grub.cfg配置文件至/tmp目录,用查找替换命令删除/tmp/grub.cfg文件中的行首的空白字符;

复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的 行首加一个#; 原有空白字符保留;

替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;

删除/tmp/functions文件中所以#开头,且#后面至少跟了一个空白字符的行的行首#

find 命令

find [OPTIONS].....【查找路径】【查找条件】【处理动作】

查找路径:默认为当前路径

查找条件:指定的查找标准   可以根据文件名  大小 属主属组  类型等进行;默认找出当前路径的所有文件

处理动作:对符合条件的文件做什么动作;默认为输出屏幕

查找条件:

根据文件名查找

-name  “文件名称” 支持glob

-iname “文件名称”不区分文件大小写

-regex    “PATTERN”

根据属主属组查找

-user username  查找属主为指定用户的文件

-group  groupname   查找属组为指定用户的文件

-uid   userid   查找文件属主为指定uID的文件

-gid  groupid  查找文件属组为指定uid的文件

-nouser:查找没有属主的文件

-nogroup :查找没有属组的文件

根据文件类型查找

-type  type

f:普通文件

d:目录文件

l:符号链接

b:块设备

c:字符设备

p:命名管道

s:套接字

组合查找条件

与条件:-a

或条件:-o

非条件:-not   !

!a -o !b =!(a -a  b)

根据文件大小查询:、

-size 【+|-】#unit

单位为:k,M,G

根据时间戳:

以天为单位

-atime

-mtime

-ctime

以分钟为单位

-amin

-mmin

-cmin

根据权限

-perm  【/|-】 MODE

MODE :精确匹配

/mode:任何一类对象的任何一位权限符合条件即可

-mode  :为每一个对象指定的每一位权限都必须同时存在符合条件

处理动作

-print  默认处理动作

-ls     类似查找文件“ls -l”操作

-delete   删除查找到的文件、

-fls   /path/to/somefile  将查到的文件的详细路径信息保存到指定的文件中

-exec COMMAND {}\ 无需用户确认  执行

例:

查找/var目录属主为root,且属组为mail的所有文件;

查找/usr目录下不属于root、bin或hadoop的所有文件;

查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的所有文件;

查找当前系统上没有属主或属组,且最近一周内曾被访问过的所有文件;

查找/etc目录下大于20k且类型为普通文件的所有文件;

查找/etc目录下所有用户都没有写权限的文件;

查找/etc目录下至少有一类用户没有执行权限的文件;

查找/etc/init.d目录下,所有用户都有执行权限,且其它用户拥有写权限的文件

bash环境变量

配置文件,生效范围划分,分为两类

全局配置

/etc/profile,/etc/profile.d/*.sh

/etc/bashrc

个人配置

~/.bash_profile

~/.bashrc

按照功能划分,分为两类:

profile类   为交互式shell提供配置文件

/etc/profile   /etc/profile.d/*.sh

~/.bash_profile

定义环境变量    运行命令或者脚本

bashrc类   为非交互式shell提供配置文件

/etc/bashrc

~/.bashrc

定义命令别名   定义本地变量

变量:

类型:

环境变量:作用范围为当前shell 及其子进程

本地变量:作用范围为当前shell进程

局部变量:作用范围为当前shell进程中某代码片段

位置变量:$1  $2

特殊变量: $?

变量定义方式:

BASH 内置变量:可以直接调用,内置许多环境变量

自定义变量:     变量赋值:变量名=值

定义本地变量:

name = value

set 查看

定义环境变量:

export name=value

declare -x name =value

查看:env   printenv export

撤销变量:

unset name

引用变量:

$name ,${name}

bash中的引用符号

“”    弱引用

‘’  强引用

··      命令引用

配置文件作用次序

交互式:

/etc/profile    >    /etc/profile.d/*.sh   >   ~/.bash_profile   >   ~/.bashrc   >  /etc/bashrc

非交互式:

~ /.bashrc      >    /etc/bashrc      >  /etc/pfofile.d/*.sh

linux文件系统上的特殊权限

权限模型:u  g   o

r   w  x

进程的安全上下文

前提:进程有属主;文件有属主和属组

(1)用户是否能够把某个可执行程序文件启动为进程,取决于用户对程序文件是否 拥有执行权限

(2)程序启动为进程之后。此进程的属主为当前用户,也是进程的发起者,进程所属组,及用户的基本组

(3)进程拥有访问权限,取决其属主的访问权限

进程的属主,同文件的属主,则应用文件属主权限

进程的属主,属于文件的属组,则应用文件属组权限

否则应用其他权限

SUID

任何一个文件能否启动为进程,取决于发起者对程序文件是否有执行权限

启动为进程后,其属主不是发起者,而是文件自己的属主,这种机制SUID

chmod  u + s  file

chmod   u - s  file

注意:s:属主原本拥有x权限

S:属主原本不拥有X权限

SGID

默认情况下,用户创建文件时,其属组为次用户的基本组

一旦某目录被设定为SGID权限,则对此目录拥有写权限的用户在次目录创建的文件所属的组为目录的基本                       组,而非用户的基本组

Sticky

对于一个多人可行的目录,此权限用于限定每个用户仅能删除自己的文件

chmod o+t file

chmod o-t file

让普通用户能使用/tmp/cat去查看/etc/shadow文件

创建目录/test/data,让某组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组;此                   外,每个用户仅能删除自己的文件;

时间: 2024-08-03 09:32:03

linux 学习总结的相关文章

linux学习之路之LVM

试想一种情况,当初我们在规划磁盘的时候,只给某一个磁盘或分区之划分了30G的容量,但是后来,随着业务的需求,该磁盘或者分区的使用量会越来越大,等到以后再有数据存放时,发现该磁盘或者分区的容量不够用,此时该怎么办了?可以新增一个磁盘,经过格式化,挂载等过程就可以使用这个磁盘了,再将原来磁盘的数据完全的复制过来.等到后来又发现,规划的磁盘又太大了,然后又使用上述方法来减少磁盘的大小.虽然这种方法可行,但是效率低,比较复杂.不应该是我们首选的方法. 当然,我们可以这样做,将多个磁盘或者分区(PV)组合

Linux学习日志2-vim使用基础

vim是linux操作系统下的一个文本编辑工具,功能非常强大,但刚学习起来比较复杂.vim的所有功能要讲明白得有几百页,在这里只是记录一下vim的一些基本用法. 首先vim打开文件的三种方式: vim +# xxx(#是数字):表示打开xxx文件并将光标定位到指定行. vim -o xx1 xx2 xx3:表示同时打开三个文件,垂直分割显示 vim -O xx1 xx2 xx3:表示同时打开三个文件,水平分割显示 多个文件间跳转:键入ctrl+w后:→向左.←向右.↑向上.↓向下 vim打开文件

                        linux     学习  

决心书 我叫孙启浩,出生在山东淄博的一个农村.15岁初中还没有毕业,就去上了技校,其实父母是想让我提早的步入社会,我在那个地方学的是'电厂热能动力装置' 本来我是想学it的可是我父母说就学这个因为在我们那里电厂找工作也好找工资肯定比学it工资要高,我就这样在那个对我来说无所谓的学校学了两年半.放暑假的时候我哥回来说要进京学it,我就想要不我也去学?因为我对这个it还是挺感兴趣的,之后就来了北京,先去看了一个学校叫'八维'觉得这个学校不怎么好,上来先学单词什么的我这种人一看书就想睡觉.然后我父亲的

linux学习笔记(一)-文件目录相关的命令&&文件通配符

一.几个命令概述 1.查看目录以及目录底下的文件:ls(-a显示隐藏文件:-d显示目录本身:-l显示详细内容:-R递归显示,即把子目录的文件也显示出来:-h以更加被人类理解的格式显示,比如显示文件大小的时候用M为单位显示:-i显示文件索引ID) 2.查看文件内容:cat,head,tail,less,more,tac cat:将文件连接起来,输出在屏幕上,可接多个文件(-E:显示隐藏的换行符:-n:显示出行号) head:默认查看文件的前10行(-n#:查看文件的前#行.空白行也是一行) tai

Linux学习日志day1——无人值守系统安装DHCP+TFTP+PXE+Kickstar

Linux学习日志day1--无人值守批量系统远程网络安装(DHCP+TFTP+PXE+Kickstar)                                         --作者:江信瀚 服务器环境介绍: 主机名:workstation.example.com 关闭SElinux以及防火墙 虚拟机:VMware(关闭了VMware的DHCP服务) 网卡配置: 静态IP获取! IPV6全部都删除,因为根本用不到 子网IP可以在VMware中设置 8.8.8.8是谷歌的DNS服务器

linux学习-练习1

touch 创建多目录 ls查看当前目录下的所有隐藏文件 ls查看/boot目录下面的所有目录 帮助的使用 内部命令 用 help command   或  man bash 外部命令 用 command --help 或  command -h 使用手册 man 信息页 info date命令: 显示昨天 : date -d yesterday 显示前天 : date -d '-2 day' 显示当天 :  date -d '0 day' +%F 显示当前日期,格式:2016-08-08 显示

51CTO学院三周年,我的linux学习思想分享

51CTO学院三周年了,我也关注学院三周年了,在51CTO的平台上,让我学到了很多的东西,也交到了很多朋友,每当你发一篇博文,总会有些志同道合的小伙伴们去点赞,甚至还会有大神高手,去指出你分享内容里面的不足.在和这些虚拟的未曾相识的朋友们的交流中我的技术得到了提高,时光荏苒,一晃都三年了. 首先我要感谢51CTO做的一个关于技术的分享平台,经过大家的分享,里面的博客已经非常丰富了,很多优秀的文章可以供我们去学习和分享.我是一名运维工程师,从事运维工作已经3年多了,每天上班的第一件事情就是登上我的

linux学习之centos(三):网卡配置

Linux系统版本:Centos 6.5 在linux学习之centos(二):虚拟网络三种连接方式和SecureCRT的使用中,使用远程工具SecureCRT,通过“ifconfig eth0 + 具体的ip地址”命令给linux配IP地址,但是这种配置方式存在以下问题: 只能临时生效,一旦重启,需要重新配置: 只能配置ip地址和子网掩码,可以连接内网,是无法连接外网的. 如果想要连接外网,ip地址.子网掩码.网关.DNS缺一不可. 如何真正的给CentOS配一个ip,而且设置成功后,通过使用

Linux学习 -- Shell基础 -- 概述

Shell是什么? 命令解释器 编程语言 Linux支持的Shell类型 cat /etc/shells 主要学习 bash 脚本执行方式 echo echo -e 单引号 -- 原始字符串  双引号 -- 支持转义字符串 \e[1;31m xxx  开启颜色 \e[0m    关闭颜色 首行:#!/bin/bash #写好注释 执行方式: 方式1 sh xxx.sh 方式2 chmod 755 xxx.sh  ./xxx.sh 或 绝对路径 Linux学习 -- Shell基础 -- 概述

Linux学习之CentOS(十三)--CentOS6.4下Mysql数据库的安装与配置

原文:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/07/3003278.html 如果要在Linux上做j2ee开发,首先得搭建好j2ee的开发环境,包括了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有详细讲解了Linux学习之CentOS(七)--CentOS下j2ee环境搭建),如果要开发web项目,我们当然可以安装一个myeclipse到Linux系统上去,这个安装方法和安装eclipse完全相同