linux基础学习

142 阅读15分钟

目录

linux启动过程

内核的引导

运行init

系统初始化

建立终端

用户登录系统

linux目录结构

/bin 目录存放普通用户使用的命令

/boot 存放启动linux时使用的核心文件,包括连接文件以及镜像文件

/dev 存放的是linux的外部设备

/etc 存放所有系统管理管理所需要的配置文件和子目录

/home 用户的主目录,记录创建用户的家目录

/lib 存放着系统最基本的动态连接共享库,所有应用程序都需要用的这个共享库

/media linux系统自动识别一些设备,U盘,光驱,识别到后会自动挂载到该目录下

/mnt 用户临时挂载文件的系统,将光驱挂载到/mnt/上,就能进入到该目录查看到光驱里面的内容

/proc

一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里

/root 该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin 存放系统管理员使用的命令

/usr/bin 系统用户使用的应用程序

/usr/sbin 超级用户使用的比较高级的管理程序和系统守护程序。

/var 存放这各种系统日志文件

tree命令

tree -L 2 / 展示深度2层树结构目录

ls命令

ls -atl

-l 显示文件的属性与权限等数据

-t 以时间排序,日期最近的显示前面

-a 显示全部文件,包括隐藏文件

-i 显示inode

-h 已KB的形式显示文件大小

文件类型

当为 d 则是目录

当为 - 则是文件

若是 l 则表示为链接文档(link file)

若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置)

若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

若是 s 为socket文件

which

which ls 查找文件,显示命令路径

别名alias

alias 显示所有的别名

alias 111='ls -lha' 设置一个别名

unalias 111 取消别名

绝对路径,相对路径

从根开始的都是绝对路径

相对路径是从你当前目录的路径,不是根开始的

 

cd命令

cd - 进入到上一次所在的目录

cd 回到用户的家目录

cd ~ 回到root目录

cd .. 进入到上一层目录

目录创建和删除

mkdir /tmp/111 创建一个111的目录

mkdir -p /tmp/111/222 创建联级个目录

rm -rf /tmp/111 删除目录

-f 强制删除不在询问

-r 删除目录

环境变量PATH

vi /etc/profile 添加环境变量

source /etc/profile 刷新生效

cp命令

cp /etc/passwd /tmp/1.txt 拷贝文件

cp -r /tmp/pear/ /tmp/222 拷贝目录

mv命令

mv 1.txt 2.txt 文件改名

mv 1.txt opt/ 移动文件

文档查看

cat /etc/passwd 查看文件内容

tac /etc/passwd 倒序查看文件内容

cat -n /etc/passwd 显示行号查看文件内容

more /etc/passwd 翻页显示文件内容 ctrl+b 表示往前翻页查看

less anaconda-ks.cfg ctrl+b 表示往前翻页查看 ctrl+f 往下翻页查看 /eve 搜索字符串 ?eve 从后往前查找字符串

tail -f /etc/passwd 动态查看文件内容 不加参数,默认只显示最后十行内容

tail -n 2 /etc/passwd 只查看最后两行内容

head /etc/passwd 默认查看前十行内容

head -n 2 /etc/passwd 查看前两行内容

文件和目录权限chmod

rwx r可读,w可写,x可执行

r=4,w=2,x=1

rw-r--r-- rw-所有者权限 r--所属组权限 r--其他用户权限

chmod 700 1.txt 修改文件权限

chmod -R 700 /home/ 递归修改目录下的所有文件权限

chmod u=rwx,g=r,o=r anaconda-ks.cfg 修改文件权限

chmod a+x anaconda-ks.cfg 增加x执行权限

更改所有者和所属组chown

chown wu anaconda-ks.cfg 更改所属用户

chown :wu anaconda-ks.cfg 更改所属组

chgrp root anaconda-ks.cfg 更改所属组

chown -R wu:root /etc/ 递归修改所有文件的所属用户和所属

umask

umask 命令用来设置限制新建文件权限的掩码

rwx rwx rwx - 002 = (rwx rwx rwx) - ( — — -w-) = rwx rwx r-x

777 - 022 =755

666 - 022 =644

隐藏权限lsattr chattr

chattr +i 1.txt 增加隐藏权限使文件无法修改

chattr -i 1.txt 取消隐藏权限

chattr +a 1.txt 只能追加内容

chattr +i 111/ 增加目录的隐藏权限

lsattr 1.txt 查看隐藏权限

lsattr -d 111/ 查看目录隐藏权限

lsattr -R 111/ 递归查看目录下面所有文件的隐藏权限

lsattr -a 111/ 包括隐藏文件也显示

特殊权限set_uid

临时让用户拥有命令权限

chmod u+s /usr/bin/ls 给用户增加ls 命令权限

chmod u-s /usr/bin/ls 去掉ls 命令权限

特殊权限set_gid

chmod g+s /usr/bin/ls 给所属组用户增加ls 命令权限

chmod g-s /usr/bin/ls 去掉ls 命令权限

特殊权限stick_bit

stick_bit 防止别人删除自己的文件

chmod o+t /tmp/ 增加权限

chmod o-t /tmp/ 去掉权限

特殊权限stick_bit

stick_bit 防止别人删除自己的文件

chmod o+t /tmp/ 增加权限

chmod o-t /tmp/ 去掉权限

软链接文件

相当于快捷方式

某些特定的程序需要指定路径文件,直接做一个软连接方式节省空间

ln -s 1.txt /tmp/2.txt 把1.txt文件软连接到/tmp/ 并且文件名称改成2.txt

ln -s /root/123/ /tmp/ 软连接目录,尽量使用绝对路径

cp 1.txt /tmp/ && rm -rf 1.txt && ln -s /tmp/1.txt /root/ 如果遇到所占分区空间不够,可以做一下软连接使用

硬链接文件

硬链接不能做目录

ln 1.txt 1_txt 创建硬链接,inode值一样,可以防止被删除

find命令

-mtime 创建时间,最近改动(文件权限) -ctime 更改文件内容 -atime 最近访问

find /etc/ -name -type f "sshd" 搜索sshd的文件

stat 1.txt 显示文件的详细信息,查看三个time信息

find / -type f -mtime +1 一天以外发生更改的文件

find / -type f -mtime -1 一天以内发生更改的文件

find / -type f -mtime -1 -name "*.conf" 查找一天以内发生改动并且以.conf结尾的文件

find / -type f -o -mtime -1 -o -name " *.conf" 查找一天以内发生改动或者以.conf结尾的文件 -o是或者的意思

文件名后缀

linux下面文件的后缀名不能代表这个文件的格式

用户配置文件和密码配置文件

cat /etc/passwd 查看用用户信息文件

cat /etc/shadow 记录用户的密码文件

用户组管理

cat /etc/group 用户组文件

groupadd grp1 创建用户组grp1

groupdel grp1 删除一个组

如果要删除的组里面有用户则无法删除

用户管理

useradd user2 创建用户

useradd user3 -u 1002 -g grp1 创建用户,并且uid为1002,加入到grp1组

useradd -u 1010 -g grp1 -d /home/333 -s /sbin/nologin user6 指定家目录,并且禁止登录

useradd -M user7 不创建家目录

userdel -r user1 删除用户连同家目录一起删除

usermod命令

id user1 查看用户组信息

usermod -G grp1 user1 把user1加入到grp1组

usermod -l user2 user1 把user1修改成user2

usermod -L user2 锁定用户

usermod -U user2 解锁用户

用户密码管理

passwd 用于修改用户密码

passwd user2 修改user2用户密码

passwd -l user2 锁定用户

passwd -u user2 解锁用户

echo "123456" |passwd --stdin user2 给用户创建密码,用于写shell脚本,不用重复输入密码

echo -e "111\n222" 输出结果换行,-e参数 需要\n 换行

mkpasswd命令

yum -y install -y expect 安装mkpasswd命令

mkpasswd -l 12 -s 3 -l 表示需要几位密码,-s 需要设置多少特殊字符

su命令

su - user2 切换到 user2用户

su - -c "touch /tmp/111" user2 以user2用户身份执行命令

sudo命令

visudo 打开sudo配置文件

找到下面配置,增加 wu ALL=(ALL) /usr/bin/ls, /usr/bin/mv, /usr/bin/cat 表示普通用户临时拥有权限

##Allow root to run any commands anywhere

root ALL=(ALL) ALL

wu ALL=(ALL) /usr/bin/ls, /usr/bin/mv, /usr/bin/cat

 

增加NOPASSWD: 表示输入sudo执行命令不需要密码,但是相对不是很安全

wu ALL=(ALL) NOPASSWD: /usr/bin/cd, /usr/bin/ls, /usr/bin/mv, /usr/bin/cat

 

使用方法

su - wu 先su到用户

sudo ls /root/ 在使用sudo查看

限制root远程登录

进入到sshd_config修改PermitRootLogin 把yes修改成no现在root登陆

vi /etc/ssh/sshd_config

PermitRootLogin no

 

说明:掌握df/du用法,掌握fdisk用法(p,n,w,d),理解主分区、扩展分区、逻辑分区概念

扩展:

1 MBR和GPT分区 www.lxlinux.net/9962.html

2 parted分区工具 www.cnblogs.com/wholj/p/109…

df命令查看磁盘容量

df -h 显示磁盘可用容量

df -i 查看inode

du命令查看目录大小

du -sh /etc/ 查看目录大小

du -sh /etc/passwd 查看文件的大小

du -sh /etc/* |sort -rn 查看文件的大小,并且排序

磁盘分区

fdisk -l 查看挂载磁盘

fdisk /dev/sdb 进行磁盘分区

一块磁盘只能有四个主分区或者三个主分区一个逻辑分区

n 选择主分区p或者扩展分区e

p 分主分区 e扩展分区 d删除一个分区 q不保存退出 w保存退出

磁盘格式化

查看系统支持的文件系统格式

cat /etc/filesystems

xfs

ext4

ext3

ext2

nodev proc

nodev devpts

iso9660

vfat

hfs

hfsplus

磁盘格式化

mke2fs -t ext4 -b 2048 /dev/sdb1

mke2fs不支持xfs格式需要使用mkfs.xfs默认格式化成xfs文件格式

mkfs.xfs /dev/sdb2

mkfs.ext4 默认格式化ext4文件

 

查看文件格式

blkid /dev/sdb2

 

如果空间存放的是大文件(视频,图片几M等,把块大小调大一些读取速度更快)

mke2fs -b 8192 /dev/sdb1

 

磁盘会默认预留百分之五的空间给root用户使用,如果磁盘大于1T可以把预留空间设置小一些

mke2fs -t ext4 -m 1 /dev/sdb1

 

-i选项,可以定义inode大小,对inode数量的设置可防止block数量够,inode数量不足而无法存储数据的情况

mke2fs -i 8192 -t ext4 /dev/sdb1

 

磁盘挂载

挂载磁盘到mnt下面

mount /dev/sdb /mnt/

 

卸载磁盘

umount /dev/sdb

 

强制卸载磁盘

umount -l /dev/sdb

 

设置机器重启磁盘自动挂载,配置文件在/etc/fstab

vi /etc/fstab

/dev/sdb /mnt xfs defaults 0 0

 

在/etc/fstab文件中也可以设置UUID的形式,查看磁盘的UUID

blkid

/dev/sdb: UUID="d0f7f6fa-eac1-4c1b-ace2-25d3af69f9e6" TYPE="xfs"

 

手动增加swap空间

dd操作磁盘,if是指定去哪里读,of指定写到哪里,bs是块的大小,count是指定增加大小100默认是100M

dd if=/dev/zero of=/tmp/newdisk bs=1M count=100

 

mkswap格式化

mkswap -f /tmp/newdisk

 

swapon加载到swap上

swapon /tmp/newdisk

 

卸载增加的swap

swapoff /tmp/newdisk

 

设置机器重启自动挂载

vi /etc/fstab

/tmp/newdisk swap swap defaults 0 0

lvm

[root@localhost /]# fdisk /dev/sdb

命令(输入 m 获取帮助):n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p

分区号 (1-4,默认 1):

起始 扇区 (2048-20971519,默认为 2048):

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+1G

分区 1 已设置为 Linux 类型,大小设为 1 GiB

 

命令(输入 m 获取帮助):t 这里需要把ID变成8e\color{red}{这里需要把ID变成8e}这里需要把ID变成8e

已选择分区 1

Hex 代码(输入 L 列出所有代码):8e

已将分区“Linux”的类型更改为“Linux LVM”

 

命令(输入 m 获取帮助):p

 

磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xaea2a080

 

设备 Boot Start End Blocks Id System

/dev/sdb1 2048 2099199 1048576 8e Linux LVM

 

按照上面的方法创建分区,然后进行格式化物理卷

安装命令 lvm

yum -y install lvm2

 

pvcreate将磁盘设置为物理卷,如果遇到Device /dev/sdb1 not found 执行命令partprobe生成文件

pvcreate /dev/sdb1

 

pvdisplay或者pvs命令查看物理卷

pvdisplay

 

创建卷组

vgcreate vg1 /dev/sdb1 /dev/sdb2

 

查看卷组信息

vgdisplay 或者vgs

 

删除卷组

vgremove

 

创建逻辑逻辑卷

lvcreate -L 100M -n lv1 vg1

 

格式化

mkfs.ext4 /dev/vg1/lv1

 

挂载

mount /dev/vg1/lv1 /mnt/

 

扩容逻辑卷

umount /mnt/ 需要先卸载磁盘

lvresize -L 200M /dev/vg1/lv1

 

检查磁盘错误(ext4执行)

e2fsck -f /dev/vg1/lv1

 

更新逻辑卷信息(ext4执行)

resize2fs /dev/vg1/lv1

 

xfs文件系统需要执行

xfs_growfs /dev/vg1/lv1

 

缩减逻辑卷(xfs不支持)

先 !umount

e2fsck -f /dev/vg1/lv1 检查磁盘错误(ext)

resize2fs /dev/vg1/lv1 100M 更新逻辑卷信息(ext)

lvresize -L 100M /dev/vg1/lv1 重新设置卷大小

mount /dev/vg1/lv1 /mnt/ 挂载

 

扩展卷组

vgextend vg1 /dev/sdb3

 

vim

vim的配置文件

vim /etc/vimrc

 

一般模式

h或者向左方向键 光标向左移动一个字符

l(小写字母L)或者向后方向键 光标向右移动一个字符

k或者向上的方向键 光标向上移动一个字符

j或者向下的方向键 光标向下移动一个字符

Ctrl+f或PageUP 屏幕向前移动一页

Ctrl+b或PageDown 屏幕向后移动一页

数字0或者Shift+6 移动到本行行首

Shift+4 移动到本行行尾

gg 移动到首行

G 移动到尾行

nG(n是任意数字) 移动到第n行

一般模式下复制剪切粘贴

x,X x表示向后删除一个字符,X表示向前删除一个字符

nx 向后删除n个字符

dd 删除/剪切光标所在的那一行

ndd 删除/剪切光标所在行之后的n行

yy 复制光标所在行

p 从光标所在行开始,向下粘贴已经复制或者粘贴的内容

P 从光标所在行开始,向上粘贴已经复制或者粘贴的内容

nyy 从光标所在行开始,向下复制n行

u 还原上一步操作

v 按v后移动光标会选中指定字符,然后可以实现复制,粘贴等操作

编辑模式

i 进入编辑模式

I 大i 进去光标所在行首

o 光标所在下面一行

O 光标所在上面一行

a 光标所在后面一个字符

A 光标所在行末

命令模式

/word 向光标之后查找一个字符串word,按n向后继续搜索

?word 向光标之前查找一个字符串word,按n向前继续搜索

:n1,n2s/word1/word2/g 在n1-n2行之间查找word1并替换为word2,不加g则只替换每行的的第一个word1

:1,$s/word1/word2/g 将文档中所有的word1替换为word2,不加g则只替换每行的第一个word1

:w 保存文本

:q 退出vim

:w! 强制保存,在root用户下,即使文本只读也可以完成保存

:q! 强制退出,所有改动不生效

:wq 保存并退出

:set nu 显示行号

:set nonu 不显示行号

:nohl 取消高亮

 

压缩打包介绍

windows .rar .zip .7z

linux .zip .gz .bz2 .tar.gz .tar.bz2 .tar.xz

gzip压缩工具

  • gzip不支持压缩目录
  • 压缩文件格式,压缩完源文件会消失,变成 .gz格式

gzip 1.txt

  • 解压缩文件,解压缩源压缩文件会消失

gzip -d 1.txt.gz 或 gunzip 1.txt.gz

  • 压缩级别1-9 默认级别6

gzip -1 1.txt

  • 查看压缩文件信息

file 1.txt.gz

  • 查看压缩文件内容

zcat 1.txt.gz

  • 压缩文件并且源文件不消失,放到指定目录,-c选项

gzip -c 1.txt > /usr/local/src/1.txt.gz

  • 解压缩文件并且源文件不消失,放到指定目录下

gzip -d -c 1.txt.gz > /usr/local/src/2.txt

bzip2压缩工具

  • bzip2不支持压缩目录
  • 安装bzip2工具

yum -y install bzip2

  • 使用bzip2压缩文件,压缩文件源文件也会消失

bzip2 1.txt

  • 解压缩文件,源文件也会消失

bzip2 -d 1.txt.bz2 bunzip2 1.txt.bz2

  • 使用bzip2压缩,指定路径 参数 -c 源文件不会消失

bzip2 -c 1.txt > /usr/local/src/1.txt.bz2

  • 使用bzip2解压,参数 -d 解压缩,参数 -c 指定路径,源压缩文件不会消失

bzip2 -d -c /usr/local/src/2.txt.bz2 > 3.txt

  • bzip2的压缩级别1-9,默认是9

bzip2 -9 1.txt

  • file查看文件信息

file 1.txt.bz2

  • bzcat查看压缩文件内容

bzcat 1.txt.bz2

xz压缩工具

  • xz不支持压缩目录,有1-9个级别,默认6级别
  • xz压缩文件

xz 2.txt

du -sh 2.txt 查看文件大小

  • xz -d 解压缩或者unxz,源文件会消失

xz -d 2.txt.xz

  • 使用 xz 压缩,指定路径 参数 -c 源文件不会消失

xz -c 2.txt > /usr/local/src/2.txt.xz

  • 使用 xz 解压,参数 -d 解压缩,参数 -c 指定路径,源压缩文件不会消失

xz -d -c 2.txt.xz > 4.txt

  • xzcat 查看xz压缩文件内容

xzcat 2.txt.xz

  • file 查看文件信息

file 2.txt.xz

zip压缩工具

  • 安装zip压缩工具

yum -y install zip

  • 安装unzip解压缩工具

yum -y install unzip

  • zip压缩工具,压缩和解压缩源文件都不会消失
  • 使用zip压缩文件

zip 2.txt.zip 2.txt

  • 使用zip压缩目录,需要参数 -r

zip -r 2.zip libXpm-3.5.13

  • unzip解压缩到某个目录下,需要参数 -d

unzip 2.zip -d 3/

  • zip压缩不支持查看文件内容,只支持查看文件列表,需要 -l 参数

unzip -l 2.zip

tar打包工具

  • 打包一个目录,参数 -c 打包, -v 展示过程, -f 定义打包名称,打包源目录不会消失

tar -cvf 123.tar 123/

  • 目录文件一起打包

tar -cvf 123.tar 123/ 1.txt

  • 解压缩包,参数 -x 解压缩,-v 展示过程,-f 包的名称,解压缩会直接覆盖相同名称文件,解压缩源包不消失

tar -xvf 123.tar

  • 查看打包里面的内容

tar -tf 123.tar

  • 打包目录123,并且过滤掉1.txt, --exclude 过滤掉,参数 -c 打包, -v 展示过程, -f 定义打包名称,如果需要在增加一个过滤掉,需要在增加一个参数, 示例写法 --exclude 1.txt --exclude 2.txt,过滤掉以txt结尾的写法 --exclude "*".txt 必须要有引号

tar -cvf 2.tar --exclude 1.txt 123

tar打包并压缩

  • 以gz格式的压缩打包,参数 -c 打包,-z 压缩格式gz,-v 展示过程,-f 打包名称

tar -czvf 123.tar.gz 123/ 1.txt

  • 以bz2格式的压缩打包,参数 -c 打包,-j 压缩格式bz2,-v 展示过程,-f 打包名称

tar -cjvf 123.tar.bz2 123/ 1.txt

  • 以xz格式的压缩打包,参数 -c 打包,-J 压缩格式xz,-v展示过程, -f 打包名称,xz打包最恨

tar -cJvf 123.tar.xz 123/ 1.txt

  • 查看打包里面的内容,-tf支持查看所有压缩格式

tar -tf 123.tar.gz

  • 解压缩包 -xvf 上面的压缩格式都支持,-C 指定存放目录

tar -xvf 123.tar.gz -C 333/

rpm工具

  • rpm工具
  • rpm包命名,vim-minimal包的名称,7.4.629包的版本,7.el7运行平台,x86_64运行架构平台64位系统,i686表示32位系统,知识点:64位的包已经安装32位的包,32位的包不能安装64位的包

vim-minimal-7.4.629-7.el7.x86_64.rpm

  • 安装rpm包,-i 安装,-v 可视化,-h 显示进度

rpm -ivh virt-what-1.18-4.el7.x86_64.rpm

  • 升级rpm包, -U 升级,-v 可视化,-h 显示进度

rpm -Uvh virt-what-1.18-4.el7.x86_64.rpm

  • 卸载rpm包,-e 卸载

rpm -e vim-minimal

  • 查询已经安装的包,-q 查询,-a 是all的意思

rpm -qa xz

  • 查询指定的包是否安装

rpm -q

  • 查询指定包的信息,可以看到安装日期,来源,key ID

rpm -qi xz

  • 列出包安装的文件 ,-q 查询,-l 列出文件

rpm -ql xz

  • 查看一个文件是由哪个包安装的,-q查询,-f 查看 需要绝对路径

rpm -qf /usr/share/man/man1/xzmore.1.gz

yum工具

  • 列出可用rpm包

yum list xz

  • 配置yum源文件目录

ls /etc/yum.repos.d/

  • 搜索一个包

yum search all vim

  • 安装一个包

yum install -y vim

  • 查看组的管理信息

yum grouplist

  • 安装组的信息 LANG=en 需要改成中文安装

yum groupinstall 'Development Tools'

  • 卸载一个包

yum remove -y vim

  • 更新包

yum update -y

  • provides可以查看命令是由哪个包安装的

yum provides "/*/vim"

dnf用法

注意:dnf 是新一代的 rpm 软件包管理器,并没有预先安装在centos上面需要自己安装,用法跟yum几乎一样

  • 安装dnf

yum install epel-release

yum install dnf

  • 列出可用rpm包

dnf list

  • 搜索一个包

dnf search vim

  • 安装一个包

dnf install -y vim

  • 查看组的管理信息

dnf grouplist

  • 安装组的管理

dnf groupinstall -y

  • 卸载一个包

dnf remove -y vim

  • 更新包

dnf update -y

  • provides 查看命令是由哪个包安装的

dnf provides "/*/vim"

本地仓库搭建

  • 备份yum目录

cp -r yum.repos.d/ yum.repos.d.bak

  • 删除源yum文件

rm -rf yum.repos.d/*

  • 创建一个本地源文件

vim dev.repo

[dve]

name=install dvd

baseurl=file://mnt/BaseOS

enable=1

gpgcheck=0

  • 清除缓存

yum clean all

  • 查看本地源信息

yum repoinfo

更改仓库源地址,变更为阿里云的源

  • diff 可以比较两个文件的不同之处
  • 先备份源文件

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

  • 下载阿里云源文件,并且覆盖掉文件

curl -o /etc/yum.repos.d/CentOS-Base.repo mirrors.aliyun.com/repo/Centos…

  • 清除缓存并生成新的缓存

yum clean all yum makecache

 

epel扩展源和下载rpm包

  • 安装扩展源epel,默认的一些安装包没有,所以安装扩展源

yum install -y epel-release

yum list |grep epel

  • yum download rpm包名字
  • dnf download rpm包名字
  • yum install -y yum-utils
  • yumdownloader rpm包名字

源码包安装

  • 进入目录下载源码包并解压缩

cd /usr/local/src/

wget mirrors.cnnic.cn/apache/http…

tar zxvf httpd-2.4.54.tar.gz

  • 进入目录编译安装,可以查看INSTALL文件是安装文档

cd httpd-2.4.54

less INSTALL

./configure --prefix=/usr/local/apache2

make

make install

  • 注意:如果报错根据提示安装缺少的依赖,如(yum install -y apr apr-devel 把devel的也装上)

echo $? 这个命令是如果返回0值代表正常,1则是安装有问题

  • 卸载就是删除安装路径的文件就好了

Ubuntu的三种方法,dpkg工具 跟之前的rpm一样的

  • dpkg -i xxx.ded #安装指定的包
  • dpkg -l #列出所有安装过得包
  • dpkg -l 包名 #列出指定包
  • dpkg -r 包名 #卸载
  • dpkg -s 包名 #查看已安装包信息
  • dpkg -L 包名 #查看包安装位置
  • dpkg -S 关键词 #查找包含关键词的包

apt工具,跟之前的yum是一样的

  • apt update #更新软件列表
  • apt upgrade #升级软件
  • apt list #列出所有包
  • apt list --installed #列出已经安装的包
  • apt install 包名 #安装指定的包
  • apt remove 包名 #卸载指定的包
  • apt autoremove 包名 #卸载并自动清理不再依赖的包
  • apt show 包名 #查看包的信息
  • apt download 包名 #下载deb包
  • apt search 关键字 #搜索包

了解shell

  • shell是一个命令解释器,提供用户和机器之间的交互
  • 支持特定语法,比如逻辑判断,循环
  • 每个用户都可以有自己特定的shell
  • CentOS7默认shell为bash(Bourne Agin Shell)
  • 还有zsh,ksh等

shell命令历史

  • history命令

history 查看历史命令

history -c 清空当前里面命令,不会清空文件保存的

  • .bash_history

.bash_history 是记录用户敲的历史命令,在各自的家目录里面

  • 最大1000条
  • 变量HISTSIZE, 系统内置保存历史命令变量,默认保存1000条

echo $HISTSIZE

  • /etc/profile 中修改可以修改命令保存条数,HISTSIZE=5000 source /etc/profile 刷新变量配置,使其生效
  • history 命令是没有显示时间的,需要自己在profile文件中增加时间变量

vim /etc/profile

HISTTIMEFORMAT="%Y/%m/%d %H:%M:%S "

source /etc/profile

  • 永久保存chattr +a ~/.bash_history 永久保存历史命令,不会被删除,不受默认条数的限制
  • !! 执行你最后一个命令
  • !n n表示数字行,执行某一行命令
  • !word 从下往上找,第一个带有word开头的命令执行

命令补全及别名

  • 命令补全 tab键
  • 参数补全,安装bash-completion,需要重启系统生效
  • alias别名给命令重新起个名字

设置别名为restart alias

restart='systemctl restart network.service'

alias的配置文件都在 /etc/profile.d/ 下面存放

unalias restart 取消设置的别名

  • 各用户都有自己配置别名的文件 ~/.bashrc
  • ls /etc/profile.d/
  • 自定义的alias放到~/.bashrc

通配符

  • 统配符号 *

ls *.txt

  • 一个任意的字符 ?

ls ?.txt

  • 范围值 [0-9] [0-9a-zA-Z]

ls [0-3].txt

  • 取值{1,2}

ls {1,2}.txt

输出输入重定向

  • 重定向删除 > 删除原来的内容,从新输入

cat 1.txt > 2.txt

  • 重定向追加 >> 追加内容

cat 1.txt >> 2.txt

  • 错误信息指定输入到文件中去 2>

ls aaa.txt 2> err

  • 错误信息追加到指定文件中 2>>

ls aaa.txt 2>> err

  • 正确和错误的信息重定向文件中 &>,&>>

ls 1.txt &> 2.txt

  • 输入重定向 <, 把左边的内容输入到右边去
  • 统计文件的行数

wc -l < 1.txt

 

扩展: bashrc和bash_profile的区别

blog.csdn.net/weixin_3415…

关于PROMPT_COMMAND环境变量的含义 www.cnblogs.com/runbean/p/1…blog.yuankeedu.com/?p=484

  • source exec 区别

alsww.blog.51cto.com/2001924/111…

管道和作业控制

  • 统计行数

cat 1.txt |wc -l

  • 过滤出aaa的内容

cat 1.txt |grep "aaa"

  • 暂停一个任务

ctrl z

  • 查看后台的任务

jobs

  • 把任务调到后台

bg[id]

  • 把任务调到前台

fg[id]

  • 命令后面加&直接丢到后台

变量

  • PATH,HOME, PWD, LOGNAME

echo $PATH

  • env命令

env 查看系统变量定义

  • set命令多了很多变量,并且包括用户自定义的变量
  • 自定义变量a=1
  • 变量名规则:字母,数字下划线,首位不能为数字
  • 变量值有特殊符号时需要用单引号括起来 a='a b c'
  • 变量的累加

a=1

b=2

echo aab

  • 全局环境变量 export b=2
  • unset取消变量

unset b

环境变量配置文件

  • /etc/profile 用户环境变量,交互,登录才执行
  • /etc/bashrc 用户不用登录,执行shell就生效
  • ~/.bashrc
  • ~/.bash_profile 针对自己当前用户生效
  • ~/.bash_history 历史的一些命令
  • ~/.bash_logout 定义用户退出的一些操作

重新加载环境变量

source /etc/profile 或者 . /etc/profile