6.Linux常用命令---文件目录管理(1)

6.1 du -sh --查询目录下所有文件夹及文件大小

du 不添加任何参数时,du命令会显示当前目录下的所有文件,目录和子目录的磁盘使用情况
参数:
-c:显示所有已列出文件总的大小
-h:按用户易读方式显示大小
-s:显示每个输出参数的总计

[root@host1 ~]# du -sh *

//查看home文件夹总的大小
[root@host1 ~]# du -sh /home

//查看home目录下的所有文件,目录和子目录的磁盘使用情况
[root@host1 ~]# du -h /home

6.2 ls (ll)–显示目录命令

命令用于显示指定工作目录下之内容
参数 :
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出
-r 将文件以相反次序显示(原定依英文字母次序)
-t 将文件依建立时间之先后次序列出
-A 同 -a ,但不列出 “.” (目前目录) 及 “…” (父目录)
-F 在列出的文件名称后加一符号,用于区别文件类型;例如可执行档则加 “*”, 目录则加 “/”
-R 若目录下有文件,则以下之文件亦皆依序列出。即递归列出子目录下的文件
-i 查看文件号
-S 以文件大小排序
-h 将文件以GB,KB等易读的方式显示

文件权限前的d代表目录,-代表文件,c代表字符型文件,b代表块设备

ls -l /etc
//过滤输出列表
ls -l my_scr?pt
//过滤输出列表,查看my_s开头的文件
ls -l my_s*
//查询当前文件夹下的文件总数
ls |wc -l
//正则表达式过滤显示文件
ls -l f[a-i]pt
//查询/etc下所有子文件夹及问价总量
ls -R /etc | wc -l
//查询所有文件夹的数量,包括子文件夹
ls -R | grep "^d" | wc -l
//查询所有文件的数量,包括子文件夹下的文件
ls -R | grep "^-" | wc -l

6.3 touch --创建文件命令

touch命令用于创建空文件,也可以用于修改文件或者目录的时间属性,包括存取时间和更改时间。
语法:

touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]

参数
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与–no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。
–no-create 不会建立新档案。
–help 列出指令格式。
–version 列出版本讯息。

实例:
使用指令"touch"修改文件"testfile"的时间属性为当前系统时间,输入如下命令:

//修改文件的时间属性
[root@host1 ~]# touch testfile
//查看文件的时间属性 
[root@host1 ~]# ls -l testfile
#原来文件的修改时间为16:09  
-rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile
//修改文件时间属性为当前系统时间
[root@host1 ~]# touch testfile
//查看文件的时间属性
[root@host1 ~]# ls -l testfile
#修改后文件的时间属性为当前系统时间  
-rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile

使用指令"touch"时,如果指定的文件不存在,则将创建一个新的空白文件。例如,在当前目录下,使用该指令创建一个空白文件"file",输入如下命令:

[root@host1 ~]# touch file            #创建一个名为“file”的新的空白文件

6.4 mkdir --创建目录

参数:
-p 创建级联目录

6.5 rmdir --删除目录

参数:
-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
实例

//将工作目录下名为 AAA 的子目录删除 :
[root@host1 ~]# rmdir AAA

//在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。
[root@host1 ~]# rmdir -p BBB/Test

6.6 rm --删除命令

参数
-i 删除前逐一询问确认
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认
-r 将目录及以下之档案亦逐一删除

6.7 cp、rcp、scp–复制文件/文件夹命令

(1)cp–用于复制文件或目录

参数:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件前提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。

(2)rcp–用于远端复制文件或目录

如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。
参数:
-p 保留源文件或目录的属性,包括拥有者,所属群组,权限与时间。
-r 递归处理,将指定目录下的文件与子目录一并处理。

注意:指令"rcp"执行以后不会有返回信息,仅需要在目录"test"下查看是否存在文件"testfile"。若存在,则表示远程复制操作成功,否则远程复制操作失败。

(3)scp–用于Linux之间复制文件和目录

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
参数:
-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为单位。
-P port:注意是大写的P, port是指定数据传输用到的端口号,用于防护墙指定了端口
-S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

#本地复制到远程
[root@host1 ~]# scp -r /home/rhino/spark  root@192.168.1.100:/home/rhino/
#远程复制到本地
[root@host1 ~]# scp -r root@www.codingdict.com:/home/root/others/ /home/space/music/

6.8 mv --移动或重命名文件

参数:

  • -i:若只当目录已有同名文件,则先询问是否覆盖旧文件
  • -f:在mv操作要覆盖某已有的目标文件时不给任何提示
//将源文件改为目标文件名
[root@host1 ~]# mv file1 file2
//将文件移到目标目录
[root@host1 ~]# mv file1  dir/
//目标目录已存在则把源目录移到目标目录,目标目录不存在则改名
[root@host1 ~]# mv dir1  dir2

6.9 tar --解压和压缩命令

6.8.1 zip unzip 适用.zip文件
6.8.2 gzip gunzip 适用.gz文件 gzcat可以查看压缩过的文本文件内容
6.8.3 compress unconpress 适用.Z文件
6.8.4 tar -zxvf 适用.tar.gz文件,tar -xvf 适用.tar文件

参数:
-c或–create 建立新的备份文件
-f<备份文件>或–file=<备份文件> 指定输出结果到文件或设备file。
-v或–verbose 显示指令执行过程
-x或–extract或–get 从备份文件中还原文件。
-z或–gzip或–ungzip 通过gzip指令处理备份文件。
-r 追加文件到已有tar归档文件末尾
-t 列出tar已有归档文件内容
-p 保留所有文件权限

//解压*.tar.gz包
[root@host1 ~]# tar -zxvf xxx.tar.gz

//解压*.tar包
[root@host1 ~]# tar -xvf xxx.tar

//解压到指定文件夹
[root@host1 ~]# tar -xvf xxx.tar -C /home/rhino

//将文件file1 flile2 file3归档到/home/smfh下的file.tar.gz
[root@host1 ~]# tar -zcvf /home/smfh/file.tar.gz file1 flile2 file3

//将test1和test2目录内容归档到/home/smfh下的dir.tar
[root@host1 ~]# tar -cvf /home/smfh/dir.tar dir1/ dir2/

6.10 tail和head --查看部分文件内容命令

tail(默认显示后10行)

参数:
-f 循环读取,用于查询正在更新的log文件等。
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

head(默认显示前10行)

参数:
-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数。
-n<行数> 显示的行数。

6.11 cat、more 和less --查看文件

cat
参数:
-n :由 1 开始对所有输出的行数编号。
-b :和 -n 相似,只不过对于空白行不编号。
-s :当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E : 在每行结束处显示 $。
-T : 将 TAB 字符显示为 ^I。

cat -n file1 > file2 #将file1文档内容加上行号后输入file2文档里。
cat file1 file2 >file #将file1和file2的内容合并写入file

more(可同时显示多个文档)

参数:
-num 一次显示的行数
-p:不以卷动的方式显示每一页,而是先清除荧幕后再显示
-c:与-p类似,不过是显示内容再清除旧内容
-s:遇到两行以上空白显示一行
+/pattern:在每个文档显示前搜索该字符串并在该字符串开始显示
+num:从第num行开始显示
-f:计算行数时已实际行数为准,而不是自动换行(内容过长)后的行数

实例:
more -s file1
more +20 file2
b键返回上一页
ctrl+B返回上一屏
less

less命令与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。

参数:
-b:设置缓冲区大小
-e:当文本显示结束后自动离开
-f:强制打开特殊文件,例如外围设备代码,目录和二进制文件
-g:只标志最后搜索的关键词
-i:忽略搜索时的大小写
-m:显示类似more命令的百分比
-N:显示每行行号
-o:将less输出的内容在指定文件中保存起来
-Q:不适用告警语
-s:显示连续空行为一行
-S:行过长时将超出的部分舍弃
-x:将tab键显示为规定的数字空格

操作:
/字符串:向下搜索字符串的功能
?字符串:向上搜索字符串的功能
n:重复前一个搜索
N:反向重复前一个搜索
b:向后翻一页
d:向后翻半页
Q:退出less
u:向前滚动半叶
y:向前滚动一行
空格键:滚动一行
回车键:滚动一行
pagedown:向下翻动一页
pageup:向上翻动一页

附件备注:
ctrl+F 向前滚动一屏
ctrl+B 向后滚动一屏
ctrl+D 向前滚动半屏
ctrl+U 向后移动半屏
单行导航:
j 向前移动一行
k 向后移动一行
其它导航:
G或shift+g 移动到最后一行
g或gg 移动到第一行
q/zz 退出less

6.12 nl–读取文件,计算加入行号

参数:
-b :指定行号指定的方式,主要有两种:
-ba :表示不论是否为空行,也同样列出行号(类似 cat -n)-bt :如果有空行,空的那一行不要列出行号(默认值)-n :列出行号表示的方法,主要有三种:
  -n ln :行号在萤幕的最左方显示;
  -n rn :行号在自己栏位的最右方显示,且不加 0-n rz :行号在自己栏位的最右方显示,且加 0-w :行号栏位的占用的位数。
-p :在逻辑定界符处不重新开始计算。

[root@host1 test]# nl test1.txt 
     1  a
       
     2  b
       
     3  c
[root@host1 test]# nl -b a test1.txt 
     1  a
     2
     3  b
     4
     5  c
[root@host1 test]# nl -n ln test1.txt 
1       a
       
2       b
       
3       c
[root@host1 test]# nl -n rn test1.txt 
     1  a
       
     2  b
       
     3  c
[root@host1 test]# nl -n rz test1.txt 
000001  a
       
000002  b
       
000003  c

6.13 echo --输出文本命令

echo -n 不换行输出
image.png
echo -e 输出转义字符
image.png

echo 配合重定向 > 可以向文件中写入

[root@host1 test]# cat test1.txt 
[root@host1 test]# echo "123" > test1.txt 
[root@host1 test]# cat test1.txt 
123

6.14 wc --文本计数命令

wc命令可以对数据中的文本进行计数。默认情况下,它会输出3个值:文本的行数、文本的词数、文本字节数
参数
-c或–bytes或–chars 只显示Bytes数。
-l或–lines 显示行数。
-w或–words 只显示词数。

[root@localhost ~]# wc 123.sh
 3  5 45 123.sh
#计算当前文件夹总文件数
[root@localhost ~]# ls |wc -l
8

6.15 ln --创建和取消链接

文件连接分为符号连接(软连接)和 硬连接
软连接:

  • 以路径的形式进行存放
  • 可以跨越文件系统
  • 可以对一个不存在文件名进行链接
  • 可以对目录进行链接

硬链接:

  • 以文件副本的形式存在,但不占用实际的存储空间。
  • 不允许给目录创建硬链接
  • 不能跨越文件系统

ln命令是为某个文件在另外一个位置建立一个同步链接。当我们需要在不同的目录使用到相同的文件时,不需要每个目录都放一分相同的文件,只需要放置在某个固定目录,然后建立链接即可,不必重复占用磁盘空间。

语法:
ln  参数    源文件或目录   目标文件或目录
参数:
-b:删除,覆盖之前建立的链接
-d:允许超级用户制作目录的硬链接
-f:强制执行
-i:交互模式,文件存在则显示是否覆盖
-n:把符号链接视为一般目录
-s:软链接
实例:
//为log2019.log文件创建软链接到link2019 
[root@localhost ~]# ln -s  log2019.log  link2019
//给文件log2019.log创建硬链接到link2013,log2019.log与link2013的各项属性相同
[root@localhost ~]# ln log2019.log link2019

6.16 curl --文件传输命令

curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。

-A/--user-agent <string>              #设置用户代理发送给服务器
-b/--cookie <name=string/file>        #cookie字符串或文件读取位置
-c/--cookie-jar <file>                #操作结束后把cookie写入到这个文件中
-C/--continue-at <offset>             #断点续传
-D/--dump-header <file>               #把header信息写入到该文件中
-e/--referer                          #来源网址
-f/--fail                             #连接失败时不显示http错误
-o/--output                           #把输出写到指定文件中
-O/--remote-name                      #把输出写到该文件中,保留远程文件的文件名
-r/--range <range>                    #检索来自HTTP/1.1或FTP服务器字节范围
-s/--silent                           #静音模式。不输出任何东西
-T/--upload-file <file>               #将指定的本地文件上传到FTP服务器上
-u/--user <user[:password]>           #设置服务器的用户和密码
-U/--proxy-user <user:password>       #代理服务器用户和密码
-w/--write-out [format]               #什么输出完成后
-x/--proxy <host[:port]>              #在给定的端口上使用HTTP代理
-X/--request <command>                #向服务器发送指定请求方法
-#/--progress-bar                     #进度条显示当前的传送状态
-H/--header <line>:                   #自定义首部信息传递给服务器
-i:									  #显示页面内容,包括报文首部信息

1、基本用法

//测试网页访问
[root@localhost ~]# curl http://www.test.com
//保存访问的网页
[root@localhost ~]# curl http://www.test.com >> test.html
[root@localhost ~]# curl -o test.html http://www.test.com
[root@localhost ~]# curl -O http://www.test.com/hello.sh
//测试网页返回值
[root@localhost ~]# curl -o /dev/null -s -w %{http_code} www.test.com
//指定proxy服务器以及其端口
[root@localhost ~]# curl -x 192.168.100.100:1080 http://www.test.com
//保存http的response里面的cookie信息
[root@localhost ~]# curl -c cookiec.txt  http://www.test.com
//保存http的response里面的header信息
[root@localhost ~]# curl -D cookied.txt http://www.test.com
//使用cookie
[root@localhost ~]# curl -b cookiec.txt http://www.test.com
//模仿浏览器
[root@localhost ~]# curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.test.com
//伪造referer
[root@localhost ~]# curl -e "www.test.com" http://mail.test.com
//利用curl下载文件
[root@localhost ~]# curl -o dodo1.jpg http:www.test.com/test.JPG
[root@localhost ~]# curl -O http://www.test.com/test.JPG
//循环下载
[root@localhost ~]# curl -O http://www.test.com/test[1-5].JPG
//下载重命名
[root@localhost ~]# curl -O http://www.test.com/{hello,bb}/test[1-5].JPG
//分块下载
[root@localhost ~]# curl -r 0-100 -o dodo1_part1.JPG http://www.test.com/test.JPG
[root@localhost ~]# curl -r 100-200 -o dodo1_part2.JPG http://www.test.com/test.JPG
[root@localhost ~]# curl -r 200- -o dodo1_part3.JPG http://www.test.com/test.JPG
[root@localhost ~]# cat dodo1_part* > dodo1.JPG
//通过ftp下载文件
[root@localhost ~]# curl -O -u 用户名:密码 ftp://www.test.com/test.JPG
[root@localhost ~]# curl -O ftp://用户名:密码@www.test.com/test.JPG
//显示下载进度条
[root@localhost ~]# curl -# -O http://www.test.com/test.JPG
//不会显示下载进度信息
[root@localhost ~]# curl -s -O http://www.test.com/test.JPG
//断点续传
[root@localhost ~]# curl -C -O http://www.test.com/test.JPG
//上传文件
[root@localhost ~]# curl -T dodo1.JPG -u 用户名:密码 ftp://www.test.com/img/
//显示抓取错误
[root@localhost ~]# curl -f http://www.test.com/error
//POST请求
[root@localhost ~]curl http://192.168.1.100:20501/serviceAgent/rest/ctsi/fcst/getOneHourResAbnDetectInfo -X POST -d '{ }' --header "X-APP-ID:8277c70b60b3560e34e60dd01e9a8f27" --header "X-APP-KEY:7a4915485a0bd65afc33a4df57ec1ca9"

6.17 find–查找文件命令

find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

参数:
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去n分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-mtime n : 按照文件的更改时间来找文件,n为整数。n表示文件更改时间距离为n天, -n表示文件更改时间距离在n天以内,+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

实例

//将目前目录及其子目录下所有延伸档名是 log 的文件列出来。
[root@host1 ~]# find . -name "*.log"
//将目前目录其其下子目录中所有一般文件列出
[root@host1 ~]# find . -type f
//将目前目录及其子目录下所有最近 20 天内更新过的文件列出
[root@host1 ~]# find . -ctime -20
//查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们
[root@host1 ~]# find /var/log -type f -mtime +7 -ok rm {} \;
//查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
[root@host1 ~]# find . -type f -perm 644 -exec ls -l {} \;
//为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
[root@host1 ~]# find / -type f -size 0 -exec ls -l {} \;
//支持模糊查询
[root@host1 ~]# find / -name *.tar
/home/package/OceanManageV2.0_daas41.T3.tar
/home/package/pcre-8.42.tar

6.18 file --查看文件类型

参数
-b  列出辨识结果时,不显示文件名称。
-c  详细显示指令执行过程,便于排错或分析程序执行的情形。
-f<名称文件>  指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
-L  直接显示符号连接所指向的文件的类别。
-m<魔法数字文件>  指定魔法数字文件。
-v  显示版本信息。
-z  尝试去解读压缩文件的内容。

[root@localhost etc]# file yum.conf 
yum.conf: ASCII text
[root@localhost etc]#

6.19 cksum–文件校验

cksum用于检验文件的CRC是否正确,确保文件从一个系统传输到另一个系统的过程中不被损坏。
CRC是一种文件排错检查方式。cksum若不指定文件名或文件名为“-”,则指令cksum会从标准输入设备中读取数据。

[root@host1 ~]# cksum install.log
2139446941 70011 install.log

6.20 od命令–以特殊格式输出文件内容

把文件用8进制或者其他的格式显示出来。通常用于查看特殊格式文件的内容。
参数:

  • A 指定地址基数,包括:
    d 十进制
    o 八进制(系统默认值)
    x 十六进制
    n 不打印位移值
  • t 指定数据的显示格式,主要的参数有:
    c ASCII字符或反斜杠序列
    d 有符号十进制数
    f 浮点数
    o 八进制(系统默认值为02)
    u 无符号十进制数
    x 十六进制数
who | od -tc #此命令一般用于查看换行符,制表符等特殊字符
[root@localhost ~]# who 
root     pts/0        2021-04-12 17:48 (192.168.204.1)
root     pts/1        2021-04-12 18:15 (192.168.204.1)
[root@localhost ~]# who | od -tc
0000000   r   o   o   t                       p   t   s   /   0        
0000020                           2   0   2   1   -   0   4   -   1   2
0000040       1   7   :   4   8       (   1   9   2   .   1   6   8   .
0000060   2   0   4   .   1   )  \n   r   o   o   t                    
0000100   p   t   s   /   1                                   2   0   2
0000120   1   -   0   4   -   1   2       1   8   :   1   5       (   1
0000140   9   2   .   1   6   8   .   2   0   4   .   1   )  \n
0000156
  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值