一行命令搞定/usr/bin/perl^M: bad interpreter
一行命令搞定/usr/bin/perl^M: bad interpreter
在*nix系統下使用Perl指令碼有時會遇到如下錯誤:
/usr/bin/perl^M: bad interpreter: No such file or directory
最常見的原因是因為該指令碼在windows系統下進行了編輯。
windows系統下的換行符是\r\n,而unix下面是隻有\n的。如果要解決這個問題,只要去掉\r即可。
第一種解決方案是用sed(假設出問題的指令碼名叫filename):
sed -i 's/\r$//' filename
這種解決方案適合簡單的ASCII檔案形式。
如果情況再複雜些,比方說filename是Unicode檔案,可能會引入了Unicode中某些新的換行符;
另外有時候\r和\n在某些系統上對應的字元編碼並不一致。如果再碰上垂直製表符 0x0B 和進紙符 0x0C 就更麻煩了。
好在Perl提供了另一種解決方案:
perl -p -i -e "s/\R/\n/g" filename
這裡用到了從Perl 5.10開始引入的\R這個字元組,用來匹配各種換行符,我們只要方便地將其替換為\n就可以了。
同時也沒有必要用指令碼檔案來實現,只需要在shell裡執行這樣一行命令就行了。
其中-p表示逐行對filename進行操作,-i表示原地操作,覆蓋原始檔案,-e則是表示執行後面的語句。
在*nix系統下使用Perl指令碼有時會遇到如下錯誤:
/usr/bin/perl^M: bad interpreter: No such file or directory
最常見的原因是因為該指令碼在windows系統下進行了編輯。
windows系統下的換行符是\r\n,而unix下面是隻有\n的。如果要解決這個問題,只要去掉\r即可。
第一種解決方案是用sed(假設出問題的指令碼名叫filename):
sed -i 's/\r$//' filename
這種解決方案適合簡單的ASCII檔案形式。
如果情況再複雜些,比方說filename是Unicode檔案,可能會引入了Unicode中某些新的換行符;
另外有時候\r和\n在某些系統上對應的字元編碼並不一致。如果再碰上垂直製表符 0x0B 和進紙符 0x0C 就更麻煩了。
好在Perl提供了另一種解決方案:
perl -p -i -e "s/\R/\n/g" filename
這裡用到了從Perl 5.10開始引入的\R這個字元組,用來匹配各種換行符,我們只要方便地將其替換為\n就可以了。
同時也沒有必要用指令碼檔案來實現,只需要在shell裡執行這樣一行命令就行了。
其中-p表示逐行對filename進行操作,-i表示原地操作,覆蓋原始檔案,-e則是表示執行後面的語句。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29500582/viewspace-1610793/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 解決“/bin/bash^M: bad interpreter: No such file or directory”
- -bash: ./switch.sh: /bin/bash^M: bad interpreter: No such file or directory
- 錯誤:-bash: ./how_paras.sh: /bin/bash^M: bad interpreter: No such file or directory
- shell指令碼編碼格式問題,bin/sh^M: bad interpreter: No such file or directory指令碼
- 虛擬環境bin/python: bad interpreter: No such file or directoryPython
- Anaiable執行出現[WARNING]: Platform linux on hostis using the discovered Python interpreter at /usr/bin/pythonAIPlatformLinuxPython
- /usr/bin/python與/usr/bin/env python的區別Python
- python中#!/usr/bin/python與#!/usr/bin/env python的區別Python
- 一分鐘看懂頭部 shell #!/usr/bin 命令
- /bin、/sbin、/usr/bin、/usr/sbin、/usr/local/sbin放置可執行檔案的區別
- /usr/bin/ld: cannot find -lopenblas
- -bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby: b...Framework
- /usr/bin/expect的簡單使用
- 【jenkins】/usr/bin/env: php: No such file or directoryJenkinsPHP
- 一行命令搞定windows檢視埠占用Windows
- Php cli模式下執行報錯/usr/bin/php: /usr/local/lib/libxml2.so.2: no version information available (required by /usr/bin/php)PHP模式XMLORMAIUI
- Sub-process /usr/bin/dpkg returned an error codeError
- Linux下安裝jdk1.8檢視版本的時候報出:-bash: /usr/local/jdk1.8.0_144/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: 沒有那個檔案或目錄LinuxJDKJava
- You don't have write permissions for the /usr/bin directory.
- Authentication is required to run /usr/bin/x-terminal-emulator as rootUI
- 一行命令搞定Python專案依賴包匯出Python
- mac下/usr/local/bin No such file or directory問題解決Mac
- frepplectl解決報錯:bash: /usr/bin/frepplectl: Permission denied
- 關於/usr/bin/ld: cannot find -lXX的問題
- WSL:Sub-process /usr/bin/dpkg returned an error code (1)Error
- code EACCESnpm ERR! syscall renamenpm ERR! path /usr/local/bin/webpack errno -13NPMWeb
- (轉載)關於usr/bin/ld: cannot find -lxxx問題總結
- 記一次危險的操作——誤刪/usr/bin目錄
- [軟體推薦]Gitlab 發起合併請求,一行命令就搞定!Gitlab
- python升級帶來的yum異常:File "/usr/bin/yum", line 30Python
- iOS開發除錯之報錯:Command /usr/bin/codesign failed with exit code 1iOS除錯AI
- 解決Make時,“/usr/bin/ld: 找不到 -lXXX”問題的三種方法
- linux輸入yum後提示: -bash: /usr/bin/yum: No such file or directory的解決方案Linux
- 啟動 Laravel-Sail 服務時遇到的 /usr/bin/env: 'bash\r' 錯誤LaravelAI
- 換interpreter
- 無需安裝、註冊,一行命令搞定內網穿透!關鍵是完全免費內網穿透
- Shell 一行程式碼搞定大問題行程
- DOS命令中文亂碼一行命令解決
- perl