2.文件操作命令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.⽂件操作命令
(1)查看⽂件命令(ls)
ls[option] [file_Name/folder_Name](带通配符*)(dir或echo *)
-l显⽰详细信息,长列表格式。
(命令ll或tree所有⽬录的树形结构)
-a #显⽰所有档案以及⽬录(包含.视为[.*]隐藏⽂件) all
-s #按照千字节(包括间接块)给出每⼀项的⼤⼩.size
-x #按列输出,横向排序。
-r #将档案以相反次序显⽰(原定义英⽂字母次序) Reverse
-R #递归所有⼦⽬录
-t #按照最近⼀次修改时间(最近的最先)⽽不是按照名字顺序排序time -q #将⽂件名中的⾮打印字符显⽰成? -m #使⽤输出流格式(逗号,分隔符)
-p #如果⽂件是⽬录,在每个⽂件名后⾯放置⼀个斜杠, folder_Name/
未先出[file]则输出当前⽬录所有的⽂件以及⼦⽬录列出
ll | grep 搜索内容(⾃动通配符)
1.权限
——————权限解释——————
“d”表⽰⽬录
“-”表⽰⽂件
“r”表⽰可读1(2进制表⽰)
“w”表⽰可写 1
“x”表⽰可执⾏ 1
“-”表⽰没有这项权限,⽂件0
进制)
1.修改⽂件权限(ch mod - change mode改变模式)
chmod #修改⽂件权限(权限不够)
chmod [0-7] [0-7] [0-7] filename.c
chmod权限(3位8进制)
[0-7] [0-7] [0-7]主⼈+主⼈同组+其他⽤户,转2进制->8进制
filename可执⾏⽂件
例
chmod 777filename #rwx
#可执⾏的ls是深绿⾊
[ugoa...][[+-=][rwx]...][,...]
u 表⽰该档案的拥有者,g 表⽰与该档案的拥有者属于同⼀个群体(group)者,o 表⽰其他以外的⼈,a 表⽰这三者皆是。
默认a + 表⽰增加权限、- 表⽰取消权限、= 表⽰唯⼀设定权限。
r 表⽰可读取,w 表⽰可写⼊,x 表⽰可执⾏。
2.修改⽤户⽂件(/home/userName)权限(ch own-change own改变拥有者)
ch own [-cfhvR] [--help] [--version] [user][:group] file--[user][:group]可对其中的⽤户或这⽤户组进⾏设置可以通过命令来修改⽂件属主和属组的属性
R所有者
例
ch own ugo+rwx file1.txt
chown -R username . #当前的⽂件&⽂件夹的所有者改为所设定的⽤户.
chown username 4 #修改⽂件所有者
3.改变⽂件的属组(chgrp-change group改变组)
chgrp [-R] ⽂件组⽂件
-R 递归地改变所有⼦⽬录下所有⽂件的存取模式
3.1添加组
group add groupName
3.2查看组
cat /etc/group
⽤户名:x⽤户密码已经加密:⽤户ID:所在组ID::⽤户⽬录:⽤户的SHELL
SHELL
通过SHELL来解析命令给操作系统
SHELL编程,脚本。
类似windows的*.bat批处理程序
调⼊内存进⾏执⾏
getty终端机通过SSH,TELNET,rlogin分别启动sshd,telnetd,rlogind登录linux系统内核.
shell命令 sh-3.2#
chsh -s /bin/csh #修改当前的shell,默认/bin/bash.在不同的shell下使⽤不同的快捷键&命令.注销.
logout
exit
书:
《Linux命令、编辑器与Shell编程》
输出输⼊
(1)echo显⽰指定⽂本
echo * #列出所有⽂件
echo var_name或”⽂本\c”
\c #⽂本不换⾏
重定向
输出重定向
>,>>
2> #将标准错误也重定向到⽂件.
输⼊重定向<
printf XX
(2)显⽰⽂件内容命令(cat)
cat创建/修改⽂件, 显⽰在框中
cat -3 file #前三⾏
cat >file #覆盖原⽂件内容
cat file1 file2 file3 > file4
cat *.txt > file4
cat >>file
在⽂件尾部追加
从命令的下⼀⾏开始
输⼊结束后“Ctrl+Z”撤销
cat file #查看⽂件
cat file1, file2,.. #查看多个⽂件
cat * #查看所有⽂件
(3)查看⽂件前⼏⾏(head)
head -n fileName #默认前10⾏
(4)查看⽂件后⼏⾏(tail)
tail -n fileName #默认后10⾏
tail -n 1000 #显⽰最后1000⾏
tail -n +1000 #从1000⾏开始显⽰,显⽰1000⾏以后的(5)以只读的⽅式查看⽂件(view) view file_name
(6)⽂本编辑器(vi)
vi file编辑⽂件,vi编辑器是所有Unix及Linux系统下标准的编辑器
在linux中后缀不存在什么意义。
编辑多个⽂本Vi file1 file2 file3..
跳转下⼀个⽂件:n
不保存的跳转:n!
跳转特定⽂件:n fileN
⽤户可在多个组
提升权限/i插⼊
----编辑状态----i编辑insert插⼊模式(输⼊命令)
----转义⽅式----
:w保存write
:q不保存,提⽰是否放弃修改. Quit
:q!强制退出,不保存,即不提⽰.
:wq!强制性写⼊⽂件并退出。
即使⽂件没有被修改也强制写⼊,并更新⽂件的修改时间。
:x写⼊⽂件并退出。
仅当⽂件被修改时才写⼊,并更新⽂件修改时间,否则不会更新⽂件修改时间。
/查找内容(正则表达式)
n键来跳到下⼀个单词
:set ic忽略⼤⼩写ignore case
:set noic不忽略⼤⼩写
:e ./file切换⽂件edit
Ctrl+6切换⽂本
:s/vivian/sky/ 替换当前⾏第⼀个vivian 为sky
:s/vivian/sky/g替换当前⾏所有vivian 为sky
:n,$s/vivian/sky/ 替换第n ⾏开始到最后⼀⾏中每⼀⾏的第⼀个vivian 为sky
:n,$s/vivian/sky/g 替换第n ⾏开始到最后⼀⾏中每⼀⾏所有vivian 为sky
----命令状态---- Esc命令模式
1.插⼊命令(i) Insert
2.附加命令(a) Append
3.打开命令(o) Open
4.替换命令(s) Substitute
5.修改命令(c) Change
6.取代命令(r) Replace
iaoscr
yy #复制到黏贴板, 键 p #键黏贴(将剪切板的内容放⼊光标所在⾏的下⽅) dd #删⾏(删除光标所在⾏) 3dd #删除3⾏实现
^ #光标移⾄⾏⾸
$ #光标移⾄⾏尾
{ #光标移⾄段落开头
} #光标移⾄段落结尾
设置Shell命令⾏窗⼝⽀持vi的命令模式set -o vi
(7)编辑器(vim)
vi⽆颜⾊vim有颜⾊
通道符” |”,管道命令.
把上⼀个命令交给下⼀个命令第⼀条命令的标准输出直接连接到第⼆条命令的标准输⼊. 过滤内容ls | more
|[输⼊输出的管道] more[翻页](重新显⽰ls)
"|" 通道符输⼊输出控制
"Ctrl+Z" 退出快捷键
(1)more
more fileName分屏显⽰⽂件
pageUp, pageDown上下翻页.
Enter 下⼀条
Space下⼀页
(2)less
less fileName类似more,⽐more提供更多功能
(3)uniq
|uniq #删除⽂件中的重复⾏
-c #重复⾏出现的次数count
-d #只显⽰重复⾏
-u #显⽰不重复⾏
(4)获取⼦串(cut)
cut -c0-2 file_name #显⽰⽂件每⾏前2个字符
cut -d: -fn1,n2 file_name #第n1列,第n2列.
|cut -d …:? -f n1,n2
-d #以:为分隔符,默认制表符就是分隔符.
-f #析取第n1,n2个字段的内容
sed -n “10,20p” file_name#只析取⽂件的10到20两⾏.
sed -n “/内容/p” file_name#只析取包含该内容的⾏(内容:正则表达式)
sed …s/替换前/替换后? file_name#将内容替换,显⽰. switch
sed …1,2d? file_name #删除1,2两⾏
sed …/内容/d? file_name#删除包含内容的两⾏
paste file1,file2 #将多个⽂件黏在⼀起.(默认使⽤制表符间隔)
paste -d?char? file1,file2#使⽤char来间隔.
ls|paste -d”char” -s #连成⼀⾏.
tr 替换前的内容替换后的内容< file_name #将⽂件的内容替换为相应的内容. tr -s …?…?< file_name#将后⾯连续多个空格转变为⼀个空格
(5)统计⽂件的⾏数,字数(wc)
wc file_name #统计⽂件的⾏数,字数
⽂件⾏数单词数字节数⽂件名称
w c : words & count
-l #只统计⾏数或
-w #只统计字数
-c #只统计字符数
ls | wc -l
ed 编辑器是Linux 操作系统下最简单的⽂本编辑器。
它是以⾏为单位对⽂件进⾏编辑的编辑器,⽽不像MS-DOS 系统下的edit 那样是以整个屏幕框架为单位对⽂件进⾏编辑的。
ed file_name
a - 在⽂件的末尾添加新内容
i - 在⽂件的最后⼀⾏之前插⼊新内容
o - 把⽂件输⼊的最后⼀⾏(不论是原来存在的或者插⼊的)替换成新内容
. - 退出编辑⽂件模式进⼊命令⾏模式(注意:此时并没有退出ed 编辑器)
w - 保存⽂件
q - 真正退出ed 编辑器
(5)内容(结果)搜索(grep)
grep (global search regular expression(RE) and print out the line,全⾯搜索正则表达式并把⾏打印出来)是⼀种强⼤的⽂本搜索⼯具,它能使⽤正则表达式搜索⽂本,并把匹配的⾏打印出来。
Unix的grep家族包括grep、egrep 和fgrep。
grep '搜索内容' path -r #查询该路径下所包含该内容的⽂件
*(匹配符,所有的⽂件)/特定⽂件
-r
1.列出所有包含搜索字符的⾏
2.⽬录操作(同时搜索⼦⽬录)
-n显⽰第⼏⾏
(6)排序命令(sort)
|sort
-r #逆序
-n #按照数字的形式排序
必须是⽂件或⽬录.
cat , ls ,
(7)过滤控制字符(col)
语法:col [-bfx][-l<缓冲区列数>]
补充说明:在许多UNIX说明⽂件⾥,都有RLF控制字符。
当我们运⽤shell特殊字符">"和">>",把说明⽂件的内容输出成纯⽂本⽂件时,控制字符会变成乱码,col指令则能有效滤除这些控制字符。
参数:
-b 过滤掉所有的控制字符,包括RLF和HRLF。
-f 滤除RLF字符,但允许将HRLF字符呈现出来。
-x 以多个空格字符来表⽰跳格字符。
-l<缓冲区列数>预设的内存缓冲区有128列,您可以⾃⾏指定缓冲区的⼤⼩。
(2)⽐较⽂件cmp
cmp file1 file2
(3)⽐较⽂件diff
(4)⽂件或⽬录复制命令(cp)
cp fileName new_path #复制⽂件到新路径Copy
cp *fileName new_path
cp -r folder_name path #拷贝⽬录下的⽂件到路径
cp -R old_file_name new_file_name #复制&重命名
cp -p File_Name保持源⽂件的属性不变
cp -a递归复制⽂件和⽬录(-r),同时保留权限(-p)archive归档cp -i File_Name path #拷贝给出是否覆盖提⽰info
-f 强制Force,不确认.
(5)⽂件或⽬录移动命令(mv) mv : move
mv source_path target_path #移动⽂件
-i #存在提⽰是否覆盖info
-f #不提⽰直接覆盖force
若如果⽬标位置与源位置相同,则相当于重命名
(6)删除⽂件命令(rm)
通配符*
rm: remove
No such file or directory⽆该⽂件
rm file*删除⾮空⽬录
-v #详细显⽰进⾏的步骤verbose
-i #删除前都给出提⽰info
-f #强制删除Force,不提⽰
-r #将⽬录及以下之档案亦逐⼀删除Recursive循环的
rm file1, file2,.. #删除多个⽂件
(7)建⽴空⽂件(touch)
touch :新建空⽂件,或更新⽂件时间标记
注:
touch File_Name–仅仅只是创建⽂件,并⽆对⽂件内容进⾏操作.
写⼊⽂件echo Content>File >重写>>续写--创建⽂件并写⼊
(8)压缩(zip)和解压(uzip)
红⾊
zip *.zip 需要被压缩的⽂件#压缩⽂件
多个⽂件被压缩: 需要被压缩的⽂件1, 需要被压缩的⽂件2,.. zip -r *.zip ⽬录#压缩⽂件夹
如果该⽂件存在则覆盖.
⽬录=*,压缩当前⽬录下的⼦⽬录
zip -j *.zip * #忽略⼦⽬录内容
zip -n .⽂件类型1: .⽂件类型2:.. #将该⽂件类型的⽂件移除. zip -m *.zip 源⽂件#压缩后,删除源⽂件. zip -t ⽇期*.zip #只压缩指定⽇期后的⽂件。
zip -y *.zip * #不压缩链接⽂件
zip -9 *.zip * #压缩率
zip *.zip * -x fileName #将不需要的⽂件排除在外.
uzip *.zip #直接解压
uzip *.zip -x fileName #除了fileName都压缩.
uzip -Z *.zip #查看*.zip中的内容,也可以使⽤-l,-v.
gunzip *.gz
gunzip -d *.gz。