debugfs linux rm 删除 恢复 Attempt to read block from filesystem resulted in short read while opening fi

 

 

wphp

 

 

删除具备空字符的文件node

反斜杠来转义下一个字符linux

rm -R  Samples\ -\ Copy 

well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders$ ls
Client.php  Exception.php  Function.Business.php  Interface.php  Mock  Mock.php  Model  Model.php  Samples  Samples - Copy  Show
well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders$ cp -R Samples Samples_rm
well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders$ ls
Client.php  Exception.php  Function.Business.php  Interface.php  Mock  Mock.php  Model  Model.php  Samples  Samples - Copy  Samples_rm  Show
well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders$ cd Samples/ -/ Copy 
well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders/Samples$ cd ..
well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders$ cd Samples\ -\ Copy 
well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders/Samples - Copy$ cd ..
well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders$ cd Samples\ -\ Copy 
well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders/Samples - Copy$ cd ..
well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders$ rm -R  Samples\ -\ Copy 
well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders$ ll
total 112
drwxr-xr-x 7 well well  4096 May  4 20:21 ./
drwxr-xr-x 3 root root  4096 May  4 19:45 ../
-rwxrwxrwx 1 well well 36520 Apr 10 12:03 Client.php*
-rwxrwxrwx 1 well well  5033 Mar  2 12:41 Exception.php*
-rwxrwxrwx 1 well well  3542 Apr 24 16:24 Function.Business.php*
-rwxrwxrwx 1 well well  4708 Mar  2 12:41 Interface.php*
drwxrwxrwx 2 well well  4096 May  4 19:47 Mock/
-rwxrwxrwx 1 well well  6437 Mar  2 12:41 Mock.php*
drwxrwxrwx 2 well well  4096 May  4 19:47 Model/
-rwxrwxrwx 1 well well 17734 Mar  2 12:41 Model.php*
drwxrwxrwx 2 well well  4096 May  4 20:13 Samples/
drwxrwxr-x 2 well well  4096 May  4 20:18 Samples_rm/
drwxrwxrwx 2 well well  4096 Apr 10 09:51 Show/
well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders$ 

 

 

Linux下如何处理包含空格和特殊字符的文件名 - 51CTO.COM
http://os.51cto.com/art/201507/483983_all.htmshell

Linux下如何处理包含空格和特殊字符的文件名
2015-07-13 11:28 Avishek Kumar LCTT 字号:T | T
一键收藏,随时查看,分享好友!
咱们常常会看到文件名和文件夹名。大多数时候文件/文件夹的名字和内容相关并以数字和字母开头。字母加数字的文件名最多见,应用也很普遍,但总会须要处理一些包含特殊字符的文件名/文件夹名。本文做者已经尝试覆盖你可能碰到的全部状况。大多数测试都在BASH Shell里完成,可能在其余shell下会有差别。 
咱们常常会看到文件名和文件夹名。大多数时候文件/文件夹的名字和内容相关并以数字和字母开头。字母加数字的文件名最多见,应用也很普遍,但总会须要处理一些包含特殊字符的文件名/文件夹名。vim

注意:咱们可能有各类类型的文件,可是为了简单以及方便实现,在本文中咱们只用文本文件(.txt)作演示。c#

 

最多见的文件名例子:api

abc.txt
avi.txt
debian.txt
...
数字文件名例子:bash

121.txt
3221.txt
674659.txt
...
字母数字文件名例子:app

eg84235.txt
3kf43nl2.txt
2323ddw.txt
...
包含特殊字符的文件名的例子,并不常见:编辑器

#232.txt
#bkf.txt
#bjsd3469.txt
#121nkfd.txt
-2232.txt
-fbjdew.txt
-gi32kj.txt
--321.txt
--bk34.txt
...
一个显而易见的问题是 - 在这个星球上有谁会建立和处理包含井号(#),分号(;),破折号(-)或其余特殊字符的文件/文件夹啊!

我和你想的同样,这种文件名确实不常见,不过在你必须得处理这种文件名的时候你的 shell 也不该该出错或罢工。并且技术上来讲,Linux 下的一切好比文件夹、驱动器或其余全部的都被看成文件处理。

处理名字包含破折号(-)的文件
建立以破折号(-)开头的文件,好比 -abx.txt。

$ touch -abc.txt
测试输出
touch: invalid option -- 'b'
Try 'touch --help' for more information.
出现上面错误的缘由是,shell 把破折号(-)以后的内容认做参数了,而很明显没有这样的参数,因此报错。

要解决这个问题,咱们得告诉 Bash shell(是的,这里以及本文后面的大多数例子都是基于 BASH 环境)不要将特殊字符(这里是破折号)后的字符解释为参数。

有两种方法解决这个错误:

$ touch -- -abc.txt [方法 #1]
$ touch ./-abc.txt [方法 #2]
你能够经过运行命令 ls 或 ls -l 列出详细信息来检查经过上面两种方式建立的文件。

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun 8 11:05 -abc.txt
要编辑上述文件能够这样:

$ nano -- -abc.txt
或者
$ nano ./-abc.txt
注意:你能够将 nano 替换为任何其余你喜欢的编辑器好比说 vim:

$ vim -- -abc.txt
或者
$ vim ./-abc.txt
若是只是简单地移动文件能够这样:

$ mv -- -abc.txt -a.txt
或者
$ mv -- -a.txt -abc.txt
删除这种文件,能够这样:

$ rm -- -abc.txt
或者
$ rm ./-abc.txt
若是一个目录下有大量这种名字包含破折号的文件,要一次所有删除的话,能够这样:

$ rm ./-*
重要:

上面讨论的规则能够一样应用于名字中包含任意数量以及任意位置的链接符号的文件。就是说,-a-b-c.txt,ab-c.txt,abc-.txt,等等。

上面讨论的规则能够一样应用于名字中包含任意数量以及任意位置链接符号的文件夹,除了一种状况,在删除一个文件夹的时候你得这样使用rm -rf:

$ rm -rf -- -abc 或者 $ rm -rf ./-abc

处理名字包含井号(#)的文件
符号#在 BASH 里有很是特别的含义。#以后的一切都会被认为是评论,所以会被 BASH 忽略。

经过例子来加深理解:

建立一个名字是 #abc.txt 的文件:

$ touch #abc.txt
测试输出
touch: missing file operand
Try 'touch --help' for more information.
出现上面错误的缘由是,BASH 将 #abc.txt 解释为评论而忽略了。因此命令 touch没有收到任何文件做为参数,因此致使这个错误。

要解决这个问题,你可能须要告诉 BASH 不要将 # 解释为评论。

$ touch ./#abc.txt
或者
$ touch '#abc.txt'
检查刚建立的文件:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun 8 12:14 #abc.txt
如今建立名字中除了开头的其余地方包含 # 的文件。

$ touch ./a#bc.txt
$ touch ./abc#.txt
或者
$ touch 'a#bc.txt'
$ touch 'abc#.txt'
运行 ‘ls -l‘ 来检查:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun 8 12:16 a#bc.txt
-rw-r--r-- 1 avi avi 0 Jun 8 12:16 abc#.txt
若是同时建立两个文件(好比 a 和 #bc)会怎么样:

$ touch a.txt #bc.txt
检查刚建立的文件:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun 8 12:18 a.txt
很明显上面的例子中只建立了文件 a 而文件 #bc 被忽略了。对于上面的状况咱们能够这样作,

$ touch a.txt ./#bc.txt
或者
$ touch a.txt '#bc.txt'
检查一下:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun 8 12:20 a.txt
-rw-r--r-- 1 avi avi 0 Jun 8 12:20 #bc.txt
能够这样移动文件:

$ mv ./#bc.txt ./#cd.txt
或者
$ mv '#bc.txt' '#cd.txt'
这样拷贝:

$ cp ./#cd.txt ./#de.txt
或者
$ cp '#cd.txt' '#de.txt'
可使用你喜欢的编辑器来编辑文件:

$ vi ./#cd.txt
或者
$ vi '#cd.txt'

$ nano ./#cd.txt
或者
$ nano '#cd.txt'
这样删除:

$ rm ./#bc.txt
或者
$ rm '#bc.txt'
要删除全部以井号(#)开头的文件,能够这样:

# rm ./#*
处理名字包含分号(;)的文件
若是你还不知道的话,分号在 BASH 里起到命令分隔的做用,其余 shell 可能也是同样的。分号做为分隔符可让你一次执行几个命令。你碰到过名字包含分号的文件吗?若是没有的话,这里有例子。

建立一个名字包含分号的文件。

$ touch ;abc.txt
测试输出
touch: missing file operand
Try 'touch --help' for more information.
bash: abc.txt: command not found
出现上面错误的缘由是,在运行上面命令的时候 BASH 会把 touch 解释为一个命令可是在分号前没有任何文件参数,因此报告错误。而后报告的另外一个错误找不到命令 abc.txt,只是由于在分号后 BASH 会指望另外一个新的命令,而 abc.txt 并非一个命令。

要解决这个问题,咱们得告诉 BASH 不要将分号解释为命令分隔符,例如:

$ touch ./';abc.txt'
或者
$ touch ';abc.txt'
注意:咱们将文件名用单引号 '' 包含起来。这样能够告诉 BASH 分号 ; 是文件名的一部分而不是命令分隔符。

对名字包含分号的文件和文件夹的其余操做(就是,拷贝、移动、删除)能够直接将名字用单引号包含起来就行了。

处理名字包含其余特殊字符的文件/文件夹
文件名包含加号 (+)
不须要任何特殊处理,按平时的方式作就行了,好比下面测试的文件名。

$ touch +12.txt
文件名包含美圆符 ($)
你须要将文件名用单引号括起来,像处理分号那样的方式。而后就很简单了。

$ touch '$12.txt'
文件名包含百分号 (%)
不须要任何特殊处理,看成一个普通文件就能够了。

$ touch %12.txt
文件名包含星号 (*)
须要用单引号括起来或使用反斜杠转义。(LCTT 译注:此处原文有误,已修改。)

$ touch *12.txt
注意:当你须要删除星号开头的文件时,千万不要用相似下面的命令。

$ rm *
或者
$ rm -rf *
而是用这样的命令,(LCTT 译注:此处原文有误,已修改)

$ rm ./'*.txt'
文件名包含叹号 (!)
只要将文件名用单引号括起来,其余的就同样了。

$ touch '!12.txt'
文件名包含小老鼠 (@)
没有什么特别的,能够将名字包含小老鼠的文件看成普通文件。

$ touch '@12.txt'
文件名包含 ^
不须要特殊处理。能够将名字包含 ^ 的文件看成普通文件。

$ touch ^12.txt
文件名包含 (&)
将文件名用单引号括起来,而后就能够操做了。

$ touch '&12.txt'
文件名包含括号 ()
若是文件名包含括号,你须要将文件名用单引号括起来。

$ touch '(12.txt)'
文件名包含花括号 {}
用单引号括起来或使用反斜杠转义。(LCTT 译注:此处原文有误,已修改)

$ touch '{12.txt}'
文件名包含尖括号 <>
名字包含尖括号的文件须要用单引号括起来。

$ touch '<12.txt>'
文件名包含方括号 [ ]
用单引号括起来或使用反斜杠转义。(LCTT 译注:此处原文有误,已修改)

$ touch '[12.txt]'
文件名包含下划线 (_)
这个很是广泛,不须要特殊对待。看成普通文件随意处理。

$ touch _12.txt
文件名包含等号 (=)
用单引号括起来或使用反斜杠转义。(LCTT 译注:此处原文有误,已修改)

$ touch '=12.txt'
处理反斜杠 ()
反斜杠会告诉 shell 忽略后面字符的特殊含义。你必须将文件名用单引号括起来,就像处理分号那样。其余的就没什么了。

$ touch '\12.txt'
包含斜杠的特殊情形
除非你的文件系统有问题,不然你不能建立名字包含斜杠的文件。没办法转义斜杠。

因此若是你能建立相似 ‘/12.txt’ 或者 ‘b/c.txt’ 这样的文件,那要么你的文件系统有问题,或者支持 Unicode,这样你能够建立包含斜杠的文件。只是这样并非真的斜杠,而是一个看起来像斜杠的 Unicode 字符。

文件名包含问号 (?)
用单引号括起来或使用反斜杠转义。(LCTT 译注:此处原文有误,已修改)

$ touch '?12.txt'
文件名包含点 (.)
在 Linux 里以点 (.) 开头的文件很是特别,被称为点文件。它们一般是隐藏的配置文件或系统文件。你须要使用 ls 命令的 ‘-a‘ 或 ‘-A‘ 开关来查看这种文件。

建立,编辑,重命名和删除这种文件很直接。

$ touch .12.txt
注意:在 Linux 里你可能碰到名字包含许多点 (.) 的文件。不像其余操做系统,文件名里的点并不意味着分隔名字和扩展后缀。你能够建立名字包含多个点的文件:

$ touch 1.2.3.4.5.6.7.8.9.10.txt
检查一下:

$ ls -l

total 0
-rw-r--r-- 1 avi avi 0 Jun 8 14:32 1.2.3.4.5.6.7.8.9.10.txt
文件名包含逗号 (,)
你能够在文件名中使用逗号,能够有任意多个而不用特殊对待。就像平时普通名字文件那样处理。

$ touch ,12.txt
或者
$ touch ,12,.txt
文件名包含冒号 (:)
用单引号括起来或使用反斜杠转义。(LCTT 译注:此处原文有误,已修改)

$ touch ':12.txt'
或者
$ touch ':12:.txt'
文件名包含引号(单引号和双引号)
要在文件名里使用引号,咱们须要使用交替规则。例如,若是你须要在文件名里使用单引号,那就用双引号把文件名括起来。而若是你须要在文件名里使用双引号,那就用单引号把文件名括起来。(LCTT 译注:或者若是单引号和双引号混杂的状况,你也能够用反斜杠转义。)

$ touch "15'.txt"

以及

$ touch '15".txt'
文件名包含波浪号 (~)
Linux 下一些像 emacs 这样的文本编辑器在编辑文件的时候会建立备份文件。这个备份文件的名字是在原文件名后面附加一个波浪号。你能够在文件名任意位置使用波浪号,例如:

$ touch ~1a.txt
或者
$touch 2b~.txt
文件名包含空格
建立名字的字符/单词之间包含空格的文件,好比 “hi my name is avishek.txt”。

最好不要在文件名里使用空格,若是你必需要分隔可读的名字,可使用下划线或横杠。不过,你仍是须要建立这样的文件的话,你能够用反斜杠来转义下一个字符。要建立上面名字的文件能够这样作。

$ touch hi\ my\ name\ is\ avishek.txt

hi my name is avishek.txt
我已经尝试覆盖你可能碰到的全部状况。上面大多数测试都在 BASH Shell 里完成,可能在其余 shell 下会有差别。

 

 

 

 

well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders$ ls
Client.php  Exception.php  Function.Business.php  Interface.php  Mock  Mock.php  Model  Model.php  Samples  Samples - Copy  Show
well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders$ ll
total 112
drwxr-xr-x 7 root root  4096 May  4 19:47 ./
drwxr-xr-x 3 root root  4096 May  4 19:45 ../
-rwxrwxrwx 1 root root 36520 Apr 10 12:03 Client.php*
-rwxrwxrwx 1 root root  5033 Mar  2 12:41 Exception.php*
-rwxrwxrwx 1 root root  3542 Apr 24 16:24 Function.Business.php*
-rwxrwxrwx 1 root root  4708 Mar  2 12:41 Interface.php*
drwxrwxrwx 2 root root  4096 May  4 19:47 Mock/
-rwxrwxrwx 1 root root  6437 Mar  2 12:41 Mock.php*
drwxrwxrwx 2 root root  4096 May  4 19:47 Model/
-rwxrwxrwx 1 root root 17734 Mar  2 12:41 Model.php*
drwxrwxrwx 2 root root  4096 May  4 19:47 Samples/
drwxrwxrwx 3 root root  4096 May  4 15:30 Samples - Copy/
drwxrwxrwx 2 root root  4096 Apr 10 09:51 Show/
well@well:/home/etc/project/apilinux/MarketplaceWebServiceOrders$ 

 

 

 

 



sudo apt-get install foremost

w

 

 

debugfs:  ?
Available debugfs requests:

show_debugfs_params, params
                         Show debugfs parameters
open_filesys, open       Open a filesystem
close_filesys, close     Close the filesystem
freefrag, e2freefrag     Report free space fragmentation
feature, features        Set/print superblock features
dirty_filesys, dirty     Mark the filesystem as dirty
init_filesys             Initialize a filesystem (DESTROYS DATA)
show_super_stats, stats  Show superblock statistics
ncheck                   Do inode->name translation
icheck                   Do block->inode translation
change_root_directory, chroot
                         Change root directory
change_working_directory, cd
                         Change working directory
list_directory, ls       List directory
show_inode_info, stat    Show inode information 
dump_extents, extents, ex
                         Dump extents information 
blocks                   Dump blocks used by an inode 
filefrag                 Report fragmentation information for an inode
link, ln                 Create directory link
unlink                   Delete a directory link
mkdir                    Create a directory
rmdir                    Remove a directory
rm                       Remove a file (unlink and kill_file, if appropriate)
kill_file                Deallocate an inode and its blocks
clri                     Clear an inode's contents
freei                    Clear an inode's in-use flag
seti                     Set an inode's in-use flag
testi                    Test an inode's in-use flag
freeb                    Clear a block's in-use flag
setb                     Set a block's in-use flag
testb                    Test a block's in-use flag
modify_inode, mi         Modify an inode by structure
find_free_block, ffb     Find free block(s)
find_free_inode, ffi     Find free inode(s)
print_working_directory, pwd
                         Print current working directory
expand_dir, expand       Expand directory
mknod                    Create a special file
list_deleted_inodes, lsdel
                         List deleted inodes
undelete, undel          Undelete file
write                    Copy a file from your native filesystem
dump_inode, dump         Dump an inode out to a file
cat                      Dump an inode out to stdout
lcd                      Change the current directory on your native filesystem
rdump                    Recursively dump a directory to the native filesystem
set_super_value, ssv     Set superblock value
set_inode_field, sif     Set inode field
set_block_group, set_bg  Set block group descriptor field
logdump                  Dump the contents of the journal
htree_dump, htree        Dump a hash-indexed directory
dx_hash, hash            Calculate the directory hash of a filename
dirsearch                Search a directory for a particular filename
bmap                     Calculate the logical->physical block mapping for an inode
punch, truncate          Punch (or truncate) blocks from an inode by deallocating them
symlink                  Create a symbolic link
imap                     Calculate the location of an inode
dump_unused              Dump unused blocks
set_current_time         Set current time to use when setting filesystem fields
supported_features       Print features supported by this version of e2fsprogs
dump_mmp                 Dump MMP information
set_mmp_value, smmp      Set MMP value
extent_open, eo          Open inode for extent manipulation
zap_block, zap           Zap block: fill with 0, pattern, flip bits etc.
block_dump, bd           Dump contents of a block
help                     Display info on command or topic.
list_requests, lr, ?     List available commands.
quit, q                  Leave the subsystem.
debugfs:  
debugfs:  
debugfs:  
debugfs:  
debugfs:  q

 

 

 

linux 删除文件和目录与恢复详解-linux-操做系统-壹聚教程网http://www.111cn.net/sys/linux/47629.htm

相关文章
相关标签/搜索