1 Linux的目录结构介绍
bin | 存放常用的命令 |
etc | 存放配置文件 |
boot | linux启动的文件 |
home | 存放用户 |
lib | 存放动态库,给应用程序使用 |
lostfound | 一般是空的,但系统异常关机会产生文件 |
media | 自动挂载,如u盘,光盘 |
mnt | 手动挂载,一般自己创建目录后再挂载 |
proc | 和进程相关 |
root | 超级用户的主目录 |
sbin | 超链接,存放系统管理员用到的命令 |
opt | 安装软件目录 |
usr | 放软件资源 |
src | 内核的东西 |
2 linux的常用命令
目录-特殊符号
特殊符号
~ : 用户的加目录
. : 当前目录
.. : 上级目录
/ : 根目录
- : 上一次所在的目录
man
man : manual ,使用手册,查看某个命令,可以得到完整的文档说明,内容包括:命令的语法,各选项的意义,以及相关的命令,还可以查看软件服务配置文件,系统调用,库函数等等帮助的信息
man man : 显示的内容:
第一章,系统调用的函数;
第三章,库函数调用的帮助文档;
第四章,设备文件说明,也就是dev目录下面的文件,可以看到这些设备文件做什么
第五章,和配置文件相关的说明文档
第六章,用的不多,游戏;
第七章,用的不多,惯例和协议等等
第八章,系统管理员会用到的一些命令
第九章,和内核有关的一些文件
q : 退出
空格键(f):往下翻页
enter(j) : 往下一行
k :往上一行
b :往上翻页
/ : 搜索关键词, eg: /gjz , 下一个匹配的关键词(n), 上一个匹配的关键词(shift+n)
whatis
whatis : 用来查询一个命令执行什么功能,并将查询的结果打印到终端上面 = man -f ,man说明的第一行
info
info : 可以用来查看帮助信息,是man的详细内容,man会更方便些
touch
touch : 创建文件
touch 11.txt
touch 11.txt 22.txt 33.txt
mkdir
mkdir : 创建目录
mkdir dir1
mkdir dir1 dir2 dir3
mkdir dir{1,,3}
mkdir -p /opt/dev1/dev2/dev3 : 创建递归目录
-p : parent 向上递归
rm
rm : 删除文件或目录(remove)
rm dev.txt :删除文件
rm -r /opt/dev : 删除目录
rm -f dev.txt : 删除文件时,若文件不存在不提示报错信息
rm -rf /opt/dev/* : 一般-rf和rm 一起使用,不用考虑删除的是文件还是文件夹
rm -i dev1.txt dev2.txt : 每次删除前询问是否删除
-rm -ir dir{1..3} : 递归删除,每次询问
-f : force,有强制的意思
-r : recursive ,向下递归
-i : 提示
rmdir
rmdir : 删除空文件夹, 主要用于便捷删除整个磁盘的空目录文件
rmdir dev
rmdir -p /dev/dev1/dev2
rmdir -v dir* : 显示执行过程
mv
mv : 1 移动文件,2 重命名
mv file.txt dir
mv fine.txt newFile.txt
mv dir1 dir2(dir2 需要存在的,否则变成改名操作)
mv -i file.txt dir2 : 进行提醒,是否覆盖
mv -f file.txt dir2 : 强制覆盖(其实不加-f也是强制覆盖操作)
mv -b file.txt dir2 : 进行备份,之前的会被备份成:名称~
mv dir1/* .. : 移动文件夹得内容移动到另一个文件夹下
mv dir1/* dir2
cp
cp: copy复制文件或目录
cp file1.txt file2.txt: 复制文件
cp -r dir1 dir2 : 复制文件夹
cp -i file.txt dir : 提示
cp -f file1.txt file2.txt: 强制复制,默认也是强制复制
cp -b file1.txt file2.txt : -b备份
cp -a dir1/ dir2: -a 文件的所有属性也会copy过来
cd
cd :改变目录
特殊目录:
~ 用户家目录
. 当前的目录
.. 上一级目录
/ 根目录
- 上一次所在目录
cd ../..
cd ~ = cd
cd -
pwd
pwd : 打印当前绝对路径
pwd
ls
ls : 显示指定目录下的文件和属性信息
ls
ls -a :显示隐藏文件
ls -l :查看文件的更多信息,比如文件的所在组,创建时间,大小,权限等
ls / ;查看目录下的信息
ls -lR: 查看当前目录和子目录信息
ls f* : 模糊查询
ls -lt : 以新的文件在上面,旧的在下面的顺序排序,反向排序(-ltr)
ls -AF : 隐藏文件前面加. 目录后面加/ 可执行文件后面加*
ls -lH : 以可读的K,G,T等自动显示
tree
tree: 以树状显示目录结构
tree
tree -a : 显示所有内容,隐藏文件也显示
tree -d : 只显示目录
tree -L 2 : 只显示2个层级(Level 2)
tree -p : 显示权限
tree -t : 更改时间进行排序 (-tr)
tree -f : 显示相对路径
stat
stat: 显示文件或文件系统的详细信息
stat file.txt
里面的三个时间:
Access :访问时间,读取(more,less,cat,tail)或者修改(vim,nano等)会改变
Modefy :修改时间
Change :状态改变时间,修改的时候+文件属性改变(一般chmod和chown)的时候,(特殊的,touch命令,这三个时间都会被修改)
stat -f file.txt : 查看文件系统信息
stat -t file.txt : 简介的方式输出信息
rename
rename: 以字符串替换的方式批量改变文件名,和mv不一样的是可以批量修改,具有一定规则的文件名
格式: rename 's///' 文件 ,具体格式建议用man查看后使用,并不一定如此
rename 's/.txt/.doc/' myfile.txt : myfile.txt 改成 myfile.doc
rename 's/.txt/.doc/' myfile* : 批量修改
但以防万一出错,建议模拟看下替换效果,加上 -n: rename -n 's/.txt/.doc/' myfile*
rename -v 's/.txt/.doc/' myfile*: 显示替换的过程
rename dir file dir? : 将dir替换成file, 选的是所有包含dir的文件
basename
basename: 提取一个文件完整的路径名的文件名,还可以根据需求,删除指定的后缀(在shell脚本中对文件名处理特别有用)
basename /etc/password : 提取出password
basename /etc/local/ : 提取出local
basename -a /etc/password /etc/local : 提取多个文件(-a)
basename /etc/sysctrl.conf .conf = basename -s .conf /etc/sysctrl.conf :提取文件,把.conf的后缀删除
dirname
dirname: 去除文件名中的非目录部门,一般shell脚本配合basename一起使用
dirname /usr/bin/cat : 文件提取出目录部分
dirname /usr/bin/cat/ : 目录提取目录部分
chattr
chattr : 修改文件或目录的权限属性,除了可读可写可执行外还有很多隐藏权限(change attribute)
+ 开启某一个文件的具体的一个属性
- 关闭
sudo chattr +i file.txt : 禁止任何人修改,包括自己也不允许
lsattr : 查看权限
sudo chattr -i file.txt : 减去权限
sudo chattr +a file.txt : 只允许追加内容
sudo chattr -R +i dir : 对目录进行操作,下面的文件都生效
file
file : 识别文件类型和编码格式
file file.txt : 文本文件,返回:file.txt: ASCII text
file dir : 返回: dir: directory
file -i file.txt : 查看命令类型,返回: file.txt: text/plain;charset=us-ascii
..
md5
md5:
md5sum 11.txt > file.md5: 生成md5值
-b : -b 使用2进制的方式读取文件
-d : 使用文本模式读取文件内容
md5sum -c 11.md5 : 校验这个文件的md5是否正确,同目录需要有11文件
md5sum -c --status 11.md5 | echo $? : 返回结果:1 失败,0成功
find
find: 根据给定的路径和条件去查找相关的文件或者目录
sudo find / -name *.conf:全盘搜索需要加上sudo,涉及权限问题. 根据名称搜索(-name)
sudo find /etc -size +1k : 大于1k大小的文件
sudo find /home -user liangz : 指定用户的文件 -user
find . -type f: 搜索当前目录所有的文件(f file)
find . -type d: 搜索当前目录所有的目录(d dir)
find . -perm 664 -exec ls -l {} \: 根据权限搜索,列出来
find . :列出当前目录和子目录的信息
find / -iname "*.txt":搜索当前目录下.txt的文件,后缀不需要区分大小写
find / ! -name "*.txt": 搜索当前目录下非.txt的文件
find . -mtime -7 -exec rm -i {} \:7天之内修改过的文件删除
查询当前目录和子目录的命令有很多,eg:
find .
tree
ls -lH
..
which
which : 搜索位置命令,在 path变量 指定的路径当中搜索某个 系统命令 的位置,并返回第一个搜索结果
which bash : bash命令所在的路径
whereis
whereis : 用来定位命令的二进制程序,源代码文件以及man手册页相关文件的路径,在数据库中搜索,所以比find命令更快,数据库不是实时更新,一般一天一次,所以可能存在延迟
whereis ls : 程序路径 和 man手册的位置
whereis -b is : 二进制程序路径
locate
locate: 快速查找文件或目录,速度比find快,在数据库中查找,非磁盘中,每天更新一次,可能会找不到刚添加的文件,或者找到已经被删除的文件
手动更新数据库: sudo updatedb,以及输入密码
locate file.txt
locate /etc/sh
locate whereis
locate locate/f : 当前目录下以f开头的文件
chown
chown : (change owner) 改变文件或者目录的用户组的信息
。。
chgrp
chgrp : (change group )改变文件或者目录的所属用户组
。。
chmod
chmod : (change mod) 用来改变文件或目录的权限 ,只有文件的属组或者root用户才能修改
改变权限一般两种模式:1 符号模式,2 数字模式
。。
grep
grep: 可以找到文件当中想要的内容,结合正则表达式,是否灵活
grep gjz /etc/password : 该文件里找到关键字gjz的内容
grep gjz /data/ll /data/lo : 多文件里面搜索
grep -h gjz /data/ll : 不显示前面的文件名称
grep -rl gjz * : 递归向下搜索,有gjz的文本(-r 向下递归搜索,-l 只列出文件名,不显示具体的匹配行)
grep -c gjz /data/ll : 统计文件里包含关键词的次数
grep -i GJZ /data/ll : 忽略大小写搜索
grep -n gjz /data/ll : 显示行号
grep -v gjz /data/ll : 除了关键字,其他内容都展示
grep -l gjz * : 如果没有找不到关键字,给提示下 = 列出文件名称,不显示内容
grep -x gjz file1.txt : 精确匹配,以行为准
grep -q gjz file1.txt| echo $? :静默返回
egrep
egrep: 和grep -E命令类似,用来查找指定字符串,比它的性能好,支持“?+或”等等
egrep 'a+' file.txt: 包含一个或多个a的找出来
egrep 'gjz1|gjz2' file.txt: 或(|)
egrep '(gjz1)' file.txt : 把gjz1的整体内容找出来
egrep '(gjz1)+' file.txt : 一个或多个以上的找出来
egrep '(gjz1){2}' file.txt :出现2次的找出来
cat
cat :文件的内容显示在终端,全部显示,适合短小的内容
cat file.txt
cat file1.txt file2.txt
cat -n file.txt : 显示行号
cat -s file.txt : 去除空行,多行空行会合并一个
cat -b file.txt : 有内容的行会编号,空行不会
cat -E file.txt : 每行结尾加上$,包括空行
cat file1.txt > file2.txt :一个文件重定向到另一个文件,'>'不存在则创建,存在则覆盖
cat file1.txt >> file3.txt :'>>'不存在则创建,存在则追加到末尾
cat file1.txt file2.txt > conbine.txt : 合并文件
cat > file4.txt 创建文件,回车可直接输入文件内容,ctrl d保存文件
more
more :分页显示内容,但只能往下翻页,不能往回翻页
more ~/.bashrc : 空格,往下翻页;回车,滚动一行 ;q 退出
more -c -10 ~/.bashrc: -c清屏,-10每次只显示10行
more -s file.txt: 多行空格压缩一行
more +10 ~/.bashrc : +10是从第几行开始显示
less
less :分页查看文本内容,支持向前,向后翻看,但不支持翻页,全部显示在终端
less ~/.bashrc : j(enter)下一行,k上一行,空格(f)往下翻页,b往上翻页,搜索/gjz,n匹配下个关键词,往上匹配shift+n
history | less : 对history命令分页显示查看
head,tail
head,tail
tail : 显示最后几行,默认10行
tail ~/.bashrc
tail -n 500 ~/.bashrc: 显示最后500行
tail +20 ~/.bashrc :20行开始到末尾
tail -f file.txt :动态查看文件末尾
tac
tac : 反向显示文件的内容 ,就是cat的反向
nl
nl: 展现内容的同时添加行号
nl file.txt : 空行是没有行号的
nl -b a file.txt : 空行也有行号
nl -b a -n rz file.text :行号补0显示,默认6位
nl -b a -n rz -w 3 file.text :行号补0显示 ,3行
wc
wc : (word count) 统计文件的字节数,字数以及行数,并显示在屏幕上面,统计的时候搭配其他非常有用
wc file.txt : 返回(2 3 23 file.txt)代表,行数、字数(用空格,换行符,跳格分割后的字符串)、字符数(包括可见字符和不可见字符:换行符1)
wc -w file.txt : 只统计文件字数
wc -m file.txt : 只统计字符数
wc -c file.txt : 只统计字节数
wc -l file.txt : 只统计行数
cat file.txt| wc -l : 这个文件有多少行
split
split: 将大文件切割成较小的文件
split -2 file.txt : 每两行切割成一个文件,源文件仍然保留
split -b 10k file.txt : 以10k切割成一个小文件
split -b 10k -d -a 3 file.txt : 以10k切割成一个小文件,切割后的文件名称以数字结尾,长度是3,eg: x001
split -b 10k -d -a 3 file.txt split_file : 修改前缀,后面直接跟上前缀,eg:split_file001
cut
cut : 从文本当中剪切内容,按域,字节,字符,从文本的每一行当中提取出对应的内容,并显示在终端
..
paste
paste : 将两个或多个文件进行拼接,行、列都可以拼接
。。
sort
sort : 对文本内容进行排序,按字母/数字进行排序
sort file.txt
sort -n file.txt : 以数字本身大小进行排序
sort -nr file.txt : 倒序-r
sort -t : -k 3 -n file.txt : -t 分隔符“:” ,第三列数字进行排序
df
df : 查看磁盘情况
df
df -h :以只管K,M,G显示
df -h /home :home所在分区的磁盘使用情况
df -t squashfs:某个指定类型的文件类型的磁盘使用情况
df -Th :多显示一列文件系统
sync
sync : 强制将更改的内容立刻写入磁盘.
一般先放到内存缓冲区,适当时候再写入磁盘
mount
mount : 用来把(格式化后的硬盘或分区设备的文件系统,比如u盘,光驱等)文件系统挂载到目录里边,挂载后可直接操作u盘或光驱
。。
umount
umount : 卸载已经按照的文件目录或文件,和mount相反
..
dd
dd : (disk dump) 拷贝及转换文件,不仅可以完整的拷贝一个文件,同时也可以拷贝部分文件,而且也可以在拷贝的过程当中对内容进行转换,同时在这个命令也可以实现测试磁盘的读取于写入的速度
/dev/zero : 这个文件可以源源不断提供0这个数据
格式: dd if= of= bs= count= : if 数据从哪里来,of 写入到哪里,bs 每次需要拷贝数据大小,count 每次总共需要多少个bs这样的数据
dd if=/dev/zero of=file1.txt bs=500M count=1 : 拷贝500M的一个文件
dd if=file2.txt of=dfile2.txt bs=5 count=1 : 拷贝前5个字节
dd if=file2.txt of=dfile2.txt conv=ucase(或lcase): 拷贝,并且字符改成大写(或小写
tar
tar : (tape archive)用来为指定文件创建备份文档,也可以在档案当中添加改变文件,说白了就是打包解压文件,但打包不代表压缩
-c 新建打包文件
-x 解压文件
-f 指定需要处理的文件
-j 采用bzip2压缩成tar.br2
-z 采用gzip压缩或者解压成tar.gz
-v 显示操作过程
-t 查看打包文件具体的内容
-C 用来指定文件的压缩或解压的一个目录,没有指定则默认当前目录
打包:
tar -cvf file.tar *.txt
压缩:
tar -zcvf file.tar.gz *.txt
解压:
tar -zxvf file.tar.gz
tar -zxvf file.tar.gz -C dev
查看内容:
tar -tf file.tar.gz
vmstat
vmstat : (Virtual Meomory Statistics) 显示虚拟内存的状态,还可以显示系统的进程,内存等等整体的运行状态
。。
iostat
iostat: 监视系统输入输出设备以及CPU使用情况,不仅能够汇报磁盘的活动统计情况,同时也会汇报出CPU的使用情况
iostat
iostat 2 3 :每隔2秒显示一次,共显示3次
iostat -d sda1 : -d指定显示某个磁盘
iostat -t : 显示CPU和tty
iostat -m :以兆为单位显示信息
..
ipcs
ipcs: 显示linux系统当中进程间通信设备的状态,包括消息队列,共享内容以及信号量的信息
ipcs
ipcs -t : 显示详细变化量时间
ipcs -p :显示进程id
。。
ipcrm
ipcrm : 用来删除指定id的ipc对象
..
lftp
lftp: 下载工具
lftp zhmz@192.179.9.0 回车输入密码,即可登录.
登录后:
get file.txt : 下载文件
mget file.txt file1.txt : 下载多个文件
get -c file.txt : 断点续传
mirror dir :下载目录
put file.txt : 上传文件
mput *.txt : 上传多个文件
mirror -R dir : 上传目录,用-R
exit 退出
wget
wget : 网络下载工具,指定的url中下载文件,稳定且强大,支持断点下载
wget url/包
如果下载多个地址,放到一个txt文件里面:
wget -i downloadListFile.txt
重命名
wget -O newname.jar url/包
指定目录
wget -P dir url/包
断电续传
wget -c url/包
后台下载 -b
wget -b url/包
查看下载进度
tail -f wget.log
scp
scp : 服务器间进行复制
。。
curl
curl : (command line url)远程数据传输工具, 支持文件的下载,上传
curl www.baidu.com : 获得百度的源码
curl -o baidu.html www.baidu.com : 百度的源码保存到baidu.html
curl -O http://... : 网站当中的一个文件进行下载
curl -o wp.zip http://... : 网站当中的一个文件进行下载,并且重命名wp.zip
curl -C - -O http://... : 断点续传
curl -I www.baidu.com : 打印响应头
host
host : 用来测试域名系统工作是否正常
host 域名
host -v 域名 : 显示详细信息
tcpdump
tcpdump: 监听网络的流量,是一款数据嗅探工具。是linux系统当中是否非常频繁的数据抓包软件,能够记录所有经过服务器的数据包的信息,需要使用到管理员权限
。。
nc
nc :(Netcat) 设置路由器,支持测试linux的tcp和udp的端口,并且经常被使用于端口的扫描
。。
useradd
useradd : 创建并设置用户账号
。。
password
password: 修改用户的密码
。。
userdel
userdel : 删除用户账号的信息
su
su : (switch user) 切换用户的身份
。。
sudo
sudo : 以管理员的身份执行一些命令,管理员可授权一些普通用户执行一些root执行的操作
sudo visudo -> 输入密码,一般密码有时限,约15分钟,可修改
..
id
id : 显示真实有效的用户id和组id
id
id zhmz
usermod
usermod : (usr modify)修改用户账户的信息