ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
Ma'lumot yo'q30 kunlar
Postlar arxiv
1 419
# ืื ืืืืข ืืืชืื
ืืื ืืฉืืืื ืืืชืกืืืื ืืืืืื ืืื ืืืืืื ืื ืฉืคื ืืืืข ืืืจื ืฉืื ืื ื ืืืจ ืืืื ืื ืืช ืืืกืืก, ืืฆืืืืื ืืคืชืืจ ืชืจืืืืื ืคืฉืืืื ืืืคืืื ืืฆืืืืื ืืืืื ืงืื ืฉืื ืื ื ืจืืืื ืืคืืชืจืื ืื ืชืืื ืืช ืืืืื.
ืืื ืื ืืฆืืืืื ืืืชืื.
ืื ืืืื ืืืืืช ืฉืื ืื ื ื ืชืงืขืื ืืืฉ ืืืชืืื, ืคืืืืื ืฉื ืืืจ ืืช ืืชืื ืืช ืืื ื ืืื ื ืื ืื ืืืืขืื ืืืืืง ืืืื ืชืื ืืช ืืืืืจ. ืืืฉืฉืื ืฉื ืขืฉื ืฆืขื ืฉืขืื ืฉืืืข ื ืชืืจื ืขืืื, ืื ืืื ืืจืืข - ืืชืืืืื ืืืชืื ืืืื ืืืฆื ืืืชืจ ืืกืืื ืืืจืื ืืื ืืืืื ืฉืจืืื ื, ืขื ืืจืื ืฉืงืฉื ืืืืื ืืื ื ืขืื ืื ืืกืืืื ืืื ืืชืืื ืืืช ืืืืืื, ืืื ืืืฉืื ืื ืขืฉื ืขืืื ื ืืืื ืชืจืืื.
ืืื ืืื ืฉืื ืชืจืืื.
ืืืจื ืืืืืื ืืืืื ืืืชืื ืืื ืืืชืื, ืืืืชืื ืืื ืฉืืืชืจ. ืืขืืืจ ืืช ืืฉืื ืืื ืฉืืืจืื ืื ืขืืืืื, ืืื ืืช ืืฉืื ืฉืื ืืกืืืืื, ืืื ืืื ืืื ืืฉืื ืื ืืคืืชืจืื ืืช ืืืชืจ ืคืฉืืืื ืขื ืฉืืืจืื ืืชืืืืื ืืืชืืืจ. ืืืฉื ืืืืื ืืงืืจืก, ืืืฉื ืงืจืืื ืื ืืคืืื ืฉืืขืืจืื ืคืจืืืื ืื ืืขืืจื ืืื. ืืฉืจืืจืื ืฉื ืืืชืืื ืฆืจืืืื ืืืชืจืื ืฉืื ืื ืฆืจืืืื ืืขืืื.
ืืชืืืฉื ืฉืื ื ืื ืืืืข ืืืชืื ืืื ืืกืืื ืืื ืืื ืืกืืื ืืช ืืงืจืืื ืืืืชืืื ืืขืืื.
1 419
# ืืงืื ืืืขืืืืช
ืืืชืืืช ืืขืจืืืช ืชืืื ื ืื ืื ื ืืืืขืื (ืืืจื ืืื) ืืืื ืืื ืืืืจืืช ืืคืืชืื ืืืืืืื. ืืงืฆื ืืื ืฉื ืืกืงืืื, ืื ืฉืืื ื ืงืืฆื ืื ืฆืจืื ืืขืฉืืช ืืื ืืื ืืืืืข ืืืคืก ืืขืืืืช, ืืืงืฆื ืืฉื ื ืื ืืชื ืืื ืื ืืชืจ ืืฉืืงืื ืืื ืืืื ืืชื ืืืื ืื ืืืืืช ืขื ืืขืืืช ืืืจืกื ืฉืื ืืฉืืง ืืกืืื ืื ืขืื ืื ืขืื ืขื ืืื. ืชืืื ืืคืฉืจ ืืืขืืืช ืืืจืกืช ืชืืงืื.
ืืช ืืืชื ืืืืื ืืคืฉืจ ืืงืืช ืื ืืงืจืืืจื ืืืืฉืืช ืื ืืืืืืืืช ืฉืื ื-
1. ืืื ืื ื ืืืื ื ืืืืื ืืื ืืืืืื ืื ืื ืืื ืืกืืฃ ืื ืชืืื "ืืืืจ ืืืืื ืืื"? ืื ืฉืืืื ืฉืื ืงืฆืื ืืื ื ืฆืจืืื ืืคืก ืืขืืืืช ืืืืืจืช ื ืืฉืื ืืืืืื?
2. ืืื ืื ื ืืืื ื ืืืชืคืจืฅ ืืืืื ืื ืื ืื ื ืื ืืืืื ืืื ืฉืืฉ ืื ืืืืื, ืื ืฉืื ื ืฉืืืคืช ื"ืืคืก ืืขืืืืช" ืืืืื ื ืืืืจ ืคืืืช ืืืืื ืฉืชืืื ืืืื ืืืจืื ืฉืื ื ืืืืื ืืื.
3. ืืื ืื ื ืืืื ื ืืืขืืืจ ืืจืฆืื ืืฆืืืช ืขื ื ืืฉื ืฉืื ื ืื ืืืืืืช ืื, ืื ืฉืื ื ืืขืืืคื ืื ืืงืืช ืกืืืื ืื ืืืืืื ื"ืืคืก ืืขืืืืช".
ืืืจืืง ืืื ืฉืืื ืืืขืจืืืช, ืื ืืคืฉืจ ืืืืืืง ืืืงื ืืฉื ื ืืงืฆืืืช. ืืคืก ืืขืืืืช ืืืชืื ืืชืงืืืืช ืืืืืช ืืืชืจ ืืืขื ืืืื ืืืฉื ืืช. ืืจืื ืืืชืื ืชืื ืืืืชืื ืชืืช ืฉืื ื ืืืืจ, ืืืื ืืืช ืฉื ืืคืก ืืขืืืืช ืืงืจืืืจื ืื ืฉืืื ืืช ืืืืืฅ.
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
ืืื ืืืืืง ืืืืกืืืจืื ืื ืืื ื ืคืจื ืืงืืืืืื ืฉืขืจืื ื ืขื ืืจืืืืืก.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.txt1 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 ืขื ืืืชื ืงืืืฅ ืงืื: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, BEGIN1 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 ืืื ืืืืงืื ืขื ืืื ืืคืจืื ืฉืืื ืืจืืืืื:1 419
# ืคืจืืืืงืืืื
ืืฉืื ืืืืจื ืืคื ื ืฉืืชืืืืื ืื ืกืืข.
ืืฆืืฆื ืฉืื ืืื ืืคื ื ืฉืืืืืื ืืืฉืื.
ืืืืืง ืื ืืฆื ืืืืืจืื ืืืืืกืง ืืฉืืชืืืืื ืืืงืืจ ืชืงืื.
ืืืกืชืื ืืืืืื.
ืืืืกืืฃ ืืืืขืช ืืืคืกื (ืื Breakpoint) ืืืฆื ืคืืชืื.
ืืืืืช ืืช ืืืืฉื ืื ืืื.
ืืืื ืืื ืฉืื ื, ืืืืชื ืื ืืื ืืขืืืื, ืืืจืื ืืืื ืกืคืืจ ืคืขืืืืช ืฉืื ืื ื ืขืืฉืื "ืขื ืืืืืื" ืคืฉืื ืื ืืื ืชืืื ืขืฉืื ื ืื ืื ืืชืืฉืื ืืืืื ื ืฉืื ืืืขืื ืื ืื ืืืฉืื ืืืืื ืืฉืืืื ื. ืืื ืืฉ ืื ืืกืฃ ืื ืงืฆืช ืขืืืื ืฉืืืจืฉืช ืืฉืืื, ืงืืืช ืืืืืืช ืืื ืืืืจืื ืืืื.
ืืจื ืงืื ืืฉืคืจ ืคืจืืืืงืืืืืืช ืืื ืืืชืืื ืืฉืื ืื ืืคืจืืืืงืืืื ืืืืืืืืืื ืฉืื ื, ืืืชืื ืืืชื ืืืชืงื ืืช ืืื ืฉืืืจ ืื ืืชืืืืื ืื ื, ืื ืืืืกืืฃ ืืืืืืฆืื ืืืื ืฉืื ืื ื ืืืืขืื ืฉืืืฉืืจื. ืืืื ืงืฉื ืืืชืจ ืืจืืืช ืืืชื, ืืื ืืกืืฃ ืืื ืืืืจืื ืฉืงืืืขืื ืืช ืืชืืฆืื.
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#Multios1 419
# ืืงื ืืื ืืืชืืื ืืชืื ืช
ืืืฉืคื "ืืขืืื ืื ืืืื ืจืืื ืืืคื ืืื" ืืืื ืืืืืข ืืื ืืฉื ื ืคืืืื ืืืื ืฉืื ืื:
1. ืคืื (ืงืฆืช ืืืืจ) ืฉื ืื ืืื ืฉืืืฉื ืฉืื ืืฉื ื ืืื ืืื ืื ืกื, ืชืืื ืืื ืืืคืื ืืืืืคื ืืื.
2. ืคืื (ืืืชืจ ืืืืื ื) ืฉื ืื ืืื ืฉืื ืกื ืื ืฆื ืืืืื ืชืืจืืช ืืืคื ืืื, ืืืืื ืฉืื ืืฉื ื ืืื ืืื ืืฉืงืืข ืชืืื ืืืื ืจืืืืื ืืืืื ืืื ื ืืืื ืืขืืื ืื ืืฆืืื ืื ืฆื ืืฉืื ืชืืจืืช.
ืืฉ ืืจืื ืกืืืืช ืืืืื ืืืื ืงืฉื ืืืคืืื ืืืชื ืืคืฉืจื ืืืืืช ืจืืื ืืืคื ืืื ืืงืฆืืขื, ืื ื ืื ืืื ืืจ ืืงืฆืืขื, ืกืคืืจืืื ืืงืฆืืขื, ืกืืคืจ ืืงืฆืืขื ืื ืฉืฃ ืืคืืจืกื. ืืืืืื ืื ืืชืืืืื ืืืื ืืืืืจ. ืืื ืงืฉื ืืจืืืช ืืฆื ืฉืืืฉืื ืืืืช ืืชืืื ืืื ืืฆืืื ืืฉืืืจ ืขื ืฉืืืื ืืฉืงื ืืืืคื ืืื, ืื ืื ืื ืฉืืจื ืื ืืืฉืคืื, ืื ืืฉืืง ืืืืจืกื ืขื ืืืจืื ืื ืืืฉื ืืจืืื ืืืฉืคืื.
ืืื ืื ืืืชืื ืงืื.
ืื ืืืื ืฉืชืชืงืืื ืืืืื ืื ืืืืืงืจืืกืืคื. ืื ืืืื ืฉืืืืฆืจ ืฉืชืื ื ืืืื ืืืฆืืื ืืกืืจืจืช. ืื ืืืื ืฉืืงืื ืฉืืื ืืืื ืืืืืืฉืื ืชืืจืืช ืื ืฉืื ืคืขื ืชืขืืจื ืืช ืืืื ื ืืงืืื ืืงืจืืคืืืื ืืืืกื. ืืื ืืกืืจ.
ืื ืืืื ืฉืื ืชืฉืื ืืกืืืจ, ืชืืืื ืืชืชืืื ื - ืืกืืคื ืฉื ืืืจ ืชืฆืืืื ืืืืื ืืืจืื ืืฉืคื ืฉืืืืฉื ืืืื, ืื ืื ืืจืืืงื, ื JavaScript ืื ืืื ืฉืคื ืืืจืช. ืืื ืืฉื ื ืืืืื ืืื ืืชืืืืื.
1 419
ืืื ืืื ืืื ืืื ืฉืฆืจืื, ืืคืขื ืืืื ืฉืืืื ืื ื ืขืจื ืื ืืฉืืช ืืคืืกื ืืืชืืื ืืืฉืื ืืืืฆืื ืืื.
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
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
