一、文件和目录的操作
cp :复制文件和目录
①复制一个文件到目录下,格式:cp [文件] [目录]
[root@mylinux ~]# cp mylinux.txt /tmp/ [root@mylinux ~]# ls /tmp/* /tmp/mylinux.txt [root@mylinux ~]#
②复制多个文件到目录下,格式:cp [文件1] [文件2] [目录]
[root@mylinux ~]# cp mylinux.txt.1 mylinux.txt.2 /tmp [root@mylinux ~]# ls /tmp/* /tmp/mylinux.txt /tmp/mylinux.txt.1 /tmp/mylinux.txt.2 [root@mylinux ~]#
③复制一个目录到另一个目录,连同源目录下的文件一起复制需要使用选项'r'或'R',即级联的意思
格式:cp -r [源目录] [目标目录]
[root@mylinux ~]# cp mylinux.d/ /tmp/ cp: 略过目录"mylinux.d/" [root@mylinux ~]# cp -r mylinux.d/ /tmp/ [root@mylinux ~]# cd !$ cd /tmp/ [root@mylinux tmp]# ls mylinux.d mylinux.txt mylinux.txt.1 mylinux.txt.2 [root@mylinux tmp]# ls mylinux.d 1.txt 2.txt 3.txt [root@mylinux tmp]#
④特殊用法:当目标目录已存在要复制的文件,复制文件时,会提示是否覆盖,需要用户输入命令进行交互,如果不希望提示可以使用强制,即使用命令的绝对路径/bin/cp
[root@mylinux ~]# cp mylinux.txt /tmp cp:是否覆盖"/tmp/mylinux.txt"? n [root@mylinux ~]# /bin/cp mylinux.txt /tmp [root@mylinux ~]#
当复制文件或目录时,需要连同源文件或目录的权限属性一起复制,需要使用选项:-p
mkdir : 创建目录
①mkdir [目录名字]
②需要创建一个目录中包含多个目录,有嵌套关系时,需要使用选项 :-p
[root@mylinux ~]# mkdir -p aaa/bbb/ccc [root@mylinux ~]# ls aaa/ bbb [root@mylinux ~]# ls aaa/bbb/ ccc [root@mylinux ~]#
rmdir : 用于删除空目录,如果目录中含有文件,则无法删除,所以不常用
rm : 删除文件和目录
①删除文件的格式 :rm [文件名字]
②删除目录的格式 : rm -rf [目录]
-r 级联递归,将目录下的其他文件一并删除
-f 强制删除,删除文件时不要提示
rmdir与rm的区别:
rmdir 不能用于删除非空目录
rm 可以删除非空目录
mv :移动/重命名文件和目录
①移动(类似与windows下的剪切),将多个文件移动到目录下
格式 :mv [文件1] [文件2] [文件3] [目录]
[root@mylinux mylinux.d]# ls 1.txt 2.txt 3.txt [root@mylinux mylinux.d]# mkdir 123/ [root@mylinux mylinux.d]# ls 123 1.txt 2.txt 3.txt [root@mylinux mylinux.d]# mv 1.txt 2.txt 3.txt 123/ [root@mylinux mylinux.d]# ls 123 [root@mylinux mylinux.d]# cd 123/ [root@mylinux 123]# ls 1.txt 2.txt 3.txt [root@mylinux 123]#
②修改文件或目录名字
格式 :mv [名字1] [名字2]
[root@mylinux mylinux.d]# ls 123 [root@mylinux mylinux.d]# mv 123/ 456/ [root@mylinux mylinux.d]# ls 456 [root@mylinux mylinux.d]# ls 456/ 1.txt 2.txt 3.txt [root@mylinux mylinux.d]#
③当移动文件到目录时,目录已含义同名文件,会提示是否覆盖,如果不希望提示,需要使用命令的绝对路径/bin/mv ,进行强制覆盖
[root@mylinux mylinux.d]# ls 456/ 1.txt 2.txt 3.txt [root@mylinux mylinux.d]# touch 1.txt [root@mylinux mylinux.d]# ls 1.txt 456 [root@mylinux mylinux.d]# mv 1.txt 456/ mv:是否覆盖"456/1.txt"? n [root@mylinux mylinux.d]# /bin/mv 1.txt 456/ [root@mylinux mylinux.d]# ls 456 [root@mylinux mylinux.d]#
二、文本处理相关命令
cat 将[文件]或标准输入组合输出到标准输出
选项 :-n 对输出的所有行编号
[root@mylinux ~]# cat -n /etc/passwd 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
-b 对非空输出行编号
[root@mylinux ~]# cat -b /etc/passwd 1 root:x:0:0:root:/root:/bin/bash 2 bin:x:1:1:bin:/bin:/sbin/nologin 3 daemon:x:2:2:daemon:/sbin:/sbin/nologin 4 adm:x:3:4:adm:/var/adm:/sbin/nologin 5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
-E或者-A 在每行结束处显示"$"
[root@mylinux ~]# cat -E /etc/passwd root:x:0:0:root:/root:/bin/bash$ bin:x:1:1:bin:/bin:/sbin/nologin$ daemon:x:2:2:daemon:/sbin:/sbin/nologin$ adm:x:3:4:adm:/var/adm:/sbin/nologin$ lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin$
tac 将每个指定文件按行倒置并写到标准输出。与cat相反
head 显示每个指定文件的前10 行显示到标准输出。
选项 :-n 显示每个文件的前n行内容
[root@mylinux ~]# head -5 passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [root@mylinux ~]#
tail 显示每个指定文件的最后10 行到标准输出。与head相反
选项 :-n 显示每个文件的后n行内容
[root@mylinux ~]# tail -5 passwd radvd:x:75:75:radvd user:/:/sbin/nologin qemu:x:107:107:qemu user:/:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin mylinux:x:500:500::/home/mylinux:/bin/bash test007:x:501:501::/home/test007:/bin/bash [root@mylinux ~]#
-f 用于即时显示的效果,把刚写入的数据立刻输出,一般用于动态查看日志
[root@mylinux ~]# tail -f passwd sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin haldaemon:x:68:68:HAL daemon:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin radvd:x:75:75:radvd user:/:/sbin/nologin qemu:x:107:107:qemu user:/:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin mylinux:x:500:500::/home/mylinux:/bin/bash test007:x:501:501::/home/test007:/bin/bash
more 查看文件内容,当内容显示为满屏时暂停,按空格翻到下一屏内容,不支持回看,按‘q’退出
less,与more类似,但是less允许利用光标上下卷动文本内容进行浏览
查看文本操作常用键盘指令:
Page Up 、b <== 翻到上一页
Page Down 、Space <== 翻到下一页
G <== 移动到文本最后一页
1G 、g <== 移动到文本首页
/字符串 <== 在整个文本文件中查找字符串
n <== 向下一级再次检索
N <== 向上一级再次检索
q <== 退出
三、文件的属性
文件的属性用'ls -l'就可以查看
[root@mylinux ~]# ls -l 总用量 40 drwxr-xr-x 3 root root 4096 3月 14 12:33 aaa -rw-------. 1 root root 943 2月 27 00:15 anaconda-ks.cfg -rw-r--r--. 1 root root 70 2月 28 06:26 err.log -rw-r--r--. 1 root root 12577 2月 27 00:15 install.log -rw-r--r--. 1 root root 3482 2月 27 00:15 install.log.syslog drwxr-xr-x 3 root root 4096 3月 14 13:01 mylinux.d -rw-r--r-- 1 root root 0 3月 14 11:39 mylinux.txt -rw-r--r-- 1 root root 0 3月 14 11:46 mylinux.txt.1 -rw-r--r-- 1 root root 0 3月 14 11:46 mylinux.txt.2 -rw-r--r-- 1 root root 1341 3月 15 10:00 passwd [root@mylinux ~]#
我们单独拿出一行进行分析:
文件类型和权限
Linux文件类型:
d <== 目录文件
- <== 普通文件
l <== 链接文件(又分软连接和硬链接)
b <== 块设备文件(如磁盘等)
c <== 字符设备文件(如鼠标,键盘等)
s <== 套接字文件
p <== 管道文件
Linux文件权限:
每个文件都有三类用户的权限,即所属用户(所属主,'u')的权限,所属用户组(所属组,'g')的权限,和其他用户的权限,'o',每类用户都分别由‘r’‘w’‘x’,即‘读’‘写’‘执行’来控制
Linux文件链接数(即inode-索引节点)
上面例子中的inode数为‘3’,那么我们分析一下这个‘3’是怎么得出来的
(注:ls命令-i选项可以查看文件的inode号)
[root@mylinux ~]# ls -di aaa/ # 查看目录aaa本身的inode号 134760 aaa/ [root@mylinux ~]# ls -ai aaa/ # 查看目录aaa里的所有文件的inode号 134760 . 130563 .. 134763 bbb [root@mylinux ~]# ls -ai aaa/bbb/ # 查看子目录bbb里的所有文件的inode号 134763 . 134760 .. 137274 ccc [root@mylinux ~]# ls -ai aaa/bbb/ccc/ # 查看子目录ccc里的所有文件的inode号 137274 . 134763 ..
从上面的例子可以看到目录aaa的inode号共出现三次:
①目录本身
②目录aaa里的‘.’文件
③子目录bbb里的 ‘..’文件
所以目录aaa的inode共有3个
四、修改文件的属性和权限
chown 更改文件所属主和所属组
格式 :
①更改文件所属主,格式 :chown [新主名] [文件]
[root@mylinux ~]# ls -ld aaa/ drwxr-xr-x 3 root root 4096 3月 14 12:33 aaa/ #当前目录aaa的所属主为root [root@mylinux ~]# chown mylinux aaa/ #把目录aaa的所属主改为mylinux [root@mylinux ~]# !ls ls -ld aaa/ drwxr-xr-x 3 mylinux root 4096 3月 14 12:33 aaa/ #当前目录aaa的所属主为mylinux [root@mylinux ~]#
②更改文件所属主,格式 :chown :[新组名] [文件]
[root@mylinux ~]# ls -ld aaa/ d------rwx 3 mylinux root 4096 3月 14 12:33 aaa/ #当前目录aaa的所属组为root [root@mylinux ~]# chown :mylinux aaa/ #把目录aaa的所属组改为mylinux [root@mylinux ~]# !ls ls -ld aaa/ d------rwx 3 mylinux mylinux 4096 3月 14 12:33 aaa/#当前目录aaa的所属组为mylinux [root@mylinux ~]#
③更改文件所属主,及所属组,格式 :chown [新主名]:[新组名] [文件]
[root@mylinux ~]# ls -ld aaa/ drwxr-xr-x 3 root root 4096 3月 14 12:33 aaa/ #当前目录aaa的所属主和组均为root [root@mylinux ~]# chown mylinux:mylinux aaa/ #把目录aaa的所属主和组改为mylinux [root@mylinux ~]# !ls 和mylinux ls -ld aaa/ drwxr-xr-x 3 mylinux mylinux 4096 3月 14 12:33 aaa/ #当前目录aaa的所属主和组均为mylinux [root@mylinux ~]#
④更改目录及目录下文件的所属主,或所属组,需要用的选项 :-R 级联,递归
[root@mylinux ~]# ls -ld aaa/ aaa/bbb/ #目录aaa和其子目录bbb,所属主均为root drwxr-xr-x 3 root root 4096 3月 14 12:33 aaa/ drwxr-xr-x 3 root root 4096 3月 14 12:33 aaa/bbb/ [root@mylinux ~]# chown -R mylinux aaa/ #更改aaa及其子目录bbb的所属主 [root@mylinux ~]# !ls ls -ld aaa/ aaa/bbb/ #目录aaa和其子目录bbb,所属主已经为 drwxr-xr-x 3 mylinux root 4096 3月 14 12:33 aaa/ mylinux drwxr-xr-x 3 mylinux root 4096 3月 14 12:33 aaa/bbb/ [root@mylinux ~]#
chgrp 修改文件所属组,因为chown的存在,所以chgrp并不常用
chmod 修改文件/目录的许可
'rwx'这3个字符用二进制数表示,被识别为2的n次方的形式。
所以'r'是2的2次方,'w'是2的1次方,'x'是2的0次方,
因此,rwx用二进制数为111,或十进制7表示
rwx rwx rwx = 111 111 111 = 777
rw- rw- rw- = 110 110 110 = 666
rwx --- --- = 111 000 000 = 700
‘u’代表所属用户
'g' 代表所属用户组
'o' 代表其他用户
'a' 代表所有用户
chmod u-x [文件/目录] 代表所属用户取出'x'的许可权限
chmod g+w [文件/目录] 代表所属用户组增加'w'的许可权限
[root@mylinux ~]# ls -ld aaa/ drwxr-xr-x 3 mylinux root 4096 3月 14 12:33 aaa/ [root@mylinux ~]# chmod u-x aaa/ [root@mylinux ~]# !ls ls -ld aaa/ drw-r-xr-x 3 mylinux root 4096 3月 14 12:33 aaa/ [root@mylinux ~]# chmod g+w aaa/ [root@mylinux ~]# !ls ls -ld aaa/ drw-rwxr-x 3 mylinux root 4096 3月 14 12:33 aaa/ [root@mylinux ~]#
当然亦可以使用数字
[root@mylinux ~]# !ls ls -ld aaa/ drw-rwxr-x 3 mylinux root 4096 3月 14 12:33 aaa/ [root@mylinux ~]# chmod 700 aaa/ [root@mylinux ~]# !ls ls -ld aaa/ drwx------ 3 mylinux root 4096 3月 14 12:33 aaa/ [root@mylinux ~]#
umask 权限掩码
当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认 权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。
umask 在用户 UID < 199 时,默认值为022,目录创建默认权限为777-022=755,文件创建默认权限为666-022=644。
在用户 UID > 199 时,默认值为002,目录创建默认权限为777-002=775,文件创建默认权限为666-002=664.
在linux中umask设置在/etc/bashrc中。
本内容由导师:阿铭提供技术支持:跟阿铭学linux 点这里