Linux文件管理相关命令-3
Linux文件管理相关命令整理记录
| 命令 | 含义 | 命令 | 含义 | 命令 | 含义 |
|---|---|---|---|---|---|
| slocate | 查找文件或目录 | split | 将一个文件分割成数个 | tee | 读取标准输入的数据,并将其内容输出成文件 |
| tmpwatch | 删除暂存文件 | touch | 修改文件或者目录的时间属性 | umask | 指定在建立文件时预设的权限掩码 |
| which | 查找文件 | cp | 复制文件或目录 | whereis | 查找文件 |
| mcopy | 复制 MSDOS 格式文件到 Linux 中 | mshowfat | 显示MS-DOS文件在FAT中的记录 | rhmask | 对文件进行加密和解密操作 |
| scp | 用于 Linux 之间复制文件和目录 | awk | 强大的文本分析工具 | read | 从标准输入读取数值 |
| updatedb | 创建或更新 slocate/locate 命令所必需的数据库文件 |
【slocate】查找文件或目录
slocate本身具有一个数据库,里面存放了系统中文件与目录的相关信息。
语法:
slocate [-u][--help][--version][-d <目录>][查找的文件]
参数说明:
| 参数 | 说明 |
|---|---|
| -d<目录>或–database=<目录> | 指定数据库所在的目录 |
| -u | 更新slocate数据库 |
实例:
#显示文件名中含有关键字"fdisk"的文件路径信息:
slocate fdisk
【split】将一个文件分割成数个
该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。
语法:
split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
参数说明:
| 参数 | 说明 |
|---|---|
| -<行数> | 指定每多少行切成一个小文件 |
| -b<字节> | 指定每多少字节切成一个小文件 |
| -C<字节> | 与参数"-b"相似,但是在切 割时将尽量维持每行的完整性 |
| [输出文件名] | 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号 |
实例:
#将README文件每六行分割成一个文件:
split -6 README#以上命令执行后,指令"split"会将原来的大文件"README"切割成多个以"x"开头的小文件。
#而在这些小文件中,每个文件都只有6行内容。
【tee】读取标准输入的数据,并将其内容输出成文件
语法:
tee [-ai][--help][--version][文件...]
参数说明:
| 参数 | 说明 |
|---|---|
| -a或–append | 附加到既有文件的后面,而非覆盖它 |
| -i或–ignore-interrupts | 忽略中断信号 |
实例:
#将用户输入的数据同时保存到文件"file1"和"file2"中:
tee file1 file2
#以上命令执行后,将提示用户输入需要保存到文件的数据,如下所示:
My Linux #提示用户输入数据
My Linux #输出数据,进行输出反馈
#此时,可以分别打开文件"file1"和"file2",查看其内容是否均是"My Linux"即可判断指令"tee"是否执行成功。
【tmpwatch】删除暂存文件
执行tmpwatch指令可删除不必要的暂存文件,您可以设置文件超期时间,单位以小时计算。
语法:
tmpwatch [-afqv][--test][超期时间][目录...]
参数说明:
| 参数 | 说明 |
|---|---|
| -a或–all | 删除任何类型的文件 |
| -f或–force | 强制删除文件或目录,其效果类似rm指令的"-f"参数 |
| -q或–quiet | 不显示指令执行过程 |
| -v或–verbose | 详细显示指令执行过程 |
| -test | 仅作测试,并不会真的删除文件或目录 |
实例:
#删除目录"/tmp"中超过一天未使用的文件:
tmpwatch 24 /tmp/
#以上命令执行后,其执行结果如下所示:
removing directctmp/orbit-tom if not empty #注意:该指令需要root权限,因此在使用tmpwatch命令前应该使用su命令切换用户。
【touch】命令用于修改文件或者目录的时间属性
包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
语法:
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
参数说明:
| 参数 | 说明 |
|---|---|
| a | 改变档案的读取时间记录 |
| m | 改变档案的修改时间记录 |
| c | 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样 |
| f | 不使用,是为了与其他 unix 系统的相容性而保留 |
| r | 使用参考档的时间记录,与 --file 的效果一样 |
| d | 设定时间与日期,可以使用各种不同的格式 |
| t | 设定档案的时间记录,格式与 date 指令相同 |
| –no-create | 不会建立新档案 |
实例:
#修改文件"testfile"的时间属性为当前系统时间:
touch testfile #使用该指令创建一个空白文件"file":
touch file
【umask】在建立文件时预设的权限掩码
umask可用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
语法:
umask [-S][权限掩码]
参数说明:
- -S 以文字的方式来表示权限掩码
实例:
#查看当前权限掩码:
umask
【which】查找文件
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
语法:
which [文件...]
参数说明:
| 参数 | 说明 |
|---|---|
| -n<文件名长度> | 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名 |
| -p<文件名长度> | 与-n参数相同,但此处的<文件名长度>包括了文件的路径 |
| -w | 指定输出时栏位的宽度 |
实例:
#查看指令"bash"的绝对路径:
which bash
#上面的指令执行后,输出信息如下所示:
/bin/bash #bash可执行程序的绝对路径
【cp】复制文件或目录
语法:
cp [options] source dest
cp [options] source... directory
参数说明:
| 参数 | 说明 |
|---|---|
| -a | 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合 |
| -d | 复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式 |
| -f | 覆盖已经存在的目标文件而不给出提示 |
| -i | 与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖 |
| -p | 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中 |
| -r | 若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件 |
| -l | 不复制文件,只是生成链接文件 |
实例:
#将当前目录 test/ 下的所有文件复制到新目录 newtest下:
cp –r test/ newtest
#注意:用户使用该指令复制目录时,必须使用参数 -r 或者 -R 。
【whereis】查找文件
该命令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。
语法:
whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]
参数说明:
| 参数 | 说明 |
|---|---|
| -b | 只查找二进制文件 |
| -B<目录> | 只在设置的目录下查找二进制文件 |
| -f | 不显示文件名前的路径名称 |
| -m | 只查找说明文件 |
| -M<目录> | 只在设置的目录下查找说明文件 |
| -s | 只查找原始代码文件 |
| -S<目录> | 只在设置的目录下查找原始代码文件 |
| -u | 查找不包含指定类型的文件 |
实例:
#查看指令"bash"的位置:
whereis bash
#上面的指令执行后,输出信息如下所示:
bash:/bin/bash/etc/bash.bashrc/usr/share/man/man1/bash.1.gz
#注意:以上输出信息从左至右分别为查询的程序名、bash路径、bash的man 手册页路径。
【mcopy】复制 MSDOS 格式文件到 Linux 中,或是由 Linux 中复制 MSDOS 文件到磁片上
mcopy 可复制单一的文件到所指定的文件名称,或是复制数个文件到所指定的目录之中。来源与目的文件可为 MSDOS 或是 Linux 文件。
语法:
mcopy [-bnmpQt/][源文件][目标文件或目录]
参数说明:
| 参数 | 说明 |
|---|---|
| b | 批处理模式 |
| / | 递回的复制。包含目录所含文件与其下所有子目录中的文件 |
| n | 覆盖其他文件时,不需要进行确认而直接覆盖 |
| m | 将源文件修改时间设置为目标文件的修改时间 |
| p | 将源文件的属性设置为目标文件的属性 |
| Q | 当复制多个文件产生错误时,尽快结束程序 |
| t | 转换为文本文件 |
| o | 在覆盖 MSDOS 文件时不会出现警示讯息 |
实例:
将 A 盘根目录中的 autoexec.bat 复制到目前工作目录之下:
mcopy a:autoexec.bat .
【mshowfat】命令用于显示MS-DOS文件在FAT中的记录
语法:
mshowfat [文件...]
参数说明:
[文件…]: 执行操作的文件相对路径或者绝对路径
实例:
#查看文件"autorun.bat"的FAT信息:
mshowfat autorun.bat #注意:执行操作的文件必须是DOS文件系统下的文件。
【rhmask】对文件进行加密和解密操作
语法:
rhmask [加密文件][输出文件] 或 rhmask [-d][加密文件][源文件][输出文件]
参数说明:
- -d 产生加密过的文件
实例:
#将加密文件"code.txt"进行加密后,另存为输出文件"demo.txt":
rhmask code.txt demo.txt
#以上命令执行后,文件"code.txt"将被加密后,另存为已经加密的文件"demo.txt"。
【scp】Linux之间复制文件和目录
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。
语法:
scp
[-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2#简易写法
scp [可选参数] file_source file_target
参数说明:
| 参数 | 说明 |
|---|---|
| -1 | 强制scp命令使用协议ssh1 |
| -2 | 强制scp命令使用协议ssh2 |
| -4 | 强制scp命令只使用IPv4寻址 |
| -6 | 强制scp命令只使用IPv6寻址 |
| -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为单位 |
| -o ssh_option | 如果习惯于使用ssh_config(5)中的参数传递方式 |
| -P port | 注意是大写的P, port是指定数据传输用到的端口号 |
| -S program | 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项 |
实例:
1、从本地复制到远程
scp local_file remote_username@remote_ip:remote_folder scp local_file remote_username@remote_ip:remote_file
#前2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名scp local_file remote_ip:remote_folderscp local_file remote_ip:remote_file
#后2个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名
复制目录命令格式:
scp -r local_folder remote_username@remote_ip:remote_folder
#指定了用户名,命令执行后需要再输入密码scp -r local_folder remote_ip:remote_folder
#没有指定用户名,命令执行后需要输入用户名和密码
上面命令将本地 music 目录复制到远程 others 目录下。
2、从远程复制到本地
从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可,例如:
scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3
scp -r www.runoob.com:/home/root/others/ /home/space/music/
注意:使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的。
【awk】文本分析工具
awk是一种处理文本文件的语言,是一个强大的文本分析工具。
语法:
awk [选项参数] 'script' var=value file(s)
awk [选项参数] -f scriptfile var=value file(s)
选项参数说明:
- -F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。 - -v var=value or --asign var=value
赋值一个用户定义变量。 - -f scripfile or --file scriptfile
从脚本文件中读取awk命令。 - -mf nnn and -mr nnn
对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。 - -W compact or --compat, -W traditional or --traditional
在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。 - -W copyleft or --copyleft, -W copyright or --copyright
打印简短的版权信息。 - -W help or --help, -W usage or --usage
打印全部awk选项和每个选项的简短说明。 - -W lint or --lint
打印不能向传统unix平台移植的结构的警告。 - -W lint-old or --lint-old
打印关于不能向传统unix平台移植的结构的警告。 - -W posix
打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符和=不能代替和=;fflush无效。 - -W re-interval or --re-inerval
允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。 - -W source program-text or --source program-text
使用program-text作为源代码,可与-f命令混用。 - -W version or --version
打印bug报告信息的版本。
【read】从标准输入读取数值
语法:
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
参数说明:
| 参数 | 说明 |
|---|---|
| -a | 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符 |
| -d | 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志 |
| -p | 后面跟提示信息,即在输入前打印提示信息 |
| -e | 在输入的时候可以使用命令补全功能 |
| -n | 后跟一个数字,定义输入文本的长度,很实用 |
| -r | 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了 |
| -s | 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码 |
| -t | 后面跟秒数,定义输入字符的等待时间 |
| -u | 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的 |
实例:
1、简单读取
#!/bin/bash#这里默认会换行
echo "输入网站名: "
#读取从键盘的输入
read website
echo "你输入的网站名是 $website"
exit 0 #退出
测试结果为:
输入网站名:
www.runoob.com
你输入的网站名是 www.runoob.com
2、-p 参数,允许在 read 命令行中直接指定一个提示
#!/bin/bashread -p "输入网站名:" website
echo "你输入的网站名是 $website"
exit 0
测试结果为:
输入网站名:www.runoob.com
你输入的网站名是 www.runoob.com
3、-t 参数指定 read 命令等待输入的秒数,当计时满时,read命令返回一个非零退出状态
#!/bin/bashif read -t 5 -p "输入网站名:" website
thenecho "你输入的网站名是 $website"
elseecho "\n抱歉,你输入超时了。"
fi
exit 0
执行程序不输入,等待 5 秒后:
输入网站名:
抱歉,你输入超时了
【updatedb】 命令用来创建或更新 slocate/locate 命令所必需的数据库文件
updatedb 命令的执行过程较长,因为在执行时它会遍历整个系统的目录树,并将所有的文件信息写入 slocate/locate 数据库文件中。
注意: slocate 本身具有一个数据库,里面存放了系统中文件与目录的相关信息。
语法:
updatedb(选项)
参数说明:
| 参数 | 说明 |
|---|---|
| -o<文件> | 忽略默认的数据库文件,使用指定的slocate数据库文件 |
| -U<目录> | 更新指定目录的slocate数据库 |
| -v | 显示执行的详细过程 |
实例:
检测一个未存在的文件 runoob.txt:
# locate runoob.txt # 检索 runoob.txt,没有任何输出,表示没有该文件
# touch ./runoob.txt # 添加文件 runoob.txt
# locate runoob.txt # 再次检索 runoob.txt,依然没有该文件
# updatedb # 更新 locate.db 数据库
# locate runoob.txt # 再次数据库检索 runoob.txt,找到该文件
/root/runoob/runoob.txt
使用 -U 选项可以指定要更新 slocate 数据库的目录:
updatedb -U /root/runoob/
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
