1. 程式人生 > >Shell指令碼: Windows下可用原始碼 轉換為 Linux下可用原始碼

Shell指令碼: Windows下可用原始碼 轉換為 Linux下可用原始碼

簡介

Windows下編寫的程式碼(如C\C++\Java等)放到Linux下不能直接編譯, 因為主要存在兩個問題:

1. Windows和Linux的行尾符不同, Windows下行尾符是"\n\r", 而Linux的行尾符是"\n"

2. Windows下編碼通常是GB2312, 而Linux中的編碼通常是UTF-8。

所以編寫了這個指令碼檔案用於將Windows下編寫的原始碼轉化為Linux下可用的原始碼, 

該指令碼檔案可以將 指定目錄及其子目錄 下指定 字尾名 的原始檔進行轉換。

使用方式

sudo apt-get install dos2unix
bash trans.sh 指定資料夾 要轉換檔案的拓展名

例如,

將/home資料夾及其子檔案下所有java原始檔進行轉換

bash trans.sh /home java

程式碼

#!/bin/bash
#Program:
#   convert the text written in windows to the text usable in linux.
#Author:
#   Chen Zhongzheng
#History:
#   2014年09月03日20:17:36  v1.0
#TODO:
#   add a parameter to specify the origin encoding, eg. gb2312\cp936\gbk...

function recursion()
{
	cd $1
	for i in $(ls)
	do
		if [ -d "$i" ]; then
			recursion $i $2
		elif [ "${i##*.}" = "${2}" ]; then
			iconv -f cp936 -t utf-8 $i > temp_111
			mv temp_111 $i
			dos2unix $i
		fi
	done
	cd ..
}

if [ ! $# -eq 2 ]; then
    echo "usage: bash convert.sh directory_name extension_name"
elif [ ! -d $1 ]; then
	echo "usage: bash convert.sh directory_name extension_name"
else
	recursion $1 $2
fi
#!/bin/bash
#Program:
#   convert the text written in windows to the text usable in linux.
#Author:
#   Chen Zhongzheng
#History:
#   2015年12月04日21:33:29  v1.1
#TODO:
#   add a parameter to specify the origin encoding, eg. gb2312\cp936\gbk...

function recursion()
{
  cd $1
  for i in $(ls)
  do
    if [ -d "$i" ]; then
      recursion $i $2
    elif [ "${i##*.}" = "${2}" ]; then
      enca -L zh_CN -x UTF-8 $i
      dos2unix $i
    fi
  done
  cd ..
}

if [ ! $# -eq 2 ]; then
  echo "usage: bash convert.sh directory_name extension_name"
elif [ ! -d $1 ]; then
  echo "usage:  bash convert.sh directory_name extension_name"
else
  recursion $1 $2
fi


參考:

相關推薦

Shell指令碼 Windows可用原始碼 轉換 Linux可用原始碼

簡介 Windows下編寫的程式碼(如C\C++\Java等)放到Linux下不能直接編譯, 因為主要存在兩個問題: 1. Windows和Linux的行尾符不同, Windows下行尾符是"\n\r", 而Linux的行尾符是"\n" 2. Windows下編碼通常是G

shell指令碼以一定規律替換某個目錄某些檔案中的某個字串

題目有些繞,看例子: 我要替換/home/zql/replace_string/目錄下的以10,20,30開頭的檔案中的字串中的某些字串 這些檔案中有pv_centos欄位,如圖10_1k中內容擷取如

shell指令碼awk和sed

awk 和sed     cut [選項] 檔名   預設分隔符是製表符     選項:         -f 列號:    提取第幾列 &

shell指令碼函式以及除錯

自定義函式      [ function ] funname [()]      {        <程式>      }    &nb

shell指令碼流程控制語句

if/else 命令連線符: 單個分支if條件語句 if[ 條件判斷 ] then <程式> fi 或者 if[ 條件判斷 ]; then <程式> fi 多分支 if[ 條件判斷 ]; then <程式> el

shell指令碼命令

命令連線符 ;表示不管前面是否執行成功都要執行 &&表示前面執行成功才執行後面 ||表示前面執行失敗才執行後面 read命令 read [選項] 值 read -p(提示語句) -n(字元個數) -t(時間秒) -s(不顯示) 運算子 expr 3 +

shell指令碼變數

首行:#!/bin/bash #!符號能夠被核心識別成為一個指令碼的開始,這一行必須位於指令碼的首行 註釋:# 除去第一行的# 內容:可執行結構和內容 建立檔案的方式: touch echo “” > first.sh 注:向檔案輸入””中的內容 > 是覆蓋

shell指令碼統計分析 /home/ 目錄使用者磁碟使用情況

 一、統計單臺機器 /home/ 目錄下磁碟空間使用 top3 的使用者 common.sh 指令碼用於統計 /home/* 目錄下儲存空間 top3 的使用者。 du -sb /home/* |sort -nr |head -n 3  #單位為B 二、統計分析多臺分散式機器上 /h

一個簡單的shell指令碼一鍵部署tomcat及釋出簡單程式指令碼

測試環境中一鍵部署的一個小指令碼,這裡記錄下,方便想聯絡的人進行參考 環境介紹: 作業系統cos7.4 jdk版本:1.8 中介軟體服務版本:tomcat7.0.75 ——————————————以下是指令碼內容—————————————————————————

一個簡單的shell指令碼weblogic日誌按天生成(日誌壓縮)

編寫目的: 在實際工作中,由於生產環境在出現問題的時候,中介軟體服務會出現大量的報錯日誌,若日誌增長量極大的情況下,會出現磁碟空間被寫滿的情況而導致宕機,為了防止此情況出現,編寫如下shell指令碼進行規避此問題。 注意: <一>本例已weblogi

shell 指令碼 多執行緒判斷多個程序是否存在,不存在則重啟

shell 預熱 shell 中變數用 $ 區別 在shell指令碼中變數賦值等號前後不能有空格,有空格會被認為是命令 str='測試' echo $str arr=('test1' 'test2' 'test3') # 陣列, 每個元素間以空格隔開 echo

Shell指令碼人機互動指令碼-su

本文演示通過expect工具實現su命令自動輸入密碼驗證的方法。 1、 su.sh指令碼實現 指令碼實現功能:使用者切換,執行完成之後進入新使用者介面。 #####################

python呼叫Shell指令碼os.system(cmd)或os.popen(cmd)的區別

 兩者的區別是: os.system(cmd)的返回值只會有0(成功),1,2  os.popen(cmd)會吧執行的cmd的輸出作為值返回。 python呼叫Shell指令碼,有兩種方法:os.system(cmd)或os.popen(cmd),前者返回值是指令碼的退出

shell指令碼base64加密、解密字串並賦值給變數方法

幾經波折才能夠實現使用 base64 加密、解密字串並賦值給變數。網上絕大多數是使用 echo 管道實現 加密和解密字串的輸出。 程式碼如下: pwd=$( base64 -d <<< MQo= ) # 解碼 in=$( base64 <&l

Shell指令碼程式控制

條件測試的表示式:     [ expression ]   括號兩端必須要有空格     [[ expression ]] 括號兩端必須要有空格     test expression組合測試條件: -a: and -o: or !:  非 整數比較: -eq 測試

shell指令碼不暫停程序,暫停幾秒執行一條shell命令

需求如下: 跑monkey指令碼如果遇到異常結束,則使用logcat輸出日誌,輸出三秒後停止輸出 如果使用sleep 命令的話,則會導致logcat在sleep的時候也暫停執行了 解決方法如下,通過while迴圈暫停3秒: ti1=`date +%s` #獲取時間戳

使用Windows上SourceInsight工具建立分析Linuxuboot原始碼工程

SourceInsight軟體可以說是分析查閱大型原始碼工程檔案的神器!介面不錯!功能強大! 第一步:安裝好SourceInsight後開啟軟體 點選上面的Project--->new pro

shell指令碼批量修改檔名(刪除檔名中字元)

上一篇寫過批量修改檔名(檔名中新增字元),工作中還存在這樣的需求,批量修改檔名,刪除檔名中的某些字元; 舉例如下:批量改名,刪除檔名中多餘字元 目錄下檔名為如下,要求去掉_finished。 stu_102999_1_finished.jpg stu_10

Shell指令碼人機互動指令碼-scp

前面兩篇博文中,為大家演示了shell指令碼中su和ssh命令的免驗證輸入實現: 本文將進一步演示,通過expect工具實現scp命令免密輸入的方法。 Expect開源軟體安裝,請

python和shell指令碼微信企業號傳送資訊

#!/usr/bin/python # coding: utf-8 import urllib,urllib2 import json import sys def gettoken(corpid,corpsecret): gettoken_url = 'https://qyapi.wei