命令
创建隐藏文件
mkdir .文件名
ls -l不会显示该文件
显示隐藏文件(加参数a)
ls -a
回到上次目录
cd -
这里-等于OLDPWD
文件
开头第一位(淡黄色部分)表示文件类型,d目录,l软链接(存储了另一个文件的路径,大小由路径的长度决定),c字符型设备,b块设备,s为socket文件,-普通文件。
蓝色文件大小,单位:字节。
褐色:最后修改时间。
三组权限(r读,w写,执行x)
依次为:文件所有者user,文件所有者的组内成员group,其他用户other。a=all
后边的用户浅绿色、深绿色:文件所有者,文件所有者所在组。
目录将其中文件以链式存储(.—>…—>file/dir*)。
数字:硬链接数。
cp
不是增加链接,在新的区域写
增加-i参数有同名文件会提示是否覆盖
增加-f参数强制不提示
增加-r参数递归执行(recursive)
增加-h参数可显示文件大小
第一个参数要求有读权限,第二个参数要求有写
cd
要求有执行权限
掩码
umask 三个八进制数字
对新创建的本目录中文件权限进行限制
两个窗口之间掩码不受影响
find
要求有读权限
返回本目录下所有文件符合规则的路径
根据名字查找-name
根据用户查找-user 或者uid (+ 用户名\uid) 返回该用户的文件
组,-group
根据权限查找-perm ,(+权限)
根据大小查找-size n[cwbKMG],默认单位为512字节的块b为单位。n前边可加‘+’,‘-’表示大于,小于
类型,-type
空目录和空文件,-empty
按时间查找-atime,-ctime,-mtime或者把time换成min,m访问,c修改,m内容修改
上述命令为查找30分钟内修改的文件
查找结果的与-a,或-o,非!
查找30分钟内修改的目录
取反的示例
参数-exec,结果分别执行后续命令,只适用于find
find . -name “file[1-3]” -exec ls -l {} ;
对查找结果分别执行后边的ls -l命令,{}代表查找的所有结果都要执行的ls -l命令。
参数-maxdepth n 可以指明查找的深度
shell中的管道|
管道|把结果给了后边命令,xargs把查到的结果进行分隔,然后分别执行后边命令。
例如:
find . -name “.c" | grep -nE “main”
只会把find返回的内容当成一个文件,然后查找含main的内容
find . -name ".c” | xargs grep -nE “main”
把find返回的内容分隔当作字符,然后逐个执行在其所指文件中查找
管道后边的内容必须以文件或者stdin为参数。
df
查看文件系统的磁盘空间使用的情况
du
查看文件的磁盘空间的使用情况。
--max-depth=n可以指明深度
cat
-b 显示非空行行号
-n 显示所有行行号
-E 显示换行符
-s 把多个连续空行合并成一个
file
更详细的查看文件信息
重定向
>重定向输出,<重定向输入。会覆盖
以w模式打开文件,会清空文件。
>>追加模式,即在后边添加
head和tail
输出文件的前/后一部分
汉字文件转码
汉字编码方式
- GBK\GB2312通常在windows中2个字节
- utf-8通常在linux/unix中3个字节
od -x 文件名 可以显示文件的16进制的结果
编码转换(convert)
例:把一个gbk格式的文件转码为utf-8
iconv -f gbk -t utf-8 hanzi.txt > newhanzi.txt
转换只是显示,所以需要重定向保存。
grep
- -n显示行号
- -E使用扩展正则的规则
- -F直接用字面值进行匹配
- -i忽略大小写
- -c只显示总数
正则表达式
可以在通过man grep,然后查找reg(/regular expressions),查看规则。
或用man 7 regex
基本单位:任意一个数字,字母,[]中的任意一个,.(表示任意一个基本单位)。
*表示某一个基本单位出现零次或多次
?表示一个基本单位出现零次或一次
(regex),regex的内容视为一个基本单位
|或,regex1|regex2
^,该基本单位出现在行首
$,该基本单位出现在行尾
例子:在head.h中查找返回值为int的函数,grep -nE “^int” head.h
匹配()时, 防止转义加,"\(\)"。
匹配一个单词的开头"<",匹配一个单词的结尾">"
例子:匹配单词how,"<how>"
其他
alias
alias l=‘ls -l’
指定l等效于ls -l
给命令起别名
man
查看帮助手册
安装posix帮助手册sudo apt install manpages-posix
man -f 某个命令
查看该命令属于哪个帮助手册
分号
cmd1;cmd2
先执行命令1,在执行命令2
命令替换
- ESC按钮下边的点,``
cmd1 `cmd2`
例如:rm `find . -name “file*”`
先执行find . -name “file*” ,然后结果给rm 作为参数
- cmd1 $(cmd2)char
先执行cmd2,cmd2的结果会连上char,然后作为cmd1的参数
打包
tar cfv packet.tar file1 file2 head.h
新建包,没有压缩
tar rfv packet.tar The_Holy_Bible.txt
向包里加文件
tar xfv packet.tar
释放文件
tar cfvz packet.tar.gz file1 file2 head.h The_Holy_Bible.txt
压缩包
tar xfvz packet.tar.gz
解压包
主参数:这里参数c为创建,x为释放,r为追加
辅助参数:z为压缩包
c选项要求创建存档,v选项要求详细信息
操作,f选项接受一个参数,该参数设置要操作的存档名称