目录
LINUX目录结构
根目录 /
/bin:可执行二进制文件所在目录,如果ll, rm, cp等命令都在这里
/media:挂载设备媒体,比如U盘等,会自动挂载在这里
/mnt:让用户挂载别的文件系统
/usr:unix system resources 很多应用会安装到此目录
/usr/local: 用户自己安装软件的目录
/sbin:管理员root的可执行文件目录
/proc:系统内存的映射,会保留进程运行的一些信息
/etc:系统软件的启动与配置目录
/etc/passwd:所有用户的一些配置信息都会在这里
/dev:设备文件所在目录
/home/user:用户user的家目录
history
返回命令历史记录
linux文件类型
其中符号链接就是软链接,而普通文件可以看成是硬链接
通配符
* 任意多个字符
?一个字符
目录相关操作
ls:
查看目录
ls -a: 查看包括隐藏文件
ls -l: 查看目录中文件的详细信息
ls -R: 递归查看目录,即同时查看子目录中的文件
ls -lrt & ls -lt: 按时间顺序查看目录中文件,rt和t返回结果是逆序的
cd - 回到上一级目录
cd $HOME 回到家目录
mkdir [option] 目录名1 目录名2 ...
-p选项递归创建
rmdir 不能删除非空目录, -p选项递归删除,没啥用,直接rm就行
rm -r 递归删除
which 查看命令所在目录
注意cd不在任何一个目录,是shell解释器本身自带的命令
tree:显式目录树
文件相关操作
touch: 创建文件,如果文件已经存在就更改访问时间
touch [option] filename1, filename2
rm:删除文件
rm -rf * : f代表强制删除,r是递归删除子目录
cp 拷贝文件或者目录
cp [option] srcpath despath
mv 移动文件或者目录
如果在同一个目录下移动,相当于改了名字
cp&mv: 如果移动的是目录,加上-r选项递归移动子目录,
如果despath最后一级是文件,则把文件内容复制到该文件中去,如果最后一级是目录,直接移过去就行了
文件内容查看
cat filename: 终端查看文件内容,文件中内容比较少的时候合适
more:终端分页显式,回车按行滚动,空格按页滚动
less可以按上下键反复观看文件内容,而more是不能回滚的
head&tile:显式文件头,文件尾
默认显示10行
-n 选项可以指定要显示的行数
tile -f可以跟踪文件末尾,在网络编程中会比较有用
统计信息
wc: word count统计文件内容
分别统计文件t1.cpp中行数,单词数,字节数,当然也可以分开统计这三项
du:查看目录占用空间,是当前目录下的子目录占用空间
-h 代表适合人类观看的方式human
--max-depth=1,只显示一级目录占用空间,不用再把子目录的子目录占用空间显示出来
df 显示磁盘空间信息
sda sdb代表两块磁盘,挂载点分别是在/media/yanglu/data2和/media/yanglu/data
文件权限位
chmod: 改变文件权限位
chmod u[g|o|a]+[-]r[w|x] filename
例子:chmod u+x t1.cpp t1.cpp加上当前用户的可执行权限
注意权限位后边的数字1 3 2等等,是硬链接计数
chmod既可以改变用户也可以改变用户组,所以chgrp其实没啥用
ln命令建立软硬链接
ln src des
ln t1.cpp t1.hard
此时硬链接计数增加了1
t1.cpp 与t1.hard对应的是两个目录项,本质上目录项就是个dirent结构体,其中包含了文件的名字以及对应的inode号码,由inode号码可以找到对应的inode,inode中包含除了文件名字以外的所有文件信息,比如文件在磁盘中的位置
软链接:
ln -s src des
建立软链接就是比硬链接加一个-s选项,目录也可以创建软连接
如图,建立软链接不会增加硬链接计数,软链接用箭头指向它链接的文件
当我们把t1.hard删除之后,硬链接计数减1,软连接此时失效了,如图,都变成了红色
删除硬链接或者软链接可以用 unlink filename,当然rm也行
建立硬链接不会增加新的inode号码,即所有对应同一个磁盘文件的硬链接其inode号码都相同
建立软链接会增加新的inode,因为软链接文件中的内容是其指向文件的路径
查找与检索
find与grep
find命令:
注意-maxdepth 1 指定只查找当前目录的,不看子目录
如果指定为2就是再看下一级目录的
按名字查找
如下,如果不写option参数的话默认就是按名字查找,且只查找当前目录,而不查找子目录中的文件
按类型查找
find ./ -type s 即查找当前目录下的本地套接字文件
注意,如果要查找普通文件,用的是 f 而不是 -
按大小查找
find ./ -size +1M -size -5M
查找大于1M小于5M的
注意两个size都不能少
注意,查找出来的只是文件的路径,而没有文件的详细信息,
加 -exec 选项可以显示出详细信息,ls -l 作为exec的值
例子:
find ./ -type l -exec ls -l {} \;
就是把find ./ -type l 查找到的内容用ls -l处理,后边{} \;暂时不知道是干啥的
可以把-exec换成-ok,
-ok是相对安全模式,把查找到的每一个文件用后边的命令ls -l 来处理时都会先询问是否处理,即逐条询问
也可以用管道来处理,管道即把左边命令输出的内容不输出到终端,而是输出给管道右边的命令
find ./ -type l |xargs ls -l
xargs命令常常与find一起使用,xargs将find命令查找的结果分成若干块输出给后边的指令,这样可以防止后边的指令溢出
比如用-exec的时候,如果find查找到的文件非常多,则ls -l可能没法显示,即溢出,但是用xargs的时候没有这个问题
grep 内容检索
可以用来检索文件,也可以用来检索文件中的内容
find ./ -type f |grep txt 检索查找到的普通文件中的txt文件
检索文件中的内容:
grep main test.cpp 查找test.cpp中的main
grep -n main test.cpp 加上-n选项可以显示出行号
grep -v main test.cpp 排除掉main所在的那一行
也可以用cat显示内容与 |grep结合使用
-r 递归查找
-n 显示行号
grep不管是用来检索文件,还是用来检索文件中的内容,本质上都是从一堆字符串中找到符合条件的字符串,就像find ./ -type f |grep txt一样,前边的find语句输出的内容本质上也等价于一个文件中的内容,因此不管检索文件还是检索文件中的内容,本质上都是检索内容
压缩包管理
一般用tar直接打包并压缩,注意选项z不可少,如果没有z的话,则只打包不压缩
对于gzip和gunzip命令,因为只能操作目录,不能操作文件,因此一般不用
软件安装与卸载
apt-get自动安装工具
需要联网,自动安装依赖
/etc 目录下放的是配置文件,这里apt的配置文件也在这里,比如下载时候的软件源
下载deb软件包安装
-i是安装,-r是移除
源码安装
用户管理
alias 别名配置
在 .bashrc中就可以配,.bashrc在家目录下