ឧទាហរណ៍ការប្រើពាក្យបញ្ជា "xargs"

ការពិពណ៌នានិងការណែនាំ

ពាក្យបញ្ជា xargs ត្រូវបានប្រើជាធម្មតាក្នុងបន្ទាត់ពាក្យបញ្ជាដែលលទ្ធផលរបស់ពាក្យបញ្ជាមួយត្រូវបានបញ្ជូនជាអាគុយម៉ង់បញ្ចូលទៅពាក្យបញ្ជាផ្សេង។

ក្នុងករណីជាច្រើនគ្មានពាក្យបញ្ជាពិសេសណាមួយដូចជា xargs ដែលត្រូវការដើម្បីសម្រេចបាននោះទេព្រោះប្រតិបត្តិករ "pipe" និង "redirection" អនុវត្តកិច្ចការដូចគ្នា។ ទោះយ៉ាងណាក៏ដោយជួនកាលមានបញ្ហាជាមួយនឹងយន្តការមូលដ្ឋាននិងយន្តការប្តូរទិសឧទាហរណ៍ឧទាហរណ៏ប្រសិនបើអាគុយម៉ង់ផ្ទុកចន្លោះដែល xargs ចាញ់។

លើសពីនេះទៀត xargs ប្រតិបត្តិពាក្យបញ្ជាដែលបានបញ្ជាក់ម្តងហើយម្តងទៀតបើចាំបាច់ដើម្បីដំណើរការអាគុយម៉ង់ទាំងអស់ដែលបានផ្តល់ឱ្យវា។ តាមការពិតអ្នកអាចបញ្ជាក់ចំនួនអាគុយម៉ងដែលគួរត្រូវបានអានចេញពីស្ទ្រីមបញ្ចូលស្តង់ដាររាល់ពេល xargs ប្រតិបត្តិពាក្យបញ្ជាដែលបានបញ្ជាក់។

ជាទូទៅពាក្យបញ្ជា xargs គួរតែត្រូវបានប្រើប្រសិនបើលទ្ធផលនៃពាក្យបញ្ជាមួយត្រូវបានប្រើជាផ្នែកនៃជម្រើសឬអាគុយម៉ង់របស់ពាក្យបញ្ជាទីពីរដែលទិន្នន័យត្រូវបានបង្ហូរ (ដោយប្រើសញ្ញា "|") ។ បំពង់ធម្មតាគឺគ្រប់គ្រាន់ប្រសិនបើទិន្នន័យត្រូវបានគេប៉ងជាការបញ្ចូល (ស្តង់ដារ) នៃពាក្យបញ្ជាទីពីរ។

ឧទាហរណ៍ប្រសិនបើអ្នកប្រើពាក្យបញ្ជា ls ដើម្បីបង្កើតបញ្ជីឈ្មោះឯកសារនិងថតហើយបន្ទាប់មកត្រងបញ្ជីនេះទៅជាពាក្យបញ្ជា xargs ប្រតិបត្តិ អេកូ អ្នកអាចបញ្ជាក់ឈ្មោះឯកសារឬឈ្មោះថតចំនួនដែលត្រូវបានដំណើរការដោយអេកូលើការធ្វើវានីមួយៗដូចខាងក្រោម: :

ls | xargs -n 5 អេកូ

ក្នុងករណីនេះ អេកូ ទទួលបានឯកសារប្រាំឬឈ្មោះថតនៅពេលតែមួយ។ ចាប់តាំងពី អេកូបាន បន្ថែមតួអក្សរបន្ទាត់ថ្មីនៅខាងចុងឈ្មោះប្រាំត្រូវបានសរសេរនៅលើបន្ទាត់នីមួយៗ។

ប្រសិនបើអ្នកប្រតិបត្តិពាក្យបញ្ជាដែលត្រឡប់ធាតុលេខធំនិងមិនអាចទាយទុកជាមុន (ឧទាហរណ៍ឈ្មោះឯកសារ) ដែលត្រូវបានបញ្ជូនទៅពាក្យបញ្ជាផ្សេងទៀតសម្រាប់ដំណើរការបន្ថែមវាជាគំនិតល្អដើម្បីត្រួតពិនិត្យចំនួនអតិបរមានៃអាគុយម៉ង់ដែលពាក្យបញ្ជាទីពីរទទួលដើម្បីជៀសវាងការផ្ទុកលើសនិងគាំង។

បន្ទាត់ពាក្យបញ្ជាដូចខាងក្រោមបែងចែកឈ្មោះឯកសារដែលបង្កើតឡើងដោយ រកឃើញ int 200 ក្រុមមុនពេលបញ្ជូនទៅពាក្យបញ្ជា cp ដែលចំលងវាទៅថត បម្រុងទុក

ស្វែងរក ./ -type f -name "* .txt" -print | xargs -l200 -i cp -f {} ./backup

ធាតុ "។ " ក្នុងពាក្យបញ្ជារកឃើញបញ្ជាក់ថតបច្ចុប្បន្នសម្រាប់ស្វែងរក។ អាគុយម៉ង់ "-type f" ដាក់កម្រិតការស្វែងរកទៅឯកសារនិង "-name" * .txt "flag បន្ថែមទៀតតម្រង់ចេញនូវអ្វីដែលមិនមាន extension" .txt "។ ទង់ -i នៅក្នុង xargs សញ្ញាថាសញ្ញា { } សញ្ញាតំណាងឱ្យឈ្មោះឯកសារនីមួយៗនៃចំហាយ។

ពាក្យបញ្ជាខាងក្រោមរកឃើញឯកសារដែលមានឈ្មោះស្នូលនៅក្នុងឬក្រោមថត / tmp ហើយលុបវា។

រក / tmp - ឈ្មោះស្នូល - ប្រភេទ f -print | xargs / bin / rm-f

។ ចំណាំថាវានឹងដំណើរការមិនត្រឹមត្រូវប្រសិនបើមានឈ្មោះឯកសារដែលមានបន្ទាត់ថ្មីខ្សែអក្សរតែមួយឬទ្វេឬចន្លោះ & # 160; ។ កំណែដូចខាងក្រោមដំណើរការឈ្មោះឯកសារក្នុងវិធីមួយដែលឯកសារឬឈ្មោះថតដែលមានសញ្ញាសម្រង់តែមួយឬពីរចន្លោះឬចន្លោះថ្មីត្រូវបានគ្រប់គ្រងយ៉ាងត្រឹមត្រូវ។

រកឃើញ / tmp - ឈ្មោះស្នូល - ប្រភេទ f -print0 | xargs -0 / bin / rm -f

ជំនួសឱ្យ -i option អ្នកក៏អាចប្រើ -I flag ដែលបញ្ជាក់ខ្សែអក្សរដែលត្រូវបានជំនួសដោយបន្ទាត់បញ្ចូលក្នុងអាគុយម៉ង់ពាក្យបញ្ជាដូចក្នុងឧទាហរណ៍នេះ:

ls dir1 | xargs -I {} -t mv dir1 / {} dir / {} / code>

ខ្សែអក្សរជំនួសត្រូវបានកំណត់ជា "{}" ។ នេះមានន័យថាការកើតឡើងនៃ "{}" ក្នុងអាគុយម៉ង់ពាក្យបញ្ជាត្រូវបានជំនួសដោយធាតុបញ្ចូលបញ្ជូនទៅ អាគុយម៉ង់ តាមរយៈប្រតិបត្តិការបំពង់។ វាអនុញ្ញាតឱ្យអ្នកដាក់ធាតុបញ្ចូលនៅទីតាំងជាក់លាក់ក្នុងអាគុយម៉ង់របស់ពាក្យបញ្ជាដើម្បីប្រតិបត្តិ (ម្តងហើយម្តងទៀត) ។