环境:
centos 7.4
摘要说明:
本系列主要讲述liunx基础操作;
本篇文章主要基于centos7来讲述liunx下如何进行文件相关操作;如创建,删除,编辑,查询,授权,移动等常用命令
步骤:
1.打开文件夹及查询文件夹下文件
查看文件主要有下述几个命令
- cd:打开目录
- ls:列举文件夹
- ll:列举文件夹并附带属性
[root@izbp1dham6enej0lrs00riz local]# cd /root/cc
[root@izbp1dham6enej0lrs00riz cc]# ls
test.text
[root@izbp1dham6enej0lrs00riz cc]# cd ..
[root@izbp1dham6enej0lrs00riz ~]# ll
total 12
-rwxr-xr-x 1 root root 22 Nov 6 10:46 c
drwxr-xr-x 2 root root 4096 Nov 6 14:00 cc
-rw-r--r-- 1 root root 18 Nov 6 10:54 cc.txt
[root@izbp1dham6enej0lrs00riz ~]# cd -
/root/cc
[root@izbp1dham6enej0lrs00riz cc]# cd ../..
a、其中cd的部分快捷键为:
- cd :进入用户主目录;
- cd ~ :进入用户主目录;
- cd - :返回进入此目录之前所在的目录;
- cd .. :返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
- cd ../..: 返回上两级目录;
b、其中ll查询出的每行的含义如下:
文件属性 文件数 拥有者 所属的group 文件大小 建档日期 文件名
其中文件属性通常是由10未组成:
第一位:-表示是文件,d表示是文件夹,l表示是连结文件
2-4位:表示当前用户授权情况
5-7位:表示同一用户组授权情况
8-10未:表示其他用户授权情况
其中可读(r),可写(w),可执行(x),不可以-表示
另外ll和ls还能更丰富的子命令如:
ll -t/ls -t 以最后编辑时间排序;
等多可参考--help;
2.新建文件夹及文件
常用的命令如下:
- mkdir dirname 直接跟文件夹名,可在当前目录下创建文件夹
- mkdir /opt/lamp/dirname 可跟路径
- mkdir -p /opt/lam/dirname 假如lam不存在,需要用-p才可以创建该文件夹
- touch dilename 可直接跟文件名在当前目录下创建新的文件
- vi dirname 可创建文件并直接进入编辑页面
[root@izbp1dham6enej0lrs00riz cc]# ls
test.text
[root@izbp1dham6enej0lrs00riz cc]# mkdir cccc
[root@izbp1dham6enej0lrs00riz cc]# ls
cccc test.text
[root@izbp1dham6enej0lrs00riz cc]# touch test1.text
[root@izbp1dham6enej0lrs00riz cc]# ls
cccc test1.text test.text
[root@izbp1dham6enej0lrs00riz cc]# mkdir -p /root/cc/ccc/test.text
[root@izbp1dham6enej0lrs00riz cc]# ls
ccc cccc test1.text test.text
3.查看文本文件:
cat是一次性显示整个文件的内容,还可以将多个文件连接起来显示,它常与重定向符号配合使用,适用于文件内容少的情况;
1、命令格式
cat [选项]... [文件]...
2、命令功能
将[文件]或标准输入组合输出到标准输出。
cat主要有三大功能:
1).一次显示整个文件:cat filename
2).从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
3).将几个文件合并为一个文件:cat file1 file2 > file
3、常用参数列表
-A, --show-all 等于-vET
-b, --number-nonblank 对非空输出行编号
-e 等于-vE
-E, --show-ends 在每行结束处显示"$"
-n, --number 对输出的所有行编号
-s, --squeeze-blank 不输出多行空行
-t 与-vT 等价
-T, --show-tabs 将跳格字符显示为^I
-u (被忽略)
-v, --show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
--help 显示此帮助信息并退出
--version 显示版本信息并退出
more和less一般用于显示文件内容超过一屏的内容,并且提供翻页的功能。more比cat强大,提供分页显示的功能,less比more更强大,提供翻页,跳转,查找等命令。而且more和less都支持:用空格显示下一页,按键b显示上一页。下面详细介绍这3个命令。
more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。
1、命令格式
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [file ...]
2、命令功能
more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。
3、常用参数列表
-num 一次显示的行数
-d 在每屏的底部显示友好的提示信息
-l 忽略 Ctrl+l (换页符)。如果没有给出这个选项,则more命令在显示了一个包含有 Ctrl+l 字符的行后将暂停显示,并等待接收命令。
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 显示下一屏之前先清屏。
-c 从顶部清屏然后显示。
-s 文件中连续的空白行压缩成一个空白行显示。
-u 不显示下划线
+/ 先搜索字符串,然后从字符串之后显示
+num 从第num行开始显示
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
1.命令格式:
less [参数] 文件
2.命令功能:
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
3.命令参数:
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将“tab”键显示为规定的数字空格
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
>b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
tail通常搭配-f主要用来实时查看文本输出:
- tail filename 读取filename最后10行内容
- tail -f filename 实时动态读取filename最后10行内容
- tail -20f filename 实时动态读取filename最后20行内容
4.查看文件大小
- du -sh * 显示当前目录下所有文件的大小
- du -sh filename 显示该文件大小
- du -sh 显示当前目录所占空间大小
- -s或 仅显示总计,只列出最后加总的值。
- -h或 以K,M,G为单位,提高信息的可读性。
- df 显示磁盘占用信息
- 直接df默认一k为单位
- df -lh 显示本地系统的占用信息,以K,M,G为单位
5.移动删除文件及文件夹
mv 类似于windows下的剪切:常见使用如下
- mv aaa /etc/udev 讲aaa移动至/etc/udev目录下
- mv /opt/lampp /etc/udev 将/opt目录下的lampp移动至/etc/udev目录下
- mv -r aaa /etc/udev 将aaa文件夹递归移动至/etc/udev目录下,不加-r会出错
- mv aaa bbb 将aaa改名为bbb
命令详解:
- -b:当文件存在时,覆盖前,为其创建一个备份;
- -f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
- -i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。
- -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
- -f:强行复制文件或目录,不论目标文件或目录是否已存在;
- -i:覆盖既有文件之前先询问用户;
- -s:对源文件建立符号连接,而非复制文件;
- -R/r:递归处理,将指定目录下的所有文件与子目录一并处理
cp相当于window的复制,基本用法与mv一致;
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
常使用于将本地文件cope到远程主机或者将远程主机cope到本机,如:
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2
-1: 强制scp命令使用协议ssh1
-2: 强制scp命令使用协议ssh2
-4: 强制scp命令只使用IPv4寻址
-6: 强制scp命令只使用IPv6寻址
-B: 使用批处理模式(传输过程中不询问传输口令或短语)
-C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p:保留原文件的修改时间,访问时间和访问权限。
-q: 不显示传输进度条。
-r: 递归复制整个目录。
-v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port:注意是大写的P, port是指定数据传输用到的端口号
-S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
经常使用的如下:
scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3
scp -r www.runoob.com:/home/root/others/ /home/space/music/
删除文件及文件夹rm,使用时注意执行,不要造成从删库到跑路:
- 一般都用rm -rf aaa
- -r 递归删除
- -f 强制删除,不询问
另有重定向>可用于文件编辑和移动,常用有:
- cat aaa.txt > bbb.txt 将aaa的内容写入bbb中,覆盖写入
- cat aaa.txt >> bbb.txt 讲aaa的内容追加写入bbb中,不覆盖原来内容
- > bbb.txt 将bbb清空
6.文件压缩和解压
gzip和gunzip一般可用参数是-r,例:
- gzip test.txt 压缩文件
- gzip -r test 压缩所有test下的子文件
- gunzip test.gz 解压文件
zip和unzip可用参数较多,例:
- zip test 不跟参数直接使用
- zip -r test 递归压缩test下所有文件
- unzip test 不跟参数直接使用
- unzip -n 解压时不覆盖已存在的文件
- unzip -o 解压时覆盖已存在的文件
- unzip -d 将文件解压到目录中去
tar使用的较为多些,用法也多,最常用的是zxcvf几个参数,例:
- -c 创建新文档,就是代表压缩的意思
- -x 解压文档
- -f 使用归档文件
- -z 使用gzip解压
- -v 详细输出模式
最为常用的使用方法:
- tar -zcvf test.tar test 将test压缩为test.tar并输出详细信息
- tar -zxvf test.tar 将test.tar解压缩,并输出详细信息
7.查找文件
通常是使用find命令进行文件查找:
语法
find path -option [ -print ] [ -exec -ok command ] {} \;
参数说明 :
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket
-pid n : process id 是 n 的文件
你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
实例:
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
# find . -name "*.c"
将目前目录其其下子目录中所有一般文件列出
# find . -type f
将目前目录及其子目录下所有最近 20 天内更新过的文件列出
# find . -ctime -20
查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
# find /var/log -type f -mtime +7 -ok rm {} \;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
# find . -type f -perm 644 -exec ls -l {} \;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
# find / -type f -size 0 -exec ls -l {} \;
8.文件授权
常用的授权命令有:
- chmod -R 给文件夹下所有的文件赋权限,递归处理
- chmod u+x,g+w f01 //为文件f01设置自己可以执行,组员可以写入的权限 chmod u=rwx,g=rw,o=r f01 给所属用户添加读写执行权限,给组添加读写权限,给其他用户添加读权限
- chmod 764 f01 以数字的方式赋予所属用户/用户组/其他用户权限r=4,w=2,x=1
- chmod a+x f01 //对文件f01的u,g,o都设置可执行属性,a代表all
9.文本编辑(vi)
vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。
Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能。
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
- i 切换到输入模式,以输入字符。
- x 删除当前光标所在处的字符。
- : 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
- q 退出程序
- w 保存文件
按ESC键可随时退出底线命令模式。
常用操作有:
1 Ctrl+u:向文件首翻半屏;
2 Ctrl+d:向文件尾翻半屏;
3 Ctrl+f:向文件尾翻一屏;
4 Ctrl+b:向文件首翻一屏;
5 Esc:从编辑模式切换到命令模式;
6 ZZ:命令模式下保存当前文件所做的修改后退出vi;
7 :行号:光标跳转到指定行的行首;
8 :$:光标跳转到最后一行的行首;
9 x或X:删除一个字符,x删除光标后的,而X删除光标前的;
10 D:删除从当前光标到光标所在行尾的全部字符;
11 dd:删除光标行正行内容;
12 ndd:删除当前行及其后n-1行;
13 nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字;
14 p:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的下方;
15 P:粘贴文本操作,用于将缓存区的内容粘贴到当前光标所在位置的上方;
16 /字符串:文本查找操作,用于从当前光标所在位置开始向文件尾部查找指定字符串的内容,查找的字符串会被加亮显示;
17 ?name:文本查找操作,用于从当前光标所在位置开始向文件头部查找指定字符串的内容,查找的字符串会被加亮显示;
18 a,bs/F/T:替换文本操作,用于在第a行到第b行之间,将F字符串换成T字符串。其中,“s/”表示进行替换操作;
19 a:在当前字符后添加文本;
20 A:在行末添加文本;
21 i:在当前字符前插入文本;
22 I:在行首插入文本;
23 o:在当前行后面插入一空行;
24 O:在当前行前面插入一空行;
25 :wq:在命令模式下,执行存盘退出操作;
26 :w:在命令模式下,执行存盘操作;
27 :w!:在命令模式下,执行强制存盘操作;
28 :q:在命令模式下,执行退出vi操作;
29 :q!:在命令模式下,执行强制退出vi操作;
30 :e文件名:在命令模式下,打开并编辑指定名称的文件;
31 :n:在命令模式下,如果同时打开多个文件,则继续编辑下一个文件;
32 :f:在命令模式下,用于显示当前的文件名、光标所在行的行号以及显示比例;
33 :set nu:在命令模式下,用于在最左端显示行号;
34 :set nonu:在命令模式下,用于在最左端不显示行号;
35 :1,3y 复制第一行到第三行
36 :1,3d 删除第一行到第三行
37 :1,3s/str/str_new/g 替换第一行到第三行中的字符串
38 :1,3s/str/str_new 替换第一行到第三行中的字符串第一个字符
39 :1,3 g/str /d 删除第一行到第三行中含有这个字符串的行
10.更多
更多命令可参考:http://www.runoob.com/linux/linux-command-manual.html