linux笔记

smtp服务配置 在/etc/main.rc下面

1 Standard commands(系统调用)用户在shell环境中可以操作的指令或可执行文件
2 System calls(系统调用)系统核心可呼叫的函数与工具等

3 Library functions(库函数)一些常用的函数与函数库 大部分为c的函数库
4 Special devices(设备文件说明)装置文件的说明 通常在/dev下的文件
5 File formats(文件格式)配置文件或者是某些文件的格式
6 Games and toys(游戏和娱乐)游戏
7 Miscellaneous(杂项惯例协定)惯例与协议等 例如linux文件系统 网络协议 ASCII code 等等的说明
8 Administrative Commands(管理员命令)系统管理员可用的管理指令
9 跟kernel有关的文件

C+u从光标处像前删除指令串 C+k从光标处向后删除指令串
C+a将光标移到指令串最开头 C+e讲光标移到指令串最后面
vim中使用:!command command为shell命令 可在vim中执行shell命令

H:当前屏幕上方
M:当前屏幕中央
L:当前屏幕下方

ctrl+f–>向上翻一页
ctrl+b–>向下翻一页
ctrl+d–>向下翻半页
ctrl+u–>向上翻半页

20G:跳转到20行
G:跳转到最后一行
gg:跳转到第一行

w:向后跳一个单词的长度,即跳到下一个单词的首字母
b:向前跳一个单词的长度,即跳到上一个单词的首字母

D, d$:从当前光标开始剪切一直到行末
d0:从当前光标开始剪切一直到行首(包括行最前面的空格)
d^:从当前光标开始剪切一直到行首(不包括行最前面的空格)
x:删除当前光标处的字符 向后
X:删除当前光标前一个字符

选中一段代码
v: 从光标位置开始 到光标位置结束
V: 每次选一行
>>:向右移动
\<\<:向左移动
.:重复上次操作

rx:用字符x替换当前字符
R:替换光标已经后面的所有字符

:%s/old/new/g–> 用new替代所有的old
:n1,n2s/old/new/g–> 用new替代n1-n2行内所有的old

passwd 修改密码
useradd 添加用户
userdel -r username 彻底删除用户

date 显示日期
date date +%[yY]/%m/%d%H%M%S

cal 显示日历
cal cal 2016 cal 10 2016

bc 打开计算器 quit 离开计算器

touch 新建文件
:sp 分屏 :vsp 竖分屏 ctrl+w+w 在两个窗口切换
vertical resize +(-)n 当前分屏扩大(或减小)n个单位

grep xxx -rn ./ 递归查询当前目录下所有的xxx
-r 递归 -n显示行号 ./指当前目录

ctrl+s 锁屏 ctrl+q 解锁

:nohl 取消高亮
:set noai 取消自动缩进
:set paste 进入粘贴模式
:set nopaste 退出粘贴模式

tar zcvf filename.tar.gz filename2 打包压缩
tar zxvf filename.tar.gz 解压

df -sh 查看硬盘使用情况
du -sh 查看当前文件夹大小

umask 查看文件创建时默认权限
umask -S 以符号类型显示权限
umask 002 修改文件创建时的默认权限
(文件默认无x,目录默认有x,umask显示要去掉的权限,输入2表示要拿掉写权限)

chgrp groupname dirname/filename 修改文件/目录的用户组 -R 递归进行

chown username dirname/filename 修改文件/目录的所有者 -R 递归进行
chown username:groupname dirname/filename 同时修改用户组和所有者

chmod {ugoa} {+-=} {rwx} 文件或目录
u(user). g(group). o(other). a(all)
+(加入). -(除去). =(设置).
chmod u=rwx,go=rx file
chmod a+w file
chmod a-w file

chattr [+-=] [ASacdistu] 文件或目录 隐藏属性
+(增加) -(删除) =(设置)
A: 访问文件时不修改atime
S: 修改文件的时候同步写入磁盘
a: 文件只能追加数据不能删除和修改数据 (只有root有权限设置)
c: 存储时自动压缩文件 读取时自动解压
d: 当dump程序被执行时 设置d属性可使该文件或目录不被dump备份
i: 不能被 删除 改名 设置连接 写入 添加数据
s: 如果文件被删除它将完全从磁盘中删除
u: 与s相反 文件被删除数据还存在磁盘中 可以用来找回文件

chattr设置的是隐藏属性 需要以lsattr查看
lsattr [-adR] 文件或目录
-a: 将隐藏文件的属性也列出来
-d: 如果接的是目录 仅列出目录本身属性 而非目录内的文件名
-R: 连同子目录的数据一并显示

whereis -l 显示where搜索的目录 主要是/bin /sbin下的执行档 以及/usr/share/man底下的man page

find [PATH] [option] [action]
1.与时间相关的选项: 共有-atime, -ctime, -mtime. 以-mtime为例说明
-mtime n: n为数字,第n天前的一天之内(n->n+1天内)被修改过的文件
-mtime +n: n天之前不含第n天(n+1天前)被修改过的文件
-mtime -n: n天之内含第n天(n天内)被修改过的文件
-newer file: file为一个存在的文件,列出比file还要新的文件
find / -mtime 0 (0表示当前时间,查找24小时内被修改过的文件)
find / -newer /home/sjq (查找文件日期比sjq新的文件)
2.与使用者有关的参数
-uid n: n为用户账号ID即UID
-gid n: n为用户组ID即GID
-user name: name为用户名称
-group name: name为组名
-nouser: 寻找owner不在/etc/passwd中的文件
-nogroup: 寻找group不在/etc/group中的文件 例如该用户或者用户组被删除了就会出现这两种情况
3.与文件权限及名称有关的参数
-name filename: 搜索名为filename的文件 find / -name “sjq“查询所有包含sjq的文件夹
-size [+-]SiZE: 搜索比SIZE还要大(+)或小(-)的文件 SIZE单位 c:byte k:1024bytes 例如50KB-> 50k
-type TYPE: 搜索文件类型为type的文件
-perm mode: 搜索文件权限等于(=)mode的文件
-perm -mode: 搜索文件权限包含(>=)mode的文件
-perm /mode: 搜索文件权限被mode(<=)包含的所有文件
4.额外可进行的动作
-exec command: command为其它指令,-exec后面可以再接额外的指令来处理搜索到的结果
find / -name “sjq“ -exec ls -l {} \; 将包含sjq的文件使用ls -l列出来 指令不支持别名 例如ll
{} 代表的是由find找到的内容 -exec一直到 \;是关键词

找出/底下文件大小介于50k到60k之间的文件,并将权限完整的列出(ls -l)
find / -size +50k -a -size -60k -exec ls -l {} \; (-a 是and的意思)
找出/下文件容量大于50k且文件所属人不是root的文件名,且将权限完整的列出(ls -l)
find / -size +50k -a ! -user root -exec ls -ld {} \;
find / -size +50k -a ! -user root -type f -exec ls -l {} \; (两种都可以, !表示反向选择)
找出/下容量大于1500k已经容量等于0的文件
find / -size +1500k -o -size 0 (-o 是or的意思)

gzip file 删除原文件产生压缩文件
gzip -c file > file.gz (-c将压缩后的数据输出在屏幕上)
gzip -d file.gz 解压
gzip -v file 显示压缩比
gzip -# file #为数字代表压缩等级 -1最快 压缩比最差 -9最慢 压缩比最好 默认-6
可以使用 zcat zgrep zmore zless

bzip2 file 用法同gzip
bzip2 -k file 保留原文件并产生压缩文件
可以使用 bzcat bzgrep bzmore bzless

xz, xzcat/xzmore/xzless/xzgrep

tar [-z|-j|-J] [cv] [-f 待建立的文件名] filename 打包压缩
tar [-z|-j|-J] [tv] [-f 既有的tar文件名] 查看文件名
tar [-z|-j|-J] [xv] [-f 既有的tar文件名] [-C 目录] 解压缩
-c建立打包文件 v查看打包文件名 -t查看打包文件名 -x解打包或解压缩可搭配-C在特定目录
-z 使用gzip后缀gz -j 使用bzip2后缀bz -J 使用xz后缀xz
-p: 保留备份数据的原本权限与属性
-P: 保留绝对路径
–exclude=FILE: 在压缩的过程中不将FILE打包

dd if=”input_file” of=”output_file” bs=”block_size” count=”number”
bs规划的一个block大小,默认512bytes(一个sector的大小) count多少个bs的意思

PS1(提示符限定)
\d: 可显示出[星期 月 日]的日期格式 如: “Mon Feb 2”
\H: 完整的主机名
\h: 仅取主机名在第一个小数点之前的名字
\t: 显示时间 为24小时格式[HH:MM:SS]
\T: 显示时间 为12小时格式[HH:MM:SS]
\A: 显示时间 为24小时格式[HH:MM]
\@: 显示时间 为12小时格式[am/pm]
\u: 目前使用者的账号名称
\v: BASH的版本信息
\w: 完整的工作目录名称 由根目录写起的目录名称 但家目录会以~代替
\W: 利用basename函数取得工作目录名称 仅显示最后一个目录名
#: 下达的第几个命令
\$: 提示字符 如果是root显示# 否则是$

bash通配符
* 代表0-无穷多个任意字符
? 代表一个任意字符
[] 代表一个括号内的字符 如[abcd] 表示abcd中的一个
[-] 代表编码顺序内的一个字符 如[0-9]表示0-9的一个
[^] 反选 如[^abc]表示非abc的任意一个

基础正则 /492

sed /504
-i直接修改源文件
a新增(下一行) c取代内容 d删除 i插入(上一行) p打印 s取代字符串替换

awk /511

ps 查看进程信息
-a 显示所有进程(包括其它用户)
-u 显示进程详细状态
-x 显示没有控制终端的进程
-w 显示加宽, 以便显示更多信息
-r 显示正在运行的进程

top 动态显示进程

shell
test /532
判断符号 [] /535


if ... then  && ||
    if [ exp ]; then
        ...
    elif [ exp2 ]; then
        ...
    else
        ...
    fi

case ... esac
    case $varname in
        "var1")
            ...
        ;;
        "var2")
            ...
        ;;
        *)
            ...
        ;;
    esac

function
    function fname() {
        ....
    }

while do ... done
    while [ condition ]
    do
        ...
    done

until do ... done
    until [ condition ]
    do
        ...
    done

for ... do ... done
    for var in con1 con2 con3 ...
    do
        ...
    done

    for (( 初始值; 限制值; 执行步阶 ))
    do
        ...
    done

${} 用来做变量替换 与$没区别 但精确界定变量名范围
$() 在bin/shell中 与(反引号)效果一样 做命令替换 并不是每种shell都支持
$(()) 用来做整数运算
${RANDOM} 产生随机数
seq 1 n 产生1-n的顺序数

sh [-nvx] script.sh
-n: 不执行script 仅查询语法问题
-v: 执行前 先输出script
-x: 将用到的script输出