linux基本命令
- ls:列出当前文件所有文件夹
- uname:显示当前系统基本信息,底层内核信息,不带参数
- uname -r :内核版本号
- uname -a : 所有信息 同 uname –all
- ctrl+c:终止当前命令
- firefox :打开火狐
- 任何命令+ & :放在后台运行,不会干扰当前命令行 如 firefox &
- tab:
- 自动补全命令名 输入的字母有其他相似命令,按两下tab显示全部命令
- 自动补全文件名
- 无法补全参数
- clear 清除当前屏幕
- jobs:管理后台作业
- sleep 5000:停5000s 回车卡5000s
- ctrl+z:暂停某个程序
- bg 继续开始暂停的后台
bg 2
:序号为jobs显示出的序号 - fg 放回前台
BASH会保存输入命令的记录:通过上下键或者history命令查看历史记录
- !!:重复前一个命令 同方向键↑
- !字符:重复前一个以字符开头的命令
- !num:按照历史记录的序号执行命令
- !?abc:重复之前包含abc的命令
- -n:重复n个命令之前的那个命令
- ctrl+r : 在历史记录中搜索命令
- 重新调用前一个命令中的参数esc. (按esc之后按.)
命令行通配符
- * 匹配零个或多个
- ? 匹配任意一个字符
- [0-9] 匹配一个数字范围
- [abc] 匹配列表里任何字符
- [^abc] 匹配列表以外字符
切换用户
su -
切换到root用户并使用一个新的运行环境;不加-即su
不启用新环境;-后面加用户名切换到指定用户名如su - yx
sudo
使用管理员用户身份运行命令id
显示当前用户信息passwd
修改当前用户密码
linux文件系统结构
- linux文件系统为一个倒转的单根树状结构
- 文件系统的根为”/“
- 文件系统严格区分大小写
- 路径使用“/”分割,windows使用”\”
- 每个shell或系统进程都有一个当前工作目录
- 使用pwd命令可以显示当前的工作目录
文件名称
- 文件名次大小写敏感
- 名称最多可以使用255个字符
- 除了正斜线外,都是有效字符
- 通过touch字符可以创建一个空白文件或者更新已有文件的时间
- 以”.”开头的文件为隐藏文件
ls列出目录内容
- ls -a:显示所有文件(包括隐藏文件–绝大多数为配置文件)
- ls -l:显示详细信息
- ls -R:递归显示子目录结构
- ls -ld:显示目录和链接信息
file查看文件的类型
绝对路径与相对路径
- 绝对路径:以“/”开头,递归每级目录直到目标的路径,不受当前所在工作目录限制。
相对路径:以当前目录为起点,到达目标的路径,受当前所在目录限制。
cd:切换目录
- 上一级目录:
..
- 当前目录:
.
- 家目录:
~
- 上一个工作目录:
-
linux文件操作
- 使用cp命令复制文件或目录:cp 源文件 目标文件 如cp linuxcast linuxcast2
- 复制文件到文件夹中:cp 源文件 目标文件夹/ 如 cp linuxcast linuxcast.net/
- 复制文件夹:cp -r 源文件夹 目标文件夹 ;加-v显示详细内容(
-r -v
同-rv
)如 cp -rv linuxcast.net linuxcast.net2
mv移动或者重命名文件
删除文件rm
- -i :交互式 (提示)
- -r :递归的删除文件夹里的所有内容
-f:强制删除,没有警告
创建目录 mkdir
- 删除目录 rmdir :不能删除非空目录
linux 系统目录
- bin 常用的可执行二进制文件
- boot 引导目录 linux内核存在这
- dev 计算机上所有的硬件设备
- ect 几乎所有的配置文件
- home 家目录
- lib 相关的库文件
- media 挂载用的
- mnt 正常的挂载目录,所有系统肯定有
- opt 大型软件
- proc 只存在在内存中,虚拟文件夹,显示系统实时的信息
- sbin 可执行的二进制文件,命令只有超级用户root可以使用
- sys 系统底层信息
- tmp 临时目录,会自动删除
- usr 保存应用软件
- var 保存经常变化的信息–log日志信息
常用命令
- date
- 格式化显示系统时间:date +%Y-%m-%d或者date +%Y:%m:%d(连接符可自定义)
- 修改时间 date -s “20:20:20” 需要切换到超级用户
- hwclock(clock)显示硬件时钟时间
- cal查看日历
- uptime查看系统运行时间
- echo显示输入的内容
- cat显示文件内容
- head 显示文件的头几行,ore为10行 -n 指定显示的行数
- more用于翻页显示文件内容(只能向下翻页)
- less用于翻页显示文件内容(带上下翻页)
- tail显示文件的末尾几行(默认10行)
- -n 指定显示的行数
- -f 追踪显示文件更新(一般用于查看日志,命令不会推出,而是持续显示新加入的内容)
- lspci查看pci设备
- -v查看详细信息
- lsusb 查看usb设备
- -v查看详细信息
- lsmod查看加载的模块(驱动)
- shutdown 关闭、重启计算机
- -h 关闭计算机
- -r 重新启动
如:
立即关机:shutdown -h now
10分钟后关机:shutdown -h +10
23:30分关机:shutdown -h 23:30
立即重启:shutdown -r now
- poweroff 立即关闭计算机
- reboot立即重启计算机
- zip用以压缩文件
- zip xx.zip myfile
- unzip用以解压zip文件 :unzip xx.zip
- gzip用以压缩文件
- tar用以归档文件
- tar -cvf XX.tar 文件夹 如:tar -cvf ectbackup.tar /etc
- tar -xvf linuxcast.tar
- tar -cvzf backup.tar.gz /etc
- -z 参数就爱那个归档后的归档文件进行gzip压缩
du -sh
可查看文件大小- locate用以快速查找文件爱你、文件夹 locate keyword
- 此命令需要预先建立数据库,数据库默认每天更新一次,可用updatedb命令手工建立、更新数据库(好处查找速度快,缺点刚新建的文件数据库未更新将查询不到)
- find用以高级查找文件、文件夹:find 查找位置 查找参数
如:- find . -name *linuxcast*
- find / -name *.conf
- find / -perm 777 (查找所有权限为777)
- find / -type d (返回根目录中所有的目录 -l 链接 即快捷方式)
- find . -name “a*” -exec ls -l {} \;
- 查找条件:-name -perm -user -group -ctime -type -size
vim文本编辑器
vim是一个命令行界面下的文本编辑工具,通过vim + 目标文件路径打开。
vim模式:
- 命令模式(常规模式)
在vim启动后,默认进入命令模式,任何模式都可以通过esc回到命令模式。命令模式下可以通过键入不同的命令完成选择、复制、粘贴、撤销等操作。 - 插入模式
在命令模式下按i键即可进入插入模式,可以输入编辑文本内容。使用esc返回命令模式 - ex模式
在命令模式中按:键可以进入ex模式。光标会移动到地步。在这里可以保存修改或退出vim
命令模式快捷键
- i 在光标前插入文本
- o 在当前行的下面插入新行
- dd 删除整行
- yy 将当前行的内容放入缓冲区(复制当前行)
- n+yy 将n行的内容放入缓冲行(复制n行)
- p 将缓冲区中的本文放入光标后(粘贴)
- u 撤销上一个操作
- r 替换当前字符
- / 查找关键字
EX模式快捷键
- :w 保存当前修改
- :q 退出
- :q! 强制退出,不保存修改
- :x 保存并退出,相当于:xq
- :set number 显示行号
- :! 系统命令 执行一个系统命令并显示结果
- :sh 切换到命令行,使用ctrl+d切换回vim
- :noh/:set nohls 取消查找高亮显示
磁盘、分区、MBR和GPT
IDE 设备的名称为hd[a-z],SATA、SCSI、SAS、USB等设备名称为sd[a-z]
不同分区用设备名称+分区号 如sda1、sda2
主流的分区机制为MBR和GPT
MBR是传统的分区机制,应用于绝大多数使用BIOS的PC设置
- MBR支持32bit和64bit系统
- MBR支持分区数量有限
- MBR只支持不超过2T的硬盘。超过2T的硬盘只能使用2T空间
MBR占有512字节,前446引导代码,64字节分区表,2个字节启动标识55 aa
MBR分区:
- 主分区:只能创建4个主分区
- 扩展分区:一个扩展分区会占用一个主分区位置
- 逻辑分区:最多支持63个IDE分区和15个SCSI分区
GPT(guid partition table):较新的分区机制
- 支持超过2T的磁盘
- 向后兼容MBR
- 必须在支持UEFI硬件上才能使用
- 必须使用64bit系统
- mac、linux系统都能支持GPT分区格式
- win7 64bit、winserver2008 64bit支持GPT
FDISK分区工具:一个基于MBR的分区工具,如果使用GPT,无法使用fdisk进行分区
- 只有具有超级用户权限才能运行
- 使用fdisk -l可以列出所有安装的磁盘及其分区信息
- 使用fdisk /dev/sda 可以对目标磁盘进行分区操作
- 分区之后需要使用partprobe命令让内核更新分区信息,否则需要重启才能识别新的分区
- /proc/partitions文件也可用来查看分区信息
文件系统
操作系统通过文件系统管理文件及数据,磁盘或分区需要创建文件系统之后才能够为操作系统能够使用,创建文件系统的过程又成为格式化。
- 没有文件系统的设备又称之为裸raw设备
- 常见的文件系统有fat32 、NTFS、ext2、ext3、ext4、xfs、HFS等
- 文件系统之间的区别:日志、支持的分区大小、支持的单个文件大小、性能等
- windows下的主流文件系统是NTFS
- linux下的主流文件系统是ext3、ext4
创建文件系统:mke2fs
- mke2fs -t ext4 /dev/sdb1
- -b blocksize 指定文件系统块大小
- -c 建立文件系统时检查坏损块
- -L label 指定卷标
- -j 建立文件系统日志
mkfs也可创建文件系统,较简单,参数比较少,不能精细化的控制
dumpe2fs 查看文件系统信息
带日志的文件系统 ext3、ext4拥有较强的稳定性,在出错时可以进行恢复。
- 文件系统将准备执行的事务的具体内容写入日志
- 文件系统进行操作
- 操作成功后,将事务的具体内容从日志中删除
好处:当事务执行时出现意外,可以通过查询日志进行恢复操作。
e2label 用来为文件系统添加标签
- e2label /dev/sda2 显示sda2的系统标签
- e2label /dev/sda2 LINUXCAST 将sda2的系统标签设置为LINUXCAST,标签建议用大写
fsck用来检查并修复损坏的文件系统
- 使用-y参数不提示而直接进行修复
- 默认fsck会自动判断文件系统类型,如果文件系统损坏较严重,用-t参数指定文件系统类型
- 对于识别为文件的损坏数据(文件系统无记录),fsck会将该文件放入lost+found目录
- 系统驱动时会对磁盘进行fsck操作
挂载、使用文件系统
磁盘或分区创建文件系统后,需要挂载到一个目录才能够使用。
windows或mac会自动挂载,windows称之为c盘、d盘,linux需要手工进行挂载操作或配置系统进行自动挂载 /mnt
通过mount命令将格式化好的磁盘或分区挂载到一个目录上:mount /dev/sdb1(要挂载的分区) 、/mnt(挂载点)
- 不带参数的mount命令会显示所有已挂载的文件系统
- -t 指定文件系统的类型
- -o 指定挂载选项
- ro,rw 以只读或读写形式挂载,默认是rw 如 mount -o remount,ro /dev/sdb1 /mnt/
- sync 代表不使用缓冲,而是对所有操作直接写入磁盘
- async 代表使用缓冲,默认是async
- noatime 代表每次访问文件时不更新文件的访问时间
- atime 代表每次访问文件时更新文件的访问时间
- remount 重新挂载文件系统
umount命令用来卸载已挂载的文件系统,相当于windows的弹出
umount 文件系统/挂载点
umount /dev/sdb1== umount /mnt
如果出现device is busy 报错,表示该文件系统正在被使用,无法卸载。
- 使用
fuser -m /mnt
查看使用文件系统的进程 - 使用
lsof /mnt
查看正在被使用的文件
配置文件 /etc/fstab 用来定义需要自动挂载的文件系统1
2
3
4
5需要挂载的设备 挂载点 文件系统 挂载选项 dump、fsck相关选项
/dev/sdb1 /mnt ext4 defaults 0 0
LABEL=LINUXCAST /mnt ext4 defaults 0 0
- 要挂载的设备也可以label进行识别,使用LABEL=LINUXCAST取代/dev/sdb1
- mount -a 命令会挂载所有fstab中定义的自动挂载项
-h/–help 参数获取好似用方法、参数信息
man命令帮助命令:如man ls
man -k 关键字 :查询包含该关键字的文档
info命令更详细。info 和man都可以用/+关键字进行搜索
用户
- 用户id为32位,
- 用户分为三种:
- root用户:id为0的用户为root用户
- 系统用户:1-499 没有shell
- 普通用户:500以上
- 系统中的文件都有一个所属用户及所属组
- 使用id命令可以显示当前用户的信息
- 使用passwd命令可以修改当前用户密码
相关文件
- /etc/passwd 保存用户信息
- /etc/shadow 保存用户密码(加密的)
- /etc/group 保存组信息
查看登录的用户
- whoami:显示当前用户
- who:显示有哪些用户已经登录系统
- w:显示哪些用户已经登录并在干什么
创建一个用户: useradd
- 在 /etc/passwd中添加用户信息
- 使用passwd创建密码,则将密码保存在/etc/shadow中
- 为用户建立一个新的家目录/home/新用户
- 在/etc/skel/中的文件复制到用户的家目录中
- 建立一个于用户用户名相同的组,新建用户默认属于这个同名组
- -d 家目录
- -s 登录shell
- -u userid
- -g 主族
- -G 附属组(最多31个,用“,”隔开)
- usermod 修改用户信息
- -l 新用户名
- -u 新userid
- -d 用户家目录位置
- -g用户所属主组
- -G 用户所属附属组
- -L锁定用户使其不能登录
- -U 解除锁定
- userdel 用以删除指定用户 (保留用户的家目录)
- userdel -r 同时删除用户的家目录
创建组
groupadd 创建组
groupmod -n 修改组名
groupmod -g 修改组id
groupdel 删除组
对于目录来说必须有x执行权限,否则无法查看内容
Linux基于UGO模型进行控制:
- U代表user,G代表Group,O代表Other
- 每个文件的权限基于UGO进行设置
- 权限三个一组(rwx),对应UGO分别设置
- 每一个文件拥有一个所属用户和所属组,对应UG,不属于该文件所属用户或所属组的使用O权限
- 使用ls -l查看当前目录下文件的详细信息,分别对应:UGO、 链接数量、 U:所属用户 、G:所属组 、大小 、时间 、文件名。
drwxr-xr–:d表示文件类型 rwx:U权限 r-x:G权限 r–:O权限
- chown用以改变文件的所属用户
- -R 参数递归的修改目录下的所有文件的所属用户
- chgrp用以改变文件的所属组
- -R 参数递归的修改目录下的所有文件的所属组
修改权限:chmod 模式 文件
- u、g、o分别代表用户、组和其他
- a可以代指ugo
- +、—代表加入或删除对应权限
- r\w\x代表三种权限
示例:
- chmod u+rw linuxcast.net
- chmod g-x linuxcast.net
- chmod go+r linuxcast.net
- chmod a-x linuxcast.net
chmod支持以数字方式修改权限
- r=4(2^2)
- w=2(2^1)
- x=1(2^0)
- rw=4+2=6
- rwx=4+2+1=7
- r-x=4+1=5
- chmod 660 linuxcast.net == rw-rw—-
- chmod 775 linuxcast.net ==rwxrwxr-x
每一个终端都拥有一个umask属性,来确认新建文件、文件夹的默认权限
- umask使用数字权限方式表示
- 目录的默认权限:777-umask
- 文件的默认权限:666-umask
- 一般普通用户默认umask是002,root用户默认umask是022
- 对于普通用户:新建文件的权限:666-002=664 新建目录的权限是777-002=775
设置特殊权限
- 设置suid
- chmod u+s linuxcast.net
- 设置sgid
- chmod g+s linuxcast.net
- 设置sticky
- chmod o+t linuxcast.net
数字方式表示:
- suid =4
- sgid =2
- sticky=1
- chmod 4755 linuxcast.net 设置了suid
ip编址是一个双层编址方案,一个ip地址标识一个主机(或一个网卡接口)
最为广泛的是ipv4 编址,逐渐向ipv6编址切换
ipv4地址为32位长,ipv6地址为128位长
一个ipv4地址分为两个不分:网络部分和主机部分
网络部分用来表示所属区域、主机部分用来标识该区域中的哪个主机
域名分为三个部分 :
www.linuxcate.net 主机名 域名 类型
域名与ip地址通过DNS转换
- 要配置一个局域网通信的计算机
- ip地址
- 子网掩码
- 要配置一个跨网段通信的计算机
- ip地址
- 子网掩码
- 网关
- 要配置一个可上网的计算机
- ip地址
- 子网掩码
- 网关
- DNS
以太网连接
- 以太网接口被命名为:eth0、eth1等,0、1代表网卡编号
- 通过lspci命令可以查看网卡硬件信息,如果是usb网卡,可以使用lsusb来查看
- ifconfig来查看接口信息
- ifconfig -a 查看所有接口
- ifconfig eth0 查看指定接口
- ifup eth0 启用eth0接口
- ifdown eth0 禁用接口
setup 命令配置网络信息
- 网卡配置文件
- /etc/sysconfig/network-script/ifcfg-eth0
- DNS配置文件
- /etc/resolv.conf
- 主机名配置文件
- /etc/sysconfig/network
- 静态主机名配置文件
- /etc/hosts
网络测试命令
- 测试网络连通性
- ping 192.168.1.1
- ping www.linuxcast.net
- 测试DNS解析
- host www.linuxcast.net
- dig www.linuxcast.net
- 显示路由表:ip route
- 追踪到达目标地址的网络路径
- traceroute www.linuxcast.net
- 使用mtr进行网络质量测试
- mtr www.linuxcast.net
- 实时修改主机名:hostname(重启后恢复)
- 永久性修改主机名:/etc/sysconfig/network 中 hostname
管道和重定向
命令行shell的数据流:
名称 | 说明 | 编号 | 默认 |
---|---|---|---|
STDIN | 标准输入 | 0 | 键盘 |
STDOUT | 标准输出 | 1 | 终端 |
STDERR | 标准错误 | 2 | 终端 |
命令通过STDIN接收参数或数据,通过STDOUT输出结果或通过STDERR输出错误
分类 | 关键字 | 定义 | 例子 |
---|---|---|---|
重定向 | > | 将STDOUT重定向到文件(覆盖) | echo”linuxcast” > outfile |
重定向 | >> | 将STDOUT重定向到文件(追加) | echo”linuxcast” >> outfile |
重定向 | 2> | 将STDERR重定向到文件(覆盖) | ls -ls 2> outfile |
重定向 | 2>&1 | 将STDERR 与STDOUT结合 | |
重定向 | < | 重定向标准输入 | grep linuxcast < /etc/passwd |
管道 | | | 将一个名的STDOUT作为另一个命令的STDIN | find / -user linuxcast 2> /dev/null | grep Video |
- 管道通常用来组合不同的命令。
- 重定向通常用来保存某命令的输出信息或错误信息,可以用来记录执行结果或保存错误信息到一个指定的文件
基于关键字搜索 grep
- -i 在搜索的时候忽略大小写
- -n 显示所在行数
- -v 输出不带关键字的行
- -Ax 在输出的时候包含结果所在行之后的指定行数
- -Bx 在输出的时候包含结果所在行之前的指定行数
基于列处理文本cut
- -d 指定分割字符 (默认为TAB)
- -f 指定输出的列号
- -c 基于字符进行切割
grep linuxcat /etc/passwd | cut -d: -f3
wc用以统计文本信息
- -l 只统计行数
- -w 只统计单词
- -c 只统计字节数
- -m 只统计字符数
sort用以对文本内容进行排序(默认正序)
- -r 进行倒序排序
- -n 基于数字进行排序
- -f 忽略大小
- -u 删除重复行
- -t c 使用c作为分隔符分割为列进行排序
- -k x 当进行基于指定字符分割为列的排序时,指定基于那个列排序
diff用来比较两个文件的区别:diff linuxcast linuxcast-new
- -i 忽略大小写
- -b 忽略空格数量的改变
- -u 统一显示比较信息(一般用以生成patch文件)
aspell用以显示检查文本拼写
tr用以处理文本内容
- 删除关键字:tr -d ‘TMD’ < linuxcast
- 转换大小写: tr ‘a-z’ ‘A-Z’ < linuxcast
sed用以搜索并替换文本
sed ‘s/linux/unix/g’ linuxcast :在linuxcast中查找linux全部g替换成unix
sed ‘1,50s/linux/unix/g’ linuxcast :1-50行
sed -e ‘s/linux/unix/g’ -e ‘s/nash/nash_su/g’ linuxcast :查找多个内容
sed -f sededit linuxcast :把命令存到sededit中,调用sededit
BIOS找到可启动设备后执行其引导代码,引导代码为MBR的前446字节。跳转到grub(/boot)是linux使用的主流引导程序
Linux系统启动:
BIOS –> MBR: Boot Code –> 执行引导程序 - GRUB –> 加载内核 –> 执行init –> runlevel
dmesg查看本次内核启动的数据信息 /var/log/
- init是linux系统中运行的第一个进程
- 调用/etc/rc.d/rc.sysinit负责对系统进行初始化,挂载文件系统,并且根据运行级别启动相应服务
linux运行级别:/etc/inittab配置默认的运行级别
- 0关机
- 1单用户模式
- 2不带网络的多用户模式
- 3多用户模式
- 4未使用
-5 XII图形化模式
-6 重新启动
单用户修改root密码
开机引导时为内核传递参数‘1’或者“single”系统进入单用户
单用户模式下不启动任何服务
单用户模式直接以root用户登录,并且不需要密码
可以使用passwd修改root密码
源代码一般会被打包成 tar.gz的归档压缩文件,需要编译成为二进制形式才能运行使用
- 安装软件:rpm -i software.rpm,-v显示详细信息-h显示进度条
- 卸载软件:rpm -e software
- 升级形式安装:rpm -U software-new
- 列出所有安装的rpm软件:rpm -qa
- 查询目标文件属于哪个rpm包:rpm -qf filename
- 查询指定已安装rpm软件的信息:rpm -qi packagename
- 查询指定已安装rpm软件包含的文件:rpm -ql packagename
- 查询rpm文件的信息:rpm -qip software.rpm
- 查询rpm文件包含的文件:rpm -qlp software.rpm
- 导入密钥:rpm –import RPM-GPG-KEY-CentOS-6
- 验证rpm文件:rpm -K software.rpm
- 验证已安装的软件:rpm -V software
- yum使用仓库保存管理rpm软件,保存在/etc/yum.repos.d/目录下,格式如下:
1 | [LinuxCast] |
- 仓库可以使用file、http、ftp、nfs方式
- yum配置文件必须.repo结尾
- 一个配置文件内可以保存多个仓库的配置信息
- /etc/yum.repos.d/目录下可以存在多个配置文件
- yum install software-name 安装指定软件
- yum remove software-name 卸载指定软件
- yum update software-name 更新软件
- yum search keyword 搜索
- yum list (all |installed |recent|updates)列出全部、安装的、最近的、软件更新
- yum info packagename 相当于 rpm -qi 显示指定软件的信息
- yum whatprovides filename 查询哪个rpm软件包含目标文件
创建yum仓库
- 将所有rpm文件拷贝到一个文件夹中 :cp -rv /光盘/Packages/* /linuxcast-yum
- 通过rpm命令手工安装createrepo软件:rpm -ivh createrepo
- 运行命令createrepo -v /yum仓库 进行索引,索引后创建repodata目录
- 如果有分组信息,则在运行命令的时候使用-g参数指定分组文件
createrepo -g /tmp/*compsxml /rpm-directory
CentOS/RHEL的分组信息保存在光盘repodata/目录下,文件名以comps.xml结尾的xml文件
-创建好后设置配置文件:/etc/yum.repos.d/ —>vim linuxcast.repo
1 | [linuxcast] |
创建好之后本机可以通过file方式直接使用,如果需要作为对外的YUM仓库服务器,可以通过HTTP,FTP或NFS协议共享出去
- yum clearn all 每次运行清除缓存信息