欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

鸟哥Linux私房菜笔记

程序员文章站 2022-03-03 09:14:17
...

查看更清晰格式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类似的不能使用管道的命令使用管道

 

 

鸟哥Linux私房菜笔记
            
    
    博客分类: Linux linuxvim 未完待续

相关标签: linux vim