2017-03-05 94 views
0

我無法讀取或應用任何其他命令,如catstrings上的.txt文件,因爲它是不允許的。我需要讀取一個名爲flag.txt的文件,但該文件也在黑名單中。那麼,有什麼方法可以使用head命令來讀取* .txt嗎? head命令是允許的。如何使用head linux命令讀取所有文本文件?

blacklist=\ 
'flag\|<\|$\|"\|'"'"'\|'\ 
'cat\|tac\|*\|?\|less\|more\|pico\|nano\|edit\|hexdump\|xxd\|'\ 
'sed\|tail\|diff\|grep\|paste\|strings\|bas64\|sort\|uniq\|cut\|awk\|'\ 
'bzip\|gzip\|xz\|tar\|ar\|'\ 
'mv\|cp\|ln\|nl\|'\ 
'python\|perl\|sh\|cc\|g++\|php\|hd\|g++\|gcc\|curl\|tcp\|udp\|'\ 
'scp\|sftp\|wget\|nc\|netcat' 

感謝

+0

爲什麼限制什麼程序可以使用? – chepner

+0

也許有一個原因,他們不讓你這樣做? – karakfa

+0

我不太理解這個問題,但可以,你可以用'head -100 * .txt'的前100行輸出所有'* .txt'文件。你可以通過'wc -l file'找到行數(不在你的列表中)或者使用一個荒謬的行值。你在黑名單中似乎沒有'rev',所以你可以'rev file | rev'也。或者使用'ed':'ed file',然後按5打印'file'的第5行。 –

回答

0

做你想做的命令head *.txt的一些替代?如果是的話,ls/findxargs會有幫助,但是它不能識別.txt文件,它會讀取目錄下的所有文件。

ls -1| xargs head 
+0

我們不能使用xargs,因爲它不允許黑名單中的ar。 –

+0

@LeeGunMo然後你的黑名單是不完整的,因爲'xargs'沒有出現在那裏 - 請確保你的問題是正確的。 –

0

您可以通過以下方式使用`backtick):

head `ls -1` 

BACKTICK有着非常特殊的意義。你 之間的反引號鍵入的任何內容進行評估(執行)由外殼的主要命令

之前那麼該命令將執行以下操作:

`LS -1` - 將導致與文件名

頭 - 將顯示ls -1

列出的文件開始

更多信息有關反引號可以this answer

0找到
0

如果您需要與flag.txt匹配的glob,但既不能使用*也不能使用字符串flag,您可以使用fl[a]g.txt代替。然後,打印使用head整個文件,使用-c和傳遞文件的大小:

head -c $(stat -c '%s' fl[a]g.txt) fl[a]g.txt 

另一種方法是使用shell來讀取文件:

while IFS= read -r c; do echo $c; done < fl[a]g.txt 

你可以也只是用paste

paste fl[a]g.txt