uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
Ma'lumot yo'q30 kunlar
Postlar arxiv
ToCode
1 419
# ืœื ื™ื•ื“ืข ืœื›ืชื•ื‘ ืื—ื“ ื”ืฉืœื‘ื™ื ื”ืžืชืกื›ืœื™ื ื‘ืœื™ืžื•ื“ ื˜ื›ื ื•ืœื•ื’ื™ื” ืื• ืฉืคื” ืžื’ื™ืข ืื—ืจื™ ืฉืื ื—ื ื• ื›ื‘ืจ ืžื‘ื™ื ื™ื ืืช ื”ื‘ืกื™ืก, ืžืฆืœื™ื—ื™ื ืœืคืชื•ืจ ืชืจื’ื™ืœื™ื ืคืฉื•ื˜ื™ื ื•ืืคื™ืœื• ืžืฆืœื™ื—ื™ื ืœื”ื‘ื™ืŸ ืงื•ื“ ืฉืื ื—ื ื• ืจื•ืื™ื ื‘ืคื™ืชืจื•ืŸ ืื• ืชื•ื›ื ื™ืช ื“ื•ื’ืžื”. ืื‘ืœ ืœื ืžืฆืœื™ื—ื™ื ืœื›ืชื•ื‘. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉืื ื—ื ื• ื ืชืงืขื™ื ืžืžืฉ ื‘ื”ืชื—ืœื”, ืคื•ื—ื“ื™ื ืฉื ื‘ื—ืจ ืืช ื”ืชื‘ื ื™ืช ื”ืœื ื ื›ื•ื ื” ืื• ืœื ื™ื•ื“ืขื™ื ื‘ื“ื™ื•ืง ืื™ื–ื• ืชื‘ื ื™ืช ืœื‘ื—ื•ืจ. ื—ื•ืฉืฉื™ื ืฉื ืขืฉื” ืฆืขื“ ืฉืขื•ื“ ืฉื‘ื•ืข ื ืชื—ืจื˜ ืขืœื™ื•, ืื• ื”ื›ื™ ื’ืจื•ืข - ืžืชื—ื™ืœื™ื ืœื›ืชื•ื‘ ื•ื”ื›ืœ ื™ื•ืฆื ื™ื•ืชืจ ืžืกื•ื‘ืš ื‘ื”ืจื‘ื” ืžื›ืœ ื“ื•ื’ืžื” ืฉืจืื™ื ื•, ืขื“ ืœืจืžื” ืฉืงืฉื” ืœื”ื‘ื™ืŸ ืœืืŸ ื ืขืœื ื›ืœ ื”ืกื™ื‘ื•ืš ื”ื–ื” ื‘ืชื•ื›ื ื™ื•ืช ื”ื“ื•ื’ืžื”, ื•ืื ืžื™ืฉื”ื• ืœื ืขืฉื” ืขืœื™ื ื• ืื™ื–ื” ืชืจื’ื™ืœ. ืื‘ืœ ืื™ืŸ ืฉื•ื ืชืจื’ื™ืœ. ื”ื“ืจืš ื”ื™ื—ื™ื“ื” ืœืœืžื•ื“ ืœื›ืชื•ื‘ ื”ื™ื ืœื›ืชื•ื‘, ื•ืœื›ืชื•ื‘ ื›ืžื” ืฉื™ื•ืชืจ. ืœืขื‘ื•ืจ ืืช ื”ืฉืœื‘ ื”ื–ื” ืฉื“ื‘ืจื™ื ืœื ืขื•ื‘ื“ื™ื, ื•ืื– ืืช ื”ืฉืœื‘ ืฉื”ื ืžืกื•ื‘ื›ื™ื, ื•ืื– ืœืื˜ ืœืื˜ ืœืฉื™ื ืœื‘ ืœืคื™ืชืจื•ื ื•ืช ื™ื•ืชืจ ืคืฉื•ื˜ื™ื ืขื“ ืฉื“ื‘ืจื™ื ืžืชื—ื™ืœื™ื ืœื”ืชื—ื‘ืจ. ื”ืžืฉืš ืœื™ืžื•ื“ ื‘ืงื•ืจืก, ื”ืžืฉืš ืงืจื™ืื” ืื• ืืคื™ืœื• ืฉื™ืขื•ืจื™ื ืคืจื˜ื™ื™ื ืœื ื™ืขื–ืจื• ื›ืืŸ. ื”ืฉืจื™ืจื™ื ืฉืœ ื”ื›ืชื™ื‘ื” ืฆืจื™ื›ื™ื ืœื”ืชืจื’ืœ ืฉื’ื ื”ื ืฆืจื™ื›ื™ื ืœืขื‘ื•ื“. ื”ืชื—ื•ืฉื” ืฉืื ื™ ืœื ื™ื•ื“ืข ืœื›ืชื•ื‘ ื”ื™ื ื”ืกื™ืžืŸ ื”ื›ื™ ื˜ื•ื‘ ืœืกื™ื™ื ืืช ื”ืงืจื™ืื” ื•ืœื”ืชื—ื™ืœ ืœืขื‘ื•ื“.

ToCode
1 419
# ืžืงื•ื ืœื˜ืขื•ื™ื•ืช ื‘ื›ืชื™ื‘ืช ืžืขืจื›ื•ืช ืชื•ื›ื ื” ืื ื—ื ื• ื™ื•ื“ืขื™ื (ื‘ื“ืจืš ื›ืœืœ) ืœืื–ืŸ ื‘ื™ืŸ ืžื”ื™ืจื•ืช ื”ืคื™ืชื•ื— ืœื‘ื™ื˜ื—ื•ืŸ. ื‘ืงืฆื” ืื—ื“ ืฉืœ ื”ืกืงืืœื”, ืžื™ ืฉื‘ื•ื ื” ืงื•ืฆื‘ ืœื‘ ืฆืจื™ืš ืœืขืฉื•ืช ื”ื›ืœ ื›ื“ื™ ืœื”ื’ื™ืข ืœืืคืก ื˜ืขื•ื™ื•ืช, ื•ื‘ืงืฆื” ื”ืฉื ื™ ืื ืืชื ื‘ื•ื ื™ื ืืชืจ ืžืฉื—ืงื™ื ืื•ื ืœื™ื™ืŸ ืืชื ืžื•ื›ื ื™ื ืœื—ื™ื•ืช ืขื ื”ืขืœืืช ื’ื™ืจืกื” ืฉื‘ื” ืžืฉื—ืง ืžืกื•ื™ื ืœื ืขื‘ื“ ืื• ืขื‘ื“ ืขื ื‘ืื’. ืชืžื™ื“ ืืคืฉืจ ืœื”ืขืœื•ืช ื’ื™ืจืกืช ืชื™ืงื•ืŸ. ืืช ืื•ืชื• ื”ื’ื™ื•ืŸ ืืคืฉืจ ืœืงื—ืช ื’ื ืœืงืจื™ื™ืจื” ื”ืื™ืฉื™ืช ืื• ื”ืœื™ืžื•ื“ื™ืช ืฉืœื ื•- 1. ื”ืื ืื ื™ ืžื•ื›ื ื” ืœืœืžื•ื“ ื˜ื›ื ื•ืœื•ื’ื™ื” ื’ื ืื ื”ื™ื ื‘ืกื•ืฃ ืœื ืชื”ื™ื” "ื”ื“ื‘ืจ ื”ื’ื“ื•ืœ ื”ื‘ื"? ืื• ืฉื”ื–ืžืŸ ืฉืœื™ ืงืฆื•ื‘ ื•ืื ื™ ืฆืจื™ื›ื” ืืคืก ื˜ืขื•ื™ื•ืช ื‘ื‘ื—ื™ืจืช ื ื•ืฉืื™ ื”ืœื™ืžื•ื“? 2. ื”ืื ืื ื™ ืžื•ื›ื ื” ืœื”ืชืคืจืฅ ื‘ื“ื™ื•ืŸ ื’ื ืื ืื ื™ ืœื ื‘ื˜ื•ื—ื” ื‘ืžื” ืฉื™ืฉ ืœื™ ืœื”ื’ื™ื“, ืื• ืฉืื ื™ ืฉื•ืืคืช ืœ"ืืคืก ื˜ืขื•ื™ื•ืช" ื•ืžื•ื›ื ื” ืœื“ื‘ืจ ืคื—ื•ืช ื•ื‘ืœื‘ื“ ืฉืชืžื™ื“ ืื’ื™ื“ ื“ื‘ืจื™ื ืฉืื ื™ ื‘ื˜ื•ื—ื” ื‘ื”ื. 3. ื”ืื ืื ื™ ืžื•ื›ื ื” ืœื”ืขื‘ื™ืจ ื”ืจืฆืื” ืœืฆื•ื•ืช ืขืœ ื ื•ืฉื ืฉืื ื™ ืœื ืžื•ืžื—ื™ืช ื‘ื•, ืื• ืฉืื ื™ ืžืขื“ื™ืคื” ืœื ืœืงื—ืช ืกื™ื›ื•ื ื™ื ื•ืœื›ื•ื•ืŸ ืœ"ืืคืก ื˜ืขื•ื™ื•ืช". ื”ื˜ืจื™ืง ื”ื•ื ืฉื›ืžื• ื‘ืžืขืจื›ื•ืช, ืื™ ืืคืฉืจ ืœื”ื—ื–ื™ืง ื‘ืžืงืœ ื‘ืฉื ื™ ื”ืงืฆื•ื•ืช. ืืคืก ื˜ืขื•ื™ื•ืช ืžื›ืชื™ื‘ ื”ืชืงื“ืžื•ืช ืื™ื˜ื™ืช ื™ื•ืชืจ ื•ืžืขื˜ ืžืื•ื“ ื—ื“ืฉื ื•ืช. ืœืจื•ื‘ ื”ืžืชื›ื ืชื™ื ื•ื”ืžืชื›ื ืชื•ืช ืฉืื ื™ ืžื›ื™ืจ, ืžื“ื™ื ื™ื•ืช ืฉืœ ืืคืก ื˜ืขื•ื™ื•ืช ื‘ืงืจื™ื™ืจื” ืœื ืฉื•ื•ื” ืืช ื”ืžืืžืฅ.

ToCode
1 419
# ื”ื™ื•ื ืœืžื“ืชื™: ื’ื™ื˜ ืจื™ื‘ื™ื™ืก ื• Merge Commits ื”ื“ื‘ืจ ืฉืื ื™ ื”ื›ื™ ืื•ื”ื‘ ื‘ืขื‘ื•ื“ื” ืขื ืœืงื•ื—ื•ืช ื”ื•ื ื›ืฉืžืชืงื™ืœื™ื ืื•ืชื™ ื‘ืฉืืœื” ืฉืœื ื—ืฉื‘ืชื™ ืขืœื™ื” ืœืคื ื™. ื›ืš ื”ื™ื” ื›ืฉืขื–ืจืชื™ ื”ื™ื•ื ืœืœืงื•ื— ืขื ื’ื™ื˜ ื•ื‘ื“ืจืš ืœืžื“ืชื™ ืขืœ ืžืชื’ ืกื•ืคืจ ืฉื™ืžื•ืฉื™ ืฉืœ rebase. ## ื ืงื•ื“ืช ื”ื”ืชื—ืœื” ื”ืกื™ืคื•ืจ ืฉืœื ื• ืžืชื—ื™ืœ ื‘ืขื ืฃ, ื•ื™ื•ืชืจ ืžื“ื•ื™ืง ืขื ืฃ ืฉื—ื™ ื•ืขื•ื‘ื“ื™ื ืขืœื™ื• ืœืื•ืจืš ื–ืžืŸ. ื‘ื’ืœืœ ืฉื”ืขื ืฃ ื”ืจืืฉื™ ื’ื ืžืชืงื“ื ื‘ื–ืžืŸ ื”ื–ื”, ืœืคืขืžื™ื ืจื•ืฆื™ื ืœืขืฉื•ืช merge ืžื”ืขื ืฃ ื”ืจืืฉื™ ื—ื–ืจื” ืœืชื•ืš ืขื ืฃ ื”ืคื™ืชื•ื—, ื›ื“ื™ ืœื ืœืฆื‘ื•ืจ ืคืขืจ "ื’ื“ื•ืœ ืžื“ื™" ื•ืœื ืœืงื‘ืœ ื™ื•ืชืจ ืžื“ื™ ืฉื™ื ื•ื™ื™ื ื›ืฉื ืฆื˜ืจืš ืœืžื–ื’ ืืช ื”ืคื™ืฆ'ืจ ื‘ืกื•ืฃ ื”ืคื™ืชื•ื—. ืœื•ื’ ื˜ื™ืคื•ืกื™ ืฉืœ ื›ื–ื” ืžืื’ืจ ื™ื›ื•ืœ ืœื”ื™ืจืื•ืช ื›ืš:
* 2fa580d (main) m12
* e026ae8 m11
* df2c82f m10
| * 8056178 (HEAD -> feature) d6
| * 778c404 d5
| *   a6fff44 Merge branch 'main' into feature
| |\
| |/
|/|
* | 80586ce hotfix1
| * a0d9a73 d4
| * 61e4ba0 d3
| * 6ae739d d2
| * 4a0a511 d1
|/
* 09ac820 c3
* ede6816 c2
* 8197d89 c1
ืขื ืฃ ื”ืคื™ืชื•ื— ื”ื•ื feature ื•ื”ื•ื ื™ื•ืฆื ืž c3. ื‘ืืžืฆืข ื”ื™ื” ืœื ื• ืงื•ืžื™ื˜ ืขื ื”ื˜ืงืกื˜ hotfix1 ื‘ main ื•ืื•ืชื• ื’ื ืœืงื—ื ื• ืœืขื ืฃ ื”ืคื™ืชื•ื— ื‘ืžื™ื–ื•ื’ ืฉืงืจื” ืื—ืจื™ d4, ื•ืื—ืจื™ ืื•ืชื• ืžื™ื–ื•ื’ ื”ืขื ืฃ ื”ืจืืฉื™ ื”ืชืงื“ื ืขื m10 ื• m11, ื•ืขื ืฃ ื”ืคื™ืชื•ื— ื”ืชืงื“ื ืขื d5 ื• d6. ## ื”ืฆืจื•ืช ืžืชื—ื™ืœื•ืช ืขื›ืฉื™ื• ืื ื—ื ื• ืฉื•ืœื—ื™ื Pull Request ื•ืžื™ ืฉืขื•ื‘ืจ ืขืœื™ื” ืœื ืžืจื•ืฆื” ืžื›ืœ ื”ืงื•ืžื™ื˜ื™ื. ื”ื ืžื‘ืงืฉื™ื ืœืžื–ื’ ืืช d1, d2 ื• d3 ืœืงื•ืžื™ื˜ ื™ื—ื™ื“ ื•ืœืฉื ื•ืช ืืช ื”ื˜ืงืกื˜ ืฉืœ d5. ื‘ืฉื‘ื™ืœ ื–ื” ืื ื™ ืžืคืขื™ืœ ืคืงื•ื“ืช ืจื™ื‘ื™ื™ืก ืื™ื ื˜ืจืงื˜ื™ื‘ื™:
$ git switch feature
$ git rebase -i --onto 09ac820 09ac820
ืื ื™ ื‘ื•ื—ืจ ืืช ื”ืคืงื•ื“ื•ืช ื”ื ื›ื•ื ื•ืช ื‘ืจื™ื‘ื™ื™ืก ื•ืžื•ื•ื“ื ื‘ืœื•ื’ ืฉื”ื›ืœ ืชืงื™ืŸ:
$ git log --oneline --graph
* a877c74 (HEAD -> feature) d6
* b3247e7 fixed text for d5
* c574ede hotfix1
* ddb80ac d4
* 24b7b77 d1
* 09ac820 c3
* ede6816 c2
* 8197d89 c1
ื•ืžืžื–ื’ ืืช ื”ืชื•ืฆืื” ืœ main:
$ git switch main
$ git merge feature
ืื‘ืœ ืขื›ืฉื™ื• ื”ืœื•ื’ ืฉืœื™ ืฉื‘ื•ืจ:
*   9b5f10a (HEAD -> main) Merge branch 'feature'
|\
| * a877c74 (feature) d6
| * b3247e7 fixed text for d5
| * c574ede hotfix1
| * ddb80ac d4
| * 24b7b77 d1
* | 2fa580d m12
* | e026ae8 m11
* | df2c82f m10
* | 80586ce hotfix1
|/
* 09ac820 c3
* ede6816 c2
* 8197d89 c1
ื”ื‘ืขื™ื” ื”ื™ื ืฉ hotfix ืžื•ืคื™ืข ื’ื ื‘ืขื ืฃ ื”ืจืืฉื™ ื•ื’ื ื‘ืขื ืฃ ื” feature ื‘ืชื•ืจ ืงื•ืžื™ื˜ ื›ืคื•ืœ, ื‘ืžืงื•ื ืœืจืื•ืช merge ืžืกื•ื“ืจ ืž main ืœ feature. ## ืชื™ืงื•ืŸ ืคืฉื•ื˜ ืขื rebase-merges ืžืชื’ ื”ืคืœื ืœืจื™ื‘ื™ื™ืก ืฉืžืชืงืŸ ืืช ื”ื‘ืœืื’ืŸ ื ืงืจื --rebase-merges ืื• ื‘ืงื™ืฆื•ืจ -r. ื›ืฉืื ื™ ืžืขื‘ื™ืจ ืื•ืชื• ืžืกืš ื”ืจื™ื‘ื™ื™ืก ื”ืื™ื ื˜ืจืงื˜ื™ื‘ื™ ื›ื•ืœืœ ื’ื ืืช ื” Merge Commits. ื–ื” ื ืจืื” ื›ื›ื”:
$ git rebase --rebase-merges -i --onto 09ac820 09ac820
ื•ื”ืชื•ืฆืื”:
label onto

# Branch main
reset onto
pick 80586ce hotfix1 # empty
label main

reset onto
pick 4a0a511 d1 # empty
pick 6ae739d d2 # empty
pick 61e4ba0 d3 # empty
pick a0d9a73 d4 # empty
merge -C a6fff44 main # Merge branch 'main' into feature
pick 778c404 d5 # empty
pick 8056178 d6 # empty
ื”ื‘ืœื•ืง ื”ืขืœื™ื•ืŸ ืžื’ื“ื™ืจ ืฉืื ื—ื ื• ืจื•ืฆื™ื ืœืงื—ืช ืืช ื”ืงื•ืžื™ื˜ hotfix1 ื•ืœืงืจื•ื ืœื• main. ื‘ื‘ืœื•ืง ื”ืชื—ืชื•ืŸ ืคืงื•ื“ืช ื” merge ืื•ืžืจืช ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื™ืฆื•ืจ merge commit ืขื ื”ืงื•ืžื™ื˜ hotfix1. ื›ืฉืื ื™ ื‘ื•ื—ืจ ืืช ื”ื”ื•ืจืื•ืช ื”ื ื›ื•ื ื•ืช ื‘ืจื™ื‘ื™ื™ืก ื”ืคืขื ืื ื™ ืžืงื‘ืœ ืืช ืจืฉื™ืžืช ื”ื”ื•ืจืื•ืช:
label onto

# Branch main
reset onto
pick 80586ce hotfix1 # empty
label main

reset onto
pick 4a0a511 d1 # empty
s 6ae739d d2 # empty
s 61e4ba0 d3 # empty
pick a0d9a73 d4 # empty
merge -C a6fff44 main # Merge branch 'main' into feature
r 778c404 d5 # empty
pick 8056178 d6 # empty
ื•ืื—ืจื™ ืžื™ื–ื•ื’ ืœ main ื ืงื‘ืœ:
*   e4c1e0c (HEAD -> main) Merge branch 'feature'
|\
| * bcbb528 (feature) d6
| * 4ef376c fixed text for d5
| *   ed81791 Merge branch 'main' into feature
| |\
| * | 35db291 d4
| * | 7296128 d1
* | | 2fa580d m12
* | | e026ae8 m11
* | | df2c82f m10
| |/
|/|
* | 80586ce hotfix1
|/
* 09ac820 c3
* ede6816 c2
* 8197d89 c1
ื•ื–ื• ื‘ื“ื™ื•ืง ื”ื”ื™ืกื˜ื•ืจื™ื” ื”ื ื›ื•ื ื” ืคืจื˜ ืœืงื•ืžื™ื˜ื™ื ืฉืขืจื›ื ื• ืขื ื”ืจื™ื‘ื™ื™ืก.

ToCode
1 419
$ wc /etc/shells
      12      32     209 /etc/shells
ื”ืฉื•ืจื•ืช ื•ื”ืžื™ืœื™ื ื™ืฆืื• ื‘ืกื“ืจ, ืื‘ืœ ื‘ืชื•ื•ื™ื ื™ืฉ ืœื™ ื‘ืขื™ื” - ื”ืคื•ื ืงืฆื™ื” length ืžื—ื–ื™ืจื” ื›ืžื” ืชื•ื•ื™ื ื™ืฉ ื‘ืฉื•ืจื” ืื‘ืœ ืœื ืกื•ืคืจืช ืืช ืชื• ื™ืจื™ื“ืช ื”ืฉื•ืจื” ืฉื‘ืกื•ืคื”, ื‘ื ื™ื’ื•ื“ ืœ wc ืฉื›ืŸ ื›ื•ืœืœ ืื•ืชื•. ืื ื™ ืžืชืงืŸ ื•ืžืงื‘ืœ:
$ awk '// { words += NF; chars += 1 + length } END { printf "Lines: %d, Words: %d, Chars: %d\n", NR, words, chars }' /etc/shells
Lines: 12, Words: 32, Chars: 209
ื•ืคื” ืื ื—ื ื• ื’ื ืœื•ืžื“ื™ื ืฉืืคืฉืจ ืœื”ืขื‘ื™ืจ ืœ awk ืฉื ืงื•ื‘ืฅ, ื•ืื– ื”ื•ื ื™ืงืจื ืืช ื”ืฉื•ืจื•ืช ืžื”ืงื•ื‘ืฅ ื‘ืžืงื•ื ืžื”ืงืœื˜ ื”ืกื˜ื ื“ืจื˜ื™. ## ืฉื™ื ื•ื™ ืชื• ื”ื”ืคืจื“ื” ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ awk ื”ื™ื ืœื”ืคืจื™ื“ ื‘ื™ืŸ ืžื™ืœื™ื ื‘ืืžืฆืขื•ืช ืจื•ื•ื—ื™ื. ืื ื ืขื‘ื™ืจ ืœ awk ืืช ื”ืžืชื’ -F ื ื•ื›ืœ ืœืงื‘ื•ืข ื›ืœ ืชื• ื”ืคืจื“ื” ืื—ืจ ืฉื ืจืฆื”. ืœื“ื•ื’ืžื” ื›ืฉื™ืฉ ืœื™ ืจืฉื™ืžืช ืงื‘ืฆื™ื ื‘ืชื™ืงื™ื” ืื ื™ ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืชื• ื”ืคืจื“ื” ื ืงื•ื“ื” ื›ื“ื™ ืœื”ื“ืคื™ืก ืจืง ืืช ืฉื ื”ืงื•ื‘ืฅ ื‘ืœื™ ื”ืกื™ื•ืžืช:
$ ls | awk -F . '{print $1}'
## ื”ืคืงื•ื“ื” system ื•ืฉื™ื ื•ื™ ืฉืžื•ืช ื‘ืจืฉื™ืžื” ืฉืœ ืงื‘ืฆื™ื ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืžื ื’ื ื•ืŸ ื”ื–ื” ื›ื“ื™ ืœื”ื—ืœื™ืฃ ืกื™ื•ืžื•ืช ืฉืœ ืžืกืคืจ ืงื‘ืฆื™ื ื‘ืคืงื•ื“ื” ืื—ืช. ื”ืคื•ื ืงืฆื™ื” system ืฉืœ awk ืžืืคืฉืจืช ืœื”ืคืขื™ืœ ืคืงื•ื“ืช ืžืขืจื›ืช. ืœืžืฉืœ ืื ื™ ื™ื›ื•ืœ ืœื›ืชื•ื‘:
$ ls | awk 'END { system("cowsay " NR) }'
ื•ืœืงื‘ืœ ืคืœื˜ ื›ืžื•:
 ____
< 24 >
 ----
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
ื‘ืื•ืชื• ืื•ืคืŸ ืื ื™ ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ mv ื›ื“ื™ ืœืฉื ื•ืช ืฉืžื•ืช, ื•ืœื”ืคืขื™ืœ ืืช ื” system ื‘ื›ืœ ืฉื•ืจืช ืงืœื˜ ืฉื™ืฉ ื‘ื” ืงื•ื‘ืฅ. ื”ื“ื•ื’ืžื” ื”ื‘ืื” ืžื—ืœื™ืคื” ืืช ื›ืœ ื”ืงื‘ืฆื™ื ืžืกื•ื™ืžืช txt ืœืกื™ื•ืžืช md:
$ ls *.txt | awk -F . '{ system("mv " $0 " " $1 ".md") }'
ื”ืคืจืžื˜ืจ ืฉื”ืขื‘ืจืชื™ ืœ system ื”ื•ื ืžื—ืจื•ื–ืช ืื—ืช ืฉื”ื•ืจื›ื‘ื” ื‘ืฆื•ืจื” ื“ื™ื ืžื™ืช, ื‘ื’ืœืœ ืฉื‘ awk ืจื•ื•ื— ื”ื•ื ืชื• ืฉืจืฉื•ืจ ืžื—ืจื•ื–ื•ืช. ื”ืจื‘ื” ืคืขืžื™ื ื ื•ื— ืœื”ืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื” sprintf ื›ื“ื™ ืœื‘ื ื•ืช ืžื—ืจื•ื–ื•ืช ื›ืืœื” ื‘ืฆื•ืจื” ืงืฆืช ื™ื•ืชืจ ืคืฉื•ื˜ื”:
$ ls *.txt | awk -F . '{ system(sprintf("mv \"%s\" \"%s%s\"", $0, $1, ".md")) }'
## ืœื•ืœืื•ืช ื•ื—ื™ืฉื•ื‘ ืชื“ื™ืจื•ืช ืฉืœ ืžื™ืœื™ื ื•ืขื•ื“ ืžืขื ื™ื™ืŸ ืœื’ืœื•ืช ืฉ awk ื™ื›ื•ืœื” ืœื”ื™ื•ืช ืžืžืฉ ืฉืคืช ืชื›ื ื•ืช, ืขื ืžืขืจื›ื™ื ื•ืœื•ืœืื™ื ื•ืืคื™ืœื• ืžื™ืœื•ื ื™ื. ื”ื“ื•ื’ืžื” ื”ืื—ืจื•ื ื” ืฉืœื ื• ืชืฉืœื‘ ืืช ื”ื™ื›ื•ืœื•ืช ื”ืืœื” ื›ื“ื™ ืœื—ืฉื‘ ืชื“ื™ืจื•ืช ื”ื•ืคืขื” ืฉืœ ืžื™ืœื™ื ื‘ืงืœื˜: ื ื›ืชื•ื‘ ืชื•ื›ื ื™ืช awk ืฉืžืงื‘ืœืช ืงื•ื‘ืฅ ื•ืžื“ืคื™ืกื” ื›ืžื” ืคืขืžื™ื ื›ืœ ืžื™ืœื” ืžื•ืคื™ืขื” ื‘ื•. ื”ืžืฉื—ืง ื›ืืŸ ื”ื•ื ืœื—ืœืง ืืช ื”ืงื•ื‘ืฅ ืœืžื™ืœื™ื, ื•ืื– ืœืจื•ืฅ ื‘ืœื•ืœืื” ืขืœ ื›ืœ ื”ืžื™ืœื™ื ื•ืœืฉืžื•ืจ ื›ืœ ืžื™ืœื” ื‘ืžื™ืœื•ืŸ, ื›ืืฉืจ ื”ืžืคืชื— ื”ื•ื ื”ืžื™ืœื” ื•ื”ืขืจืš ื”ื•ื ื›ืžื” ืคืขืžื™ื ื”ื™ื ืžื•ืคื™ืขื”. ื‘ืคืขื ื”ืจืืฉื•ื ื” ืฉืื ื—ื ื• ื ืชืงืœื™ื ื‘ืžื™ืœื” ื”ื™ื ืชื™ื›ื ืก ืœืžื™ืœื•ืŸ ืขื ืขืจืš 1, ื•ืื ื”ื™ื ื›ื‘ืจ ื‘ืžื™ืœื•ืŸ ืื– ื”ืขืจืš ื™ืขืœื” ื‘-1 ื›ืœ ืคืขื ืฉื ื™ืชืงืœ ื‘ื” ืฉื•ื‘. ื›ื“ื™ ืœื”ืฉืชืžืฉ ื‘ืžื™ืœื•ืŸ ื‘ awk ืื ื™ ื™ื›ื•ืœ ืœื”ื•ืกื™ืฃ ืœืฉื ืžืฉืชื ื” ืกื•ื’ืจื™ื™ื ืžืจื•ื‘ืขื™ื ื‘ื›ืชื™ื‘ื”. ืœื“ื•ื’ืžื” ืื ืื ื™ ืžืกืชื›ืœ ืจืง ืขืœ ื”ืžื™ืœื” ื”ืจืืฉื•ื ื” ืื ื™ ื™ื›ื•ืœ ืœื›ืชื•ื‘ ืงื•ื“ ื›ื–ื”:
$ awk '{ COUNT[$1] += 1 }'
ืื ื—ื ื• ื›ืžื•ื‘ืŸ ืจื•ืฆื™ื ืžืฉื”ื• ื™ื•ืชืจ ืžืชื•ื—ื›ื. ื‘ืžืงื•ื ืœืฉืžื•ืจ ืจืง ืืช ื”ืžื™ืœื” ื”ืจืืฉื•ื ื” ืื ื™ ืจื•ืฆื” ืœืฉืžื•ืจ ืืช ื›ืœ ื”ืžื™ืœื™ื ื‘ืฉื•ืจื”, ื•ื‘ืฉื‘ื™ืœ ื–ื” ืื ื™ ืžืฉืชืžืฉ ื‘ืœื•ืœืื”. ื‘ awk ื”ืคืงื•ื“ื” for ืขื•ื‘ื“ืช ื‘ืชื•ืš ื‘ืœื•ืง ื”ืคืงื•ื“ื” ื‘ื“ื™ื•ืง ื›ืžื• ืฉื”ื™ื™ืชื ืžืฆืคื™ื ืž c, ื•ืœื›ืŸ ืื ื™ ื™ื›ื•ืœ ืœื›ืชื•ื‘:
$ awk '{ for(i=1; i<=NF; i++) { COUNT[$i] += 1 } }'
ื”ืคืขืœื” ื›ื–ืืช ืชืจื•ืฅ ืขืœ ื›ืœ ืฉื•ืจื•ืช ื”ืงืœื˜, ืชืคืฆืœ ื›ืœ ืฉื•ืจื” ืœืžื™ืœื™ื ื•ืชืฉืžื•ืจ ื‘ืžื™ืœื•ืŸ ืœื›ืœ ืžื™ืœื” ื›ืžื” ืคืขืžื™ื ื”ื™ื ื”ื•ืคื™ืขื”. ื ืฉืืจ ืœื™ ืจืง ืœื”ื“ืคื™ืก ืืช ื”ืžื™ืœื•ืŸ ื‘ืกื™ื•ื, ื•ื‘ืฉื‘ื™ืœ ื–ื” ืื ื™ ืฆืจื™ืš ืœื”ืฉืชืžืฉ ื‘ืขื•ื“ ืœื•ืœืื”. ื”ืคืขื ืื ื™ ืจื•ืฆื” ืœืจื•ืฅ ืขืœ ืžื™ืœื•ืŸ ื•ืœื›ืŸ ืžืฉืชืžืฉ ื‘ืœื•ืœืืช for ... in:
$ awk '{ for(i=1; i<=NF; i++) { COUNT[$i] += 1 } } END { for (word in COUNT) { print word " appeared " COUNT[word] " times" } }'
## ืื™ืคื” ืœืœืžื•ื“ ืขื•ื“ ื‘ืคื•ืกื˜ ื–ื” ื›ื™ืกื™ืชื™ ืจืง ื—ืœืง ืงื˜ืŸ ืžื”ื™ื›ื•ืœื•ืช ืฉืœ awk ื›ื“ื™ ืœืชืช ืœื›ื ื˜ืขื™ืžื” ืžืžื” ืฉื”ืคืงื•ื“ื” ืžืกื•ื’ืœืช ืœืขืฉื•ืช. ืื ื”ื“ื•ื’ืžืื•ืช ืคื” ื’ืจืžื• ืœื›ื ืœื”ืจื’ื™ืฉ ืฉื–ื” ื”ื›ืœื™ ื”ื˜ื•ื‘ ื‘ืขื•ืœื ื•ืฉืฉื•ื•ื” ืœื”ืฉืงื™ืข ื‘ื• ื™ื•ืชืจ - ืื– ืชืฉืžื—ื• ืœืฉืžื•ืข ืฉืืชื ื‘ื—ื‘ืจื” ื˜ื•ื‘ื”. ื”ื ื” ื›ืžื” ืžืงื•ืจื•ืช ืœื™ืžื•ื“ ืขืœ awk ืฉื™ืขื–ืจื• ืœื›ื ืœื”ืžืฉื™ืš ืœื”ืชืืžืŸ ืขืœื™ื•: 1. ื”ื’ื™ืจืกื” ืฉืœ awk ืฉืžื’ื™ืขื” ืขื ื”ืจื‘ื” ืžืขืจื›ื•ืช ื™ื•ื ื™ืงืก ื ืงืจืืช gawk. ืกืคืจ ื”ื”ื“ืจื›ื” ืฉืœื”ื ืžืขื•ืœื”: https://www.gnu.org/software/gawk/manual/gawk.html 2. ื”ืžื“ืจื™ืš Handy One Line Scripts For Awk ืฉืœ ืืจื™ืง ืคืžื ื˜ ื›ื•ืœืœ ืื™ื ืกื•ืฃ ืจืขื™ื•ื ื•ืช ื™ืฆื™ืจืชื™ื™ื ืœืฉื™ืžื•ืฉ ื‘ awk: https://www.pement.org/awk/awk1line.txt

ToCode
1 419
ืจืื™ื ื• ื›ื‘ืจ ืืช ื”ืชื ืื™ ื”ืžื™ื•ื—ื“ END, ื•ืชืฉืžื—ื• ืœืฉืžื•ืข ืฉื™ืฉ ืœื• ื—ื‘ืจ - ื”ืชื ืื™ ื”ืžื™ื•ื—ื“ BEGIN. ื‘ BEGIN ื ืฉืชืžืฉ ื›ืฉื ืจืฆื” ืœืขืฉื•ืช ืžืฉื”ื• ืœืคื ื™ ืฉื•ืจืช ื”ืงืœื˜ ื”ืจืืฉื•ื ื”, ืœืžืฉืœ ืื ื™ ื™ื›ื•ืœ ืœื“ืžื™ื™ืŸ ื‘ืื•ืชื” ืคืงื•ื“ื” ืžืงื•ื“ืช ืฉืื ื™ ืจื•ืฆื” ืœื”ื“ืคื™ืก ืฉื•ืจื•ืช ื›ื•ืชืจื•ืช ืžื™ื•ื—ื“ื•ืช ืœื›ืœ ืขืžื•ื“ื” ื‘ื˜ื‘ืœื”. ื‘ืžืฆื‘ ื›ื–ื” ืื ื™ ืžืฉืชืžืฉ ื‘ BEGIN ื‘ืื•ืคืŸ ื”ื‘ื:
ls -l | awk 'BEGIN { printf "%-41s | %-20s | %-13s\n", "Name", "Owner", "Permissions" } /^d/ { printf "Directory: %-30s | Owned By: %-10s | Permissions: %-10s\n", $9, $3, $1 }'
ื•ื”ืชื•ืฆืื”:
Name                                      | Owner                | Permissions
Directory: app                            | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: bin                            | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: config                         | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: db                             | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: design                         | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: doc                            | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: engines                        | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: lib                            | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: log                            | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: public                         | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: storage                        | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: test                           | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: tmp                            | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: vendor                         | Owned By: ynonp      | Permissions: drwxr-xr-x
ืคื” ืชื”ื™ื” ื ืงื•ื“ื” ื˜ื•ื‘ื” ืœืงื—ืช ื ืฉื™ืžื” ื•ืœืฉื™ื ืœื‘ ืฉื”ืชื•ื›ื ื™ืช ืฉืœื ื• ืžืชื—ื™ืœื” ืœื”ืกืชื‘ืš. ื‘ืžืฆื‘ ื›ื–ื” ืžืฉืชืœื ืœื”ื•ืฆื™ื ืืช ื”ืชื•ื›ื ื™ืช ืœืงื•ื‘ืฅ ื˜ืงืกื˜ ื—ื™ืฆื•ื ื™, ื•ื›ื›ื” ื™ื”ื™ื” ื™ื•ืชืจ ืงืœ ืœืชื—ื–ืง ืื•ืชื” ื•ืœื”ื•ืกื™ืฃ ืขื•ื“ ื‘ืœื•ืงื™ื. ืื ื™ ื™ื•ืฆืจ ืงื•ื‘ืฅ ื‘ืฉื info.awk ืขื ื”ืชื•ื›ืŸ ื”ื‘ื:
BEGIN {
  printf "%-41s | %-20s | %-13s\n", "Name", "Owner", "Permissions";
  printf "======================================================================================================\n";
}

/^d/  {
  printf "Directory: %-30s | Owned By: %-10s | Permissions: %-10s\n", $9, $3, $1
}
ื•ืžืคืขื™ืœ ืืช ื” awk ืฉืœื™ ืขื ื”ืคืงื•ื“ื”:
$ ls -l | awk -f info.awk
ื›ืฉืžืขื‘ื™ืจื™ื -f ื•ืื– ืฉื ืงื•ื‘ืฅ ืœ awk ืื– ื”ื•ื ืงื•ืจื ืืช ื”ืชื•ื›ื ื™ืช ืžืงื•ื‘ืฅ ื—ื™ืฆื•ื ื™. ืฉื ื™ ื”ืžืฉืชื ื™ื ื”ืžื™ื•ื—ื“ื™ื ื”ื‘ืื™ื ื‘ืจืฉื™ืžื” ืฉืœื™, NF ื• NR, ื’ื ื™ื›ื•ืœื™ื ืœืขื–ื•ืจ ืœื ื• ื‘ืชื ืื™ื ืื• ื‘ืคืงื•ื“ื•ืช. ื”ืžืฉืชื ื” NR ืžื—ื–ื™ืง ืชืžื™ื“ ืืช ืžืกืคืจ ื”ืฉื•ืจื” ื”ื ื•ื›ื—ื™ืช, ื• NF ืืช ืžืกืคืจ ื”ืžื™ืœื™ื ื‘ืฉื•ืจื”. ืขื›ืฉื™ื• ื›ืฉืื ื™ ื™ื•ื“ืข ืืช ืžืกืคืจ ื”ืฉื•ืจื” ื”ื ื•ื›ื—ื™ืช ืื ื™ ื™ื›ื•ืœ ืœื›ืชื•ื‘ ืชื•ื›ื ื™ืช awk ืฉืชื—ืงื” ืืช ื”ื”ืชื ื”ื’ื•ืช ืฉืœ head, ื›ืœื•ืžืจ ืชื“ืคื™ืก ืจืง 10 ืฉื•ืจื•ืช ืจืืฉื•ื ื•ืช ืžื”ืงืœื˜:
$ man bash| awk 'NR < 10 { print }'
ื•ืฉืžืชื ืœื‘ ืื ื™ ืžืงื•ื•ื” ืื™ืš ื”ื•ืจื“ืชื™ ืืช ื” $0 ื•ื”ืคืขืœืชื™ print ืœืœื ืคืจืžื˜ืจื™ื? ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ print ื›ืฉืœื ืžืขื‘ื™ืจื™ื ืคืจืžื˜ืจื™ื ื”ื™ื ืœื”ื“ืคื™ืก ืืช ื”ืฉื•ืจื” ื”ืžืœืื”. ื•ืžื” ืขื NF? ื”ื•ื ื™ืขื–ื•ืจ ืœื ื• ื‘ื“ื•ื’ืžื” ื”ื‘ืื” ื›ืฉื ืจืฆื” ืœื‘ื ื•ืช ืืช wc. ## ื”ืคื•ื ืงืฆื™ื” length ื ืžืฉื™ืš ืœื“ื•ื’ืžื” ื ื•ืกืคืช ืขื awk, ื•ื”ืคืขื ื ืจืฆื” ืœื‘ื ื•ืช wc ื‘ืขื–ืจืช awk, ื›ืœื•ืžืจ ืื ื™ ืจื•ืฆื” ืชื•ื›ื ื™ืช awk ืฉืชื“ืคื™ืก ื›ืžื” ืฉื•ืจื•ืช, ืชื•ื•ื™ื ื•ืžื™ืœื™ื ื™ืฉ ื‘ืงืœื˜. ืื ื™ ื™ื•ื“ืข ืฉืžืกืคืจ ื”ืฉื•ืจื” ื”ื ื•ื›ื—ื™ืช ืฉืœื™ ื”ื•ื NR, ื•ืœื›ืŸ ื‘ืกื•ืฃ ื”ืงืœื˜ ืžืฉืชื ื” ื–ื” ื™ื—ื–ื™ืง ื‘ื“ื™ื•ืง ืืช ืžืกืคืจ ื”ืฉื•ืจื•ืช ืฉื”ื™ื• ื‘ืงืœื˜. ืื ื™ ื’ื ื™ื•ื“ืข ืฉืžืกืคืจ ื”ืžื™ืœื™ื ื‘ืฉื•ืจื” ืฉืœื™ ื”ื•ื NF, ื•ืœื›ืŸ ืื ื™ ื™ื›ื•ืœ ืœืกื›ื•ื ืืช NF ืฉืœ ื›ืœ ืฉื•ืจื” ื•ืœื”ื“ืคื™ืก ืื•ืชื• ื‘ืกื•ืฃ ื”ืงืœื˜ ื›ื“ื™ ืœืงื‘ืœ ืืช ืžืกืคืจ ื”ืžื™ืœื™ื ื”ื›ื•ืœืœ ื‘ืงืœื˜. ืฉื™ืœื•ื‘ ืฉื ื™ ื”ื“ื‘ืจื™ื ืžืชืจื’ื ืœ awk ื”ื‘ื:
$ cat /etc/shells | awk '// { words += NF } END { printf "Lines: %d, Words: %d, Chars: %d\n", NR, words, chars }'
ืœื—ื™ืฉื•ื‘ ืžืกืคืจ ื”ืชื•ื•ื™ื ืื ื™ ืžืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื” length ืฉืœ awk, ืฉืžื—ื–ื™ืจื” ืœื™ ืืช ืžืกืคืจ ื”ืชื•ื•ื™ื ื‘ืฉื•ืจื” ืื• ื‘ืžื™ืœื” ืฉื”ื™ื ืงื™ื‘ืœื” ื›ืงืœื˜. ื‘ืžืงืจื” ืฉืœื ื•:
$ cat /etc/shells | awk '// { words += NF; chars += length } END { printf "Lines: %d, Words: %d, Chars: %d\n", NR, words, chars }'
ืื‘ืœ ืื ืชื‘ื“ืงื• ืชื’ืœื• ืฉื”ืชื•ืฆืื” ืœื ื–ื”ื” ืœ wc. ื›ื›ื” ื ืจืื™ืช ืืฆืœื™ ื”ืคืขืœื” ืฉืœ wc ืขืœ ืื•ืชื• ืงื•ื‘ืฅ ืงืœื˜:

ToCode
1 419
$ ls -l | awk '/^d/ { count += 1 } END { print count }'
ื•ื–ื” ื›ื‘ืจ ื ื•ืชืŸ ืœื™ ื”ื“ืคืกื” ืื—ืช ืฉืœ ื”ืžืกืคืจ 25. ื‘ืขื–ืจืช ืžืฉืชื ื™ื ืื ื™ ื™ื›ื•ืœ ืœื‘ืฆืข ืขื•ื“ ืื™ื ืกื•ืฃ ื—ื™ืฉื•ื‘ื™ื ื™ืฆื™ืจืชื™ื™ื. ืื ื ื™ืฉืืจ ืขื ื”ืคืœื˜ ืฉืœ ls -l, ืื ื™ ื™ื›ื•ืœ ืœื”ื™ื–ื›ืจ ืฉื”ืžื™ืœื” ื”ื—ืžื™ืฉื™ืช ื‘ืคืœื˜ ื”ื™ื ื’ื•ื“ืœ ื”ืงื•ื‘ืฅ, ื•ืœื—ืฉื‘ ืืช ืกื›ื•ื ื”ื’ื“ืœื™ื ืฉืœ ื›ืœ ื”ืงื‘ืฆื™ื ื‘ืชื™ืงื™ื”:
$ ls -l | awk '/^-/ { size += $5 } END { print size }'
ืฉื™ืžื• ืœื‘ ืฉืฉื™ื ื™ืชื™ ืืช ื”ืชื ืื™ ื›ื“ื™ ืœืกืคื•ืจ ื’ื“ืœื™ื ืจืง ืฉืœ ืฉื•ืจื•ืช ืฉืžื™ื™ืฆื’ื•ืช ืงื‘ืฆื™ื, ื›ื™ ืื ื™ ื™ื•ื“ืข ืฉืฉื•ืจื” ืฉืžื™ื™ืฆื’ืช ืงื•ื‘ืฅ ืžืชื—ื™ืœื” ื‘ืกื™ืžืŸ -. ## ืคืงื•ื“ื•ืช ื”ื“ืคืกื” print, printf ื ื ืกื” ืขื•ื“ ืคืงื•ื“ืช ื”ื“ืคืกื”:
$ ls -l | awk '/^d/ { print "Directory: " $9, "Owned By " $3, "Permissions: " $1 }'
ื”ืคืขื ืื ื™ ืžืขื‘ื™ืจ ืœ print ืฉืœื•ืฉื” ื‘ื™ื˜ื•ื™ื™ื: ื”ืจืืฉื•ืŸ ื”ื•ื "Directory: " $9, ื”ืฉื ื™ ื”ื•ื "Owned By " $3 ื•ื”ืฉืœื™ืฉื™ "Permissions: " $1. ื”ื‘ื™ื˜ื•ื™ื™ื ืžื•ืคืจื“ื™ื ื‘ืคืกื™ืงื™ื, ื•ื›ืœ ื‘ื™ื˜ื•ื™ ื›ื•ืœืœ ืฉืชื™ ืžื—ืจื•ื–ื•ืช ืžื•ืคืจื“ื•ืช ื‘ืจื•ื•ื—. ื‘ awk ืจื•ื•ื— ื”ื•ื ื‘ืขืฆื ืคืขื•ืœืช ืฉืจืฉื•ืจ ืžื—ืจื•ื–ื•ืช ื•ืœื›ืŸ ื”ืคืœื˜ ืฉืื ื™ ืžืงื‘ืœ ื”ื•ื:
Directory: app Owned By ynonp Permissions: drwxr-xr-x
Directory: bin Owned By ynonp Permissions: drwxr-xr-x
Directory: config Owned By ynonp Permissions: drwxr-xr-x
Directory: db Owned By ynonp Permissions: drwxr-xr-x
Directory: design Owned By ynonp Permissions: drwxr-xr-x
Directory: doc Owned By ynonp Permissions: drwxr-xr-x
Directory: engines Owned By ynonp Permissions: drwxr-xr-x
Directory: lib Owned By ynonp Permissions: drwxr-xr-x
Directory: log Owned By ynonp Permissions: drwxr-xr-x
Directory: public Owned By ynonp Permissions: drwxr-xr-x
Directory: storage Owned By ynonp Permissions: drwxr-xr-x
Directory: test Owned By ynonp Permissions: drwxr-xr-x
Directory: tmp Owned By ynonp Permissions: drwxr-xr-x
Directory: vendor Owned By ynonp Permissions: drwxr-xr-x
ื–ื” ื ืชืŸ ืœื™ ื”ืจื‘ื” ืื™ื ืคื•ืจืžืฆื™ื” ืขืœ ื”ืชื™ืงื™ื”, ืื‘ืœ ืœืคืงื•ื“ื” ื”ื–ื• ื™ืฉ ืฉืชื™ ื‘ืขื™ื•ืช: ื’ื ื”ื™ื” ืงืฉื” ืœื›ืชื•ื‘ ืื•ืชื”, ื•ื’ื - ื•ื™ื•ืชืจ ืžืขืฆื‘ืŸ - ื”ืคืœื˜ ืœื ืžืกื•ื“ืจ. ื‘ื›ืœ ืฉื•ืจื” ื”ืžื™ืœื™ื Owned By ื• Permissions ืžืชื—ื™ืœื•ืช ื‘ืžืงื•ื ืื—ืจ ืœืคื™ ืื•ืจืš ืฉื ื”ืงื•ื‘ืฅ. ื”ืคืงื•ื“ื” printf, ืฉืื•ืœื™ ืžื•ื›ืจืช ืœื›ื ืžืฉืคื•ืช ืชื›ื ื•ืช ืื—ืจื•ืช ื›ืžื• c ืื• perl, ืžืืคืฉืจืช ืœื”ืชืžื•ื“ื“ ืขื ื”ืžืฆื‘ ื”ื–ื” ื•ืœื›ืชื•ื‘ ืงื•ื“ awk ืฉืžื“ืคื™ืก ื“ื‘ืจื™ื ืงืฆืช ื™ื•ืชืจ ืžืชื•ื—ื›ืžื™ื. ืœื“ื•ื’ืžื” ื”ืคืงื•ื“ื”:
$ ls -l | awk '/^d/ { printf "Directory: %-30s | Owned By: %-10s | Permissions: %-10s\n", $9, $3, $1 }'
ืžื“ืคื™ืกื” ืœื™ ืืช ื”ืคืœื˜:
Directory: app                            | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: bin                            | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: config                         | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: db                             | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: design                         | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: doc                            | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: engines                        | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: lib                            | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: log                            | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: public                         | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: storage                        | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: test                           | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: tmp                            | Owned By: ynonp      | Permissions: drwxr-xr-x
Directory: vendor                         | Owned By: ynonp      | Permissions: drwxr-xr-x
ืœืžื™ื“ืข ื ื•ืกืฃ ืขืœ printf ืืคืฉืจ ืœื”ืกืชื›ืœ ื‘ื“ืฃ ื”ืชื™ืขื•ื“ ื›ืืŸ: https://alvinalexander.com/programming/printf-format-cheat-sheet/ ื‘ awk ืคืงื•ื“ืช printf ืœื ืžื•ืกื™ืคื” ื™ืจื™ื“ืช ืฉื•ืจื” ื‘ืฆื•ืจื” ืื•ื˜ื•ืžื˜ื™ืช ืื—ืจื™ ื›ืœ ื”ื“ืคืกื”, ื•ืœื›ืŸ ื”ื•ืกืคืชื™ ื‘ืขืฆืžื™ ืืช ื”ืกื™ืžืŸ \n ื‘ืกื•ืฃ ื”ื˜ืงืกื˜ ืฉืื ื™ ืžื“ืคื™ืก ื“ืจืš printf. ## ืžืฉืชื ื™ื ืžื™ื•ื—ื“ื™ื NF, NR, END, BEGIN

ToCode
1 419
# ืžื“ืจื™ืš awk ื”ื›ืœื™ awk ื”ื™ื” ืœืื•ืจืš ืฉื ื™ื ื•ืขื•ื“ื ื• ืื—ื“ ื”ื›ืœื™ื ื”ืžืจื›ื–ื™ื™ื ืœืขื™ื‘ื•ื“ ื˜ืงืกื˜ ื‘ืกื‘ื™ื‘ืช ื™ื•ื ื™ืงืก. ื”ื•ื ืคื•ืชื— ื‘ืฉื ื•ืช ื” 70 ื‘ื—ื‘ืจืช Bell Labs ืขืœ ื™ื“ื™ ืฉืœื•ืฉื” ืžืคืชื—ื™ื ืฉืฉืžื•ืชื™ื”ื ื ืชื ื• ืœื›ืœื™ ืืช ืฉืžื•: Alfred Aho, Peter Weinberger ื• Brian Kernighan. ื”ื™ื™ื—ื•ื“ื™ื•ืช ืฉืœ awk ื”ื™ื ืฉืžืฆื“ ืื—ื“ ื”ื•ื ื›ื•ืœืœ ืืœืžื ื˜ื™ื ืžืชืงื“ืžื™ื ืžืฉืคื•ืช ืชื›ื ื•ืช ื›ืžื• ืžืฉืชื ื™ื, ืžืขืจื›ื™ื, ืžื™ืœื•ื ื™ื ื•ืืคื™ืœื• ืืคืฉืจื•ืช ืœื”ื’ื“ื™ืจ ืคื•ื ืงืฆื™ื•ืช; ืื‘ืœ ืžืฆื“ ืฉื ื™ ื–ื” ื›ืœื™ ืกืงืจื™ืคื˜ื™ื ืฉื”ืฉื™ืžื•ืฉ ื‘ื• ืžืื•ื“ ืžืžื•ืงื“ ืœืคื™ืขื ื•ื— ื˜ืงืกื˜ื™ื. ื”ื™ื›ืจื•ืช ืขื awk ืชืืคืฉืจ ืœื ื• ืœื”ืขืœื•ืช ืืช ื”ืจืžื” ืฉืœ ื”ืกืงืจื™ืคื˜ื™ื ืฉืื ื—ื ื• ื›ื•ืชื‘ื™ื ื•ื’ื ืœืคืชื•ืจ ื‘ืขื™ื•ืช ื”ืงืฉื•ืจื•ืช ืœื˜ืงืกื˜ ื‘ืžื”ื™ืจื•ืช ื•ืžืฉื•ืจืช ื”ืคืงื•ื“ื”. ## ืžื‘ื ื” ืคืงื•ื“ืช awk ื‘ืœื•ืง awk ื‘ืกื™ืกื™ ืžื•ืจื›ื‘ ืžืฉื ื™ ื—ืœืงื™ื: ื”ื—ืœืง ื”ืจืืฉื•ืŸ ื ืงืจื ืชื ืื™ ืื• ืชื‘ื ื™ืช, ื•ื”ื—ืœืง ื”ืฉื ื™ ื ืงืจื ืคืงื•ื“ื”. ื‘ื”ืคืขืœื” ืฉืœ awk ื‘ืฆื•ืจื” ืื•ื˜ื•ืžื˜ื™ืช awk ื™ืงืจื ืืช ื”ืงืœื˜ ืฉื•ืจื” ืื—ืจื™ ืฉื•ืจื”, ื™ื ืกื” ืœื”ืชืื™ื ื›ืœ ืฉื•ืจื” ืœืชื ืื™ ืฉื™ืฉ ืœื• ื‘ืคืงื•ื“ื” ื•ืื ื”ืฉื•ืจื” ืžืชืื™ืžื” ืœืชื ืื™ awk ื™ื‘ืฆืข ืืช ื”ืคืงื•ื“ื”. ืชื•ื›ื ื™ืช awk ื”ื™ื ืื•ืกืฃ ืฉืœ ื‘ืœื•ืงื™ื, ื•ื›ืฉ awk ืžืงื‘ืœ ืื•ืกืฃ ื›ื–ื” ื”ื•ื ืžื ืกื” ืœื”ืชืื™ื ื›ืœ ืฉื•ืจื” ื‘ืงืœื˜ ืœื›ืœ ื”ืชื ืื™ื ื‘ื›ืœ ื”ื‘ืœื•ืงื™ื, ื•ืžืจื™ืฅ ืืช ื”ืคืงื•ื“ื•ืช ืฉืžืชืื™ืžื•ืช. ื‘ื“ื•ื’ืžื” ืจืืฉื•ื ื” ื”ื‘ืœื•ืง ื”ื‘ื ื”ื•ื ืงื•ื“ ืชืงื ื™ ืœ awk:
// { print $1 }
ื”ื—ืœืง ื”ืจืืฉื•ืŸ ืฉืœ ื”ื‘ืœื•ืง ื”ื•ื ื”ืชื ืื™ - ื”ืชื ืื™ ืฉื›ืชื‘ืชื™ ื‘ื“ื•ื’ืžื” ื”ื•ื ื”ืกื™ืžืŸ //, ืฉืžืกืžืŸ ื‘ื™ื˜ื•ื™ ืจื’ื•ืœืืจื™ ืจื™ืง. ื›ืœ ื˜ืงืกื˜ ืฉื ื›ืชื•ื‘ ื‘ื™ืŸ ืฉื ื™ ื”ืœื•ื›ืกื ื™ื ื™ื™ืงืจื ืขืœ ื™ื“ื™ awk ื‘ืชื•ืจ ื‘ื™ื˜ื•ื™ ืจื’ื•ืœืืจื™, ื•ื”ืชื ืื™ ืฉื”ื•ื ืžื™ื™ืฆื’ ื”ื•ื ืฉื”ืฉื•ืจื” ืžืชืื™ืžื” ืœืื•ืชื• ื‘ื™ื˜ื•ื™. ื‘ื™ื˜ื•ื™ ืจื’ื•ืœืืจื™ ืจื™ืง ืžืชืื™ื ืœื›ืœ ื”ืฉื•ืจื•ืช. ื”ื—ืœืง ื”ืฉื ื™ ื”ื•ื ื”ืคืงื•ื“ื”, ื•ื‘ื“ื•ื’ืžื” ืคืงื•ื“ื” ื–ื• ื”ื™ื print $1. ืคืงื•ื“ืช print ืžื“ืคื™ืกื” ืžืฉื”ื• ืœืžืกืš. ื›ืฉ awk ืงื•ืจื ืฉื•ืจื”, ืขืœ ื”ื“ืจืš ื”ื•ื ื’ื ืžื—ืœืง ืืช ื”ืฉื•ืจื” ืœืžื™ืœื™ื (ื›ืœ ืžื” ืฉืžื•ืคืจื“ ื‘ืจื•ื•ื— ืื—ื“ ืื• ื™ื•ืชืจ), ื•ื›ืœ ืžื™ืœื” ืžืงื‘ืœืช ืžืกืคืจ. ื”ืกื™ืžืŸ $1 ืžื™ื™ืฆื’ ืืช ื”ืžื™ืœื” ื”ืจืืฉื•ื ื” ื‘ืฉื•ืจืช ื”ืงืœื˜. ื“ื•ื’ืžืื•ืช ื ื•ืกืคื•ืช ืฉื ื•ื›ืœ ืขื›ืฉื™ื• ืœื›ืชื•ื‘ ื‘ื‘ืœื•ืงื™ื ืชื•ืš ืฉื™ืžื•ืฉ ื‘ื›ืœื™ื ืฉืจืื™ื ื• ื™ื”ื™ื•- 1. ื”ื“ืคืกืช ื”ืžื™ืœื” ื”ืจืืฉื•ื ื” ืจืง ื‘ืฉื•ืจื•ืช ืฉืžืชื—ื™ืœื•ืช ื‘ืื•ืช d:
/^d/ { print $1 }
2. ื”ื“ืคืกืช ื”ืžื™ืœื” ื”ืฉืœื™ืฉื™ืช ื‘ื›ืœ ืฉื•ืจื” ืฉืžื›ื™ืœื” ืกื™ืคืจื”:
/[0-9]/ { print $3 }
ื”ืกื™ืžืŸ ื”ืžื™ื•ื—ื“ $0 ืžื™ื™ืฆื’ ืืช ื›ืœ ื”ืฉื•ืจื”, ื•ืœื›ืŸ ื”ื‘ืœื•ืง ื”ื‘ื ื™ื“ืคื™ืก ืืช ื›ืœ ื”ืฉื•ืจื•ืช ืžื”ืงืœื˜ ืฉืžืชื—ื™ืœื•ืช ื‘ืื•ืช ื’ื“ื•ืœื”:
/[A-Z]/ { print $0 }
## ื”ืคืขืœืช awk ื‘ืฉื‘ื™ืœ ืœื”ืคืขื™ืœ awk ืื ื™ ื™ื›ื•ืœ ืœื›ืชื•ื‘ ืืช ื”"ืชื•ื›ื ื™ืช" ืฉืœื•, ื›ืœื•ืžืจ ืืช ื”ื‘ืœื•ืง ืื• ื”ื‘ืœื•ืงื™ื, ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื”. ื–ื™ื›ืจื• ืฉื‘ื’ืœืœ ืฉื”ืจื‘ื” ืคืขืžื™ื ืกื™ืžื ื™ื ืฉ awk ืžืฉืชืžืฉ ื‘ื”ื ื”ื ื›ืืœื” ืฉื™ืฉ ืœื”ื ื’ื ืžืฉืžืขื•ืช ืžื™ื•ื—ื“ืช ืžื‘ื—ื™ื ืช ื” shell, ืื ื—ื ื• ืจื•ืฆื™ื "ืœื”ื’ืŸ" ืขืœ ื”ืกื™ืžื ื™ื ื›ื“ื™ ืฉื™ื’ื™ืขื• ื™ืฉื™ืจื•ืช ืœ awk ื•ืœื ื™ืคื•ืขื ื—ื• ืขืœ ื™ื“ื™ ื” shell ืœืคื ื™ ื”ืคืขืœืช awk. ืžืกื™ื‘ื” ื–ื• ืื ื™ ืžืฆื™ืข ืœื”ื’ืŸ ืขืœ ืชื•ื›ื ื™ืช ื” awk ื‘ื’ืจืฉ ืžื›ืœ ืฆื“. ื”ืคืงื•ื“ื” ื”ื‘ืื” ืฉื›ื‘ืจ ืืคืฉืจ ืœื”ืคืขื™ืœ ืžืฉื•ืจืช ื”ืคืงื•ื“ื” ืžืคืขื™ืœื” ืืช ls -l, ื•ืžื“ืคื™ืกื” ืืช ื”ื‘ืœื•ืง ื”ืจืืฉื•ืŸ (ื‘ืœื•ืง ื”ื”ืจืฉืื•ืช) ืจืง ืœืฉื•ืจื•ืช ืฉืžืชื—ื™ืœื•ืช ื‘ืื•ืช d, ื›ืœื•ืžืจ ืจืง ืœืชื™ืงื™ื•ืช:
$ ls -l | awk '/^d/ { print $1 }'
ื‘ืฉื™ื ื•ื™ ืคืงื•ื“ืช ื”ื”ื“ืคืกื” ืืคืฉืจ ืœืงื‘ืœ ืžื™ื“ืข ืื—ืจ ืื• ื ื•ืกืฃ, ืœื“ื•ื’ืžื” ื”ืคืงื•ื“ื” ื”ื‘ืื” ืชื“ืคื™ืก ืขื‘ื•ืจ ื”ืชื™ืงื™ื•ืช ื’ื ืืช ืฉื ื”ืžืฉืชืžืฉ ืฉื”ืŸ ื‘ื‘ืขืœื•ืชื• - ื‘ื’ืœืœ ืฉ ls -l ืžื“ืคื™ืกื” ืืช ืฉื ื”ืžืฉืชืžืฉ ื‘ืชื•ืจ ื”ืžื™ืœื” ื”ืฉืœื™ืฉื™ืช ื‘ืฉื•ืจื”:
$ ls -l | awk '/^d/ { print $1, $3 }'
## ืžืฉืชื ื™ื ื‘ awk ื‘ื•ืื• ื ืชืงื“ื ืœื™ื›ื•ืœื•ืช ื ื•ืกืคื•ืช ืฉืœ awk - ื”ืจืืฉื•ื ื” ื”ื™ื ืžืฉืชื ื™ื. ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ืžืฉืชื ื™ื ื›ื“ื™ ืœืฉืžื•ืจ ื—ื™ืฉื•ื‘ื™ื ืฉืฆืจื™ื›ื™ื ืงืœื˜ ืžื›ืžื” ืฉื•ืจื•ืช, ืœืžืฉืœ ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉื ืจืฆื” ืœืกืคื•ืจ ื›ืžื” ืชื™ืงื™ื•ืช ื™ืฉ ื‘ืงืœื˜. ื‘ awk ืื ื™ ื™ื›ื•ืœ ืคืฉื•ื˜ ืœื”ืชื—ื™ืœ ืœื”ืฉืชืžืฉ ื‘ืžืฉืชื ื” ื•ืœื ืฆืจื™ืš ืœื”ื’ื“ื™ืจ ืื•ืชื• ืžืจืืฉ. ื›ืœ ืžืฉืชื ื” ืžืชื—ื™ืœ ืขื ื”ืขืจืš ื”ืจื™ืง - ื›ืืฉืจ ืื ืชืฉืชืžืฉื• ื‘ืžืฉืชื ื” ื‘ื—ื™ืฉื•ื‘ ื”ืขืจืš ื”ืจื™ืง ื™ื”ื™ื” 0, ื•ืื ืชืฉืชืžืฉื• ื‘ืื•ืชื• ืžืฉืชื ื” ื‘ืคืขื•ืœื” ื˜ืงืกื˜ื•ืืœื™ืช (ืœืžืฉืœ ื”ื“ืคืกื”) ื”ืขืจืš ื”ืจื™ืง ื™ื”ื™ื” ืžื—ืจื•ื–ืช ืจื™ืงื”. ื ื—ื–ื•ืจ ืœื“ื•ื’ืžื” ืฉืœื ื• ื•ื ื ืกื” ืœืกืคื•ืจ ื›ืžื” ืชื™ืงื™ื•ืช ื™ืฉ ื‘ืคืœื˜ ืฉืœ ls -l. ืื ื™ ื™ื•ื“ืข ืฉืชื™ืงื™ื” ื”ื™ื ืฉื•ืจื” ืฉืžืชื—ื™ืœื” ื‘ d ื•ืœื›ืŸ ืื ื™ ื™ื›ื•ืœ ืœื”ื•ืกื™ืฃ 1 ืœืžืฉืชื ื” ื›ืœ ืคืขื ืฉืžืฆืืชื™ ืฉื•ืจื” ืฉืžืชื—ื™ืœื” ื‘ d, ื•ื‘ืกื•ืฃ ืœื”ื“ืคื™ืก ืืช ื”ืขืจืš ืฉื—ื™ืฉื‘ืชื™. ื ื™ืงื— ื ื™ืกื™ื•ืŸ ืจืืฉื•ืŸ ื•ื ืคืขื™ืœ:
$ ls -l | awk '/^d/ { count += 1 }'
ืื‘ืœ ื–ื” ืœื ืžืžืฉ ืขื‘ื“. ื”ืคืœื˜ ื”ื•ื ืจื™ืง. ืื ื™ ื™ื›ื•ืœ ืœื”ื•ืกื™ืฃ ืคืงื•ื“ื” ื ื•ืกืคืช ืœืชื ืื™ ืงื™ื™ื ืขืœ ื™ื“ื™ ืฉื™ืžื•ืฉ ื‘ืกื™ืžืŸ ;. ื ื ืกื” ืืช ื–ื”:
$ ls -l | awk '/^d/ { count += 1; print count }'
ื•ืขื›ืฉื™ื• ื”ืคืœื˜ ืืฆืœื™ ื‘ืชื™ืงื™ื” ื”ื•ื:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ืœื ืจืข, ืื‘ืœ ืขื“ื™ื™ืŸ ืœื ืžื” ืฉืจืฆื™ืชื™. ื‘ื’ืœืœ ืฉื”ื”ื“ืคืกื” ืฉืœ count ืงื•ืจื™ืช ื›ืœ ืคืขื ืฉืžื•ืฆืื™ื ืชื™ืงื™ื” ืื ื™ ืžืงื‘ืœ ื”ืจื‘ื” ื”ื“ืคืกื•ืช ืžื™ื•ืชืจื•ืช. ืื ื™ ืจืง ืจื•ืฆื” ื”ื“ืคืกื” ืื—ืช ื‘ืกื•ืฃ. ื‘ืฉื‘ื™ืœ ื–ื” ืื ื™ ืฆืจื™ืš ืœื”ื•ืกื™ืฃ ืขื•ื“ ื‘ืœื•ืง ืœ awk, ื•ื”ืคืขื ื”ืชื ืื™ ืฉืœ ื”ื‘ืœื•ืง ื™ื”ื™ื” "ื”ืงืœื˜ ื”ืกืชื™ื™ื". ื‘ awk ื”ืžื™ืœื” ื”ืžื™ื•ื—ื“ืช END ืžืชืืจืช ืืช ื”ืชื ืื™ ื”ื–ื” ื‘ื“ื™ื•ืง, ื•ืื ื™ ื™ื›ื•ืœ ืœืชืช ืœ awk ื›ืžื” ื‘ืœื•ืงื™ื ืขืœ ื™ื“ื™ ื”ืคืจื“ื” ืฉืœื”ื ื‘ืจื•ื•ื—ื™ื:

ToCode
1 419
# ืคืจื•ื˜ื•ืงื•ืœื™ื ืœืฉื™ื ื—ื’ื•ืจื” ืœืคื ื™ ืฉืžืชื—ื™ืœื™ื ืœื ืกื•ืข. ืœืฆื—ืฆื— ืฉื™ื ื™ื™ื ืœืคื ื™ ืฉื”ื•ืœื›ื™ื ืœื™ืฉื•ืŸ. ืœื‘ื“ื•ืง ืžื” ืžืฆื‘ ื”ื–ื™ื›ืจื•ืŸ ื•ื”ื“ื™ืกืง ื›ืฉืžืชื—ื™ืœื™ื ืœื—ืงื•ืจ ืชืงืœื”. ืœื”ืกืชื›ืœ ื‘ืœื•ื’ื™ื. ืœื”ื•ืกื™ืฃ ื”ื•ื“ืขืช ื”ื“ืคืกื” (ืื• Breakpoint) ื‘ืžืฆื‘ ืคื™ืชื•ื—. ืœื’ื‘ื•ืช ืืช ื”ืžื—ืฉื‘ ื›ืœ ื™ื•ื. ื”ื™ื•ื ื™ื•ื ืฉืœื ื•, ื•ืื™ืชื• ื’ื ื™ื•ื ื”ืขื‘ื•ื“ื”, ืžื•ืจื›ื‘ ืžืื™ื ืกืคื•ืจ ืคืขื•ืœื•ืช ืฉืื ื—ื ื• ืขื•ืฉื™ื "ืขืœ ืื•ื˜ื•ืžื˜" ืคืฉื•ื˜ ื›ื™ ื›ื›ื” ืชืžื™ื“ ืขืฉื™ื ื• ืื• ื›ื™ ืžืชื™ืฉื”ื• ื”ื—ืœื˜ื ื• ืฉื–ื” ืžื•ืขื™ืœ ืื• ื›ื™ ืžื™ืฉื”ื• ื”ื—ืœื™ื˜ ื‘ืฉื‘ื™ืœื ื•. ื•ื›ืŸ ื™ืฉ ื‘ื ื•ืกืฃ ื’ื ืงืฆืช ืขื‘ื•ื“ื” ืฉื“ื•ืจืฉืช ื—ืฉื™ื‘ื”, ืงื‘ืœืช ื”ื—ืœื˜ื•ืช ื•ื›ืœ ื”ื“ื‘ืจื™ื ื”ืืœื”. ื“ืจืš ืงืœื” ืœืฉืคืจ ืคืจื•ื“ื•ืงื˜ื™ื‘ื™ื•ืช ื”ื™ื ืœื”ืชื—ื™ืœ ืœืฉื™ื ืœื‘ ืœืคืจื•ื˜ื•ืงื•ืœื™ื ื”ืื•ื˜ื•ืžื˜ื™ื™ื ืฉืœื ื•, ืœื›ืชื•ื‘ ืื•ืชื ื•ืœืชืงืŸ ืืช ืืœื” ืฉื›ื‘ืจ ืœื ืžืชืื™ืžื™ื ืœื ื•, ืื• ืœื”ื•ืกื™ืฃ ืื•ื˜ื•ืžืฆื™ื” ืœืืœื” ืฉืื ื—ื ื• ื™ื•ื“ืขื™ื ืฉื™ื™ืฉืืจื•. ืื•ืœื™ ืงืฉื” ื™ื•ืชืจ ืœืจืื•ืช ืื•ืชื, ืื‘ืœ ื‘ืกื•ืฃ ืืœื” ื”ื“ื‘ืจื™ื ืฉืงื•ื‘ืขื™ื ืืช ื”ืชื•ืฆืื”.

ToCode
1 419
# ื”ื™ื•ื ืœืžื“ืชื™: ื”ืคื ื™ื™ืช ืคืœื˜ ืœื›ืžื” ืงื‘ืฆื™ื ื‘ zsh ืœืคืขืžื™ื ื™ืชืจื•ื ื•ืช ืงื˜ื ื™ื ืžืชื’ืœื™ื ืœืื˜. ืœ zsh ืขื‘ืจืชื™ ื›ื‘ืจ ืœืคื ื™ ื›ืžื” ืฉื ื™ื ื›ื™ ืืคืœ ื”ื—ืœื™ื˜ื• ืฉื–ื” shell ื‘ืจื™ืจืช ืžื—ื“ืœ ื˜ื•ื‘ ื™ื•ืชืจ ื•ืืฃ ืคืขื ืœื ื”ื™ื” ืœื™ ืื›ืคืช ื‘ืžื™ื•ื—ื“ ื›ื™ ื›ืœ ื”ื˜ืจื™ืงื™ื ืฉื”ื›ืจืชื™ ืž bash ืขื‘ื“ื• ื˜ื•ื‘ ื’ื ื‘ื•. ื•ื”ืฉืžื—ื” ื”ืืžื™ืชื™ืช ื”ื™ื ืœื”ืชื—ื™ืœ ืœื’ืœื•ืช ื˜ืจื™ืงื™ื ื—ื“ืฉื™ื. ืื ื—ื ื• ื›ื‘ืจ ื™ื•ื“ืขื™ื ืœื”ืฉืชืžืฉ ื‘ tee ื›ื“ื™ ืœื›ืชื•ื‘ ื‘ืคืงื•ื“ื” ืื—ืช ืœื›ืžื” ืงื‘ืฆื™ื:
$ echo hello world | tee a b c d >& /dev/null
ื•ื–ื” ืขื•ื‘ื“ ื’ื ื‘ bash ื•ื’ื ื‘ zsh. ืื‘ืœ ืžืกืชื‘ืจ ืฉื‘ zsh ื™ืฉ ืขื•ื“ ื˜ืจื™ืง ืื™ืชื• ืืคืฉืจ ืœื•ื•ืชืจ ืขืœ tee:
$ { echo hello world } > a > b > c > d
ื•ื–ื” ื™ื•ืฆืจ ืืจื‘ืขื” ืงื‘ืฆื™ื ืฉื ืงืจืื™ื a, b, c ื• d ื‘ื”ืชืืžื” ื•ื‘ืชื•ืš ื›ืœ ืื—ื“ ืžื”ื ื›ื•ืชื‘ ืืช ื”ื˜ืงืกื˜ hello world. ืžื™ื˜ื™ื‘ื™ ืœื›ืช ื™ื›ื•ืœื™ื ืœื•ื•ืชืจ ื’ื ืขืœ ื›ืœ ื”ื—ืฆื™ื ื•ืœื”ืฉืชืžืฉ ื‘ืฉืชื™ ื ืงื•ื“ื•ืช ื›ืฉืฉืžื•ืช ื”ืงื‘ืฆื™ื ืžืชืื™ืžื™ื. ื‘ืžืงืจื” ืฉืœื ื•:
$ { echo hello world } > {a..d}
ื .ื‘. ืืช ื”ืคืงื•ื“ื” ื”ืžืจื›ื–ื™ืช ืื ื™ ืžืงื™ืฃ ื‘ืกื•ื’ืจื™ื™ื ืžืกื•ืœืกืœื™ื ื›ื™ ืื—ืจืช zsh ืœื ืชืžื™ื“ ื™ื•ื“ืข ืฉื”ื™ื ื ื’ืžืจื”. ื”ืกื‘ืจ ืžื“ื•ื™ืง ืืคืฉืจ ืœืžืฆื•ื ื‘ืชื™ืขื•ื“ ืฉืœื”ื ื›ืืŸ: https://zsh.sourceforge.io/Doc/Release/Redirection.html#Multios

ToCode
1 419
# ื–ืงืŸ ืžื“ื™ ืœื”ืชื—ื™ืœ ืœืชื›ื ืช ื”ืžืฉืคื˜ "ืœืขื•ืœื ืœื ืื”ื™ื” ืจื•ื›ื‘ ืื•ืคื ื™ื™ื" ื™ื›ื•ืœ ืœื”ื‘ื™ืข ืื—ื“ ืžืฉื ื™ ืคื—ื“ื™ื ืžืื•ื“ ืฉื•ื ื™ื: 1. ืคื—ื“ (ืงืฆืช ืžื•ื–ืจ) ืฉืœ ื‘ืŸ ืื“ื ืฉื—ื•ืฉื‘ ืฉืœื ืžืฉื ื” ื›ืžื” ื”ื•ื ื™ื ืกื”, ืชืžื™ื“ ื”ื•ื ื™ื™ืคื•ืœ ืžื”ืื•ืคื ื™ื™ื. 2. ืคื—ื“ (ื™ื•ืชืจ ื”ื’ื™ื•ื ื™) ืฉืœ ื‘ืŸ ืื“ื ืฉืžื ืกื” ืœื ืฆื— ื‘ืื™ื–ื• ืชื—ืจื•ืช ืื•ืคื ื™ื™ื, ื•ืžื’ืœื” ืฉืœื ืžืฉื ื” ื›ืžื” ื”ื•ื ืžืฉืงื™ืข ืชืžื™ื“ ื™ื”ื™ื• ืจื•ื›ื‘ื™ื ื˜ื•ื‘ื™ื ืžืžื ื• ื•ื”ื•ื ืœืขื•ืœื ืœื ื™ืฆืœื™ื— ืœื ืฆื— ื‘ืฉื•ื ืชื—ืจื•ืช. ื™ืฉ ื”ืจื‘ื” ืกื™ื‘ื•ืช ื‘ื’ืœืœืŸ ื™ื”ื™ื” ืงืฉื” ื•ืืคื™ืœื• ื‘ืœืชื™ ืืคืฉืจื™ ืœื”ื™ื•ืช ืจื•ื›ื‘ ืื•ืคื ื™ื™ื ืžืงืฆื•ืขื™, ืื• ื ื’ืŸ ื›ื™ื ื•ืจ ืžืงืฆื•ืขื™, ืกืคื•ืจื˜ืื™ ืžืงืฆื•ืขื™, ืกื•ืคืจ ืžืงืฆื•ืขื™ ืื• ืฉืฃ ืžืคื•ืจืกื. ื‘ืžื™ื•ื—ื“ ืื ืžืชื—ื™ืœื™ื ื‘ื’ื™ืœ ืžื‘ื•ื’ืจ. ืื‘ืœ ืงืฉื” ืœืจืื•ืช ืžืฆื‘ ืฉืžื™ืฉื”ื• ื‘ืืžืช ืžืชืืžืŸ ื•ืœื ืžืฆืœื™ื— ืœืฉืžื•ืจ ืขืœ ืฉื™ื•ื•ื™ ืžืฉืงืœ ื‘ืื•ืคื ื™ื™ื, ืื• ืœื ื’ืŸ ืฉื™ืจื™ ื—ื’ ืœืžืฉืคื—ื”, ืื• ืœืฉื—ืง ื›ื“ื•ืจืกืœ ืขื ื—ื‘ืจื™ื ืื• ืœื‘ืฉืœ ืืจื•ื—ื” ืœืžืฉืคื—ื”. ื•ื›ืŸ ื’ื ืœื›ืชื•ื‘ ืงื•ื“. ืœื ื‘ื˜ื•ื— ืฉืชืชืงื‘ืœื• ืœื’ื•ื’ืœ ืื• ืœืžื™ื™ืงืจื•ืกื•ืคื˜. ืœื ื‘ื˜ื•ื— ืฉื”ืžื•ืฆืจ ืฉืชื‘ื ื• ื™ื–ื›ื” ืœื”ืฆืœื—ื” ืžืกื—ืจืจืช. ืœื ื‘ื˜ื•ื— ืฉื”ืงื•ื“ ืฉืœื›ื ื™ื–ื›ื” ื‘ืื™ื–ื•ืฉื”ื™ ืชื—ืจื•ืช ืื• ืฉืื™ ืคืขื ืชืขื‘ืจื• ืืช ืžื‘ื—ื ื™ ื”ืงื‘ืœื” ื”ืงืจื™ืคื˜ื™ื™ื ืœืžื•ืกื“. ื•ื–ื” ื‘ืกื“ืจ. ื›ืŸ ื‘ื˜ื•ื— ืฉืื ืชืฉื‘ื• ืžืกื•ื“ืจ, ืชืœืžื“ื• ื•ืชืชืืžื ื• - ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ืชืฆืœื™ื—ื• ืœื”ื’ื™ื“ ื“ื‘ืจื™ื ื‘ืฉืคื” ืฉื”ืžื—ืฉื‘ ื™ื‘ื™ืŸ, ืื ื–ื” ื‘ืจื™ืืงื˜, ื‘ JavaScript ืื• ื‘ื›ืœ ืฉืคื” ืื—ืจืช. ื•ืœื ืžืฉื ื” ื‘ืื™ื–ื” ื’ื™ืœ ืžืชื—ื™ืœื™ื.

ToCode
1 419
ื•ืื ื”ื›ืœ ื™ืœืš ื›ืžื• ืฉืฆืจื™ืš, ื‘ืคืขื ื”ื‘ืื” ืฉื™ื”ื™ื” ืœื ื• ืขืจื‘ ื—ื’ ื‘ืฉื‘ืช ื”ืคื•ืกื˜ ื”ืžืชืื™ื ื™ื™ืฉืœื— ื‘ืžื•ืฆืื™ ื”ื—ื’.

ToCode
1 419
# ืชื™ืงื•ืŸ ืœื™ืœ ืฉื‘ื•ืขื•ืช ื—ืœืง ืžื›ื, ืฉืžื ื•ื™ื™ื ืœืงื‘ืœืช ืคื•ืกื˜ื™ื ื—ื“ืฉื™ื ื“ืจืš ื”ืžื™ื™ืœ, ืฉืžื• ืœื‘ ื•ื•ื“ืื™ ืœื‘ืื’ ืฉื”ื™ื” ื‘ืžืขืจื›ืช ื‘ื—ื’ ืฉื‘ื•ืขื•ืช ื”ืื—ืจื•ืŸ. ื‘ื™ืžื™ื ืจื’ื™ืœื™ื ื”ืžืขืจื›ืช ืžืงืคื™ื“ื” ืœื ืœืฉืœื•ื— ืื™ืžื™ื™ืœ ื‘ื—ื’ื™ื, ืื‘ืœ ื”ืคืขื ืขืจื‘ ื—ื’ ืฉื‘ื•ืขื•ืช ื™ืฆื ื‘ื™ื•ื ืฉื‘ืช ื•ื–ื” ื‘ืœื‘ืœ ืืช ื›ืœ ื”ืžื ื’ื ื•ื ื™ื. ## ืžื” ืงืจื” ื”ืžื ื’ื ื•ืŸ ื”ืจื’ื™ืœ ืฉืœ ื”ืคืฆืช ื”ืคื•ืกื˜ื™ื ื”ื•ื ื‘ืกืš ื”ื›ืœ ืกืงืจื™ืคื˜ ืฉืžืชืขื•ืจืจ ื›ืœ ื‘ื•ืงืจ ื‘ืฉื‘ืข ื‘ื‘ื•ืงืจ ื•ื‘ืชืฉืข ื‘ืขืจื‘ ื‘ืขื–ืจืช ื”ืฉื•ืจื” ื”ื‘ืื” ื‘ crontab:
0 7,21 * * 0,1,2,3,4 /home/ynon/bin/cron/daily_blog.sh
ื‘ื™ื•ื ืฉื™ืฉื™ ื”ืกืงืจื™ืคื˜ ืžืชืขื•ืจืจ ืจืง ื‘ืฉื‘ืข ื‘ื‘ื•ืงืจ ื›ื“ื™ ืœื ืœืฉืœื•ื— ืžื™ื™ืœื™ื ื‘ืฉื‘ืช:
0 7 * * 5 /home/ynon/bin/cron/daily_blog.sh
ื•ื‘ืฉื‘ืช ื”ื•ื ืžืชืขื•ืจืจ ืจืง ื‘ืชืฉืข ื‘ืขืจื‘:
0 21 * * 6 /home/ynon/bin/cron/daily_blog.sh
ื•ืœืžื” ื‘ื™ื•ื ืจื’ื™ืœ ืื ื—ื ื• ืžื ืกื™ื ืคืขืžื™ื™ื? ื›ื™ ื—ืœืง ืžื”ื™ืžื™ื ื”ืจื’ื™ืœื™ื ื”ื ื—ื’ื™ื. ื‘ืฉื‘ื™ืœ ืœื–ื”ื•ืช ื—ื’ื™ื ื›ืชื‘ืชื™ ืืช ื”ืกืงืจื™ืคื˜ ื”ืงืฆืจ ื”ื‘ื ืฉืžืฉืชืžืฉ ื‘ hebcal:
evenings_ok=(
"Pesach I"
"Pesach VII"
"Shavuot I"
"Tish'a B'Av"
"Rosh Hashana II"
"Yom Kippur"
"Sukkot I"
"Shmini Atzeret"
)

no_emails=(
"Rosh Hashana"
)

for send_in_evening in "${evenings_ok[@]}"
do
        # echo "^[0-9/]+ ${send_in_evening}"
        if hebcal $(date +"%m %d %Y") | egrep -v "CH''M" | egrep "^[0-9/]+ ${send_in_evening}" >& /dev/null
        then
                if (( $(date +%"_H") < 20 ))
                then
                        exit 1
                fi
        fi
done

for holiday in "${no_emails[@]}"
do
        if hebcal $(date +"%m %d %Y") | egrep "^[0-9/]+ ${holiday}" >& /dev/null
        then
                exit 1
        fi
done
ื”ืกืงืจื™ืคื˜ ืžื ืกื” ืœื–ื”ื•ืช ืื ืื ื—ื ื• ืขื›ืฉื™ื• ื‘ืืžืฆืข ื—ื’ ื‘ืืžืฆืขื•ืช hebcal. ื”ื•ื ืžืคืขื™ืœ hebcal, ืžืฉืชืžืฉ ื‘ืจืฉื™ืžื” ืฉืœ ื—ื’ื™ื ืฉื”ื•ื ืžื›ื™ืจ, ื•ืื hebcal ืžื“ืคื™ืก ืฉืื ื—ื ื• ืขื›ืฉื™ื• ื‘ืื—ื“ ื”ื—ื’ื™ื ื”ืืœื” ื•ื”ืฉืขื•ืช ืžืชืื™ืžื•ืช ื”ืกืงืจื™ืคื˜ ื™ืฆื ืขื exit 1. ืืคืฉืจ ืœื”ืคืขื™ืœ ืืช ื”ืกืงืจื™ืคื˜ ืžื›ืœ ืฉืคืช ืชื›ื ื•ืช ืื• ืืคื™ืœื• ืžืฉื•ืจืช ื”ืคืงื•ื“ื”:
$ source holiday_protect.sh && echo Not a holiday
ื•ืื ืื ื—ื ื• ืœื ื‘ื—ื’ ื ืงื‘ืœ ืืช ื”ื”ื“ืคืกื”. ## ืžื” ื ืฉื‘ืจ ื‘ืฉื‘ื•ืขื•ืช ื”ืื—ืจื•ืŸ ืขืจื‘ ื—ื’ ื™ืฆื ื‘ื“ื™ื•ืง ื‘ื™ื•ื ืฉื‘ืช - ืžื” ืฉืื•ืžืจ ืฉื‘ืื•ืชื• ื™ื•ื ืœื ืจืฆื™ื ื• ืœืฉืœื•ื— ืžื™ื™ืœ ื’ื ื‘ื‘ื•ืงืจ ื›ื™ ืฉื‘ืช, ื•ื’ื ื‘ืขืจื‘ ื›ื™ ืขืจื‘ ื—ื’. ืื‘ืœ ืขืจื‘ื™ ื—ื’ ืœื ืงื™ื‘ืœื• ืฉื•ื ื˜ื™ืคื•ืœ ื‘ืกืงืจื™ืคื˜ ื”ืžืงื•ืจื™. ืคื” ื”ืžืงื•ื ืœืฉืื•ืœ - ืœืžื” ื‘ืขืฆื ืœื ืจืื™ื ื• ืืช ื”ืชืงืœื” ื”ื–ืืช ืงื•ื“ื? ืœืžื” ื”ืžืขืจื›ืช ืœื ืฉืœื—ื” ืงื‘ื•ืข ืžื™ื™ืœื™ื ื‘ืขืจื‘ื™ ื—ื’? ืœืžื” ื”ื™ื” ืฆืจื™ืš ืœื—ื›ื•ืช ื“ื•ื•ืงื ืœืขืจื‘ ื—ื’ ืฉื™ื•ืฆื ื‘ืฉื‘ืช? ื”ืชืฉื•ื‘ื” ื”ื™ื ืฉื‘ืืžืช ืœื ื”ื™ื” ืฉื•ื ืžื ื’ื ื•ืŸ ืฉืžื“ืœื’ ืขืœ ืฉืœื™ื—ืช ืื™ืžื™ื™ืœ ื‘ืขืจื‘ ื—ื’, ืื‘ืœ ื›ืŸ ื”ื™ื” ืžื ื’ื ื•ืŸ ืฉืฉื•ืœื— ืืช ื”ืžื™ื™ืœ ื‘ืขืจื‘ ื”ื—ื’ ื‘ืฉื‘ืข ื‘ื‘ื•ืงืจ. ืœื›ืŸ ื›ืฉื”ื’ื™ืข ืชืฉืข ื‘ืขืจื‘ ื‘ืื•ืชื• ื™ื•ื ืฉืœ ืขืจื‘ ื—ื’, ื”ืžืขืจื›ืช ืจืฆืชื” ืœืฉืœื•ื— ืืช ื”ืคื•ืกื˜ ื”ื—ื“ืฉ ื‘ืžื™ื™ืœ ืื‘ืœ ืคืฉื•ื˜ ืœื ื”ื™ื” ืœื” ืœืžื™. ื›ื•ืœื ื›ื‘ืจ ืงื™ื‘ืœื• ืืช ื”ืคื•ืกื˜ ื‘ื‘ื•ืงืจ. (ื•ื›ืŸ ืื ื—ื ื• ืขื›ืฉื™ื• ืจื•ืื™ื ืฉืื ื™ ื’ื ื–ื•ื›ืจ ืœืžื™ ืฉืœื—ืชื™ ืื™ื–ื” ืื™ืžื™ื™ืœ ื›ื“ื™ ืœื ืœืฉืœื•ื— ืคืขืžื™ื™ื, ืื‘ืœ ื–ื” ื›ื‘ืจ ืžื ื’ื ื•ืŸ ืื—ืจ). ## ื”ืชื™ืงื•ืŸ ื‘ื—ื–ืจื” ืœืฉื‘ื•ืขื•ืช - ื‘ืื•ืชื• ื™ื•ื ื‘ื’ืœืœ ืฉืขืจื‘ ื—ื’ ื™ืฆื ื‘ืฉื‘ืช ืื– ื‘ื‘ื•ืงืจ ืœื ื ืฉืœื— ื”ืžื™ื™ืœ ืœืืฃ ืื—ื“. ื”ืžืขืจื›ืช ื”ืชืขื•ืจืจื” ื‘ืžื•ืฆืื™ ืฉื‘ืช, ื’ื™ืœืชื” ืฉืื™ืŸ ื‘ืขื™ื” ืœืฉืœื•ื—, ื›ื™ ืืฃ ืคืขื ืœื ื‘ื“ืงื ื• ืขืจื‘ื™ ื—ื’, ื•ืฉืœื—ื” ืืช ื”ืคื•ืกื˜ ื”ื™ื•ืžื™ ืœื”ืคืชืขืชื ืฉืœ ื”ืžื ื•ื™ื™ื ื‘ืžื™ื™ืœ. ืื—ื“ ื”ืžื•ืคืชืขื™ื, ืฉืžื—ื” ื‘ื•ื ื ื—ืžื ื™ืฆืงื™, ื’ื ื”ืฆื™ืข ืขื–ืจื” ื•ื‘ื ื” ื’ื™ืจืกื” ืžืชื•ืงื ืช ืœืกืงืจื™ืคื˜ ืฉืžื–ื”ื” ืขืจื‘ื™ ื—ื’. ืื ื‘ืžืงืจื” ืืชื ื’ื ืžื—ืคืฉื™ื ืคื™ืชืจื•ืŸ ืœื–ื”ื•ืช ื—ื’ื™ื ื•ืฉื‘ืชื•ืช ื›ื“ื™ ืœืขืฆื•ืจ ื‘ื”ื ืคืขื•ืœื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ืื– ื”ื ื” ื”ืกืงืจื™ืคื˜ ื”ืžืชื•ืงืŸ:
evenings_ok=(
"Pesach I"
"Pesach VII"
"Shavuot I"
"Tish'a B'Av"
"Rosh Hashana II"
"Yom Kippur"
"Sukkot I"
"Shmini Atzeret"
)

no_emails=(
"Rosh Hashana"
)

no_emails_erev=(
"Erev Pesach"
"Erev Shavuot"
"Erev Rosh Hashana"
"Erev Sukkot"
"Erev Yom Kippur"
)


for send_in_evening in "${evenings_ok[@]}"
do
        # echo "^[0-9/]+ ${send_in_evening}"
        if hebcal $(date +"%m %d %Y") | egrep -v "CH''M" | egrep "^[0-9/]+ ${send_in_evening}" >& /dev/null
        then
                if (( $(date +%"_H") < 20 ))
                then
                        exit 1
                fi
        fi
done

for holiday in "${no_emails[@]}"
do
        if hebcal $(date +"%m %d %Y") | egrep "^[0-9/]+ ${holiday}" >& /dev/null
        then
                exit 1
        fi
done



for erev_holiday in "${no_emails_erev[@]}"
do
        if [hebcal $(date +"%m %d %Y") | egrep "^[0-9/]+ ${erev_holiday}" >& /dev/nul] && [$(date +"_H") > 19]
        then
                exit 1
        fi
done