linux 命令笔记

1.文件目录

第一位表示文件类型。d是目录文件,l是链接文件,-是普通文件,p是管道。

后面的分三个三个来看,即 rwx 、r-x 、r-x。   read  write excute  //文件夹只有x权限 才可以进去

第一个:  root :r 是可读,w 是可写,x 是可执行,rwx 意思是可读可写可执行。

第二个:  一般用户(用户组):r-x 是可读可执行不可写。

第三个:  其他用户,r-x 是可读可执行不可写。

  

2.基本命令   ls list

ls  [-选项] [参数]
    -a    // all  显示隐藏文件
    -l     // long 长显示 显示更多信息
    -d    //  detail 显示文件本身信息
    -h    // human  以人类角度 友好显示, 比如文件大小  会以多少Kb或者多少兆的形式显示



mkdir  make  directories
mkdir [-p] 目录名
  -p   // partents 递归创建目录
  -m   // mode=模式 创建指定权限的目录



rmdir  remove empty directory 删除目录
rmdir [-r] 目录
  -r  //允许删除非空目录


cd  change directory
cd [目录]
  ..   //回到上一级目录
  


cp  copy   
cp [-rp] 源文件或目录 目标目录
  -r  //复制目录
  -p  // properties 保留文件属性连同档案的属性一起复制过去,而非使用预设属性
  -a :相当于 -pdr 的意思(参数pdr分别为:保留权限,复制软链接本身,递归复制
  -d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;
  -f :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
  -i :若目的档(destination)已经存在时,在覆盖时会先询问是否真的动作!
  -l :进行硬式连结 (hard link) 的连结档建立,而非复制档案本身;
  -r :递归持续复制,用于目录的复制行为;
  -s :复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案;
  -u :若 destination 比 source 旧才更新 destination。
支持同时复制多个文件  cp /source1 /source2  /target


mv 剪切 改名
mv 源文件或目录  目标目录
rm  remove  目录处理命令
rm [-rf] 文件或目录
  -r  //删除目录
  -f  //强制删除

  

3.文件处理命令

touch 创建空文件 , 不是文件夹
touch 文件名


cat 显示文件内容
cat [-n] 文件名
  -n  //显示行号


tac 显示文件内容 (反向列示)
tac 文件名
more 分页显示文件内容
more 文件名
  (空格)或 f  //翻页
  (ENTER)  // 换行
  q 或 Q  //quite 退出


less 分页显示文件内容(可上下翻)
less 文件名
  (page down) // 下翻(一页)
  (page up)  // 上翻(一页)
  (上箭头)    //上翻(一行) 

head 显示文件内容前几行 默认显示前十行
head [
-n Number] 文件名
 -n Number  //显示前多少行 -n 20 显示前二十行   
  

tail 显示文件后面几行 默认显示前十行
tail [-nf] 文件名
  -n  //指定行数
  -f  //动态显示文件末尾内容


ln 生成链接文件 ## 软连接类似windows快捷方式 ##硬链接 可以 源文件同步更新
ln [-s] 源文件 目标文件
  -s  //soft 创建软链接 没有 -s 则生成硬链接


压缩和解压

gzip 压缩文件
gzip 文件 ## 只能压缩文件,并且不保留源文件
gunzip 解压文件
gunzip 压缩文件 同 gzip -d

tar 打包目录
tar [-cvfz] 压缩后的文件名 目录
  -c  //打包
  -x  //解压
  -v  //显示详细信息
  -f  //指定文件名称
  -z  //-zc 压缩 -zx 解压缩
## 组合 -zcvf 压缩, -zxvf 解压, -cjf 生成bz2文件和bzip2命令一样压缩 , -xjf和bunzip2一样 解压


zip [-r] 压缩后的文件名 文件或目录
  -r  //压缩目录

unzip 解压缩
unzip 文件或目录

bzip2 压缩文件
bzip2 [-k] 文件
  -k  //保留源文件, gzip不保留源文件

bunzip2 解压文件
bunzip2 压缩文件

 4.权限管理

chmod 改名文件或目录的权限
chmod [{ugoa}{+-=}{rwx}] 文件或目录
chmod [mode=421] 文件或目录  
  -R 文件或目录 //递归修改  
示例:chmod u+x aa.sh 给当前所有者赋予文件可执行权限 u+x,g-r 可以使用逗号 多个授权
   {ugoa} u:所有者 g:所有组 o:其他用户 a:所有用户
   {+-=}  +:增加权限 -:减少权限 =:重新赋予权限 
   {rwx}  r:可读 w:可写 x:可执行 
权限同时也可以使用数字表示
4-->r 2-->w 1-->x
示例: chmod 777 aa.sh 表示所有者、所有组和其他者 都赋予 读写执行的权限, 7 为 4+2+1 ,6为4+2,5为4+1 4为4 3为2+1 ...
      

chown 改变文件的所有者 change file ownership
chown 用户 文件或目录
##

##umask 0022 第一个 0 特殊权限

5.文件搜索

find 文件搜索
find [搜索范围] [匹配条件]
  -name 按名称搜索
  -iname 按名称查找 // 不区分大小写
  -size 文件大小 // +:大于 , -:小于 , 没有符号 是等于
  -user [用户] // 按所有者查找
  -group [组] // 按所属组查找
  -amin  //访问时间 access ,什么时间被访问过 -amin -5 5分钟被访问过
  -cmin  //文件属性 change 如 权限 ,所属者 所属组
  -mmin  //文件内容 modify
  -type  // f :文件 d:目录 i:软连接文件
  -inum  //i节点 ,每个文件 都有一个i节点
## 连接选项
  -a  //and 两个条件同时满足
  -o  //or 满足其中一个条件
## 查找结果执行命令
  -exec 命令 {};
  -ok 命令 {} ; //会多了一个确认,好比js中的confirm
  #这两个命令都是对查找结果执行想要的命令,例如 ls -l 查看详细, 其中 {} 表示查找的结果,表示转义符,最后使用分号结尾;
示例 find /ect -size +2048 -a -4096 查找文件 在 1M~2M之间的文件
示例:find /etc -size +512 ## 1M = 1024k, 1k = 2数据块(linux中存储文件最小单位)
示例:find /ect -name init  // 在etc下面搜索名称为init文件(精准搜索)
## * :匹配任意字符 如 *init*
## ? : 匹配单个人任意字符 如 init???


locate 在文件资料库中查找文件(速度快)
locate [-i] 文件名
  -i  //不区分大小写
## 可能资料库中并不存在要查找的文件, 需要使用 updatedb 命令 更新资料库
## 文件在 /tmp 中的文件 查不到,不在locate的收录范围内

grep 在文件中搜寻字符串匹配的行并输出
grep [-iv] 指定字符串 文件
  -i  //不区分大小写
  -v  //排除指定字符串



which 搜索命令所在目录及别名信息
which 命令

whereis 搜索命令 并且显示帮助文档所在位置
whereis 命令

6.帮助命令

 

man manual获得帮助信息
man [n] 命令
  n : 1:命令的帮助 5:配置文件的帮助
## 同一个命令的结果 可能是命令 也可能是配置文件 , 默认是1, man 命令 有多个结果时默认为命令的帮助


whatis 得到命令的简短介绍
whatis 命令


命令 --help 列出常见的命令选项
示例: touch --help  //列出touch 的参数

info 获取帮助信息 和 man 类似 ,只是显示方式不太一样

help 查看命令的帮助信息
help 命令
## 有些命令,是内置命令 获取不到帮助信息, 这个时候就要使用help 命令

7.用户管理命令

useradd 添加新用户
useradd 用户名
passwd 设置用户密码
passwd 用户名 ##会提示输入用户密码


who 查看当前登录用户
who ##没有参数
## 显示结果 登录用户名 登录终端(tty本地终端 pts 远程终端) 登录时间 IP地址
获取更为详细的信息 使用 w 命令

8.网络命令

write 给用户发信息 CTRL+D 保存结束(所有用户都可以使用)
write 用户名 [回车] [message] [CTRL+D]
##一定是在线用户
  all  //发送广播信息 ,给所有人发信息

ping 测试网络连通性
ping [-c] IP地址
  -c  //指定发送次数
示例: ping -c 5 192.168.1.119 测试连接5次

ifconfig 查看和设置网卡信息 interface configure
ifconfig 网卡名称 IP地址
##ifconfig eth0 192.168.1.120 注:这个是临时的,每次重启需要重新设置

mail 查看发送电子邮件
mail [用户名]
##查看自己的邮件 输入序列号即可
  d 序列号 // 删除邮件
  h   //返回邮件列表
  q  //退出

last 列出目前与过去登入系统的用户信息
## 无条件参数
lastlog 列出用户最后一次登录,包括未登录的用户
lastlog -u 用户ID  //指定用户 //命令 id 查出当前用户id信息


traceroute 显示数据包到主机间的路径
示例: traceroute www.baidu.com ,显示连接到baidu 所有路径

netstat 显示网络相关信息
netstat [选项]
  -t  //TCP协议
  -u  //UDP协议
  -l  //监听
  -r  //路由
  -n  // 显示IP地址和端口号
示例:
  netstat -tlun 查看本机监听的端口
  netstat -an  查看本机所有的网络连接
  netstat -rn  查看本机的路由表

setup 网络设置 ## 可能不存在此命令

service network restart 修改网络需要重启网络服务

mount 挂载命令 ##习惯使用/mnt 挂载点
mount [- 文件系统] 设备文件名 挂载点
示例 mount -t iso9960 /dev/sr0 /mnt/chrom/ 把设备文件名 挂到挂载点

umount 卸载
umount 设备文件名

9.关机重启命令

shutdown [-chr] 时间
  -c: 取消前一个关机命令
  -h: 关机
  -r: 重启
示例:shutdown -h now

halt和 poweroff 和init 0 是关机命令

reboot 和 init 6 重启   

init 系统运行级别
  0:关机
  1:单用户(启动最核心的程序)
  2:不完全多用户, 不含NFS服务(网络文件服务)
  3:完全多用户
  4:未分配
  5:图形界面
  6:重启

runlevel 查询运行级别


logout 用户退出


 10.文本编辑器

vim 编辑文本
vim 文件名
  : //命令
    set nu  //设置行号
    set nonu //取消行号
    n    //到第n行
    wq    //保存退出
    n,nd  //删除指定范围的行 例如 :10,15d ##删除10 -15 行
    ic  //不分大小写 (搜索时)
    noic  //区分大小写
    r 文件名 //导入另一个文件的内容到此文件中
    r !命令 //可以把一个命令 执行的结果导入文件中
    ab a b //替换 输入a 在按回车或空格 会显示为 b
  ##插入命令
  i //光标前插入
  I //光标所在行 行首插入
  a //光标后插入
  A //光标所在行 行尾插入
  o //光标下入去新行
  O //光标上插入新行
  ##换行命令
  gg //到第一行
  G  //到最后一行
  nG //到第n行 ,例如:5G跳到第5行
  $  //移至行尾
  0  //移至行首
  ##删除命令
  x   //删除光标所在处的一个字符
  X   //删除光标所在处的前一个字符
  nx  //删除光标所在处的n给字符
  dd  //删除光标所在行,ndd 删除n行
  dg  //删除光标所在行到文件末尾内容
  D   //输出光标所在处到行尾内容
  ## 剪切
  yy  //复制当前行
  nyy  //复制n行
  dd  //删除 也表示剪切
  p  //粘贴到当前光标行下
  P  //粘贴到当前光标行上
  #替换
  r  //替换一个字符
  R  //当前光标开始替换
  ##撤回
  u  //撤回执行操作  
  /   //搜索功能 /aa ##按回车开始搜索aa字符

##################
可以在/home/username/.vimrc 添加快捷设置
例如:
  ab email  xxxx@qq.com
  map ^P I#<ESC> // 光标所在行首添加#号 , map定义 ^P使用P字符 调用命令 I# ,I:光标宜动到所在行的最前面,最后ESC退出
  

11.软件包管理

 

RPM包的命名规则 (未安装使用包全名,已安装使用包名)
RMP包的依赖性

rpm -ivh 安装包全名
   -Uvh 包全名
-e 包名
   -q 包名
   -ql 包名 //查询包的文件在哪
   -qf 系统文件名 //file 文件属于哪个包
   -qR 包名 //requires 包的依赖性 需要哪些依赖包
  -i  //install
  -v  //安装信息
  -h  //安装过程
  -U  //upgrade 升级
  -e  //erase 卸载
  -q  //query 查询
  -qa  //查询所有安装包
  -qi  //information 查询安装包的信息
  -qip //package 查询未安装包的信息(指定包全名)

## 包校验 是否被更改
rpm -V 已安装的包名(verify)

rpm2cpio 将rpm包转换为pio格式的命令
cpio  用户出昂见软件档案文件和从档案文件中提取文件
cpio [-idv] 文件或设备
  i:copy-in模式, 还原
  d:还原是自动新建目录
  -v:显示还原过程
示例:rpm2cpioo 包全名 | cpio -idv .文件绝对路径
yum  在线安装 

yum list 查询所有可用软件包列表
yum serach 关键字(包名)
yum -y install 包名
  install 安装
  -y  自动回答yes #表示自动安装,不需要询问
yum -y update 包名  //升级  慎重使用
yum -y remove 包名 //卸载

###软件组管理命令
## 列出所有可用的软件组列表
yum grouplist
yum groupinstall 软件组名
yum groupremove 软件组名

## 源码包 和 RPM 包 的区别



#RPM包默认安装路径
/etc/   配置文件安装目录
/usr/bin/  可执行的命令安装目录
/usr/lib/  程序所使用的函数库保存位置
/usr/share/doc/  基本的软件使用手册保存位置
/usr/share/man  帮助文件保存位置

12 用户 和 用户组 的管理

/etc/passwd
/ect/shadow
/etc/group
/etc/gshadow
/home/用户名
/var/spool/mail/用户名


useradd  添加用户
useradd [-udcgGs] 用户名
  -u UID  手工指定用户的UID号
  -d 家目录
  -c 用户说明
  -g 组名  //初始化组
  -G 组名  //附加组
  -s Shell //指定用户登录的shell
passwd 用户设置密码

passwd [-ul] 用户
  -u  //用户解锁
  -l  //用户锁定

echo "变量" | passwd --stdin 用户名
## 使用 变量 作为 当前用户的密码
## echo "123" | passwd --stdin username


usermod 修改用户信息 modify
usermod [-ucGLU] 用户名
  -u UUID  //修改UUID
  -c 用户说明 //修改用户的说明信息
  -G 组名  //修改用户附加组
  -L    //临时锁定用户
  -U    //解锁

userdel [-r] 用户名
  -r 删除用户的同时删除家目录


change 修改用户密码状态

change [-ldmMWIE] 用户名
  -l //list 列出用户的详细密码状态
  -d 日期 //修改密码最后一次更改日期(shadow3字段)
  -m 天数 //两次密码修改时间(4字段)
  -M 天数 //密码有效期(5字段)
  -W 天数 //密码过期前警告天数(6字段)
  -I 天数 //密码或期后宽限天数(7字段)
  -E 日期 //账号失效时间(8字段)


su - 用户 //切换用户 #su 用户 普通用户切换为root用户不会改变环境变量,需要加 -
su - root -c "命令" //不切换用户 ,执行命令 su - root -c "useradd user1" ## 添加用户user1


###用户组管理
groupadd [-g] 组名
  -g GID  //自定组GID

groupmod [-gn] 组名  
  -g GID  //修改组ID
  -n 新组名 //修改组名

groupdel 组名 //删除组

gpasswd [-ad] 用户名 组 //当前用户加入组 或者 删除组
  -a //add 加入组
  -d //delete 删除组

13 ACL权限管理(Access Control List 访问控制列表,一个针对文件/目录的访问控制列表)

df -h 查看分区 
## 查询指定分区详细文件系统信息的命令
dumpe2fs -h /dev/sda3
  -h 仅仅显示超级快中信息, 而不是显示磁盘块组的详细信息

## 临时开启分区ACL权限
mount -o remount,acl
## 重新挂载根分区,并挂载加入acl权限
## 永久开启分区ACL权限
vi /etc/fstab
mount -0 remount / ## 修改后重新挂载重新 启动

## 查看ACL命令
getfacl 文件名  //查看acl权限

## 设定ACL权限的命令
setfacle [选项] 文件名
  -m u: 用户名:rx //设定ACL权限 , 给用户 设定 rx权限
  -x  //删除指定的ACL权限
  -b  //删除所有的ACL权限
-d  //设定默认ACL权限
  -k  //删除默认ACL权限
  -R  //递归设定ACL权限
## setfacl -m u:用户名:权限 -R 文件名

### 最大有效权限mask
如果我给用户赋予了ACL权限,是需要和mask的权限 “相与” 才能得到用户的真正权限 ,所谓相与就是 mask有的权限,用户也要有才能真正的拥有权限
##设置最大(mask)权限
setfacl -m m:rx 文件名 //设置mask权限

## 默认ACL权限
setfacl -m d:u:用户名:权限 文件名

## 文件的特殊权限
 setUID //U : user
** 只有可以执行的二进制程序才能设定SUID权限
** 命令执行者要对该程序用有 x 权限
** 命令执行者在执行该程序时获得该程序文件属主的身份(若用户拥有SUID权限,在执行命令时 就会拥有root的权限)
** SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

setGID G:Group //设置用户 获得 所属组权限


Sticky BIT // 粘着位权限 值针对目录有效 (除了root可以删除所有文件, 普通用户就算用户w权限,也只能删除自己建立的文件 )
chmod 1775 文件 // 1 赋予粘着位

### 文件系统属性chattr权限

chattr [+-=] [选项] 文件或目录名
  +  //增加权限
  -  //删除权限
  =  //等于某权限
    ##选项
      i  //如果是文件,不允许对文件进行删除、改名, 添加和修改数据;
         //如果是目录 只能修改目录下文件的数据, 不允许建立和删除文件
      a  //如果是文件,只能在文件中增加数据,不能删除和修改
         //如说是目录, 只允许在目录中建立和修改文件, 不允许删除

lsattr 选项 文件名
  -a   //显示所有文件和目录
  -d  //如目标是是目录,仅列出目录本身的属性,而不是子文件

14 文件系统管理

分区类型 (主分区和扩展分区 总共最多为4个)
 主分区:最多只能分4个
 扩展分区:只能一个,也算主分区的一种,但不能存储数据和格式化,必须再划分为逻辑分区才能使用
 逻辑分区:是在扩展分区中划分的,如果是IDE硬盘,linux最多支持59个逻辑分区,如果是SCSI硬盘,Linux最多支持11个逻辑分区

文件系统
  ext2 最大支持16TB
  ext3 最大支持16TB,带日志功能
  ext4 最大1EB,单个文件最大16TB
##越高级的系统越先进

df 查看分区 会计算文件占用空间和命令或程序占用的空间(如文件已删除但程序没有释放空间)
  -h //人性化显示 、、
  -a //显示隐藏分区
  
du 查看目录大小,面向文件,只会计算文件或目录占用的空间
  -h //人性化
  -s //统计占总量 statistic
##例如 du -sh /

文件系统修复命令  一般不需要手动修复
fsck [选项] 分区设备文件名
  -a  //不用显示用户提示,自动修复文件系统
  -y  //自动修复 和 -a的作用一致,不过有些文件系统只支持 -y

显示磁盘状态命令
dumpe2fs 分区设备文件名
## 例如 dumpe2fs /dev/sda1

查询与自动挂载    //挂载点 就是一个目录
  mount [-l] //显示已挂载的设备 -l会显示卷标名称

  mount -a //依据配置文件/etc/fstab的内容,自动挂载


挂载命令的格式
mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点
  -t 文件系统 :加入文件系统类型来指定挂载大的类型,可以ext3,ext4.iso9660等文件系统 //挂载是硬盘、分区 默认 ext3/ext4 ,如果是光驱 默认文件系统是iso9660
  -L 卷标名 : 挂载指定卷标的分区,而不是安装设备文件名挂载 //卷标名就是别名
  -o 特殊选项 :可以指定挂载的额外选项,如remount exec 等

挂载光盘 与 U盘 示例:
    
1.挂载光盘
  1 mkdir /mnt/chrom/ //建立挂载点(盘符或目录)只要是创建一个空目录就行
  2 把光盘放入光驱
  3 mount -t iso9660 /dev/cdrom /mnt/cdrom/ //挂载光盘,把设备文件和挂载点连接起来
## -t 可以省略 : mount /dev/cdrom /mnt/cdrom/  

2.卸载命令
  unmount 设备文件名或挂载点
## unmount /mnt/cdrom/

3.挂载U盘 ## 必须使用linux本身,鼠标点进linux里,然后再插入U盘
  1 fdisk -l //查看U盘设备文件名
  2 mount -t vfat /dev/sdb1 /mnt/usb/
  ## LINUX 默认不支持NTFS文件系统的,可以使用NTFS-3G插件,支持NTFS


fdisk 分区过程
###可以使用 vmware 添加硬盘
fdisk l //查看一下新添加的硬盘
fdisk 设备文件名 回车
    d  //删除一个分区
    n  //新建分区
    l  //显示已知的文件系统类型
    p  //显示分区列表
    m  //显示帮助信息
    w  //保存
    q  //退出
  
例如: fdisk /dev/sdb  //分区还不存在 只能写sdb

### 重新读取分区表信息
   partprobe ## 这样新增的分区 就可以不用重启就能使用
  
格式化分区
   mkfs -t ext4 /dev/sdb1 ##扩展分区不能格式化
挂载分区
   mount /dev/sdb1 /mnt/usb
## fdisk 重启要重新挂载


分区自动挂载 与fstab文件修复

/etc/fstab文件
文件内容:
  /dev/sdb1 /disk1 ext4 defualts 1 2
  第一字段:分区设备文件名或UUID(不用担心分区顺序) dumpe2fs 查看UUID
  第二字段:挂载点
  第三字段:文件系统名称
  第四字段:挂载参数
  第五字段:指定分区是否被dump备份, 0代表不备份,1代表每天备份,2代表不定期备份
  第六字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,1优先于2

#自动挂载
  mount -a
### 若/etc/fstab没有修改权限 给分区 重新挂载设置权限
  mount -o remount,rw / //给读写权限
原文地址:https://www.cnblogs.com/bignew/p/12483217.html