MyLinux Note - - - 4rd day

一、文件和目录的操作

cp :复制文件和目录

①复制一个文件到目录下,格式:cp [文件] [目录]

[[email protected] ~]# cp mylinux.txt /tmp/
[[email protected] ~]# ls /tmp/*
/tmp/mylinux.txt
[[email protected] ~]#

②复制多个文件到目录下,格式:cp [文件1] [文件2] [目录]

[[email protected] ~]# cp mylinux.txt.1 mylinux.txt.2 /tmp
[[email protected] ~]# ls /tmp/*
/tmp/mylinux.txt  /tmp/mylinux.txt.1  /tmp/mylinux.txt.2
[[email protected] ~]#

③复制一个目录到另一个目录,连同源目录下的文件一起复制需要使用选项‘r‘或‘R‘,即级联的意思

格式:cp -r [源目录] [目标目录]

[[email protected] ~]# cp mylinux.d/ /tmp/
cp: 略过目录"mylinux.d/"
[[email protected] ~]# cp -r mylinux.d/ /tmp/
[[email protected] ~]# cd !$
cd /tmp/
[[email protected] tmp]# ls
mylinux.d  mylinux.txt  mylinux.txt.1  mylinux.txt.2
[[email protected] tmp]# ls mylinux.d
1.txt  2.txt  3.txt
[[email protected] tmp]#

④特殊用法:当目标目录已存在要复制的文件,复制文件时,会提示是否覆盖,需要用户输入命令进行交互,如果不希望提示可以使用强制,即使用命令的绝对路径/bin/cp

[[email protected] ~]# cp mylinux.txt /tmp
cp:是否覆盖"/tmp/mylinux.txt"? n
[[email protected] ~]# /bin/cp mylinux.txt /tmp
[[email protected] ~]#

当复制文件或目录时,需要连同源文件或目录的权限属性一起复制,需要使用选项:-p



mkdir : 创建目录

①mkdir [目录名字]

②需要创建一个目录中包含多个目录,有嵌套关系时,需要使用选项 :-p

[[email protected] ~]# mkdir -p aaa/bbb/ccc
[[email protected] ~]# ls aaa/
bbb
[[email protected] ~]# ls aaa/bbb/
ccc
[[email protected] ~]#


rmdir : 用于删除空目录,如果目录中含有文件,则无法删除,所以不常用



rm : 删除文件和目录

①删除文件的格式 :rm [文件名字]

②删除目录的格式 : rm -rf [目录]

-r  级联递归,将目录下的其他文件一并删除

-f  强制删除,删除文件时不要提示

rmdir与rm的区别:

rmdir   不能用于删除非空目录

rm      可以删除非空目录



mv :移动/重命名文件和目录

①移动(类似与windows下的剪切),将多个文件移动到目录下

格式 :mv [文件1] [文件2] [文件3] [目录]

[[email protected] mylinux.d]# ls
1.txt  2.txt  3.txt
[[email protected] mylinux.d]# mkdir 123/
[[email protected] mylinux.d]# ls
123  1.txt  2.txt  3.txt
[[email protected] mylinux.d]# mv 1.txt 2.txt 3.txt 123/
[[email protected] mylinux.d]# ls
123
[[email protected] mylinux.d]# cd 123/
[[email protected] 123]# ls
1.txt  2.txt  3.txt
[[email protected] 123]#

②修改文件或目录名字

格式 :mv [名字1] [名字2]

[[email protected] mylinux.d]# ls
123
[[email protected] mylinux.d]# mv 123/ 456/
[[email protected] mylinux.d]# ls
456
[[email protected] mylinux.d]# ls 456/
1.txt  2.txt  3.txt
[[email protected] mylinux.d]#

③当移动文件到目录时,目录已含义同名文件,会提示是否覆盖,如果不希望提示,需要使用命令的绝对路径/bin/mv ,进行强制覆盖

[[email protected] mylinux.d]# ls 456/
1.txt  2.txt  3.txt
[[email protected] mylinux.d]# touch 1.txt
[[email protected] mylinux.d]# ls
1.txt  456
[[email protected] mylinux.d]# mv 1.txt 456/
mv:是否覆盖"456/1.txt"? n
[[email protected] mylinux.d]# /bin/mv 1.txt 456/
[[email protected] mylinux.d]# ls
456
[[email protected] mylinux.d]#


二、文本处理相关命令

cat  将[文件]或标准输入组合输出到标准输出

选项 :-n 对输出的所有行编号

[[email protected] ~]# 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 对非空输出行编号

[[email protected] ~]# 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 在每行结束处显示"$"

[[email protected] ~]# 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行内容

[[email protected] ~]# 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
[[email protected] ~]#


tail 显示每个指定文件的最后10 行到标准输出。与head相反

选项 :-n 显示每个文件的后n行内容

[[email protected] ~]# 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
[[email protected] ~]#

-f 用于即时显示的效果,把刚写入的数据立刻输出,一般用于动态查看日志

[[email protected] ~]# 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‘就可以查看

[[email protected] ~]# 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
[[email protected] ~]#

我们单独拿出一行进行分析:

文件类型和权限

Linux文件类型:

d         <== 目录文件

-         <== 普通文件

l         <== 链接文件(又分软连接和硬链接)

b         <== 块设备文件(如磁盘等)

c         <== 字符设备文件(如鼠标,键盘等)

s         <== 套接字文件

p         <== 管道文件

Linux文件权限:

每个文件都有三类用户的权限,即所属用户(所属主,‘u‘)的权限,所属用户组(所属组,‘g‘)的权限,和其他用户的权限,‘o‘,每类用户都分别由‘r’‘w’‘x’,即‘读’‘写’‘执行’来控制

Linux文件链接数(即inode-索引节点)

上面例子中的inode数为‘3’,那么我们分析一下这个‘3’是怎么得出来的

(注:ls命令-i选项可以查看文件的inode号)

[[email protected] ~]# ls -di aaa/                  # 查看目录aaa本身的inode号
134760 aaa/
[[email protected] ~]# ls -ai aaa/                  # 查看目录aaa里的所有文件的inode号
134760 .  130563 ..  134763 bbb
[[email protected] ~]# ls -ai aaa/bbb/              # 查看子目录bbb里的所有文件的inode号
134763 .  134760 ..  137274 ccc
[[email protected] ~]# ls -ai aaa/bbb/ccc/          # 查看子目录ccc里的所有文件的inode号
137274 .  134763 ..

从上面的例子可以看到目录aaa的inode号共出现三次:

①目录本身

②目录aaa里的‘.’文件

③子目录bbb里的 ‘..’文件

所以目录aaa的inode共有3个



四、修改文件的属性和权限

chown 更改文件所属主和所属组

格式 :

①更改文件所属主,格式 :chown [新主名] [文件]

[[email protected] ~]# ls -ld aaa/                        
drwxr-xr-x 3 root root 4096 3月  14 12:33 aaa/      #当前目录aaa的所属主为root
[[email protected] ~]# chown mylinux aaa/                #把目录aaa的所属主改为mylinux
[[email protected] ~]# !ls
ls -ld aaa/
drwxr-xr-x 3 mylinux root 4096 3月  14 12:33 aaa/   #当前目录aaa的所属主为mylinux
[[email protected] ~]#

②更改文件所属主,格式 :chown :[新组名] [文件]

[[email protected] ~]# ls -ld aaa/
d------rwx 3 mylinux root 4096 3月  14 12:33 aaa/   #当前目录aaa的所属组为root
[[email protected] ~]# chown :mylinux aaa/               #把目录aaa的所属组改为mylinux
[[email protected] ~]# !ls
ls -ld aaa/
d------rwx 3 mylinux mylinux 4096 3月  14 12:33 aaa/#当前目录aaa的所属组为mylinux
[[email protected] ~]#

③更改文件所属主,及所属组,格式 :chown [新主名]:[新组名] [文件]

[[email protected] ~]# ls -ld aaa/
drwxr-xr-x 3 root root 4096 3月  14 12:33 aaa/        #当前目录aaa的所属主和组均为root
[[email protected] ~]# chown mylinux:mylinux aaa/          #把目录aaa的所属主和组改为mylinux
[[email protected] ~]# !ls                                  和mylinux
ls -ld aaa/
drwxr-xr-x 3 mylinux mylinux 4096 3月  14 12:33 aaa/  #当前目录aaa的所属主和组均为mylinux
[[email protected] ~]#

④更改目录及目录下文件的所属主,或所属组,需要用的选项 :-R 级联,递归

[[email protected] ~]# 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/
[[email protected] ~]# chown -R mylinux aaa/               #更改aaa及其子目录bbb的所属主
[[email protected] ~]# !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/
[[email protected] ~]#


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‘的许可权限

[[email protected] ~]# ls -ld aaa/
drwxr-xr-x 3 mylinux root 4096 3月  14 12:33 aaa/
[[email protected] ~]# chmod u-x aaa/
[[email protected] ~]# !ls
ls -ld aaa/
drw-r-xr-x 3 mylinux root 4096 3月  14 12:33 aaa/
[[email protected] ~]# chmod g+w aaa/
[[email protected] ~]# !ls
ls -ld aaa/
drw-rwxr-x 3 mylinux root 4096 3月  14 12:33 aaa/
[[email protected] ~]#

当然亦可以使用数字

[[email protected] ~]# !ls
ls -ld aaa/
drw-rwxr-x 3 mylinux root 4096 3月  14 12:33 aaa/
[[email protected] ~]# chmod 700 aaa/
[[email protected] ~]# !ls
ls -ld aaa/
drwx------ 3 mylinux root 4096 3月  14 12:33 aaa/
[[email protected] ~]#


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中。

时间: 2024-10-25 02:54:56

MyLinux Note - - - 4rd day的相关文章

MyLinux Note - - - 6th day

一.查看用户 /etc/passwd [[email protected] ~]# cat /etc/passwd|head -5 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 [

MyLinux Note - - - 5th day

接上次课内容 lsattr.chattr lsattr用于显示文件特定属性,chattr用于修改文件特定属性 lsattr 查看特殊属性值 [[email protected] ~]$ lsattr /etc/passwd -------------e- /etc/passwd lsattr 常用选项 -V 显示lsattr版本 -a 显示所有文件,包括隐藏文件 -d 显示目录本身特效 -R 递归显示 chattr 更改文件特殊属性 chattr +i/chattr -i 在文件属性中添加/删除

MyLinux Note - - - 3rd day

一.ls:显示当前文件和目录的内容 格式:ls -[选项] [目录名] -a 显示所有隐藏文件 -l(长格式) 显示文件详细信息 -i 显示每个文件的索引节点信息 -t 以时间排序 -G 显示目录中除组信息外的所有内容 -L 将符号链接文件输出为普通文件 -d 当遇到目录时列出目录本身而非目录内的文件 -c 配合-lt:根据ctime 排序并显示ctime(文件状态最后更改的时间)   配合-l:显示ctime 但根据名称排序 二.Linux的默认目录结构 /        文件系统的根目录(/

MyLinux Note - - - 9th day

文档的压缩与打包 一.gzip与gunzip压缩 命令格式 压缩  :  gzip [选项] [文件名...] 解压缩  : gunzip [选项] [文件名...] 常用命令选项 -d :对压缩文件进行解压缩 -l  :对每个压缩文档,显示下列信息:压缩文件的大小.未压缩文件的大小.压缩比和未压缩文件的名字 -r :递归对指定目录下各个级子目录里的文件进行压缩或解压缩 -t :检查压缩文件的完整性 -v :对每一个进行压缩和解压缩的文件,显示文件名和压缩比 -n :用指定的数字调整压缩的速度,

MyLinux Note - - - 2nd day

一.学习yum命令 yum list ==> 列出一个或一组软件包 grouplist ==> 列出关联数据包清单 install package1 [[package2] [...] ==> 向系统中安装一个或多个软件包 groupinstall group1 [group2] [...] ==> 向系统中安装一组软件包 update [package1] [package2] [...] ==> 更新系统中的一个或多个软件包 upgrade  ==> 更新软件包同时

MyLinux Note - - - 10th day

一.RPM(RedHat Package Manager)是RedHat公司开发的一个Linux软件包安装和管理程序. RPM软件包文件都是以 .rpm为后缀,一般格式: 软件包名-版本号-修正版.硬件平台.rpm RPM命令的使用方法 一般选项 -h :用"#"显示完成的进度 --keep-temps :保留临时文件 --quiet :只有当出现错误时才给出提示信息 --version :显示RPM版本 选择选项 -a :查询所有安装的软件包 -f :查询该文件是由哪个软件包安装的

MyLinux Note - - - First day

一.Linux 的历史 ①创始人:Linus Torvalds(林纳斯·托瓦兹) ②发布时间:1991年10月5日 ③核心:kernel ④衍生版本:常见的Ubuntu.RedHat.CentOS.Debain.Fedora.SuSE.Linux Mint.Gentoo.OpenSUSE.StartOS.Mandrake.FreeBSD等 ⑤CentOS:(Community Enterprise  Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自

383.判断一个字符串是否能够包含另外一个字符串 Ransom Note

Given an arbitrary ransom note string and another string containing letters from all the magazines, write a function that will return true if the ransom note can be constructed from the magazines ; otherwise, it will return false. Each letter in the

thinking in java ----reading note (1)

# thinking in java 4th# reading note# victor# 2016.02.10 chapter 1 对象入门 1.1 抽象的进步    (1) 所有东西都是对象.    (2) 程序是一大堆对象的组合,对象间通过消息联系.    (3) 通过封装现有对象,可制作出新型对象.    (4) 每个对象都有一种类型(某个类的实例).    (5) 同一类的所有对象都能接受相同的消息.    1.2 对象的接口 & 1.3 实现方法的隐藏     接口规定了可对一个特定