`

鸟哥Linux私房菜笔记

阅读更多

查看更清晰格式github地址:

https://github.com/smallbug-vip/repo/blob/master/note/linux/note.mjs

 

#####################################################################################################

第四,五章 首次登陆

#####################################################################################################

 

注意:

单词前面两个-

 

-----------------------------------------

bc计算器

scale=10保留10位数

-----------------------------------------

 

cal显示日历

2016一年的日历

12 2016某月的日历

 

 

-----------------------------------------

date显示时间

+%Y

 

-----------------------------------------

 

ls显示文件(list)

-a显示所有文件

-l显示文件详细信息

-h将占用的字节人性化显示

-d显示目录信息

-i显示 inode ID

-s 显示大小

-1 一行行显示

--time=atime 显示访问时间

--time=ctime 显示创建时间

-R 递归显示

 

-----------------------------------------

 

history查看历史命令

!numner执行历史命令

 

-----------------------------------------

 

whatis查看命令简短信息

makewhatis  生成whatis库

 

-----------------------------------------

 

whereis查找命令的目录及帮助文档的目录

-b 只显示二进制文件

-m 显示帮助文档

 

-----------------------------------------

 

which查找命令所在的路径及有无别名

 

-----------------------------------------

 

apropos查看配置文件简短信息

 

-----------------------------------------

 

man查看命令帮助

/search

n/N  查找

^search  开头

mannumber  passwd查看第几张

man-k clocl查找命令片段

q  退出

 

-----------------------------------------

 

sync将缓存中的内容写到磁盘中去

-----------------------------------------

 

shutdown 

-r now重启

-k显示通知信息不会真的关机

-h 10 10分钟后关机

-h 8:20到时间自己关机

 

reboot重启

-f强制重启

 

poweroff关机

-f强制关机

 

-----------------------------------------

 

运行级别

0 关机

1 单用户

2 不带网络的多用户

3 带网络的多用户

4 保留,用户可以自给定义

5 图形界面的多用户

6 重起系统

 

位置:/etc/rc.d

K 开头表示不运行

S 开头表示运行

 

1,设置开机模式为:命令模式

systemctl set-default multi-user.target

 

2,设置开机模式为:图形模式

systemctl set-default graphical.target

 

runlevel  //显示当前环境级别

 

init number //改变当前环境的级别

 

startx//开启xwindow

 

 

#####################################################################################################

第六章 Linux的文件权限与目录配置

#####################################################################################################

 

用户信息存放目录:

/etc/passwd

用户密码存放目录:

/etc/shadow

组的存放目录:

/etc/group

 

-----------------------------------------

 

文件类型

-普通文件

d 文件夹

b 块设备(U盘)

c 字符型设备文件(鼠标)

l 快捷方式(软连接)

 

-----------------------------------------

 

chmod修改权限

[{ugoa}{+-=}{rwx}][文件或目录]

[rwx=421][文件或目录]

-R递归修改

 

-----------------------------------------

 

chown -R root 修改文件所有者

chown -R root[:.]root /aa修改文件所有者及所属组

 

-----------------------------------------

 

chgrp -R root /aa修改所属组

 

-----------------------------------------

 

文件夹的 x 代表是否可以进入该文件夹,如果没有 x,即使有w,其他用户也不可操作该文件将夹下的文件

文件夹的 w 代表是否可以操作文件夹中的文件,当文件夹有 w 时,即使其他用户没有读该文件夹中文件的权限,该用户也可以删除文件

文件夹没有 r 时,其他用户可以进入该文件夹但是不能读取该文件夹中的文件,但是可以创建文件,操作文件

 

-----------------------------------------

 

file filename查看文件类型

 

-----------------------------------------

目录结构

 

/bin

/sbin

相当于win32的作用

 

/boot

主要存放启动Linux系统所必需的文件,包括内核文件、启动菜单配置文件等

 

/dev

设备文件,字符设备,存储设备

 

/etc 

主要存放系统配置文件

 

/lib

主要存放一些库文件

 

/media 自动挂载

/mnt 手动挂载

在某些Linux的发行版中用来挂载那些USB接口的移动硬盘(U盘)等

 

/opt

可以理解为安装可选程序的地方。安装源码包

 

/proc

内核参数,不占用磁盘大小

 

/root

根用户的家目录。里面存放根目录的数据、文件等。

 

/usr

主要存放安装的软件、系统共用的文件、内核源码等。

 

/tmp

临时文件

 

/var

缓存,日志,数据库文件

 

-----------------------------------------

1>

uname //查看是什么系统

-i //架构

-r //内核

-a //查看所有

 

2>

cat /etc/redhat-release //CentOS Linux release 7.1.1503 (Final)

 

3>

hostnamectl

status 查看操作系统信息

--static查看静态主机名

--transient 查看瞬态主机名

--pretty 查看灵活主机名

4>

hostname    //主机名

 

 

#####################################################################################################

第七章 Linux文件与目录管理

#####################################################################################################

 

mkdir创建目录(make directories)

-p递归创建

-p small/{bug,cat,hadoop}

 

-----------------------------------------

 

echo $PATH

命令默认会在这些目录中去查找

 

PATH=$PATH:/home

添加查找目录

 

-----------------------------------------

 

cp[item] resource target复制文件(copy)

-r复制目录

-p保留文件属性

-u  新文件覆盖旧文件(旧文件不会覆盖新文件)

-l  生成硬链接

-f 强制

-a = -rfp

-d 默认情况下拷贝链接会把原文件拷贝出来,可以加该参数拷贝链接

 

ln创建软硬链接

-s创建软连接

-----------------------------------------

 

mv移动和改名(move)

-i 询问要不要删除(默认)

-r 递归

-f 强制

 

-----------------------------------------

 

alias ll

显示别名

 

alias ll='ls -lh --color=auto'

修改别名

 

-----------------------------------------

 

basename 只显示文件名

dirname 只显示目录名

 

-----------------------------------------

 

cat浏览小文件信息

-n显示行号

 

-----------------------------------------

 

tac反向浏览文件

 

-----------------------------------------

 

nl   不算空行显示行号

-d 算空行显示行号

 

-----------------------------------------

 

more浏览文件信息

(空格)或f翻页

(Enter)换行

q或Q退出

 

-----------------------------------------

 

less浏览文件信息

(空格)或f翻页

(Enter)换行

q或Q退出

上箭头向上翻一行

pgup向上翻一页

/XXX搜索

n下一个搜索结果

-N 显示行号

 

-----------------------------------------

 

head显示文件前几行

-5显示前5行

 

-----------------------------------------

 

tail-tailf显示文件后几行

-n显示后几行

-f动态显示文件末尾内容(监视日志)

 

-----------------------------------------

 

od 查看非文本文件

-t c 以ASCII码格式显示输出

 

strings显示二进制文本文件

 

-----------------------------------------

 

rm删除文件

-r删除目录

-f强制删除

 

rm -rf !(keep1 | keep2)    删除keep1,keep2文件之外的文件

 

-----------------------------------------

 

pwd显示当前目录(print working directory)

 

-----------------------------------------

 

rmdir删除空目录(remove empty directories)

 

-----------------------------------------

 

touch创建文件

 

touch filename 如果filename存在的话就修改其修改时间为当前时间

 

-----------------------------------------

 

umask 权限过滤符

文件 : 666 - umask

目录 : 777 - umask

-----------------------------------------

 

lsattr列出文件隐藏属性

chattr修改文件隐藏属性

+a (文件不可写,文件夹只可创建不可删除)

+i (文件夹中,不可添加也不可删除文件)

 

-----------------------------------------

 

SUID  在命令所有者的位置上出现S代表其他人在执行该命令时具有所有者的权限

chmod u+s xx

chmod 4333 xx

 

SGID 如果一个文件夹的的所属组中出现了S,代表着之后在该文件夹下创建的文件都将会继承该文件夹的所属组

chmod g+s xx

chmod 2333 xx

 

SBIT 只出现在文件夹的其他人权限位,意思是除了root和所有者外其他人即使有权限也不能删除

chmod o+t xx

chmod 1333 xx

 

-----------------------------------------

 

echo "hostname is `hostname`"在字符串中执行命令

echo "hostname is $(hostname)"

输出 : hostname is smallbug

 

-----------------------------------------

 

locate快速搜索(每天跟新一次数据库,新创建的文件可能找不到)

-i不区分大小写

 

updatedb更新资料库

/var/lib/mlocate/mlocate.db  数据库位置

 

-----------------------------------------

 

find path -option [argu] 查找文件

 

-or 或关联关系

-name根据名称查找

-size +5M根据大小查找

-size -5M -size +3M  查找大于3M小于5M的文件

-user smallbug根据所有者查找

-group根据所属组查找

-ctime +1  创建超过1天的文件

-cmin +1创建时间超过一分钟

-amin访问时间

-newer filename 查找比当前文件比较新的文件

-perm 222根据权限查找(2 -> o, 22 -> go)

+222 ugo只要有一个写权限就行

-222 ugo必须都有写权限

 

 

#####################################################################################################

第八章 Linux磁盘与文件系统管理

#####################################################################################################

 

MBR->[分区]->[分区]

 

引导程序(446) + 分区表(64) + 结束符(2)

 

一个分区需要16字节

-----------------------------------------

 

[分区]

 

boot sector -> super block -> inode -> block(默认4K)

 

[super block 记录inode信息和block信息。例如,使用情况]

[inode 每记录一个文件消耗128bit,相当于一本书的目录]

 

-----------------------------------------

[分区]

 

[block group]

boot sector -> { 

[super block->文件系统描述信息->块位图->inode位图->inode表->block],

[super block->文件系统描述信息->块位图->inode位图->inode表->block],

[super block->文件系统描述信息->块位图->inode位图->inode表->block]

}

 

super block : 记录inode和block信息

文件系统描述信息 :记录一个分区中的 block group 信息。

块位图 :记录block区域中哪些block使用了,哪些没使用。

inode位图:同上

inode表:记录文件存放在哪些block中(128/4只能指向32个block)

|--→直接区(12)

|--→间接区(1)

|--→二间接区(1)

|--→三间接区(1)

 

-----------------------------------------

 

filefrag -v cc   查看文件在哪些block中

 

-----------------------------------------

 

dumpe2fs  /dev/sda3   查看分区信息

 

-----------------------------------------

 

du 显示文件夹大小

-s 单层显示

-h 人性化显示

 

-----------------------------------------

 

VFS(虚拟文件系统)  不需要考虑要操作什么文件系统

 

-----------------------------------------

 

df   显示已挂载磁盘信息

-h  人性化显示

-T   显示文件类型

 

-----------------------------------------

 

硬链接不能跨分区

 

-----------------------------------------

 

[分区]

 

1>

fdisk -l            查看分区情况(有多个硬盘的话可以加硬盘名)

 

2>

fdisk /dev/sda      给sda分区

3> 

## m查看帮助

   a   toggle a bootable flag                

   b   edit bsd disklabel

   c   toggle the dos compatibility flag

   d   delete a partition //删除分区

   g   create a new empty GPT partition table

   G   create an IRIX (SGI) partition table

   l   list known partition types //列出分区类型

   m   print this menu

   n   add a new partition //创建一个新的分区

   o   create a new empty DOS partition table

   p   print the partition table //显示分区表

   q   quit without saving changes //不保存退出

   s   create a new empty Sun disklabel

   t   change a partition's system id //修改分区类型

   u   change display/entry units

   v   verify the partition table

   w   write table to disk and exit //保存并推出

   x   extra functionality (experts only)

 

4>

partprobe [/dev/sda]    //更新分区表

 

5> 

mkfs -t ext3 /dev/sda5    格式化分区(=mkfs.ext3 /dev/sda5)

mkfs -t ext3 -b 4096 /dev/sda5   //每一个block是4k

 

6>

mount /dev/sda5 /mnt   //挂载

umount /dev/sda5     //卸载

 

mount -o remount,ro /mnt   //以只读的形式挂载

mount -o remount,rw /mnt //读写权限

mount -o remount,noexec /mnt  //无执行权限

mount -o loop xx.iso /mnt //挂载镜像

vim /etc/fstab   //永久挂载(/dev/sda5   /home/smallbug/workspace   ext3    defaults   0 0)

 

-----------------------------------------

 

fsck -f(强制检查) -C(显示进度)  检查磁盘

 

-----------------------------------------

 

badblock  -sv(进度)    检查坏道

 

-----------------------------------------

 

fuser -mv /mnt    //查看哪个进程占用该磁盘

 

-----------------------------------------

 

tune2fs -l /dev/sda5    查看分区信息

 

-----------------------------------------

 

/proc/swaps    //查看交换分区

 

-----------------------------------------

 

unix2dos -n 123 345    将Linux文件格式转换为windows格式

 

#####################################################################################################

第九章 文件与文件系统的压缩与打包

#####################################################################################################

 

gzip压缩文件为 *.gz

-d    解压

gzip -c hosts > hosts.gz    压缩时保留源文件

 

zcat            查看gzip压缩过的文件

 

gunzip(gzip -d)解压缩文件

 

-----------------------------------------

 

zip -r压缩目录

解压:unzip FileName.zip

压缩:zip FileName.zip DirName

 

-----------------------------------------

 

bzip2压缩文件

-k产生压缩文件后保留原文件

-d  解压

bzip2 -c hosts > hosts.bz2    缩时保留源文件

 

bzcat 查看bzip2压缩过的文件

 

bunzip2解压缩文件

 

-----------------------------------------

 

tar打包文件

-c打包(-x解包)

-v显示详细信息

-f指定文件名

-z打包同时压缩(解压缩)(gzip)

-j打包同时压缩(解压缩)(bzip2)

-t  不解档的情况下,查看文件内容

-C 目录   指定解档目录

 

tar zcvf mkd.tar.gz ./mkd/

 

-----------------------------------------

 

.Z

解压:uncompress FileName.Z

压缩:compress FileName.tar.Z

 

-----------------------------------------

 

增量备份:之备份增加的部分

 

差异备份:只备份全量备份之后的数据

 

-----------------------------------------

 

备份:

-0 全备份

  增量备份   备份顺序:012345

  差异备份   备份顺序:09876

dump 

-u   记录时间,写入到 /etc/dumpdates

-f   指定目录

dump -0u -f /home/back/1.dump /dev/sda3

 

 

restore -r -f /root/rhce/1.dump   恢复备份

    -r  恢复所有数据

    -i  交互(恢复部分文件)

    -t不恢复查看内容

 

-----------------------------------------

 

创建ISO镜像

mkisofs -o xx.iso file1 file2 file3

 

-----------------------------------------

 

cp /dev/cdrom xxx.iso

直接将光盘中的文件复制成iso镜像

 

-----------------------------------------

 

dd if=/dev/sda5 of=test   将sda5分区中的数据备份到test中

 

-----------------------------------------

 

cpio

-o   压缩

-i   解压

 

find -name 'file*' | cpio -o > xx.cpio

cpio -iu < xx.cpio   //解档  

-u   如果解档文件更新的话,就覆盖 

 

 

#####################################################################################################

第十章 vim程序编辑器

#####################################################################################################

 

Vim文本编辑器

 

vi filename(进入)--->命令模式

:wq(退出)------>命令模式

|ESC

|

iao------------>插入模式

 

a在光标所在字符后插入

A在光标所在行尾插入

i在光标所在字符前插入

I在光标所在行行首插入

o在光标下插入新行

O在光标上插入新行

 

:set nu设置行号

:set nonu取消行号

 

gg到第一行

G到最后一行

nG到第n行

:n到第n行

 

$移至行尾

0移至行首

 

x删除光标所在处字符

nx删除光标所在处后n个字符

dd删除光标所在行

ndd删除n行

dG删除光标所在行到文件末尾内容

D删除光标所在处到文件末尾内容

:n1,n2d删除指定范围的行

 

yy复制当前行

nyy复制当前行以下n行

dd剪切当前行

ndd剪切当前行以下n行

p、P粘贴在当前光标所在行下或行上

 

r取代光标所在处字符

R从光标所在处开始替换字符,按ESC结束

u取消上一步操作

 

/string搜索指定字符串

搜索时忽略大小写:set ic

n搜索指定字符串的下一个出现的位置

 

:%s/old/new/g(不询问)c(询问)全文替换指定的字符串

:n1,n2s/old/new/g在一定范围内替换指定字符串

 

:W保存修改

:W new_filename另存为指定文件

:wq保存修改并退出

ZZ快捷键,保存修改并退出

:q!不保存修改退出

:wq!保存修改并退出(文件所有者及root可以使用)

 

:r 文件名将文件中的所有内容导入到该文件中

: !命令执行命令

:map Ctrl+v Ctrl+()增加快捷键

 

:n1,n2s/^/#/g注释多行

 

:ab 打出a换成b

:sp        分屏

ctrl+w     切换

:only      取消分屏

 

/home/username/.vimrc普通用户设置vim快捷键

/root/.vimrcroot用户设置vim快捷键

 

vim插件:

1>https://github.com/ma6174/vim

编写python程序

 

自动插入头信息:

#!/usr/bin/env python

# coding=utf-8

输入.或按TAB键会触发代码补全功能

:w保存代码之后会自动检查代码错误与规范

按F6可以按pep8格式对代码格式优化

按F5可以一键执行代码

多窗口操作

 

使用:sp + 文件名可以水平分割窗口

使用:vs + 文件名可以垂直分割窗口

使用Ctrl + w可以快速在窗口间切换

编写markdown文件

 

编写markdown文件(*.md)的时候,在normal模式下按 md 即可在当前目录下生成相应的html文件

生成之后还是在normal模式按fi可以使用firefox打开相应的html文件预览

当然也可以使用万能的F5键来一键转换并打开预览

如果打开过程中屏幕出现一些混乱信息,可以按Ctrl + l来恢复

快速注释

 

按\ 可以根据文件类型自动注释

 

2>https://github.com/amix/vimrc

 

#####################################################################################################

第十一章 认识与学习bash

#####################################################################################################

 

whoami  查看当前用户

 

-----------------------------------------

 

[smallbug@smallbug ~]$ cat /etc/shells 显示系统的所有shell

/bin/sh

/bin/bash

/sbin/nologin

/usr/bin/sh

/usr/bin/bash

/usr/sbin/nologin

/bin/tcsh

/bin/csh

 

切换:直接敲shell的名称

 

echo $$

输出当前shell ID

 

-----------------------------------------

 

:    隔开同一行敲的多个命令使用

 

\ 另起一行 \

 

-----------------------------------------

 

变量名=值

变量名不能以数字开头

等号两边不能有空格

值用双引号引起来

定义变量时不加$,引用时需要加$

在终端敲该命令,所得的变量时当前shell的变量

单引号引用的变量不会被解析

 

declare -x dd=12 / export yy=10

定义环境变量

可以影响到所有子shell

 

declare +x dd

将环境变量变成本地变量

 

declare -r dd (readonly dd)

将变量设为只读

 

-----------------------------------------

 

echo 输出变量

-n 输出不换行

 

unset 取消变量

 

set 显示所有变量

set 1 2 3 4 5  设置参数

 

env 显示所有环境变量

export 显示所有环境变量

export -p显示所有环境变量

 

-----------------------------------------

 

$0    文件的名字

$#    参数的个数

${12} 文件的第12个参数

$*    所有的参数

 

-----------------------------------------

 

全局变量

$PATH

$HOME

$USER

$PS1   提示符([\u@\h \W]\$)

$LAGN   系统当前编码

$REPLY read默认赋予的变量

$? 记录上面的命令是否执行成功,0表示失败,非0表示成功

-----------------------------------------

 

locale -a 系统所支持的所有编码

 

-----------------------------------------

 

read -p "pleace input word:" name

相当于先输出再读取变量

 

-----------------------------------------

 

数组操作

xx=(aa bb cc dd) 赋值

echo ${xx[0]} 取值

echo ${xx[*]}  

echo ${xx[@]} 取所有

echo ${!xx[@]} 查看所有下标

echo ${#xx[@]}查看元素个数

 

-----------------------------------------

 

ulimit -a

查看系统限制

 

core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

file size               (blocks, -f) unlimited

pending signals                 (-i) 7866

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 1024

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 8192

cpu time               (seconds, -t) unlimited

max user processes              (-u) 4096

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited

 

-----------------------------------------

 

r=${path#*kkk/bin}

删除path变量中的按 *kkk/bin 匹配的字符串,然后赋值给r(第一个匹配开始处理)

r=${path##*kkk/bin}

删除path变量中的按 *kkk/bin 匹配的字符串,然后赋值给r(最后一个匹配开始处理)

 

#删除前面的字符串,%删除后面的字符串

 

-----------------------------------------

 

r=${xx-"hello"} 如果变量xx存在就将xx值赋予r否则将hello赋值给r

r=${xx:-"hello"} 在上面的基础上还要判断是否为空

r=${xx:="hello"} 在上面的基础上将字符串赋值给xx

r=${xx:?"error"}  检查xx是否为空,如果是空的话显示字符串警告信息

r=${xx:+"hello"}  如果xx非空将后面的字符串赋值给r

 

-----------------------------------------

 

type -a ls 查看命令执行顺序

 

-----------------------------------------

 

用户登录时读取配置文件顺序:

vim /etc/profile 环境变量

/etc/inputrc 快捷键

~/.bash_profile

-----------------------------------------

 

set -u 开启当所用到的变量没有被设置时就会报错

+u 关闭

-x 追踪每一个操作

+x 关闭

 

-----------------------------------------

 

ls -a > a.txt 文件重定向(清空)

ls -a >> a.txt 文件重定向(追加)  

xx 2> a.txt只重定向错误的结果

xx & >> a.txt 不管正确还是错误全部都追加

 

-----------------------------------------

 

tr 'a-z' 'A-Z' < hosts

将hosts文件中的字母从小写转为大写并输出到屏幕

 

-----------------------------------------

 

cat > filename << end

将输入字符保存到filename中,直到end结束

 

-----------------------------------------

 

grep搜索文件中的内容

-i不区分大小写

-v排除指定字符串 ^表示开头

 

-----------------------------------------

 

cut xx | tee xx | grep aa

将输出信息保存在xx文件中

 

-----------------------------------------

 

cut -d: -f1 /etc/passwd

以:作为分隔符,查看分割后的第一本分文件

 

-----------------------------------------

 

sort -n 以数字的行驶排序

 

sort -t: -k3 -n passwd

-u排除重复(==   | uniq)

-----------------------------------------

 

wc 统计字符

 

-----------------------------------------

 

col expand   将Tab键转化为空格

 

-----------------------------------------

 

paste 将文件组合在一起

join

-----------------------------------------

 

split -b 10k /etc/services xxx

 将services文件以每块10k前缀为xxx进行切分

 

-----------------------------------------

 

diff 判断两个文件是否相同

 

-----------------------------------------

 

xargs 让ls类似的不能使用管道的命令使用管道

 

 

吐舌头未完待续

1
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics