1:文件与目录
文件与目录
目录
- CD 切换当前工作目录
- mkdir 创建目录
- re -dir 删除目录
- pwd 打印当前工作目录
- 绝对路径和相对路径
- 硬链接 和软链接
- CP拷贝
- MV 移动
- dirname 和 basenam
- 文件内容的查阅
- 修改时间文件于新建文件
- 命令与文件的查询
正文
CD 切换当前工作目录
cd /etc #直接切换到/etc目录
cd .. #切换到上层目录
cd . #切换到当前目录
cd #回到自己的家目录
cd ~ #回到自己的家目录
cd - #回到上次工作目录
PWD 打印当前工作目录
pwd [-LP]
• L 显示逻辑工作目录
• P 显示物理工作目录
mkdir 创建目录
• mkdir [pm] <dir> • -p 自动创建⽗目录
• -m 设置权限
结果
[root@iZbp16r4d86u2hs6405o6mZ ~]# mkdir -p python/code/
[root@iZbp16r4d86u2hs6405o6mZ ~]# ls -al
total 128
dr-xr-x---. 14 root root 4096 May 24 13:20 .
dr-xr-xr-x. 18 root root 4096 May 21 12:02 ..
-rw-r--r-- 1 root root 61 May 23 08:44 1.c
-rw------- 1 root root 4288 May 24 13:14 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
drwxr-xr-x 3 root root 4096 Jul 11 2019 .cache
drwxr-xr-x 2 root root 4096 May 24 11:02 Ccode
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
drwxr-xr-x 2 root root 4096 May 21 13:07 .LfCache
drwxr-xr-x 3 root root 4096 May 21 12:26 .local
drwxr-xr-x 2 root root 4096 Jul 11 2019 .pip
drwxr----- 3 root root 4096 May 21 12:19 .pki
-rw-r--r-- 1 root root 205 May 21 11:59 .pydistutils.cfg
drwxr-xr-x 3 root root 4096 May 24 13:20 python
re -dir 删除目录
rm dir [r] <dir>
• r 递归删除目录及其内容 对话框 强制删除
• f — force 递归删除
/* 目录下所有
remark:—→ rm -rf /* 意义递归删除所有
绝对路径和相对路径
相对路径 指令
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# gcc 1.c
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# ls
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# ./a.out
结果
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# gcc 1.c
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# ls
1.c 2.c 3.c a.c a.out b.c
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# ./a.out
Hello World[root@iZbp16r4d86u2hs6405o6mZ Ccode]#
PATH="$PATH":/Ccode/a.out —?硬转义 当前代码代表什么意思。
硬链接 和软链接
[root@iZbp16r4d86u2hs6405o6mZ ln]# touch f12
[root@iZbp16r4d86u2hs6405o6mZ ln]# ln f12 f11
[root@iZbp16r4d86u2hs6405o6mZ ln]# ln -s f12 f13
[root@iZbp16r4d86u2hs6405o6mZ ln]# ls -li
total 0
1063645 -rw-r--r-- 2 root root 0 May 24 14:15 f11
1063645 -rw-r--r-- 2 root root 0 May 24 14:15 f12
1063646 lrwxrwxrwx 1 root root 3 May 24 14:16 f13 -> f12
试验一下...
当前目录下的id F11硬链接和F12 相同 但是F13的软链接指向F12 ID却是有差异的
ln -s 软连接 实际上→在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
ln dir ln dir 硬链接 →硬连接指通过索引节点来进行连接
提示:硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。 在Linux中,多个文件名指向同一索引节点是存在的。 —>一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。 —>硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
CP拷贝
cp [irapdslu] <sour> <des>
选项
Ø -i:若⽂件存在,询问用户
Ø -r:递归复制
Ø -a: pdr的集合
Ø -p: 连同⽂件属性⼀起拷贝
Ø -d: 若源⽂件为连接⽂件的属性,则复制连接⽂件的属性
Ø -s:拷贝为软连接
Ø -l:拷贝为硬连接
Ø -u:源⽂件比目的⽂件新才拷贝
Ø 尝试:cp file1 file2 … dir
[root@iZbp16r4d86u2hs6405o6mZ ln]# touch a.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# ls -i
1063645 a.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# ln a.c b.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# ls -i
1063645 a.c 1063645 b.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# ln -s a.c c.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# ls -i
1063645 a.c 1063645 b.c 1063646 c.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# ls -il
total 0
1063645 -rw-r--r-- 2 root root 0 May 24 15:14 a.c
1063645 -rw-r--r-- 2 root root 0 May 24 15:14 b.c
1063646 lrwxrwxrwx 1 root root 3 May 24 15:17 c.c -> a.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# ls -il
total 0
1063645 -rw-r--r-- 2 root root 0 May 24 15:14 a.c
1063645 -rw-r--r-- 2 root root 0 May 24 15:14 b.c
1063646 lrwxrwxrwx 1 root root 3 May 24 15:17 c.c -> a.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# cp c.c d.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# ls -il
total 0
1063645 -rw-r--r-- 2 root root 0 May 24 15:14 a.c
1063645 -rw-r--r-- 2 root root 0 May 24 15:14 b.c
1063646 lrwxrwxrwx 1 root root 3 May 24 15:17 c.c -> a.c
1063649 -rw-r--r-- 1 root root 0 May 24 15:30 d.c
[root@iZbp16r4d86u2hs6405o6mZ ln]#
remark :
在当前拷贝的c.c 到d.c (c.c 来自于a.c→实际也是a.c) 最终cp(拷贝的指令最终文件id 也于a.c的id不同)
CP-d 连同 : 连同⽂件属性⼀起拷贝
[root@iZbp16r4d86u2hs6405o6mZ ln]# cp -d c.c e.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# ls i
[root@iZbp16r4d86u2hs6405o6mZ ln]# ls -il
1063646 lrwxrwxrwx 1 root root 3 May 24 15:17 c.c -> a.c
1063649 -rw-r--r-- 1 root root 0 May 24 15:30 d.c
1063650 lrwxrwxrwx 1 root root 3 May 24 15:37 e.c -> a.c
[root@iZbp16r4d86u2hs6405o6mZ ln]#
remark :-d 由此 返回看出(e.c -> a.c) 这里是链接的属性
-s:拷贝为软连接
-l:拷贝为硬连接
-u:源⽂件比目的⽂件新才拷贝
[root@iZbp16r4d86u2hs6405o6mZ ln]# vim c.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# cp c.c d.c
cp: overwrite ‘d.c’? y
[root@iZbp16r4d86u2hs6405o6mZ ln]# ls -il
total 12
1063645 -rw-r--r-- 2 root root 72 May 24 15:56 a.c
1063645 -rw-r--r-- 2 root root 72 May 24 15:56 b.c
1063646 lrwxrwxrwx 1 root root 3 May 24 15:17 c.c -> a.c
1063651 -rw-r--r-- 1 root root 72 May 24 15:57 d.c
1063650 lrwxrwxrwx 1 root root 3 May 24 15:37 e.c -> a.c
从c.c 覆盖到d.c 必须是源文件比目标文件新
MV 移动
mv [ifu] <source…> <dest>
mv source1 source2 source3 dir
Ø-i:互动模式
Ø-f:force
Ø-u:源⽂件(更新)才会移动
[root@iZbp16r4d86u2hs6405o6mZ ln]# mv d.c Ccode
[root@iZbp16r4d86u2hs6405o6mZ ln]# ls
a.c b.c c.c Ccode e.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# cd
[root@iZbp16r4d86u2hs6405o6mZ ~]# cd Ccode
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# ls
1.c 2.c 3.c a.c a.out b.c
[root@iZbp16r4d86u2hs6405o6mZ Ccode]#
dirname 和 basenam
dirname
1:获取目录部分,剥掉文件名。
[root@iZbp16r4d86u2hs6405o6mZ ~]# dirname /Ccode/a.c
output -->/Ccode
如果不存在就在. 一般在脚本取路径
basenam
2:获取末尾的文件名或者路径名
[root@iZbp16r4d86u2hs6405o6mZ ~]# basename /Ccode/1.c
-->1.c
文件内容的查阅
cat 正向连续读
- Øcat [-AbEnTv] <file>
- Ø选项:
- Ø -A:相当于-vET
- Ø -v:列出看不出的字符
- Ø -E:显示断⾏符为$
- Ø -T: 显示TAB为^I
- Ø -b:列出⾏号
- Ø -n:列出⾏号,连同空⾏也编号
参数 cat [-b] file 显示行号
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# cat -b 1.c
out put
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<unistd.h>
4 #include<fcntl.h>
5 #include<string.h>
6 #include<pthread.h>
7 int main()
8 {
9 /*在双引号中间输入Hello World*/
10 printf("Hello World");
11 return 0;
12 }
tac 反向连续读
与cat 同理不多做赘述
nl 显示行号显示
Ø nl [-bnw] <file>
Ø选项
Ø -b: ⾏号指定的⽅式
Ø -b a:相当于cat –n
Ø -b t:相当于cat -b
Ø -n:列出⾏号的表示⽅法
Ø -n ln:⾏号在屏幕最左边显示
Ø -n rn:⾏号在自⼰字段的最右边显示
Ø -n rz:⾏号在自⼰字段的最右边显示,前面自动补全0
Ø -w <num>:⾏号所占位数
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# nl -b a 1.c
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<unistd.h>
4 #include<fcntl.h>
5 #include<string.h>
6 #include<pthread.h>
7
8 int main()
9 {
10 /*在双引号中间输入Hello World*/
11 printf("Hello World");
12 return 0;
13 }
MORE 按页查看
复习一下 | 管道符<—将前面参数的标准输出到后面参数文件的标准输入
cat 1.c | mor
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# cat 1.c | more
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<string.h>
#include<pthread.h>
int main()
{
/*在双引号中间输入Hello World*/
printf("Hello World");
return 0;
}
讲输出的文件让more 显示 不允回翻,没有高亮
LESS 按页查看
less file
Ø/string 向下查找
n: 继续向下查找
Ø/?string 反向查找 N:继续反向查询
同理 按键 n 往下找, 大写的N往上找
HEAD 查看头几行
head [-n num] <file>
Ø-n num:显示前num⾏
Ø-n -num:除了后num⾏外,其他的都显示
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# cat 1.c | head -2
#include<stdio.h>
#include<stdlib.h>
查看前几行
TAIL 查看末尾几行
Øtail [-n num] <file>
Ø-n num:显示⽂件后num⾏
Ø-n +num:除了前num⾏,其他的都显示
如何查看⼀个⽂件的第101⾏到120⾏?
提示 : |
先取头的120行 在用管道取后19行
head 120 1.c | tail -19
修改时间文件于新建文件
文件的三个时间
mtime:内容数据改动时才更新这个时间
ls -al total 128 dr-xr-x---. 14 root root 4096 May 24 17:04 . dr-xr-xr-x. 18 root root 4096 May 21 12:02 .. -rw-r--r-- 1 root root 61 May 23 08:44 1.c -rw------- 1 root root 5272 May 24 16:27 .bash_history
ctime:⽂件的权限,属性改动时更新这个时间
当修改了数据,同时也会改变属性 而ls 的文档中也提到了Time的时间也同时发生了变化 。
使用-l,将时间显示为WORD,而不是默认的修改时间:atime或access或use(-u)ctime或status(-c);如果--sort=时间,也使用指定的时间作为排序键
atime:⽂件的内容被取用access时,更新这个时间
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# echo xxxc >b.c
-rw-r--r-- 1 root root 4 May 24 17:43 b.c
如下 echo axc >xx.c
表示将符号左侧的内容,以覆盖的方式输入到右侧文件中
ls -al --time=atime xx.c //返回的是atime
-rw-r--r-- 1 root root 4 May 24 17:51 xx.c
修改文件时间与新建文件
touch [-acdmt] <file>
Ø-a:仅修改访问时间
Ø-c:仅修改⽂件的时间,若⽂件不存在,不新建
Ø-d:修改⽂件日期
Ø-m:仅修改mtime
Ø-t:修改⽂件时间[yymmddhhmm]
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# touch d.c --可以修改时间
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# ls -al --time=atime d.c
-rw-r--r-- 1 root root 0 May 24 18:38 d.c
文件隐藏属性
chattr [+-=][ASacdistu] <file_or_dir>
ØA:不修改atime
ØS:同步写⼊
Øa:只能增加数据
Øc:自动压缩,解压
Ød:不会被dump程序备份
Øi:不能删除,修改,建立连接
Øs:⽂件删除时,直接从磁盘删除
Øu:⽂件删除时,数据内容存在磁盘中
查看 文件隐藏属性: → lsattr
a:只能增加数据
[root@iZbp16r4d86u2hs6405o6mZ ln]# touch f.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# chattr +a f.c
o -----a-------e-- ./f.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# echo abc1 >f.c
-bash: f.c: Operation not permitted --不允许操作
remark : 当前的操作是重写,赋予的属性为只允许增加数据
echo abc1>>f.c
符号(追加内容) 往后写入就不会报权限erro了
覆盖写入
—赋予权限不允许被删除,即使是超级管理员
[root@iZbp16r4d86u2hs6405o6mZ ln]# rm .fc
rm: cannot remove ‘.fc’: No such file or directory
i:不能删除,修改,建立连接
chattr +i f.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# lsattr
output : ----ia-------e-- ./f.c
[root@iZbp16r4d86u2hs6405o6mZ ln]# echo abc >>f.c
-bash: f.c: Permission denied
赋予了i的权限 即使给是追加内容也是不允许插入的
文件的特殊权限
权限 作用的对象 效果 set_uid s | 二进制程序文件,非脚本 | 用户在执行改程序时获取程序所有者权限 set_gid s | 目录和二进制程序文 |用户在该目录里,有效组变为目录所属组 sticky bit t | 目录 |在该目录下,用户只能删除自己创建的内容
拷贝上传文件
scp .\plugged.zip root@url:~/
命令与文件的查询
一:which 寻找可执行的文件
只能查找path下面的所有可执行的文件
1:用 which [command]
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
alias —>alias [指令的别名] 意思是输入 which 会等于后面接的那串命令!
example :→
--color[=WHEN] 来自于ls 的指令 ,=auto 为ls 在执行的时候虚拟终端的配色来显示
2: 查找文件显示命令路径
ps: lsmod是一个命令行实用程序,用于显示有关已加载的Linux内核模块的信息。
[root@iZbp16r4d86u2hs6405o6mZ ~]# which lsmod
/usr/sbin/lsmod
remark : which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,不同的 PATH 配置内容所找到的命令当然不一样的!
二:whereis 寻找特定文件
whereis [-bmsu] <file_or_dir>
Ø-b:只查找⼆进制⽂件
Ø-m:只查找manual路径下的⽂件
Ø-s:只查找source源⽂件
Ø-u:查找其他⽂件
[root@iZbp16r4d86u2hs6405o6mZ ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
ps 实际为两个路径 一个是bin 下面的ls可执行程序 || /usr/share/man/man1/ls.1.gz ls 的帮组手册
[root@iZbp16r4d86u2hs6405o6mZ ~]# whereis stdio.h
stdio: /usr/include/stdio.h
三: locate 模糊定位
locate [-ir] keyword
-i:忽略⼤小写
-r:后面可接正则表达式
ps: centos 没有这个指令,需要安装
yum install mlocate
updatedb
搜索代码文件
[root@iZbp16r4d86u2hs6405o6mZ ~]# locate stdio.h
/usr/include/stdio.h
/usr/include/bits/stdio.h
/usr/include/c++/4.8.2/tr1/stdio.h
/usr/lib64/perl5/CORE/nostdio.h
本质上依据的是一种索引的计数的 由这个updatedb 指令可以看出 存在了文件的index 存储在了这个db中。
四:FIND 高级查找
find [PATH] [option] [action]
Ø与用户或用户组相关的参数:
Ø -uid n:用户UID为n
Ø -gid n:群组Gid为n
Ø -user name:用户名为name
Ø -group name:群组名为name
Ø nouser:⽂件所有者不存在
Ø nogroup:⽂件所在组不存在
id 查看自己的i
[root@iZbp16r4d86u2hs6405o6mZ ~]# find / -amin -1 -uid 0
find [PATH] [option] [action]
Ø与⽂件权限及名称有关的参数:
Ø -name filename:⽂件名为filename
Ø -size [+-] SIZE:查找比SIZE⼤或小的
Ø -type TYPE: f b c d l s p
Ø -perm mode:mode 刚好等于的⽂件
Ø -perm –mode:全部包含mode的⽂件
Ø find
-exec ls –l {} ;
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# find . -mtime 1
./1.c
./a.out
./a.c
ps1天前修改过的的文件
[root@iZbp16r4d86u2hs6405o6mZ Ccode]# find . -mtime -1
./1.c
./a.out
./a.c
ps :一天内修改的文件
demo
find / -mtime -1 -uid 0 -name ".c" -size -1k
find / -mtime -1 -uid 0 -name "*.c";
find / -mtime -1 -uid 0 -name "*.c" -exec ls -al {} \;
find / -mtime -1 -uid 0 -name "*.c" -exec rm -rf {} \;
find / \(-name "*.c" \)
find . -name \*.c -o -name \*.h -o -name \*.py \用了反斜杠转义
find . -name \*.c -o -name \*.h -o -name \*.py -exec cat {} \; | wc -l