C/C++ கோப்புகளில் தலைப்பு மாற்றத்தை சீரமைத்தல்
C/C++ கோப்புகளின் பெரிய தொகுப்புடன் பணிபுரியும் போது, தானாக உருவாக்கப்பட்ட தலைப்புகளை நிர்வகிப்பது கடினமான பணியாக இருக்கும். விண்டோஸில் Git Bash ஐப் பயன்படுத்தி, இந்த செயல்முறையை நெறிப்படுத்த "find" மற்றும் "sed" போன்ற கருவிகளைப் பயன்படுத்தலாம். முதலில் இருக்கும் தலைப்புகளை அகற்றி, பின்னர் புதியவற்றை திறமையாகப் பயன்படுத்துவதே குறிக்கோள்.
இந்த வழிகாட்டியில், "find" மற்றும் "sed" கட்டளைகளைப் பயன்படுத்தி ஒரு தீர்வை ஆராய்வோம். ஒரு சிறிய மாதிரியில் சோதிக்கப்பட்ட ஒரு முறையைப் பற்றி விவாதித்து அதன் செயல்திறனை மதிப்பீடு செய்வோம். முடிவில், இந்த அணுகுமுறை உகந்ததா அல்லது சிறந்த மாற்றுகள் உள்ளதா என்பதை நீங்கள் புரிந்துகொள்வீர்கள்.
| கட்டளை | விளக்கம் |
|---|---|
| find | ஒரு குறிப்பிட்ட வெளிப்பாட்டுடன் பொருந்தக்கூடிய அடைவு படிநிலையில் கோப்புகளைத் தேடுகிறது. |
| -iregex | கேஸ்-இன்சென்சிட்டிவ் ரெகுலர் எக்ஸ்பிரஷன் கொண்ட கோப்புகளைத் தேடுவதற்கான விருப்பத்தைக் கண்டறியவும். |
| -exec | தேடல் அளவுகோல்களுடன் பொருந்தக்கூடிய ஒவ்வொரு கோப்பிலும் கட்டளையை இயக்குவதற்கான விருப்பத்தைக் கண்டறியவும். |
| sed -i | அசல் கோப்பை மாற்றியமைத்து, கோப்புகளை உள்ள இடத்தில் திருத்த ஸ்ட்ரீம் எடிட்டர் கட்டளை. |
| sh -c | ஷெல் வழியாக குறிப்பிட்ட கட்டளை சரத்தை இயக்குகிறது. |
| export | குழந்தை செயல்முறைகளால் பயன்படுத்தப்படும் சூழல் மாறிகளை அமைக்கிறது. |
| echo -e | அச்சிடப்பட வேண்டிய சரத்தில் பேக்ஸ்லாஷ் எஸ்கேப்களின் விளக்கத்தை செயல்படுத்துகிறது. |
| $(cat $file) | கட்டளையில் குறிப்பிடப்பட்ட கோப்பின் உள்ளடக்கங்களை மாற்றுகிறது. |
தலைப்பு மாற்று ஸ்கிரிப்டைப் புரிந்துகொள்வது
முதல் ஸ்கிரிப்ட் பயன்படுத்துகிறது find h, c, hpp மற்றும் cpp ஆகிய நீட்டிப்புகளுடன் அனைத்து C/C++ கோப்புகளையும் கண்டறிவதற்கான கட்டளை. பின்னர் அதை செயல்படுத்துகிறது sed தானாக உருவாக்கப்பட்ட தலைப்புகளை அகற்ற ஒவ்வொரு கோப்பிலும் கட்டளையிடவும். தி -iregex விருப்பம் உள்ள find வழக்கமான வெளிப்பாட்டைப் பயன்படுத்தி கேஸ்-சென்சிட்டிவ் தேடலை செயல்படுத்துகிறது. தி -exec விருப்பம் செயல்படுத்த அனுமதிக்கிறது sed பொருந்தும் ஒவ்வொரு கோப்பிலும். உள்ளே sed, முறை /\*\*\*\*\*\*\*\*\*/,/\/\/|\_\//d தலைப்பின் தொடக்கத்திலிருந்து இறுதி வரையிலான வரிகளின் தொகுதியை நீக்க பயன்படுகிறது.
இரண்டாவது ஸ்கிரிப்ட் ஒரு செயல்பாட்டை வரையறுப்பதன் மூலம் தலைப்பு மாற்றீட்டை தானியங்குபடுத்துகிறது process_file தலைப்பு அகற்றுதல் மற்றும் மாற்றுதல் ஆகியவற்றைக் கையாள. இந்த செயல்பாடு ஏற்றுமதி செய்யப்படுகிறது find உபயோகிக்க. தி echo -e புதிய தலைப்பை வடிவமைக்க கட்டளை பயன்படுத்தப்படுகிறது, மேலும் ஒவ்வொரு கோப்பின் உள்ளடக்கங்களும் புதிய தலைப்புடன் முன்வைக்கப்படும். தி $(cat $file) மாற்றீடு புதிய தலைப்பை ஏற்கனவே உள்ள கோப்பு உள்ளடக்கத்துடன் இணைக்க அனுமதிக்கிறது, மேலும் இதன் விளைவாக கோப்பில் மீண்டும் எழுதப்படும் >. ஒவ்வொரு கோப்பும் புதுப்பிக்கப்பட்ட தலைப்பை சரியாகப் பெறுவதை இந்த அணுகுமுறை உறுதி செய்கிறது.
தலைப்பை மாற்றுவதற்கு Git Bash மற்றும் Sed ஐப் பயன்படுத்துதல்
திறமையான தலைப்பு மேலாண்மைக்கான பாஷ் மற்றும் செட் ஸ்கிரிப்ட்கள்
# First, find and process the files with headers to be replacedfind . -iregex '.*\.\(h\|c\|hpp\|cpp\)$' -exec sed -i '/\/\*\*\*\*\*\*\*\*\*/,/\/\/|\_\//d' {} \;# Second, add the new headers to the filesNEW_HEADER="\/\n"NEW_HEADER+="///_|\n"NEW_HEADER+="File: \$Id: \/\/perforcedepot\/path\/filename.ext#1 \$\n"\nNEW_HEADER+="\nLEGAL NOTICE: COPYRIGHT YYYY by COMPANY NAME, All Rights Reserved \n"NEW_HEADER+="\/ \/\/|_/"find . -iregex '.*\.\(h\|c\|hpp\|cpp\)$' -exec sh -c 'echo -e "$NEW_HEADER\n$(cat $1)" > $1' _ {} \;
C/C++ கோப்புகளில் தலைப்பு மாற்றத்தை தானியக்கமாக்குகிறது
மொத்த கோப்பு எடிட்டிங்கிற்காக பாஷ், ஃபைன்ட் மற்றும் செட் ஆகியவற்றை இணைத்தல்
# Define a function to handle header stripping and replacementprocess_file() {local file="$1"# Strip existing headerssed -i '/\/\*\*\*\*\*\*\*\*\*/,/\/\/|\_\//d' "$file"# Add new headerecho -e "$NEW_HEADER\n$(cat "$file")" > "$file"}# Export the function and new header for find to useexport -f process_fileexport NEW_HEADER# Find and process the filesfind . -iregex '.*\.\(h\|c\|hpp\|cpp\)$' -exec bash -c 'process_file "$0"' {} \;
தலைப்பு மேலாண்மைக்கான மேம்பட்ட நுட்பங்கள்
பயன்பாட்டின் மற்றொரு அம்சம் git bash மற்றும் sed தலைப்பு வடிவங்களில் உள்ள மாறுபாடுகளை திறம்பட கையாளுகிறது. சில சந்தர்ப்பங்களில், தலைப்புகளில் சிறிய வேறுபாடுகள் இருக்கலாம் அல்லது கூடுதல் வரிகளைக் கணக்கிட வேண்டும். இதை கையாள ஒரு வழி, பயன்படுத்தப்படும் வழக்கமான வெளிப்பாடுகளை மேம்படுத்துவதாகும் sed மேலும் நெகிழ்வாக இருக்க வேண்டும். எடுத்துக்காட்டாக, எல்லா கோப்புகளிலும் ஒரே மாதிரியாக இல்லாத தலைப்புகளைப் பொருத்தவும் அகற்றவும் மிகவும் சிக்கலான வடிவங்களைப் பயன்படுத்தலாம்.
கூடுதலாக, நீங்கள் உள்ள இடத்தில் மாற்றங்களைச் செய்வதற்கு முன் கோப்புகளை காப்புப் பிரதி எடுக்க விரும்பலாம் sed. ஒரு சேர்ப்பதன் மூலம் இதைச் செய்யலாம் cp விண்ணப்பிக்கும் முன் கட்டளை sed. அவ்வாறு செய்வதன் மூலம், எடிட்டிங் செயல்பாட்டின் போது ஏதேனும் தவறு நடந்தால், அசல் கோப்புகளின் நகல் உங்களிடம் இருப்பதை உறுதிசெய்கிறீர்கள். இந்த கூடுதல் படியானது தரவை மீட்டெடுப்பதில் நிறைய நேரத்தையும் முயற்சியையும் சேமிக்க முடியும்.
Git Bash மற்றும் Sed ஐப் பயன்படுத்துவது பற்றிய பொதுவான கேள்விகள்
- நான் C/C++ கோப்புகளை மட்டுமே குறிவைக்கிறேன் என்பதை எப்படி உறுதி செய்வது?
- பயன்படுத்த -iregex இல் விருப்பம் find போன்ற கோப்பு நீட்டிப்புகளைக் குறிப்பிட கட்டளை .*\.\(h\|c\|hpp\|cpp\)$.
- என்ன செய்கிறது -exec விருப்பத்தை செய்ய find கட்டளையா?
- தேடல் அளவுகோல்களுடன் பொருந்தக்கூடிய ஒவ்வொரு கோப்பிலும் மற்றொரு கட்டளையை இயக்க இது உங்களை அனுமதிக்கிறது.
- கோப்புகளை மாற்றும் முன் அவற்றை எவ்வாறு காப்புப் பிரதி எடுப்பது sed?
- இதைப் பயன்படுத்தி ஒவ்வொரு கோப்பையும் காப்புப்பிரதி இடத்திற்கு நகலெடுக்கலாம் cp விண்ணப்பிக்கும் முன் கட்டளை sed.
- நோக்கம் என்ன echo -e இரண்டாவது எழுத்தில்?
- இது பின்சாய்வுக்கட்டுப்பாட்டுத் தப்பிக்கும் விளக்கத்தை செயல்படுத்துகிறது, புதிய தலைப்பின் வடிவமைக்கப்பட்ட வெளியீட்டை அனுமதிக்கிறது.
- பயன்பாட்டிற்காக ஒரு செயல்பாட்டை எவ்வாறு ஏற்றுமதி செய்வது find?
- பயன்படுத்த export -f செயல்பாட்டை ஏற்றுமதி செய்ய கட்டளை, எனவே அதை பயன்படுத்த முடியும் find.
- நான் பயன்படுத்தி கொள்ளலாமா sed பல வரி தலைப்புகளை பொருத்த மற்றும் நீக்க வேண்டுமா?
- ஆம், sed தொடக்க மற்றும் முடிவு வடிவங்களைக் குறிப்பிடுவதன் மூலம் பல வரி தலைப்புகளை நீக்க வடிவங்களுடன் பயன்படுத்தலாம்.
- ஸ்கிரிப்ட்டில் உள்ள கோப்பில் புதிய உள்ளடக்கத்தை எவ்வாறு இணைப்பது?
- நீங்கள் பயன்படுத்தலாம் echo திசைதிருப்பலுடன் கட்டளை (> அல்லது >>) ஒரு கோப்பில் உள்ளடக்கத்தைச் சேர்க்க.
- சோதனை செய்ய முடியுமா find செயல்படுத்தாமல் கட்டளை sed?
- ஆம், நீங்கள் மாற்றலாம் -exec sed உடன் -exec echo செயலாக்கப்படும் கோப்புகளைப் பார்க்க.
- என்ன செய்கிறது $(cat $file) ஸ்கிரிப்ட்டில் மாற்றா?
- இது கோப்பின் உள்ளடக்கத்தைப் படித்து, கட்டளையின் குறிப்பிட்ட இடத்தில் அதைச் செருகும்.
தலைப்பு மாற்றும் பணியை முடிக்கிறது
பயன்படுத்தி Git Bash மற்றும் Sed C/C++ கோப்புகளில் தானாக உருவாக்கப்பட்ட தலைப்புகளை மாற்றுவது ஒரு சக்திவாய்ந்த மற்றும் திறமையான முறையாகும். வழங்கப்பட்ட ஸ்கிரிப்ட்கள் பழைய தலைப்புகளை அகற்றுவது மட்டுமல்லாமல், எல்லா கோப்புகளிலும் தொடர்ந்து புதியவற்றைச் சேர்க்கும். இந்த அணுகுமுறை உங்கள் கோப்புகள் ஒரே மாதிரியாக புதுப்பிக்கப்படுவதை உறுதிசெய்கிறது, உங்கள் நேரத்தையும் முயற்சியையும் மிச்சப்படுத்துகிறது. கட்டளைகளைச் செம்மைப்படுத்தி, அவற்றின் பயன்பாட்டைப் புரிந்துகொள்வதன் மூலம், பெரிய அளவிலான கோப்பு மேலாண்மை பணிகளை நீங்கள் எளிதாகக் கையாளலாம்.
உங்கள் ஸ்கிரிப்ட்களை முழு கோப்புகளுக்கும் பயன்படுத்துவதற்கு முன், அவற்றை ஒரு சிறிய மாதிரியில் சோதிப்பது முக்கியம். இது சாத்தியமான சிக்கல்களை முன்கூட்டியே பிடிக்க உதவுகிறது மற்றும் சுமூகமான செயல்பாட்டை உறுதி செய்கிறது. கலவை find, sed, மற்றும் ஷெல் ஸ்கிரிப்டிங் கோப்பு தலைப்புகளை நிர்வகிப்பதற்கான செயல்முறையை தானியங்குபடுத்துவதற்கும் நெறிப்படுத்துவதற்கும் ஒரு வலுவான தீர்வை வழங்குகிறது.