不进入系统修改密码
1读秒的时候按e进入grub
2在grub菜单选项按e进入编辑模式
3编辑kernel那行(第二行)
4输入 空格 1 然后按enter
5按b重新启动
6passwd root(如果不写root默认为该root用户的密码)
7输入密码,确认密码,reboot重启
一文件和目录的操作
1文件和目录的创建、复制、移动、重命名
目录的创建
root@bogon /]# mkdir -p /a/b/c/d -p表示递归创建,父目录没有的情况下,会帮我们把父目录创建出来
[root@bogon /]# rm -rf /a/b/c/d 仅删除d文件夹
[root@bogon /]# rm -rf /a 删除a目录及其中所有的东西
[root@VM_0_15_centos ~]# mkdir /haha #只能创建一级目录
[root@VM_0_15_centos ~]# mkdir fff #在当前目录创建fff这个目录(当前为家目录)
[root@VM_0_15_centos /]# mkdir -p /home/1/2/3/4 /data/1
同时创建多个目录
文件的创建
格式:touch + 文件名 (不指定路径,默认在当前路径下创建)
[root@VM_0_15_centos ~]# touch 1.txt
[root@VM_0_15_centos ~]# touch /home/a.txt /b.txt /root/c.txt 分别在home目录下 根目录下 root目录下 创建txt文件
注:home为普通用户的家目录
echo 打印到屏幕
[root@VM_0_15_centos /]# echo print
print
echo打印到文件中 >表示覆盖(先清空内容再写入)
[root@VM_0_15_centos ~]# echo hello > ./1.txt
[root@VM_0_15_centos ~]# cat 1.txt
hello
echo打印到文件中 >>表示追加 (追加写入内容)
[root@VM_0_15_centos ~]# echo world >> 1.txt
[root@VM_0_15_centos ~]# cat 1.txt
hello
world
[root@VM_0_15_centos ~]# echo haha > 1.txt
[root@VM_0_15_centos ~]# cat 1.txt
haha #覆盖
[root@VM_0_15_centos ~]# echo "123" | passwd --stdin root #把root用户的密码改为123(不通过交互信息直接修改root用户密码)
【stdin=standard input即标准输入】
[root@VM_0_15_centos ~]# echo "123" | passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.
将前面语句显示的内容写到后面那个文件(不存在则新建)中
[root@VM_0_15_centos ~]# ls -l /home
[root@VM_0_15_centos ~]# ls -l /home > ./1.log
[root@VM_0_15_centos ~]# cat 1.log
total 8
drwxr-xr-x 3 root root 4096 Sep 4 09:37 1
-rw-r--r-- 1 root root 0 Sep 4 09:34 a.txt
drwx------ 3 centos centos 4096 May 9 15:02 centos
[root@VM_0_15_centos ~]# cat /etc/profile >> ./1.log #将/etc目录下的profile文件中的内容追加到1.log中
[root@VM_0_15_centos test]# cat >> 1.log <2.log 把2.log中的内容追加到1.log中
<:输出重定向(相当于导入)
[root@VM_0_15_centos ~]# cat > 2.log <1.log 相当于把1.log文件中的内容导入到2.log(没有创建新的)中
上句相当于[root@VM_0_15_centos test]# cat 1.log > 3.log 【说明>起到一个变换方向的作用,把文件名移到了后面写】
<<EOF:输入结束(以EOF结束EOF=end of file EOF是自定义的,所以也可以换成其他的字符串,但是一般不换)
[root@VM_0_15_centos ~]# cat >3.log <<EOF
> asas
> dfdf
> qwqwq
> EOF #输出EOF后停止输出【EOF这个字符串没有被放到文件中】
注:EOF区分大小写
[root@VM_0_15_centos ~]# cat > 4.log
dfdfd
sdfdsf
sdfsdf
xcv #按ctrl+d结束输入,并保存,其实EOF和ctrl+d的作用相同 [注:ctrl+d表示结束当前输入]
[root@VM_0_15_centos ~]# cat 4.log
dfdfd
sdfdsf
sdfsdf
xcv
[root@bogon home]# echo -e "hello \n world" >1.txt
[root@bogon home]# echo -e "aa\nbb\ncc\ndd" >2.txt
[root@bogon home]# cat 1.txt
hello
world
[root@bogon home]# cat 2.txt
aa
bb
cc
dd
[root@bogon home]# cat 1.txt 2.txt 【cat 可以同时查看多个文件】
hello
world
aa
bb
cc
dd
[root@bogon home]# cat 2.txt 1.txt
aa
bb
cc
dd
hello
world
[root@VM_0_15_centos ~]# cat 3.log 4.log >>5.log #将3.log 4.log中的内容追加到5.log中
[root@VM_0_15_centos ~]# cat 5.log
asas
dfdf
qwqwq
dfdfd
sdfdsf
sdfsdf
xcv
复制文件和目录
1复制单个文件:
格式:cp /a/b/c/d.txt(不写路径代表当前目录下) 新的路径
[root@VM_0_15_centos ~]# cp /etc/profile /home
2复制多个文件
[root@VM_0_15_centos ~]# cp 1.log 2.log /home
[root@VM_0_15_centos ~]# cd /home
3复制文件并且重命名
格式:cp 文件名 新的文件名
[root@VM_0_15_centos home]# cp /etc/profile ./profile.bak
cp -r 目录名 新路径 【注:r=recursive递归】
[root@VM_0_15_centos home]# cp -r /bin ./bin.bak 复制/bin目录到 bin.bak目录下
注:加.bak相当于失效文件
4移动文件或目录并可以改名(相当于剪切)
[root@VM_0_15_centos home]# ll
-rw-r--r-- 1 root root 1939 Sep 4 10:01 1.log
[root@VM_0_15_centos home]# mv 1.log 1.log.xxx 【相当于改名】
[root@VM_0_15_centos home]# ll
-rw-r--r-- 1 root root 1939 Sep 4 10:01 1.log.xxx
[root@VM_0_15_centos test]# ll
total 36
-rw-r--r-- 1 root root 8 Sep 27 21:52 1tmp.log
-rw-r--r-- 1 root root 14 Sep 28 16:07 1.txt.tmp
-rw-r--r-- 1 root root 16 Sep 28 15:58 2.log
-rw-r--r-- 1 root root 12 Sep 28 16:10 2.txt
-rw-r--r-- 1 root root 32 Sep 28 16:00 3.log
-rw-r--r-- 1 root root 52 Sep 28 16:11 3.txt
-rw-r--r-- 1 root root 17 Sep 28 16:01 4.log
drwxr-xr-x 3 root root 4096 Sep 28 16:13 a
drwxr-xr-x 2 root root 4096 Sep 28 16:21 x
[root@VM_0_15_centos test]# mv ./a ./b
[root@VM_0_15_centos test]# ll
total 36
-rw-r--r-- 1 root root 8 Sep 27 21:52 1tmp.log
-rw-r--r-- 1 root root 14 Sep 28 16:07 1.txt.tmp
-rw-r--r-- 1 root root 16 Sep 28 15:58 2.log
-rw-r--r-- 1 root root 12 Sep 28 16:10 2.txt
-rw-r--r-- 1 root root 32 Sep 28 16:00 3.log
-rw-r--r-- 1 root root 52 Sep 28 16:11 3.txt
-rw-r--r-- 1 root root 17 Sep 28 16:01 4.log
drwxr-xr-x 3 root root 4096 Sep 28 16:13 b
drwxr-xr-x 2 root root 4096 Sep 28 16:21 x
6删除文件或目录
rm -rf 【r=recursive递归 f=force强迫】
[root@VM_0_15_centos home]# rm 1.log.xxx
rm: remove regular file ‘1.log.xxx’? y【交互式删除文件】
rm -f 只能删除文件,避免交互式
rm -rf可以删除目录
7文件的批量改名
rename
rename 要修改的字符串 修改后的字符串 被操作的文件
[root@VM_0_15_centos bin.bak]# cd /etc/yum.repos.d/ 【yum源的配置文件所在文件夹】
[root@VM_0_15_centos yum.repos.d]# ll
total 8
-rw-r--r-- 1 root root 614 Jul 30 08:20 CentOS-Base.repo
-rw-r--r-- 1 root root 230 Jul 30 08:20 CentOS-Epel.repo
[root@VM_0_15_centos yum.repos.d]# rename .repo .repo.bak ./* 【把当前路径下,所有以.repo为后缀的文件的后缀改为.repo.bak】
[root@VM_0_15_centos yum.repos.d]# ll
total 8
-rw-r--r-- 1 root root 614 Jul 30 08:20 CentOS-Base.repo.bak
-rw-r--r-- 1 root root 230 Jul 30 08:20 CentOS-Epel.repo.bak
[root@VM_0_15_centos yum.repos.d]# rename .bak "" ./* 【把.bak后缀改为空,即去掉.bak后缀】
[root@VM_0_15_centos yum.repos.d]# ll
total 8
-rw-r--r-- 1 root root 614 Jul 30 08:20 CentOS-Base.repo
-rw-r--r-- 1 root root 230 Jul 30 08:20 CentOS-Epel.repo
8vi或vim【用法差不多】,不指定目录就是操作当前路径下的文件
一般模式:
dd:删除光标所在行
ndd:从光标所在行开始,删除n行【注n为数字】
dG:从光标所在行删除到文件末尾
x:删除光标所在位置字符
nx:从光标所在处开始删除n个字符【n为数字】
D:从光标所在处删除到该行末尾
r:替换光标所在处的字符
R:从光标所在处替换,按esc键结束
u:取消上一步操作
ctrl+r:返回到取消前
yy:复制一行
nyy:复制n行【n表示数字】
p粘贴
gg定位到第一行的行首
GG定位到定位到最后一行的行首
编辑模式
进入编辑模式:【a i o】
i(i=insert)在光标所在处的前一个位置开始插入
I(i=insert)在光标所在行的行首开始插入
a 光标所在处的后一个位置开始输入
A 光标所在行的行尾开始输入
o:光标所在行的下一行开始输入
O光标所在行的上一行开始输入
底行模式:
:n定位到第n行 例:5 定位到第5行
:set nu设置为显示行号
:set nonu 设置为不显示行号
:11 定位到11行
:pwd 显示当前工作目录
:cd 查看路径
:w 保存【相当于ctrl+s,知识后如果想退出可以用:q】
:q退出 【当已经对文件进行修改了,这样退不出去】
:wq保存退出
:q!强制退出【再vim查看,文件和之前一样】
:wq!强制保存退出
查找
/bin 查找文件中出现的bin(从光标所在处开始往后查找),并定位到第一个找到的位置,继续往下查找按n,往上查找按N
替换
:s/sbin/gp1812 查找光标所在行的第一个sbin,并替换为gp1812
:s/sbin/gp1812/g 查找光标所在行的\所有的sbin,并替换为gp1812
:%s/sbin/gp1812/g 查找文件中所有的sbin,并替换为gp1812
:5,$s/gp1812/gp-1812/g 从第5行开始把所有的gp1812改为 gp-1812
:1,4s/gp1812/gp-1812/g 把[1,4]行所有的gp1812改为 gp-1812
块模式
按v进入字符选择模式
shift+v进入行选择模式
ctrl+v进入块选择模式
y复制
p粘贴
退出某个模式:esc,进入一般模式
文件的查看
cat一次性将文件中的所有内容打印到控制台
head 文件名 ,查看文件内容,默认取前10行
head -n 文件名【n是数字-n表示前几行】
tail 文件名 【默认取文件后10行】
tail -n 取文件后n行【n为数字】
more 文件名 ,适合内容较多的文件的查看,可以一页一页的显示
空格下一页
b上一页
回车一行一行查看
q退出
less 文件名 ,适合内容较多的文件的查看,可以一页一页的显示
空格下一页
b上一页
回车一行一行查看
q退出
但是less支持搜索 (用/ )
flume:日志采集工具
分析日志:
tail -f 监控文件(监控的是文件inode,每个node都有一个编号)
一旦文件改名或移动【必须就是原来那个】,tail -f将失去对这个文件的监控
阻断日志的写入,把文件拷贝,将原文件清空
tail -F (使用的更多)监控的是文件名 文件不存在也可以监控
把文件移动走,阻断日志写入的流(暂停),创建一个新的文件和原来文件名字相同【只要名字相同路径相同即可】,继续监控该文件
磁盘上文件存储最小的单位是扇区:512字节
操作系统在读磁盘时的最小单位:块(block),一个块8个扇区,大概4k
注:磁盘可以粗略的理解为硬盘
系统存储文件的数据分为两种:元数据(数据存储的索引)和数据块
同样,磁盘存储也在系统格式化的时候被分为两部分。分别存储元数据和数据块。
读一个文件要读哪些块是根据元数据知道的,元数据存在inode里(inode集合称为元数据,这句话的意思是元数据被塞进多个inode里)
元数据里面有:时间,用户,组,权限,块的信息.....
stat指令:文件/文件系统的详细信息显示。
格式:stat 文件名 来查看它的元数据信息
inode的大小:inode也会消耗磁盘空间,磁盘格式化的时候,会自动分成两个区域,数据区(即数据块)存放数据文件,
另一个就是inode区(元数据)(inode table),存放inode包含的信息。
每个inode节点的大小一般是128字节或者是256字节。
inode的节点总数,在格式化的时候就给定,一般是1kb或者2kb就设置一个inode。
1G磁盘每个inode节点大小128字节,给1kb分配一个inode
那么inode table大小会是多少?128M,占整块磁盘的12.8%
会出现的问题:磁盘空间未满,但不能创建文件
原因是:inode区已经占满
每个文件对应一个inode ,当IUse%(inode使用率)达到百分之百,无法创建文件
https://www.cnblogs.com/xiexj/p/7214502.html
HDFS(hadoop distributed分布式的 file system)分布式文件系统:存储大文件,高吞吐量
(注磁盘的吞吐量,也就是每秒磁盘 I/O 的流量,即磁盘写入加上读出的数据的大小。)
元数据:在内存中 一个块的元数据占150字节
#df -i 查看磁盘分区的inode使用情况
[root@VM_0_15_centos /]# df -ih (-h用更好懂的方式显示文件大小)
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/vda1 3.2M 54K 3.1M 2% /
devtmpfs 228K 320 228K 1% /dev
tmpfs 230K 7 230K 1% /dev/shm
tmpfs 230K 393 230K 1% /run
tmpfs 230K 16 230K 1% /sys/fs/cgroup
tmpfs 230K 1 230K 1% /run/user/0
ls -i 文件名 查看文件的inode号
五。文件的查找
1which【在环境变量中查找,查找命令所在地】
#which cat 查找cat命令所在的位置
2whereis 【该指令会在特定目录中查找符合条件的文件,这些文件属于原始代码,二进制文件等,
一般用于查找软件的安装位置】
# whereis sshd
3find【和windows中的搜索是一样的】:查找速度很慢,需要指定查找的路径(也就是说在哪个路径下去查找匹配的文件或目录)参数前的路径可以有多个,表示可以从多个路径下查找
find 路径 参数
不写路径时为当前路径
#find -name "*.txt"
#find -name "4.log"指定全部文件名
#find /root /home -name "*.txt" 【-name表示以名字的形式查找,找到/root和/home目录下所有以.txt为后缀的文件】
#find /root /home -name "*.txt" -ok -exec rm {} \; 【查找并删除】【-exec表示避免交互式输入y】无法执行
4locate 【查找文件所在,查找的是Linux文件的数据库(也就是在Linux的所有文件中查找指定文件),效率高,但有弊端,数据库不是实时更新的】
#echo hello world >> cls.txt
#locate 1.txt 【没有查询到刚刚创建的】(注:locate:位于 查找)
#updatedb 【更新数据库】
#locate 1.txt【找到了】
5history:显示历史命令
六文件的压缩和打包:
1gzip:用来压缩文件,以.gz为扩展名。可以压缩比较大的文件,节省磁盘空间,可以与tar命令结合使用,
构成linux中比较流行的压缩格式。
特点:
1压缩不保留原文件
2不能压缩目录
3解压缩命令gunzip(记忆:gzip的首字母后面加un)
4可以同时压缩多个文件
5可以同时解压缩多个文件(分别压缩)
[root@VM_0_15_centos zipTest]# echo "123456" > 1.txt
[root@VM_0_15_centos zipTest]# echo "123456" > 2.txt
[root@VM_0_15_centos zipTest]# echo "123456" > 3.txt
[root@VM_0_15_centos zipTest]# gzip 1.txt 2.txt 3.txt
[root@VM_0_15_centos zipTest]# ll
total 12
-rw-r--r-- 1 root root 33 Sep 29 20:22 1.txt.gz
-rw-r--r-- 1 root root 33 Sep 29 20:22 2.txt.gz
-rw-r--r-- 1 root root 33 Sep 29 20:22 3.txt.gz
[root@VM_0_15_centos zipTest]# gunzip 1.txt.gz 2.txt.gz 3.txt.gz
[root@VM_0_15_centos zipTest]# ll
total 12
-rw-r--r-- 1 root root 7 Sep 29 20:22 1.txt
-rw-r--r-- 1 root root 7 Sep 29 20:22 2.txt
-rw-r--r-- 1 root root 7 Sep 29 20:22 3.txt
[root@VM_0_15_centos /]# gzip -r /test 分别压缩/test中的每个文件 -r表示递归
[root@VM_0_15_centos test]# gunzip -r /test 分别解压缩/test中的每个文件 -r表示递归
2bzip2 扩展名.bz2
特点【基本和gzip相同】
1压缩式不保留原文件
2不能压缩目录
3解压缩命令bunzip2
#bunzi2 ./*解压当前目录下的所有文件
4可以同时压缩多个文件
5可以同时解压缩多个文件
[root@VM_0_15_centos zipTest]# ll
total 12
-rw-r--r-- 1 root root 33 Sep 29 20:22 1.txt.gz
-rw-r--r-- 1 root root 33 Sep 29 20:22 2.txt.gz
-rw-r--r-- 1 root root 33 Sep 29 20:22 3.txt.gz
[root@VM_0_15_centos zipTest]# gunzip 1.txt.gz 2.txt.gz 3.txt.gz
[root@VM_0_15_centos zipTest]# ll
total 12
-rw-r--r-- 1 root root 7 Sep 29 20:22 1.txt
-rw-r--r-- 1 root root 7 Sep 29 20:22 2.txt
-rw-r--r-- 1 root root 7 Sep 29 20:22 3.txt
[root@VM_0_15_centos zipTest]# bzip2 1.txt 2.txt 3.txt
[root@VM_0_15_centos zipTest]# ll
total 12
-rw-r--r-- 1 root root 44 Sep 29 20:22 1.txt.bz2
-rw-r--r-- 1 root root 44 Sep 29 20:22 2.txt.bz2
-rw-r--r-- 1 root root 44 Sep 29 20:22 3.txt.bz2
[root@VM_0_15_centos zipTest]# bunzip2 1.txt.bz2 2.txt.bz2 3.txt.bz2
[root@VM_0_15_centos zipTest]# ll
total 12
-rw-r--r-- 1 root root 7 Sep 29 20:22 1.txt
-rw-r--r-- 1 root root 7 Sep 29 20:22 2.txt
-rw-r--r-- 1 root root 7 Sep 29 20:22 3.txt
3 tar 打包
可以将多个文件或目录打包到一起,压缩成为一个文件(好删除,节省递归删除目录的时间)
注:打包会保留原文件
#tar -cvf test.tar 1.txt 2.txt 【将1.txt 2.txt打包成为一个文件。名字为test.tar】
#tar -xvf test.tar 【解包】
#tar -zcvf test.tar.gz 1.txt 2.txt (同样会保留原文件)
#tar -zxvf test.tar.gz -C /home/hadoop/ 【解压缩到该路径下】(解压也会保留原.tar.gz包)
#tar -jcvf ha.tar.bz2 222.log aaaaaaa/ cls.avi 【-j 支持bzip2解压文件 】打包并压缩以bzip2的格式
c 打包
x 解包
v 显示信息
f 指定文件【必须有】
C 重定向【即指定路径】
z 指zip,以这种形式压缩或解压 经常看到*.tar.gz以gz进行压缩的以tar进行打包的
系统执行顺序:先打包(成为一个)后压缩,因为不能压缩目录
七用户与组的操作
useradd
-u指定uid
-g指定基本组
-G指定附加组
#useradd user 【添加一个用户,名字为user】
[root@bogon ~]# ll /home
total 12
drwx------. 4 hadoop hadoop 4096 Sep 3 18:52 hadoop
drwx------. 4 kyle kyle 4096 Sep 3 20:44 kyle
drwx------. 4 user user 4096 Sep 4 03:32 user
#tail /etc/passwd【取出后10行】
普通用户id【500,)
root用户id为0
【1,499】系统用户使用
#cat /etc/group 查看组
#useradd user2
#tail /etc/group
所有用户必须放在组内,若创建用户时不指定组,系统会默认创建与用户名同名的组,把该用户放到这个同名组中
用户id与组id是由系统分配的
#useradd -u 666 -g 502 -G 501 user3
/etc/passwd 的内容理解:
在/etc/passwd 中,每一行都表示的是一个用户的信息;一行有7个段位;每个段位用:号分割,例如:
beinan:x:500:500:beinan sun:/home/beinan:/bin/bash
linuxsir:x:501:502::/home/linuxsir:/bin/bash
第一字段:用户名(也被称为登录名);在上面的例子中,我们看到这两个用户的用户名分别是 beinan 和linuxsir;
第二字段:口令;在例子中我们看到的是一个x,其实密码已被映射到/etc/shadow 文件中;
第三字段:UID ;请参看本文的UID的解说;
第四字段:GID;请参看本文的GID的解说;
第五字段:用户名全称,这是可选的,可以不设置,在beinan这个用户中,用户的全称是beinan sun ;而linuxsir 这个用户是没有设置全称;
第六字段:用户的家目录所在位置;beinan 这个用户是/home/beinan ,而linuxsir 这个用户是/home/linuxsir ;
第七字段:用户所用SHELL 的类型,beinan和linuxsir 都用的是 bash ;所以设置为/bin/bash ;
2)关于UID 的理解:
UID 是用户的ID 值,在系统中每个用户的UID的值是唯一的,更确切的说每个用户都要对应一个唯一的UID
,系统管理员应该确保这一规则。系统用户的UID的值从0开始,是一个正整数,至于最大值可以在/etc/login.defs
可以查到,一般Linux发行版约定为60000;
UID 是确认用户权限的标识,用户登录系统所处的角色是通过UID 来实现的,而非用户名,切记; 在Linux 中,root的UID是0,拥有系统最高权限;比如我在/etc/passwd 中把beinan的UID改为0后,你设想会发生什么呢?beinan这个用户会被确认为root用户。beinan这个帐号可以进行所有root的操作;
一般情况下,每个Linux的发行版都会预留一定的UID和GID给系统虚拟用户占用,虚拟用户一般是系统安装时就有的,是为了完成系统任务所必须的用户,但虚拟用户是不能登录系统的,比如ftp、nobody、adm、rpm、bin、shutdown等;预留数量以各个系统中/etc/login.defs
中的 UID_MIN 的最小值为准;比如Fedora 系统 login.defs的UID_MIN是500,而UID_MAX
值为60000,也就是说我们通过adduser默认添加的用户的UID的值是500到60000之间;
#cat /etc/group 可以看到附加组
#passwd user3 【设置该用户的密码】
#cat /etc/shadow
【/etc/group存储?】
【/etc/shadow存储?】
https://www.cnblogs.com/xuha0/p/5519232.html
2修改用户usermod
#usernod --help 【查看使用方式】
-g修改基本组的信息
# usermod -g 502 user 【将基本组改为502】(注:mod=modify修改)
#tail /etc/passwd【查看】
-u设置用户的id
#usermod -g 500 -u 999 user 【修改user用户的基本组和uid】
3删除用户
userdel -r用户名 【-r表示删除用户的同时,删除用户的家目录】
组的操作
#groupadd 组名 【添加组】
#gpasswd +组名 设置组的密码
#cat /etc/group【查看】
#groupdel 组名【删除组】
#groupmod 组名【修改组】
八文件的权限
read权限:
文件:读的是文件的内容
文件夹:读取文件夹中的文件的内容
write权限:向文件中写入内容
x权限:
文件:执行文件
文件夹:进入文件夹
权限的修改:chomd不受文件权限的控制,只有owner和root才具有文件的修改权
修改文件或文件夹(-R表递归)权限:(mod=modify:修改)
#chmod o+rw 文件名【为其他用户添加读写的权限】
#chmod o-w 文件名【其他用户取消写的权限】
/anaconda-ks.cfg
#chomd ugo+rwx 【为所有用户添加读写执行的权限】
chmod -R 【递归修改权限】
#chmod -R o+w ./aa把aa目录和该目录下的所有东西都对其他用户加一个写的权限
#chmod -R 000 ./aa 【注:root用户不受权限限制】
#chmod -R 333 ./aa
#chmod user2[修改拥有的用户]:user2[修改拥有组] 1.log
#chmod -R[递归] user2[修改用有的用户]:root[修改拥有组] ./aa[aa是一个目录]
链接
1硬链接【相当于复制文件】:只能是文件到文件或者是文件到目录【把一个文件复制到一个目录下】???
# ln 1.log 3.log【他们中一个内容改变另一个也改变】
2符号链接
可以是文件也可以是目录(写绝对路径)
ln -s
注:
ln -s
ln -s /data/aaa /home/lns 符号链接:相当于将/data/aaa拷贝到/home/lns目录下
但是只是建立了一个链接,不是真的拷贝文件的内容。
nano文本编辑器
#nano a.txt
写内容
下方有提示
^代表ctr键
常用的:ctrl+o 保存文件,提示后直接回车 (writeout:写出 将nano中的内容写出到文件中)
ctrl+x退出文件 (exit:退出)
ctrl+k剪切(可以用于删除多行)
ctrl+u粘贴(可以多次粘贴剪切的内容)
home键:定位到所在行的行首
end键:定位到所在行的行尾
wc (w=word c=count)
wc -c a.txt 统计字节数
wc-l a.txt 统计行数
wc -w a.txt 统计单词数
file 文件名 查看文件类型
xargs:把多行变成单行,用空格替换回车换行符
[root@VM_0_15_centos test]# find .
.
./hehe.txt
./b
./b/b
./b/b/cp1.txt
./b/b/3.txt
./3.log
./2.log
./x
./x/2.txt
./x/1.txt
./3.txt
./1tmp.log
./4.log
./tmp.txt
./locateTest.txt
./2.txt
./testvim
./testvim/.1,txt.swp
./testvim/1,txt
./testvim/1.txt
./1.txt.tmp
./a.txt
[root@VM_0_15_centos test]# find . | xargs
. ./hehe.txt ./b ./b/b ./b/b/cp1.txt ./b/b/3.txt ./3.log ./2.log ./x ./x/2.txt ./x/1.txt ./3.txt ./1tmp.log ./4.log ./tmp.txt ./locateTest.txt ./2.txt ./testvim ./testvim/.1,txt.swp ./testvim/1,txt ./testvim/1.txt ./1.txt.tmp ./a.txt
[root@VM_0_15_centos test]# find . | grep .txt | cp `xargs` /mytest1
find . 查找当前目录下的所有文件名(显示的是相对路径)
find . | grep .txt 通过过滤,留下名字中有.txt的文件
find . | grep .txt | cp `xargs` /mytest1 复制这些文件到 /mytest1文件夹中(注:``是反引号,进行强行命令解析,把普通单词解析为命令) args把前面输入的内转换成一行
[root@VM_0_15_centos mytest1]# echo 'cat yo.txt' (并没有显示出来文件内容)
cat yo.txt
[root@VM_0_15_centos mytest1]# echo `cat yo.txt` (显示了文件内容)
hello world and I love u...
[root@VM_0_15_centos mytest1]# echo www.baidu.com > baidu.txt
[root@VM_0_15_centos mytest1]# ping `cat baidu.txt`
linux文件类型:
d代表directory:目录,-代表文件,l代表link:链接, b代表block:块文件 c:字符文件(少见)
其中链接代表windows中的快捷方式
块设备:U盘,光盘,移动硬盘等
/dev (注:dev=device:设备)
[root@VM_0_15_centos bin]# cd /dev
[root@VM_0_15_centos dev]# ll (可以看到b,c类型的文件,这里只选几个列出,注文件名颜色不同通常是因为权限不同)
lrwxrwxrwx 1 root root 3 Sep 26 21:24 cdrom -> sr0 (cdrom:光驱,这里是光驱链接到sr0上)
crw--w---- 1 root tty 4, 11 Sep 26 21:24 tty11
[root@VM_0_15_centos dev]# ls -al | grep sr0
lrwxrwxrwx 1 root root 3 Sep 26 21:24 cdrom -> sr0
brw-rw---- 1 root cdrom 11, 0 Sep 26 21:24 sr0 (sr0为块设备)
centos逻辑结构:
/bin 或/sbin :(bin代表binary二进制文件即可执行文件)在这两个文件夹中的文件都是可执行文件,其中s=super 所以sbin中的内容比bin中的内容要更重要一些
/ 文件系统的根
/bin 最初的命令(祖先)
/sbin 最初的命令(重要性更高)
/usr/bin 厂商相关的命令,例如ubuntu在linux最初的命令基础上进行扩充它自己的命令
/usr/sbin 厂商相关的命令,重要性更高
/usr/local/bin 用户自己定义的命令例如用户自己写的shell脚本
/usr/local/sbin 同上,但重要性更高
从图中可以看出centos把自己祖先的命令bin或sbin都放到/usr/bin或/usr/sbin自己的厂商那里去了
其实centos没有自己的物理的/bin /sbin它都是符号链接连接到/usr/bin /usr/sbin
[root@VM_0_15_centos bin]# echo "$PATH" 注:$PATH为环境变量
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin