一、文件管理命令
1. 文件建立:
touch filename
注意:
touch不但可以建立文件也可以修改文件的时间戳
时间戳分为:
atime:文件内容被访问的时间标识
mtime:文件内容被修改的时间标识
ctime:文件属性或文件内容被修改的时间标识
1)无选项
若文件不存在,则创建新的空文件,access time,modify time和change time均为当前时间;若文件存在,则将三个时间戳均修改为当前时间
2)-a:
只修改文件的access time
(ps:access time修改后,change time也被修改(因为状态发生了改变))
3)-m:
只修改文件的modify time
(注意:modify time修改后,change time也被修改(因为状态发生了改变)
4)-d:
使用指定的日期时间,而非现在的时间,可以使用各种不同的格式。
5)-t:
将时间修改为参数指定的日期,如:07081556代表7月8号15点56分
注意:change time发生了变化,变成了当前时间。
该选项的时间格式为[[CC]YY]MMDDhhmm[.ss]
cc:世纪
yy:年
mm:月
dd:日
hh:小时
mm:分钟
ss:秒
2. 文件目录建立
mkdir directory
mkdir -p dir1/dir2/dir3
-p建立递归目录时,当上层目录不存在自动建立
3. 文件删除
rm file
rm -f file
-f=force #表示强制删除不提示
4. 目录删除
rm -r directory
-r标示递归删除,也就是删除目录本身和里面的所有内容
rm -r -f dir
删除目录不提示
rm -rf dir
在命令参数使用过程中,-a -b -c =-abc =-bac ,顺序是不需要注意的。
rm -fr dir
5. 编辑文件
1.gedit
gedit file ##必须有图形界面
2.vim
vim file -->按[i]进入insert模式–>书写内容–>按[esc]退出insert模式–>:wq退出保存
6. vim异常退出
vim异常退出时会生成.file.swp文件
当再次打开vim时会出现以下问题,一般按D
[o]pen Read-Onle [E]dit anyway [R]ecover [D]elet it [Q]uit [A]bort
打开只读 继续编辑 恢复 删除swap文件 退出 退出
无论按[O] (E) ( R) (Q) (A) 任何一个都不会删除.swp文件
那么再次打开hello文件是还会出现以上界面直到按(D),.swp文件被删除
vim恢复正常工作
7. 文件的复制
cp 源文件 目的地文件
cp -r 源文目录 目的地目录
cp 源文件1 源文件2 目的地目录 #目的地目录必须存在
cp -r 源目录1 源目录2 目的地目录 #目的地目录必须存在
cp test test1 #复制test生成test1
源文件 目的地文件
cp -r test/ test1/ #复制test目录生成在test1目录
源目录 目的地目录
cp test test1 test2/ #复制test和test1文件进test2目录下
源文件1 源文件2 目的地目录 test2目录必须存在
cp -r test1/ test2/ test3/ #复制test1和test2目录进test3目录下
源目录1 源目录2 目的地目录 test3目录必须存在
cp -r test/test1 test2/ #将test文件夹下的test1复制进test2目录
cp file1(存在) file2(不存在)
会创建file2,并且把file1中的内容拷贝到file2中
cp file1(存在) file2(存在)
file1会覆盖file2
cp file1 dir(存在)
拷贝file1到dir目录
cp dir(存在) dir1(存在)
将dir目录拷贝到dir1目录中,包括dir目录
cp dir(存在) dir1(不存在)
创建dir1,将dir中的内容考培到dir1中,不包括dir目录
8. 文件移动或者文件改名
mv 源文件 目的地文件 ##重命名
mv 源目录 目的地目录
mv test test2 #源文件 目的地文件 相当于重命名,和cp复制不同
mv test2 test3/ #源文件 目的地目录
mv test3/ test4/ #源目录 目的地目录 把test3文件夹移到test4下
mv test3/test . #把test3文件夹下test移动到当前目录
注意:
相同磁盘的文件移动只是一个重明名过程
不同磁盘的文件移动是复制删除过程
mv file(存在) file1(不存在) --file为文件
改名
mv dir(存在) dir(不存在) --dir为目录
改名
mv file(存在) file2(存在)
file文件覆盖file2,而且file文件不存在
mv file(文件) dir(存在目录)
将file文件移动到dir目录中
mv dir(目录存在) dir1(存在目录)
将dir移动到dir1中
9. 文件查看
cat file #查看文件的全部内容
cat -b file #-b显示行号
less file #分页浏览
用法:
上|下 #逐行移动
pageup|pagedown #逐页移动
/关键字 #高亮显示关键字,n向下匹配,N向上匹配
v #进入vim模式 在vim模式中按:wq 退回到less模式
q #退出
cat test #全部显示
cat -b test #行号显示
head test #显示前10行
head -n 3 test #显示前3行
tail test #显示后10行
tail -n test #显示后3行
less test #分页浏览
用法:
方向上下 #按行上下
pageup/down #按页上下
/关键字 #查找关键字
v #进入vim模式,在vim中按:wq就返回到less模式(其余操作同vim)
q #推出less模式
10. 文件的寻址
1.文件的地址分为:
相对路径:
相对与当前系统所在目录的一个文件名称的简写,
此名称省略了系统当前所在目录的名称
此名称不以“/”开头
此名称在命令执行时会自动在操作对象前加入“PWD”所显示的值
绝对路径:
绝对路径是文件在系统的真实位置
此命令是以“/”开头的
此命令在命执行时系统不会考虑现在所在位置的信息
注意:
当操作对象是 对象1 空格 对象2 时,
这两个对象之间没有任何关系
豆角 茄子 #这是2个对象
豆角茄子 #这是一个对象
亲 #动作是被系统执行的,不能作为名称出现
“亲” #用引号的作用是把动作变成名称字符,这种方法叫引用,动词名词化
11. 自动补齐
TAB
系统中的TAB键可以实现命令的自动补齐 (文件/参数都可补)
可以补齐系统中存在的命令,文件名称,和部分命令的参数
当一次TAB补齐不了时代表以此关键字开头的内容不唯一
可以用TABX2来列出所有以此关键字开头的内容
12. 系统中历史的调用
history #查看历史
history -c #清空当前环境中的历史
!数字 #调用此行历史比如"!5"时执行历史中地5条命令
!test #执行以test关键字开头的最近一条历史
ctrl +r +关键字 #调用历史中最近一条含有此关键字的历史
例:
(reverse-i-search)`':test
(reverse-i-search)`test': sh test.sh 10 #会调用最近一条命令中含有test字符的历史
13. 在系统中获得帮助
1.查看命令大用途
whatis 命令 #查看命令的用途
2.查看命令的用法
命令 --help #查看命令的基本用法,适用于多数命令
代码?
[] #标示选项可以加也可以不加
... #标示选项加入的个数任意,可以自由组合
<> #标示选项是必须要加入的
Userage: #标示命令用法
Opetions: #对参数的作用做说明
3.man查看命令或文件的说说明手册(manual手册)
man 命令
man 5 文件
代码?
man的级别
1 #命令
2 #系统调用接口
3 #函数库调用接口
4 #特殊设备文件
5 #系统配置文件
6 #游戏规则说明
7 #包说明
8 #系统管理命令
9 #内核调用规则
man的基本用法
上|下 #逐行查看
pgup|pgdn #分页查看
/关键字 #高亮显示关键字,n向下匹配,N上向匹配
:q #退出
man -k 字符串 #下看当前字符串在系统中拥有的man的级别
/usr/share/doc #系统中所有安装过的软件的帮助文档
14. 系统中的通用配置符号
* ##匹配到任意字符
? ##匹配单个字符
[[:alpha:]] ##单个字母
例:rm -fr fi[[:alpha:]]le #删除fiale和fiAlae
[[:lower:]] ##单个小写字母
rm -fr fi[[:lower:]]le #删除fiale
[[:upper:]] ##单个大写字母
rm -fr fi[[:upper:]]le #删除fiAlae
[[:digit:]] ##单个数字
[[:punct:]] ##单个符号
[[:space:]] ##单个空格
[[:alnum:]] ##单个数字或字母
[[:punct:][:upper:]] ##单个符号或者单个大写字母
[1-9] #1位,这位是1-9的任意数字
[!3-5] #1位,不是3-5的数字 模糊匹配 要用-
[^3-5] #1位,不是3-5的数字
[a-z] #1位,a-z的任意字母
{1..3} #3个,1 2 3
{1,4,7} #3个1,4,7这三个数 精确匹配,不可连续到一起。 要用..
例:
touch file{1..9} #创建file1 file2 一直到file9,创建时必须精确
rm -fr file[1-3] #删除file1 file2和file3
rm -fr file[!2-9] #删除file1
~ #当前用户家目录
~username #指定用户的家目录
~+ #当前目录
~- #进入当前目录之前所在目录(olddir)
15.软硬链接ln
1)软链接,快捷方式
ln -s 文件名 快捷方式的名字
文件名要使用绝对路径
目录页可以创建软链接
2)硬链接,引用(磁盘的同一个数据块)
ln 文件名 硬链接的名字
创建一个新文件,硬链接计数为:1
给文件创建了硬链接:2
删除一个硬链接:1
再删除硬链接计数对应的文件:0
硬链接使用场景:磁盘上有一个文件,需要在其他多个目录中管理该文件,并且能实时同步
16.find、grep
1.根据文件属性查找-find
文件名:
find 查找的目录 -name “查找的文件名”
文件类型:
find ./ -type d
普通文件:f,目录:d,符号链接:l,管道:p,套接字:s,字符设备:c,块设备:b
文件大小:(可以组合成区间)
find 查找目录 -size -10M
大于:+,小于:-,等于10K:10K,K或者M
(可以组合成区间):find . -size +10K -size -100K
按日期:
创建时间:-ctime -n/+n
-n:n天以内,+n:n天以外
修改日期:-mtime
访问日期:-aime
深度:
-maxdepth n(最深层数,n层以下的目录)
-mindepth n(最少层数,n以上的目录)
高级查找:
查找指定目录,并列出该目录中文件详细信息
find ./ -type d -exec shell命令(ls -l) {} \;
find ./ -type d -ok shell命令(ls -l) {} \;
ok比较安全
以上效率比较低
file ./ -type d| xargs ls -l (shell命令) 此方法效率高
2.根据文件内容查找-grep
grep -r(搜索的路径有目录时,一般都加) “查找的内容” 搜索的路径
grep -r "helloworld" ~ -n(显示行号)
搜索家目录中带helloworld字符串的文件,并显示行号
总结:
find 搜索路径 参数 搜索内容
grep 搜索内容 参数 搜索路径
二、关于路径的命令
1.显示当前路径
pwd
2.切换路径
cd 目录名称 #进入到指定目录中
cd - #当前目录和当前目录值前所在目录之间的切换
cd ~ #进入当前用户家目录
cd ~user #进入user家目录
cd .. #进入当前目录的上级目录
3.查看
ls #查看文件
ls -l file #文件属性
ls dir #目录中包含的内容
ls -d dir #目录本身
ls -a dir #所有文件包含隐藏的
ls -S dir #查看并且按照大小排序
ls -s file/dir #查看文件大小
4.文件查看
cat #输出文件全部内容
less #分页浏览
head file #查看文件前10行
head -n 3 file #查看文件前3行
tail file #查看文件后10行
tail -n 3 file #查看文件后3行
tail -f file #监控文件后10行内容的变化
5.文件大小统计
wc #行数 单词数 字节数
wc -l #行数
wc -w #单词数
wc -m #字符数
wc -c #字节数
ASCII码:一个英文字母占一个字节的空间,一个中文汉字占两个字节的空间。
UTF-8编码:一个英文字符等于一个字节,一个中文等于三个字节。
Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。
当前linux采用UTF-8:一个英文字符等于一个字节,一个中文等于三个字节