Linux学习

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 [email protected] 回车输入密码,即可登录.
    登录后:
        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)修改用户账户的信息

你可能感兴趣的:(linux,linux,学习,运维)