diff --git a/README-cs.md b/README-cs.md index 14d07b01..f9b60dab 100644 --- a/README-cs.md +++ b/README-cs.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # Umฤ›nรญ pล™รญkazovรฉ ล™รกdky diff --git a/README-de.md b/README-de.md index bed41625..c64869bf 100644 --- a/README-de.md +++ b/README-de.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # The Art of Command Line diff --git a/README-el.md b/README-el.md index b379d8e5..fb6a3acb 100644 --- a/README-el.md +++ b/README-el.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # ฮ— ฮคฮญฯ‡ฮฝฮท ฯ„ฮทฯ‚ ฮ“ฯฮฑฮผฮผฮฎฯ‚ ฮ•ฮฝฯ„ฮฟฮปฯŽฮฝ +[![ฮกฯ‰ฯ„ฮฎฯƒฯ„ฮต ฮผฮฏฮฑ ฮตฯฯŽฯ„ฮทฯƒฮท](https://img.shields.io/badge/%3f-Ask%20a%20Question-ff69b4.svg)](https://airtable.com/shrzMhx00YiIVAWJg) diff --git a/README-es.md b/README-es.md index a8cde67b..b463122a 100644 --- a/README-es.md +++ b/README-es.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # El Arte del Terminal diff --git a/README-fr.md b/README-fr.md index bec5dc38..1ee2da3e 100644 --- a/README-fr.md +++ b/README-fr.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # L'art de la ligne de commande diff --git a/README-id.md b/README-id.md index b258df9f..90bdbdad 100644 --- a/README-id.md +++ b/README-id.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # Seni dalam Baris Perintah diff --git a/README-it.md b/README-it.md index 08258231..0f6afdbf 100644 --- a/README-it.md +++ b/README-it.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # The Art of Command Line (Traduzione Italiana) diff --git a/README-ja.md b/README-ja.md index 85aa91fd..d7abdd9e 100644 --- a/README-ja.md +++ b/README-ja.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # The Art of Command Line diff --git a/README-km.md b/README-km.md new file mode 100644 index 00000000..5e28bd5c --- /dev/null +++ b/README-km.md @@ -0,0 +1,476 @@ +๐ŸŒ +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* + + +# แžŸแžทแž›แŸ’แž”แŸˆแž“แŸƒแž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ Command Line + +[![Ask a Question](https://img.shields.io/badge/%3f-Ask%20a%20Question-ff69b4.svg)](https://airtable.com/shrzMhx00YiIVAWJg) + +[![Join the chat at https://gitter.im/jlevy/the-art-of-command-line](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + + +- [แž˜แŸแžแžถ](#แž˜แŸแžแžถ-meta) +- [แž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž‚แŸ’แžšแžนแŸ‡](#แž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž‚แŸ’แžšแžนแŸ‡-basics) +- [แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แŸ’แžšแž…แžถแŸ†แžแŸ’แž„แŸƒ](#แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แŸ’แžšแž…แžถแŸ†แžแŸ’แž„แŸƒ-everyday-use) +- [แž€แžถแžšแž…แžถแžแŸ‹แž…แŸ‚แž„แžฏแž€แžŸแžถแžš แž“แžทแž„แž‘แžทแž“แŸ’แž“แž“แŸแž™](#แž€แžถแžšแž…แžถแžแŸ‹แž…แŸ‚แž„แžฏแž€แžŸแžถแžš-แž“แžทแž„แž‘แžทแž“แŸ’แž“แž“แŸแž™-processing-files-and-data) +- [แž€แžถแžšแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž”แž‰แŸ’แž แžถแž”แŸ’แžšแž–แŸแž“แŸ’แž’](#แž€แžถแžšแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž”แž‰แŸ’แž แžถแž”แŸ’แžšแž–แŸแž“แŸ’แž’-system-debugging) +- [แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž˜แžฝแž™แž‡แžฝแžš](#แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž˜แžฝแž™แž‡แžฝแžš-one-liners) +- [แž˜แžทแž“แžŸแžผแžœแžŸแŸ’แž‚แžถแž›แŸ‹แžแŸ‚แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸ](#แž˜แžทแž“แžŸแžผแžœแžŸแŸ’แž‚แžถแž›แŸ‹แžแŸ‚แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸ-obscure-but-useful) +- [แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžแŸ‚ macOS](#แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžแŸ‚-macos-macos-only) +- [แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžแŸ‚ Windows](#แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžแŸ‚-windows-windows-only) +- [แž’แž“แž’แžถแž“แž”แž“แŸ’แžแŸ‚แž˜](#แž’แž“แž’แžถแž“แž”แž“แŸ’แžแŸ‚แž˜-more-resources) +- [แž€แžถแžšแž”แžŠแžทแžŸแŸแž’แž‘แž‘แžฝแž›แžแžปแžŸแžแŸ’แžšแžผแžœ](#แž€แžถแžšแž”แžŠแžทแžŸแŸแž’แž‘แž‘แžฝแž›แžแžปแžŸแžแŸ’แžšแžผแžœ-disclaimer) + +![curl -s 'https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md' | egrep -o '`\\w+`' | tr -d '`' | cowsay -W50](cowsay.png) + +แž—แžถแž–แžŸแŸ’แž‘แžถแžแŸ‹แž‡แŸ†แž“แžถแž‰แž›แžพ command line แž‚แžบแž‡แžถแž‡แŸ†แž“แžถแž‰แžŠแŸ‚แž›แž‡แžถแžšแžฟแž™แŸ—แžแŸ’แžšแžผแžœแž”แžถแž“แž‚แŸแž˜แžพแž›แžšแŸ†แž›แž„ แžฌแž…แžถแžแŸ‹แž‘แžปแž€แžแžถแž‡แžถ แžšแžฟแž„แžขแžถแžแŸŒแž€แŸ†แž”แžถแŸ†แž„ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžœแžถแž–แžทแžแž‡แžถแž‡แžฝแž™แž”แž„แŸ’แž€แžพแž“แž—แžถแž–แž”แžแŸ‹แž”แŸ‚แž“ แž“แžทแž„แž•แž›แžทแžแž—แžถแž–แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž€แŸ’แž“แžปแž„แž“แžถแž˜แž‡แžถแžœแžทแžŸแŸ’แžœแž€แžš แž‘แžถแŸ†แž„แž€แŸ’แž“แžปแž„แžšแžผแž”แž—แžถแž–แž‡แžถแž€แŸ‹แžŸแŸ’แžแŸ‚แž„ แž“แžทแž„แž›แžถแž€แŸ‹แž€แŸ†แž”แžถแŸ†แž„แŸ” แž“แŸแŸ‡แž‚แžบแž‡แžถแž”แžŽแŸ’แžแžปแŸ†แž“แŸƒแž€แŸ†แžŽแžแŸ‹แžแŸ’แžšแžถ แž“แžทแž„แž‚แž“แŸ’แž›แžนแŸ‡แžŸแŸ’แžแžธแž–แžธแž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ command-line แžŠแŸ‚แž›แž™แžพแž„แž™แž›แŸ‹แžแžถแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž“แŸ…แž–แŸแž›แž’แŸ’แžœแžพแž€แžถแžšแž›แžพ LinuxแŸ” แž‚แž“แŸ’แž›แžนแŸ‡แžแŸ’แž›แŸ‡แž‚แžบแž‡แžถแž˜แžผแž›แžŠแŸ’แž‹แžถแž“ แž แžพแž™แžแŸ’แž›แŸ‡แž‘แŸ€แžแž‚แžบแž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹ แžŸแŸŠแžธแž‡แž˜แŸ’แžšแŸ… แžฌแž˜แžทแž“แžŸแžผแžœแž˜แžถแž“แž‚แŸแžŠแžนแž„แŸ” แž‘แŸ†แž–แŸแžšแž“แŸแŸ‡แž˜แžทแž“แžœแŸ‚แž„แž‘แŸ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžพ แž“แžทแž„แž…แž„แž…แžถแŸ†แž…แŸ†แžŽแžปแž…แž‘แžถแŸ†แž„แžขแžŸแŸ‹แž“แŸ…แž‘แžธแž“แŸแŸ‡แž”แžถแž“ แž“แŸ„แŸ‡แžขแŸ’แž“แž€แž…แŸแŸ‡แž…แŸ’แžšแžพแž“แž แžพแž™แŸ” + +แž€แžถแžšแž„แžถแžšแž“แŸแŸ‡แž‚แžบแž‡แžถแž›แž‘แŸ’แž’แž•แž›แž“แŸƒ [แžขแŸ’แž“แž€แž“แžทแž–แž“แŸ’แž’ แž“แžทแž„แžขแŸ’แž“แž€แž”แž€แž”แŸ’แžšแŸ‚แž‡แžถแž…แŸ’แžšแžพแž“](AUTHORS.md)แŸ” +แžแŸ’แž›แžนแž˜แžŸแžถแžšแžแŸ’แž›แŸ‡ +[แžŠแžพแž˜แžกแžพแž™](http://www.quora.com/What-are-some-lesser-known-but-useful-Unix-commands) +[แž”แžถแž“แž›แŸแž…แžกแžพแž„](http://www.quora.com/What-are-the-most-useful-Swiss-army-knife-one-liners-on-Unix) +แž“แŸ…แž›แžพ [Quora](http://www.quora.com/What-are-some-time-saving-tips-that-every-Linux-user-should-know), +แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž€แŸ’แžšแŸ„แž™แž˜แž€แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž˜แž€ GitHub แžŠแŸ‚แž›แž˜แžถแž“แž˜แž“แžปแžŸแŸ’แžŸแžŠแŸ‚แž›แž˜แžถแž“แž‘แŸแž–แž€แŸ„แžŸแž›แŸ’แž™แž‡แžถแž„แžขแŸ’แž“แž€แž“แžทแž–แž“แŸ’แž’แžŠแžพแž˜ แž”แžถแž“แž’แŸ’แžœแžพแž€แžถแžšแž€แŸ‚แž›แž˜แŸ’แžขแž‡แžถแž…แŸ’แžšแžพแž“แŸ” +**[แžŸแžผแž˜แžŠแžถแž€แŸ‹แžŸแŸ†แžŽแžฝแžš](https://airtable.com/shrzMhx00YiIVAWJg)** แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž˜แžถแž“แž…แž˜แŸ’แž„แž›แŸ‹แž‘แžถแž€แŸ‹แž‘แž„แž“แžนแž„ command lineแŸ” **[แžŸแžผแž˜แž…แžผแž›แžšแžฝแž˜แž…แŸ†แžŽแŸ‚แž€](/CONTRIBUTING.md)** แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แžƒแžพแž‰แž€แŸ†แž แžปแžŸ แžฌแžขแŸ’แžœแžธแž˜แžฝแž™แžŠแŸ‚แž›แžขแžถแž…แž€แŸ‚แžฑแŸ’แž™แž”แŸ’แžšแžŸแžพแžšแž‡แžถแž„แž“แŸแŸ‡! + +## แž˜แŸแžแžถ (Meta) + +แžœแžทแžŸแžถแž›แž—แžถแž–แŸ– + +* แž€แžถแžšแžŽแŸ‚แž“แžถแŸ†แž“แŸแŸ‡แž‚แžบแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‘แžถแŸ†แž„แžขแŸ’แž“แž€แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แžŠแŸ†แž”แžผแž„ แž“แžทแž„แžขแŸ’แž“แž€แžŠแŸ‚แž›แž˜แžถแž“แž”แž‘แž–แžทแžŸแŸ„แž’แž“แŸแŸ” แž‚แŸ„แž›แžŠแŸ…แž‚แžบ *แž—แžถแž–แž‘แžผแž›แŸ†แž‘แžผแž›แžถแž™* (แžขแŸ’แžœแžธแŸ—แžŠแŸ‚แž›แžŸแŸ†แžแžถแž“แŸ‹), *แž—แžถแž–แž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹* (แž•แŸ’แžแž›แŸ‹แžงแž‘แžถแž แžšแžŽแŸแž‡แžถแž€แŸ‹แžŸแŸ’แžแŸ‚แž„แž“แŸƒแž€แžšแžŽแžธแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž‰แžนแž€แž‰แžถแž”แŸ‹แž”แŸ†แž•แžปแž), แž“แžทแž„ *แž—แžถแž–แžแŸ’แž›แžธ* (แž‡แŸ€แžŸแžœแžถแž„แžขแŸ’แžœแžธแžŠแŸ‚แž›แž˜แžทแž“แž…แžถแŸ†แž”แžถแž…แŸ‹ แžฌแž€แžถแžšแž–แž“แŸ’แž™แž›แŸ‹แžœแŸ‚แž„แž†แŸ’แž„แžถแž™แžŠแŸ‚แž›แžขแžถแž…แžšแž€แž˜แžพแž›แž”แžถแž“แž“แŸ…แž€แž“แŸ’แž›แŸ‚แž„แž•แŸ’แžŸแŸแž„)แŸ” แž‚แž“แŸ’แž›แžนแŸ‡แž“แžธแž˜แžฝแž™แŸ—แž‚แžบแž…แžถแŸ†แž”แžถแž…แŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„แžŸแŸ’แžแžถแž“แž—แžถแž–แžŽแžถแž˜แžฝแž™ แžฌแž‡แžฝแž™แžŸแž“แŸ’แžŸแŸ†แžŸแŸ†แž…แŸƒแž–แŸแž›แžœแŸแž›แžถแž™แŸ‰แžถแž„แž…แŸ’แžšแžพแž“แž”แžพแž’แŸ€แž”แž“แžนแž„แž‡แž˜แŸ’แžšแžพแžŸแž•แŸ’แžŸแŸแž„แž‘แŸ€แžแŸ” +* แžฏแž€แžŸแžถแžšแž“แŸแŸ‡แžŸแžšแžŸแŸแžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹ Linux แžŠแŸ„แž™แž›แžพแž€แž›แŸ‚แž„แžแŸ‚แž•แŸ’แž“แŸ‚แž€ "[แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžแŸ‚ macOS](#แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžแŸ‚-macos-macos-only)" แž“แžทแž„ "[แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžแŸ‚ Windows](#แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžแŸ‚-windows-windows-only)"แŸ” แž…แŸ†แžŽแžปแž…แž‡แžถแž…แŸ’แžšแžพแž“แž‘แŸ€แžแž€แŸแžขแžถแž…แžขแž“แžปแžœแžแŸ’แž แžฌแžŠแŸ†แžกแžพแž„แž”แžถแž“แž“แŸ…แž›แžพ Unix แž•แŸ’แžŸแŸแž„แž‘แŸ€แž แžฌ macOS (แžฌแžŸแžผแž˜แŸ’แž”แžธแžแŸ‚ Cygwin)แŸ” +* แž€แžถแžšแž•แŸ’แžแŸ„แžแžŸแŸ†แžแžถแž“แŸ‹แž‚แžบแž›แžพ Bash แž”แŸ‚แž”แžขแž“แŸ’แžแžšแž€แž˜แŸ’แž˜ (Interactive Bash) แž‘แŸ„แŸ‡แž”แžธแž‡แžถแž‚แž“แŸ’แž›แžนแŸ‡แž‡แžถแž…แŸ’แžšแžพแž“แžขแž“แžปแžœแžแŸ’แžแž…แŸ†แž–แŸ„แŸ‡ Shell แž•แŸ’แžŸแŸแž„แž‘แŸ€แž แž“แžทแž„แž€แžถแžšแžŸแžšแžŸแŸแžš Script Bash แž‘แžผแž‘แŸ…แž€แŸแžŠแŸ„แž™แŸ” +* แžœแžถแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž›แž‘แžถแŸ†แž„แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ Unix "แžŸแŸ’แžแž„แŸ‹แžŠแžถแžš" แž€แŸแžŠแžผแž…แž‡แžถแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž€แžถแžšแž€แžถแžšแžŠแŸ†แžกแžพแž„แž€แž‰แŸ’แž…แž”แŸ‹ (package) แž–แžทแžŸแŸแžŸ -- แžŠแžšแžถแž”แžŽแžถแžœแžถแž˜แžถแž“แžŸแžถแžšแŸˆแžŸแŸ†แžแžถแž“แŸ‹แž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแžถแž“แŸ‹แž€แŸ’แž“แžปแž„แž€แžถแžšแžŠแžถแž€แŸ‹แž”แž‰แŸ’แž…แžผแž›แŸ” + +แž€แŸ†แžŽแžแŸ‹แžŸแž˜แŸ’แž‚แžถแž›แŸ‹แŸ– + +* แžŠแžพแž˜แŸ’แž”แžธแžšแž€แŸ’แžŸแžถแžฏแž€แžŸแžถแžšแž“แŸแŸ‡แžฑแŸ’แž™แž“แŸ…แžแŸ’แžšแžนแž˜แž˜แžฝแž™แž‘แŸ†แž–แŸแžš แžแŸ’แž›แžนแž˜แžŸแžถแžšแžแŸ’แžšแžผแžœแž”แžถแž“แž”แž‰แŸ’แž…แžผแž›แžŠแŸ„แž™แž”แŸ’แžšแž™แŸ„แž›แžแžถแž˜แžšแž™แŸˆแž€แžถแžšแž™แŸ„แž„แŸ” แžขแŸ’แž“แž€แž†แŸ’แž›แžถแžแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแžถแž“แŸ‹แž€แŸ’แž“แžปแž„แž€แžถแžšแžŸแŸ’แžœแŸ‚แž„แžšแž€แž–แŸแžแŸŒแž˜แžถแž“แž›แž˜แŸ’แžขแžทแžแž”แž“แŸ’แžแŸ‚แž˜แž“แŸ…แž€แž“แŸ’แž›แŸ‚แž„แž•แŸ’แžŸแŸแž„ แž“แŸ…แž–แŸแž›แžŠแŸ‚แž›แžขแŸ’แž“แž€แžŠแžนแž„แž–แžธแž‚แŸ†แž“แžทแž แžฌแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžŠแžพแž˜แŸ’แž”แžธแžŸแŸ’แžœแŸ‚แž„แžšแž€แž€แŸ’แž“แžปแž„ GoogleแŸ” แž”แŸ’แžšแžพ `apt`, `yum`, `dnf`, `pacman`, `pip` แžฌ `brew` (แžแžถแž˜แž€แžถแžšแžŸแž˜แžŸแŸ’แžšแž”) แžŠแžพแž˜แŸ’แž”แžธแžŠแŸ†แžกแžพแž„แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžแŸ’แž˜แžธแŸ” +* แž”แŸ’แžšแžพ [Explainshell](http://explainshell.com/) แžŠแžพแž˜แŸ’แž”แžธแž‘แž‘แžฝแž›แž”แžถแž“แž€แžถแžšแž”แŸ†แž”แŸ‚แž€แžŠแŸแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž“แŸƒแžขแŸ’แžœแžธแžŠแŸ‚แž›แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ, แž‡แž˜แŸ’แžšแžพแžŸ (options), pipes แŸ”แž›แŸ” แž’แŸ’แžœแžพแž€แžถแžšแŸ” + +## แž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž‚แŸ’แžšแžนแŸ‡ (Basics) + +* แžšแŸ€แž“ Bash แž˜แžผแž›แžŠแŸ’แž‹แžถแž“แŸ” แžแžถแž˜แž–แžทแžแž‘แŸ… แžœแžถแž™ `man bash` แž แžพแž™แž™แŸ‰แžถแž„แž แŸ„แž…แžŽแžถแžŸแŸ‹แž˜แžพแž›แžแŸ’แžšแžฝแžŸแŸ—แž‘แžถแŸ†แž„แžขแžŸแŸ‹; แžœแžถแž„แžถแž™แžŸแŸ’แžšแžฝแž›แž™แž›แŸ‹ แž“แžทแž„แž˜แžทแž“แžœแŸ‚แž„แž–แŸแž€แž‘แŸแŸ” Shell แž•แŸ’แžŸแŸแž„แž‘แŸ€แžแžขแžถแž…แž“แžนแž„แž›แŸ’แžข แž”แŸ‰แžปแž“แŸ’แžแŸ‚ Bash แž˜แžถแž“แžขแž“แžปแž—แžถแž–แžแŸ’แž›แžถแŸ†แž„ แž“แžทแž„แž˜แžถแž“แž“แŸ…แž‚แŸ’แžšแž”แŸ‹แž‘แžธแž€แž“แŸ’แž›แŸ‚แž„ (แž€แžถแžšแžšแŸ€แž“ *แžแŸ‚* zsh, fish, แŸ”แž›แŸ” แž‘แŸ„แŸ‡แž”แžธแž‡แžถแž‚แžฝแžšแžฑแŸ’แž™แž‘แžถแž€แŸ‹แž‘แžถแž‰แž“แŸ…แž›แžพแž€แžปแŸ†แž–แŸ’แž™แžผแž‘แŸแžšแž•แŸ’แž‘แžถแž›แŸ‹แžแŸ’แž›แžฝแž“แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž€แŸแžŠแŸ„แž™ แžœแžถแž“แžนแž„แž€แž˜แŸ’แžšแžทแžแžขแŸ’แž“แž€แž“แŸ…แž€แŸ’แž“แžปแž„แžŸแŸ’แžแžถแž“แž—แžถแž–แž‡แžถแž…แŸ’แžšแžพแž“ แžŠแžผแž…แž‡แžถแž“แŸ…แž–แŸแž›แž”แŸ’แžšแžพแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸ (servers) แžŠแŸ‚แž›แž˜แžถแž“แžŸแŸ’แžšแžถแž”แŸ‹)แŸ” +* แžšแŸ€แž“แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž€แŸ‚แžŸแž˜แŸ’แžšแžฝแž›แžขแžแŸ’แžแž”แž‘ (text-based editor) แž™แŸ‰แžถแž„แž แŸ„แž…แžŽแžถแžŸแŸ‹แž˜แžฝแž™แžฑแŸ’แž™แž”แžถแž“แž…แŸ’แž”แžถแžŸแŸ‹แŸ” แž€แž˜แŸ’แž˜แžœแžทแž’แžธ `nano` แž‚แžบแž‡แžถแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž˜แžฝแž™แžŠแŸ‚แž›แžŸแžถแž˜แž‰แŸ’แž‰แž”แŸ†แž•แžปแžแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž€แŸ‚แžŸแž˜แŸ’แžšแžฝแž›แž‡แžถแž˜แžผแž›แžŠแŸ’แž‹แžถแž“ (แž”แžพแž€, แž€แŸ‚แžŸแž˜แŸ’แžšแžฝแž›, แžšแž€แŸ’แžŸแžถแž‘แžปแž€, แžŸแŸ’แžœแŸ‚แž„แžšแž€)แŸ” แž‘แŸ„แŸ‡แž‡แžถแž™แŸ‰แžถแž„แžŽแžถแž€แŸแžŠแŸ„แž™ แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž€แž˜แŸ’แžšแžทแžแžแŸ’แž–แžŸแŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„ terminal แž‚แŸ’แž˜แžถแž“แžขแŸ’แžœแžธแž‡แŸ†แž“แžฝแžŸ Vim (`vi`) แž”แžถแž“แž‘แŸ แžŠแŸ‚แž›แž‡แžถ editor แž–แžทแž”แžถแž€แžšแŸ€แž“ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž˜แžถแž“แž›แŸ’แž”แžฟแž“แž›แžฟแž“ แž“แžทแž„แž˜แžถแž“แž˜แžปแžแž„แžถแžšแž–แŸแž‰แž›แŸแž‰แŸ” แž˜แž“แžปแžŸแŸ’แžŸแž‡แžถแž…แŸ’แžšแžพแž“แž€แŸแž”แŸ’แžšแžพ Emacs แž”แžปแžšแžถแžŽแž•แž„แžŠแŸ‚แžš แž‡แžถแž–แžทแžŸแŸแžŸแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžทแž…แŸ’แž…แž€แžถแžšแž€แŸ‚แžŸแž˜แŸ’แžšแžฝแž›แž’แŸ†แŸ—แŸ” (แž‡แžถแž€แžถแžšแž–แžทแžแžŽแžถแžŸแŸ‹ แžขแŸ’แž“แž€แžขแž—แžทแžœแžŒแŸ’แžแž“แŸแž€แž˜แŸ’แž˜แžœแžทแž’แžธแžŸแž˜แŸแž™แž‘แŸ†แž“แžพแž”แžŽแžถแž˜แžฝแž™แžŠแŸ‚แž›แž’แŸ’แžœแžพแž€แžถแžšแž›แžพแž‚แž˜แŸ’แžšแŸ„แž„แž’แŸ†แž‘แžผแž›แžถแž™ แž‘แŸ†แž“แž„แž‡แžถแž˜แžทแž“แž”แŸ’แžšแžพแžแŸ‚แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž€แŸ‚แžŸแž˜แŸ’แžšแžฝแž›แžขแžแŸ’แžแž”แž‘แžŸแžปแž‘แŸ’แž’แž‘แŸ แž แžพแž™แž‚แžฝแžšแžแŸ‚แžŸแŸŠแžถแŸ†แž‡แžถแž˜แžฝแž™ IDEs แž“แžทแž„แžงแž”แž€แžšแžŽแŸแž€แŸ’แžšแžถแž แŸ’แžœแžทแž€แž‘แŸ†แž“แžพแž”แž•แž„แžŠแŸ‚แžšแŸ”) +* แž€แžถแžšแžŸแŸ’แžœแŸ‚แž„แžšแž€แžฏแž€แžŸแžถแžšแž‡แŸ†แž“แžฝแž™แŸ– + - แž…แŸแŸ‡แžขแžถแž“แžฏแž€แžŸแžถแžšแž•แŸ’แž›แžผแžœแž€แžถแžšแž‡แžถแž˜แžฝแž™ `man` (แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแŸ’แž“แž€แž…แž„แŸ‹แžŠแžนแž„ `man man` แžšแžถแž™แž”แž‰แŸ’แž‡แžธแž›แŸแžแž•แŸ’แž“แŸ‚แž€ แžง. แŸก แž‚แžบแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ "แž’แž˜แŸ’แž˜แžแžถ", แŸฅ แž‚แžบแžฏแž€แžŸแžถแžš/แžขแž“แžปแžŸแž‰แŸ’แž‰แžถ, แž“แžทแž„ แŸจ แž‚แžบแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž”แŸ’แžšแž–แŸแž“แŸ’แž’)แŸ” แžŸแŸ’แžœแŸ‚แž„แžšแž€แž‘แŸ†แž–แŸแžš man แž‡แžถแž˜แžฝแž™ `apropos`แŸ” + - แžŠแžนแž„แžแžถแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžแŸ’แž›แŸ‡แž˜แžทแž“แž˜แŸ‚แž“แž‡แžถแž€แž˜แŸ’แž˜แžœแžทแž’แžธ (executables) แž‘แŸ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž‡แžถ Bash builtins แž แžพแž™แžขแŸ’แž“แž€แžขแžถแž…แž‘แž‘แžฝแž›แž”แžถแž“แž‡แŸ†แž“แžฝแž™แžขแŸ†แž–แžธแž–แžฝแž€แžœแžถแž‡แžถแž˜แžฝแž™ `help` แž“แžทแž„ `help -d`แŸ” แžขแŸ’แž“แž€แžขแžถแž…แžŠแžนแž„แžแžถแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž˜แžฝแž™แž‡แžถ executable, shell builtin แžฌแž‡แžถ alias แžŠแŸ„แž™แž”แŸ’แžšแžพ `type command`แŸ” + - `curl cheat.sh/command` แž“แžนแž„แž•แŸ’แžแž›แŸ‹แžฑแŸ’แž™แž“แžผแžœ "cheat sheet" แžŸแž„แŸ’แžแŸแž”แž‡แžถแž˜แžฝแž™แžงแž‘แžถแž แžšแžŽแŸแž‘แžผแž‘แŸ…แž“แŸƒแžšแž”แŸ€แž”แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ shell แž“แŸ„แŸ‡แŸ” + + +* แžšแŸ€แž“แžขแŸ†แž–แžธแž€แžถแžšแž”แž‰แŸ’แž‡แžผแž“แž›แž‘แŸ’แž’แž•แž› (redirection) แž“แŸƒ output แž“แžทแž„ input แžŠแŸ„แž™แž”แŸ’แžšแžพ `>` แž“แžทแž„ `<` แž“แžทแž„ pipes แžŠแŸ„แž™แž”แŸ’แžšแžพ `|`แŸ” แžŠแžนแž„แžแžถ `>` แžŸแžšแžŸแŸแžšแž‡แžถแž“แŸ‹แž›แžพ (overwrite) แžฏแž€แžŸแžถแžš output แž แžพแž™ `>>` แžŸแžšแžŸแŸแžšแž”แž“แŸ’แžแŸ‚แž˜ (append)แŸ” แžšแŸ€แž“แžขแŸ†แž–แžธ stdout แž“แžทแž„ stderrแŸ” +* แžšแŸ€แž“แžขแŸ†แž–แžธ file glob expansion แž‡แžถแž˜แžฝแž™ `*` (แž“แžทแž„แž”แŸ’แžšแž แŸ‚แž›แž‡แžถ `?` แž“แžทแž„ `[`...`]`) แž“แžทแž„แž€แžถแžšแž”แŸ’แžšแžพแžŸแž‰แŸ’แž‰แžถแžŸแž˜แŸ’แžšแž„แŸ‹ (quoting) แž–แŸ’แžšแž˜แž‘แžถแŸ†แž„แž—แžถแž–แžแžปแžŸแž‚แŸ’แž“แžถแžšแžœแžถแž„แžŸแž‰แŸ’แž‰แžถแžŸแž˜แŸ’แžšแž„แŸ‹แž–แžธแžš `"` แž“แžทแž„แžŸแž‰แŸ’แž‰แžถแžŸแž˜แŸ’แžšแž„แŸ‹แž˜แžฝแž™ `'`แŸ” (แžŸแžผแž˜แž˜แžพแž›แž”แž“แŸ’แžแŸ‚แž˜แž›แžพ variable expansion แžแžถแž„แž€แŸ’แžšแŸ„แž˜แŸ”) +* แžŸแŸ’แžœแŸ‚แž„แž™แž›แŸ‹แž‡แžถแž˜แžฝแž™แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„ Bash jobแŸ– `&`, **ctrl-z**, **ctrl-c**, `jobs`, `fg`, `bg`, `kill`, แŸ”แž›แŸ” +* แžŸแŸ’แž‚แžถแž›แŸ‹ `ssh`, แž“แžทแž„แž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž‚แŸ’แžšแžนแŸ‡แž“แŸƒแž€แžถแžšแž•แŸ’แž‘แŸ€แž„แž•แŸ’แž‘แžถแžแŸ‹แžŠแŸ„แž™แž˜แžทแž“แž”แŸ’แžšแžพแž–แžถแž€แŸ’แž™แžŸแž˜แŸ’แž„แžถแžแŸ‹ (passwordless authentication) แžแžถแž˜แžšแž™แŸˆ `ssh-agent`, `ssh-add`, แŸ”แž›แŸ” +* แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แžฏแž€แžŸแžถแžšแž˜แžผแž›แžŠแŸ’แž‹แžถแž“แŸ– `ls` แž“แžทแž„ `ls -l` (แž‡แžถแž–แžทแžŸแŸแžŸ แžšแŸ€แž“แžแžถแž‚แŸ’แžšแž”แŸ‹แž‡แžฝแžšแžˆแžšแž€แŸ’แž“แžปแž„ `ls -l` แž˜แžถแž“แž“แŸแž™แžŠแžผแž…แž˜แŸ’แžแŸแž…), `less`, `head`, `tail` แž“แžทแž„ `tail -f` (แžฌแž”แŸ’แžšแžŸแžพแžšแž‡แžถแž„แž“แŸแŸ‡ `less +F`), `ln` แž“แžทแž„ `ln -s` (แžšแŸ€แž“แž–แžธแž—แžถแž–แžแžปแžŸแž‚แŸ’แž“แžถ แž“แžทแž„แž‚แžปแžŽแžŸแž˜แŸ’แž”แžแŸ’แžแžทแž“แŸƒ hard links แž’แŸ€แž”แž“แžนแž„ soft links), `chown`, `chmod`, `du` (แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžŸแž„แŸ’แžแŸแž”แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžแžถแžŸแžšแž แŸแžŸแŸ– `du -hs *`)แŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„ filesystem, `df`, `mount`, `fdisk`, `mkfs`, `lsblk`แŸ” แžšแŸ€แž“แžแžถแžขแŸ’แžœแžธแž‡แžถ inode (`ls -i` แžฌ `df -i`)แŸ” +* แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž”แžŽแŸ’แžแžถแž‰แž˜แžผแž›แžŠแŸ’แž‹แžถแž“แŸ– `ip` แžฌ `ifconfig`, `dig`, `traceroute`, `route`แŸ” +* แžšแŸ€แž“ แž“แžทแž„แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แŸ’แžšแž–แŸแž“แŸ’แž’แž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž€แŸ†แžŽแŸ‚ (version control management system) แžŠแžผแž…แž‡แžถ `git`แŸ” +* แžŸแŸ’แž‚แžถแž›แŸ‹ regular expressions แžฑแŸ’แž™แž”แžถแž“แž…แŸ’แž”แžถแžŸแŸ‹ แž“แžทแž„ flags แž•แŸ’แžŸแŸแž„แŸ—แž…แŸ†แž–แŸ„แŸ‡ `grep`/`egrep`แŸ” แž‡แž˜แŸ’แžšแžพแžŸ `-i`, `-o`, `-v`, `-A`, `-B`, แž“แžทแž„ `-C` แž‚แžบแž˜แžถแž“แžแž˜แŸ’แž›แŸƒแžŠแŸ‚แž›แž‚แžฝแžšแžŠแžนแž„แŸ” +* แžšแŸ€แž“แž”แŸ’แžšแžพ `apt-get`, `yum`, `dnf` แžฌ `pacman` (แžขแžถแžŸแŸ’แžšแŸแž™แž›แžพ distro) แžŠแžพแž˜แŸ’แž”แžธแžŸแŸ’แžœแŸ‚แž„แžšแž€ แž“แžทแž„แžŠแŸ†แžกแžพแž„แž€แž‰แŸ’แž…แž”แŸ‹แž€แž˜แŸ’แž˜แžœแžทแž’แžธแŸ” แž แžพแž™แžแŸ’แžšแžผแžœแž”แŸ’แžšแžถแž€แžŠแžแžถแžขแŸ’แž“แž€แž˜แžถแž“ `pip` แžŠแžพแž˜แŸ’แž”แžธแžŠแŸ†แžกแžพแž„แžงแž”แž€แžšแžŽแŸ command-line แžŠแŸ‚แž›แž”แž„แŸ’แž€แžพแžแžŠแŸ„แž™ Python (แž˜แžฝแž™แž…แŸ†แž“แžฝแž“แžแžถแž„แž€แŸ’แžšแŸ„แž˜แž„แžถแž™แžŸแŸ’แžšแžฝแž›แžŠแŸ†แžกแžพแž„แžแžถแž˜แžšแž™แŸˆ `pip`)แŸ” + +## แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แŸ’แžšแž…แžถแŸ†แžแŸ’แž„แŸƒ (Everyday use) + +* แž“แŸ…แž€แŸ’แž“แžปแž„ Bash, แž”แŸ’แžšแžพ **Tab** แžŠแžพแž˜แŸ’แž”แžธแž”แŸ†แž–แŸแž‰แžขแžถแž‚แžปแž™แž˜แŸ‰แž„แŸ‹ (arguments) แžฌแžšแžถแž™แž”แž‰แŸ’แž‡แžธแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžŠแŸ‚แž›แž˜แžถแž“แž‘แžถแŸ†แž„แžขแžŸแŸ‹ แž“แžทแž„ **ctrl-r** แžŠแžพแž˜แŸ’แž”แžธแžŸแŸ’แžœแŸ‚แž„แžšแž€แž€แŸ’แž“แžปแž„แž”แŸ’แžšแžœแžแŸ’แžแžทแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ (command history) (แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž…แžปแž…, แžœแžถแž™แž–แžถแž€แŸ’แž™แžŠแžพแž˜แŸ’แž”แžธแžŸแŸ’แžœแŸ‚แž„แžšแž€, แž…แžปแž… **ctrl-r** แžŠแžŠแŸ‚แž›แŸ—แžŠแžพแž˜แŸ’แž”แžธแž”แŸ’แžแžผแžšแž‘แŸ…แž€แžถแžšแž•แŸ’แž‚แžผแž•แŸ’แž‚แž„แž•แŸ’แžŸแŸแž„แž‘แŸ€แž, แž…แžปแž… **Enter** แžŠแžพแž˜แŸ’แž”แžธแžขแž“แžปแžœแžแŸ’แžแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžŠแŸ‚แž›แž”แžถแž“แžšแž€แžƒแžพแž‰, แžฌแž…แžปแž…แžŸแž‰แŸ’แž‰แžถแž–แŸ’แžšแžฝแž‰แžŸแŸ’แžแžถแŸ†แžŠแžพแž˜แŸ’แž”แžธแžŠแžถแž€แŸ‹แž›แž‘แŸ’แž’แž•แž›แž‘แŸ…แž€แŸ’แž“แžปแž„แž”แž“แŸ’แž‘แžถแžแŸ‹แž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แžŠแžพแž˜แŸ’แž”แžธแž€แŸ‚แžŸแž˜แŸ’แžšแžฝแž›)แŸ” +* แž“แŸ…แž€แŸ’แž“แžปแž„ Bash, แž”แŸ’แžšแžพ **ctrl-w** แžŠแžพแž˜แŸ’แž”แžธแž›แžปแž”แž–แžถแž€แŸ’แž™แž…แžปแž„แž€แŸ’แžšแŸ„แž™, แž“แžทแž„ **ctrl-u** แžŠแžพแž˜แŸ’แž”แžธแž›แžปแž”แžแŸ’แž›แžนแž˜แžŸแžถแžšแž–แžธแž‘แžŸแŸ’แžŸแž“แŸแž‘แŸ’แžšแž“แžทแž… (cursor) แž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แž‘แŸ…แžŠแžพแž˜แž”แž“แŸ’แž‘แžถแžแŸ‹แŸ” แž”แŸ’แžšแžพ **alt-b** แž“แžทแž„ **alt-f** แžŠแžพแž˜แŸ’แž”แžธแž•แŸ’แž›แžถแžŸแŸ‹แž‘แžธแžแžถแž˜แž–แžถแž€แŸ’แž™, **ctrl-a** แžŠแžพแž˜แŸ’แž”แžธแž•แŸ’แž›แžถแžŸแŸ‹แž‘แžธ cursor แž‘แŸ…แžŠแžพแž˜แž”แž“แŸ’แž‘แžถแžแŸ‹, **ctrl-e** แžŠแžพแž˜แŸ’แž”แžธแž•แŸ’แž›แžถแžŸแŸ‹แž‘แžธ cursor แž‘แŸ…แž…แžปแž„แž”แž“แŸ’แž‘แžถแžแŸ‹, **ctrl-k** แžŠแžพแž˜แŸ’แž”แžธแž›แžปแž” (kill) แž‘แŸ…แž…แžปแž„แž”แž“แŸ’แž‘แžถแžแŸ‹, **ctrl-l** แžŠแžพแž˜แŸ’แž”แžธแžŸแž˜แŸ’แžขแžถแžแžขแŸแž€แŸ’แžšแž„แŸ‹แŸ” แžŸแžผแž˜แž˜แžพแž› `man readline` แžŸแž˜แŸ’แžšแžถแž”แŸ‹ keybindings แž‘แžถแŸ†แž„แžขแžŸแŸ‹แžŠแŸ‚แž›แž˜แžถแž“แžŸแŸ’แžšแžถแž”แŸ‹แž€แŸ’แž“แžปแž„ BashแŸ” แž˜แžถแž“แž…แŸ’แžšแžพแž“แžŽแžถแžŸแŸ‹แŸ” แžงแž‘แžถแž แžšแžŽแŸ **alt-.** แžœแžทแž›แž‡แžปแŸ†แžแžถแž˜แžขแžถแž‚แžปแž™แž˜แŸ‰แž„แŸ‹แž˜แžปแž“แŸ—, แž“แžทแž„ **alt-*** แž–แž„แŸ’แžšแžธแž€ globแŸ” +* แž‡แž˜แŸ’แžšแžพแžŸแž˜แžฝแž™แž‘แŸ€แž แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แžŸแŸ’แžšแž›แžถแž‰แŸ‹ key-bindings แž”แŸ‚แž” vi, แž”แŸ’แžšแžพ `set -o vi` (แž“แžทแž„ `set -o emacs` แžŠแžพแž˜แŸ’แž”แžธแžŠแžถแž€แŸ‹แžœแžถแž˜แž€แžœแžทแž‰)แŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž€แŸ‚แžŸแž˜แŸ’แžšแžฝแž›แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžœแŸ‚แž„แŸ—, แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž€แŸ†แžŽแžแŸ‹ editor แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€ (แžงแž‘แžถแž แžšแžŽแŸ `export EDITOR=vim`), **ctrl-x** **ctrl-e** แž“แžนแž„แž”แžพแž€แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แž“แŸ…แž€แŸ’แž“แžปแž„ editor แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž€แŸ‚แžŸแž˜แŸ’แžšแžฝแž›แž…แŸ’แžšแžพแž“แž”แž“แŸ’แž‘แžถแžแŸ‹แŸ” แžฌแž€แŸ’แž“แžปแž„แžšแž…แž“แžถแž”แŸแž‘แŸ’แž˜ vi, **escape-v**แŸ” +* แžŠแžพแž˜แŸ’แž”แžธแž˜แžพแž›แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžแŸ’แž˜แžธแŸ—, แž”แŸ’แžšแžพ `history`แŸ” แž”แž“แŸ’แžแžŠแŸ„แž™ `!n` (แžŠแŸ‚แž› `n` แž‡แžถแž›แŸแžแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ) แžŠแžพแž˜แŸ’แž”แžธแžขแž“แžปแžœแžแŸ’แžแž˜แŸ’แžแž„แž‘แŸ€แžแŸ” แž€แŸแž˜แžถแž“แžขแž€แŸ’แžŸแžšแž€แžถแžแŸ‹แž‡แžถแž…แŸ’แžšแžพแž“แžŠแŸ‚แž›แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžพแž”แžถแž“ แžŠแŸ‚แž›แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž”แŸ†แž•แžปแžแž‚แžบ `!$` แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแžถแž‚แžปแž™แž˜แŸ‰แž„แŸ‹แž…แžปแž„แž€แŸ’แžšแŸ„แž™ แž“แžทแž„ `!!` แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž…แžปแž„แž€แŸ’แžšแŸ„แž™ (แžŸแžผแž˜แž˜แžพแž› "HISTORY EXPANSION" แž€แŸ’แž“แžปแž„ man page)แŸ” แž‘แŸ„แŸ‡แž‡แžถแž™แŸ‰แžถแž„แžŽแžถแž€แŸแžŠแŸ„แž™ แžœแžถแž„แžถแž™แžŸแŸ’แžšแžฝแž›แž‡แŸ†แž“แžฝแžŸแžŠแŸ„แž™ **ctrl-r** แž“แžทแž„ **alt-.**แŸ” +* แž‘แŸ…แž€แžถแž“แŸ‹ home directory แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž‡แžถแž˜แžฝแž™ `cd`แŸ” แž…แžผแž›แž”แŸ’แžšแžพแžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž‘แžถแž€แŸ‹แž‘แž„แž“แžนแž„ home directory แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž‡แžถแž˜แžฝแž™แž”แžปแž–แŸ’แžœแž”แž‘ `~` (แžง. `~/.bashrc`)แŸ” แž“แŸ…แž€แŸ’แž“แžปแž„ `sh` scripts แžŸแŸ†แžŠแŸ…แž›แžพ home directory แž‡แžถ `$HOME`แŸ” +* แžŠแžพแž˜แŸ’แž”แžธแžแŸ’แžšแžกแž”แŸ‹แž‘แŸ… working directory แž˜แžปแž“แŸ– `cd -`แŸ” +* แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž€แŸ†แž–แžปแž„แžœแžถแž™แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž˜แžฝแž™แž”แžถแž“แž–แžถแž€แŸ‹แž€แžŽแŸ’แžแžถแž› แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž”แŸ’แžแžผแžšแž…แžทแžแŸ’แž, แž…แžปแž… **alt-#** แžŠแžพแž˜แŸ’แž”แžธแž”แž“แŸ’แžแŸ‚แž˜ `#` แž“แŸ…แžŠแžพแž˜ แž แžพแž™แž”แž‰แŸ’แž…แžผแž›แžœแžถแž‡แžถ comment (แžฌแž”แŸ’แžšแžพ **ctrl-a**, **#**, **enter**)แŸ” แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€แžขแŸ’แž“แž€แžขแžถแž…แžแŸ’แžšแžกแž”แŸ‹แž‘แŸ…แžšแž€แžœแžถแž“แŸ…แž–แŸแž›แž€แŸ’แžšแŸ„แž™แžแžถแž˜แžšแž™แŸˆ command historyแŸ” +* แž”แŸ’แžšแžพ `xargs` (แžฌ `parallel`)แŸ” แžœแžถแž˜แžถแž“แžขแž“แžปแž—แžถแž–แžแŸ’แž›แžถแŸ†แž„แžŽแžถแžŸแŸ‹แŸ” แž…แŸ†แžŽแžถแŸ†แžแžถแžขแŸ’แž“แž€แžขแžถแž…แž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž…แŸ†แž“แžฝแž“แž’แžถแžแžปแžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แŸ’แž“แžปแž„แž˜แžฝแž™แž”แž“แŸ’แž‘แžถแžแŸ‹ (`-L`) แž€แŸแžŠแžผแž…แž‡แžถแž—แžถแž–แžŸแŸ’แžšแž”แž‚แŸ’แž“แžถ (parallelism) (`-P`)แŸ” แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž˜แžทแž“แž”แŸ’แžšแžถแž€แžŠแžแžถแžœแžถแž“แžนแž„แž’แŸ’แžœแžพแžšแžฟแž„แžแŸ’แžšแžนแž˜แžแŸ’แžšแžผแžœแž‘แŸ, แž”แŸ’แžšแžพ `xargs echo` แž‡แžถแž˜แžปแž“แžŸแžทแž“แŸ” แž˜แŸ’แž™แŸ‰แžถแž„แž‘แŸ€แž, `-I{}` แž€แŸแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแžŠแŸ‚แžšแŸ” แžงแž‘แžถแž แžšแžŽแŸแŸ– + +```bash + find . -name '*.py' | xargs grep some_function + cat hosts | xargs -I{} ssh root@{} hostname + +``` + +* `pstree -p` แž‚แžบแž‡แžถแž€แžถแžšแž”แž„แŸ’แž แžถแž‰แžŠแŸแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž“แŸƒ process treeแŸ” +* แž”แŸ’แžšแžพ `pgrep` แž“แžทแž„ `pkill` แžŠแžพแž˜แŸ’แž”แžธแžŸแŸ’แžœแŸ‚แž„แžšแž€ แžฌแž•แŸ’แž‰แžพแžŸแž‰แŸ’แž‰แžถ (signal) แž‘แŸ… processes แžแžถแž˜แžˆแŸ’แž˜แŸ„แŸ‡ (`-f` แž‚แžบแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸ)แŸ” +* แžŸแŸ’แž‚แžถแž›แŸ‹แžŸแž‰แŸ’แž‰แžถแž•แŸ’แžŸแŸแž„แŸ—แžŠแŸ‚แž›แžขแŸ’แž“แž€แžขแžถแž…แž•แŸ’แž‰แžพแž‘แŸ… processesแŸ” แžงแž‘แžถแž แžšแžŽแŸ แžŠแžพแž˜แŸ’แž”แžธแž•แŸ’แžขแžถแž€ process, แž”แŸ’แžšแžพ `kill -STOP [pid]`แŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž‰แŸ’แž‡แžธแž–แŸแž‰แž›แŸแž‰, แžŸแžผแž˜แž˜แžพแž› `man 7 signal`แŸ” +* แž”แŸ’แžšแžพ `nohup` แžฌ `disown` แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž…แž„แŸ‹แžฑแŸ’แž™ background process แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž‡แžถแžšแŸ€แž„แžšแž แžผแžแŸ” +* แž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แžแžถแžแžพ processes แžŽแžถแžแŸ’แž›แŸ‡แž€แŸ†แž–แžปแž„ listening แžแžถแž˜แžšแž™แŸˆ `netstat -lntp` แžฌ `ss -plat` (แžŸแž˜แŸ’แžšแžถแž”แŸ‹ TCP; แž”แž“แŸ’แžแŸ‚แž˜ `-u` แžŸแž˜แŸ’แžšแžถแž”แŸ‹ UDP) แžฌ `lsof -iTCP -sTCP:LISTEN -P -n` (แžŠแŸ‚แž›แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž•แž„แžŠแŸ‚แžšแž“แŸ…แž›แžพ macOS)แŸ” +* แžŸแžผแž˜แž˜แžพแž› `lsof` แž“แžทแž„ `fuser` แžŸแž˜แŸ’แžšแžถแž”แŸ‹ open sockets แž“แžทแž„ filesแŸ” +* แžŸแžผแž˜แž˜แžพแž› `uptime` แžฌ `w` แžŠแžพแž˜แŸ’แž”แžธแžŠแžนแž„แžแžถแž”แŸ’แžšแž–แŸแž“แŸ’แž’แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžถแž“แž™แžผแžšแž”แŸ‰แžปแžŽแŸ’แžŽแžถแž แžพแž™แŸ” +* แž”แŸ’แžšแžพ `alias` แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž€แžพแžแž•แŸ’แž›แžผแžœแž€แžถแžแŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžŠแŸ‚แž›แž”แŸ’แžšแžพแž‰แžนแž€แž‰แžถแž”แŸ‹แŸ” แžงแž‘แžถแž แžšแžŽแŸ `alias ll='ls -latr'` แž”แž„แŸ’แž€แžพแž alias แžแŸ’แž˜แžธ `ll`แŸ” +* แžšแž€แŸ’แžŸแžถแž‘แžปแž€ aliases, แž€แžถแžšแž€แŸ†แžŽแžแŸ‹ shell, แž“แžทแž„ functions แžŠแŸ‚แž›แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž‰แžนแž€แž‰แžถแž”แŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„ `~/.bashrc`, แž“แžทแž„ [แžšแŸ€แž”แž…แŸ†แžฑแŸ’แž™ login shells แž แŸ…แž™แž€แžœแžถ (source)](http://superuser.com/a/183980/7106)แŸ” แž“แŸแŸ‡แž“แžนแž„แž’แŸ’แžœแžพแžฑแŸ’แž™แž€แžถแžšแžšแŸ€แž”แž…แŸ†แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž˜แžถแž“แž“แŸ…แž€แŸ’แž“แžปแž„แž‚แŸ’แžšแž”แŸ‹ shell sessions แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แŸ” +* แžŠแžถแž€แŸ‹แž€แžถแžšแž€แŸ†แžŽแžแŸ‹ environment variables แž€แŸแžŠแžผแž…แž‡แžถแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžŠแŸ‚แž›แž‚แžฝแžšแžแŸ‚แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž“แŸ…แž–แŸแž›แžขแŸ’แž“แž€ login แž“แŸ…แž€แŸ’แž“แžปแž„ `~/.bash_profile`แŸ” แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แžŠแžถแž…แŸ‹แžŠแŸ„แž™แžกแŸ‚แž€แž“แžนแž„แžแŸ’แžšแžผแžœแž€แžถแžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹ shells แžŠแŸ‚แž›แžขแŸ’แž“แž€แž”แžพแž€แž–แžธ graphical environment logins แž“แžทแž„ `cron` jobsแŸ” +* แž’แŸ’แžœแžพแžŸแž˜แž€แžถแž›แž€แž˜แŸ’แž˜ (Synchronize) แžฏแž€แžŸแžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€ (แžง. `.bashrc` แž“แžทแž„ `.bash_profile`) แžšแžœแžถแž„แž€แžปแŸ†แž–แŸ’แž™แžผแž‘แŸแžšแž•แŸ’แžŸแŸแž„แŸ—แž‡แžถแž˜แžฝแž™ GitแŸ” +* แž™แž›แŸ‹แžแžถแž€แžถแžšแž”แŸ’แžšแžปแž„แž”แŸ’แžšแž™แŸแžแŸ’แž“แž‚แžบแž…แžถแŸ†แž”แžถแž…แŸ‹แž“แŸ…แž–แŸแž›แžŠแŸ‚แž› variables แž“แžทแž„แžˆแŸ’แž˜แŸ„แŸ‡แžฏแž€แžŸแžถแžšแž˜แžถแž“แžŠแž€แžƒแŸ’แž›แžถ (whitespace)แŸ” แžŠแžถแž€แŸ‹ Bash variables แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž€แŸ’แž“แžปแž„แžŸแž‰แŸ’แž‰แžถแžŸแž˜แŸ’แžšแž„แŸ‹, แžง. `"$FOO"`แŸ” แž…แžผแž›แž…แžทแžแŸ’แžแž‡แž˜แŸ’แžšแžพแžŸ `-0` แžฌ `-print0` แžŠแžพแž˜แŸ’แž”แžธแžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™ null characters แž€แŸ†แžŽแžแŸ‹แž–แŸ’แžšแŸ†แžŠแŸ‚แž“แžˆแŸ’แž˜แŸ„แŸ‡แžฏแž€แžŸแžถแžš, แžง. `locate -0 pattern | xargs -0 ls -al` แžฌ `find / -print0 -type d | xargs -0 ls -al`แŸ” แžŠแžพแž˜แŸ’แž”แžธแžšแž„แŸ’แžœแžทแž›แž‡แžปแŸ† (iterate) แž›แžพแžˆแŸ’แž˜แŸ„แŸ‡แžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž˜แžถแž“แžŠแž€แžƒแŸ’แž›แžถแž€แŸ’แž“แžปแž„ for loop, แž€แŸ†แžŽแžแŸ‹ IFS แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แžฑแŸ’แž™แž‘แŸ…แž‡แžถ newline แžแŸ‚แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แžŠแŸ„แž™แž”แŸ’แžšแžพ `IFS=$'\n'`แŸ” +* แž“แŸ…แž€แŸ’แž“แžปแž„ Bash scripts, แž”แŸ’แžšแžพ `set -x` (แžฌแžœแŸ‰แžถแžšแŸ’แž™แŸ‰แž„แŸ‹ `set -v`, แžŠแŸ‚แž›แž€แžแŸ‹แžแŸ’แžšแžถ raw input, แžšแžฝแž˜แž‘แžถแŸ†แž„ unexpanded variables แž“แžทแž„ comments) แžŸแž˜แŸ’แžšแžถแž”แŸ‹ debugging outputแŸ” แž”แŸ’แžšแžพ strict modes แž›แžพแž€แž›แŸ‚แž„แžแŸ‚แžขแŸ’แž“แž€แž˜แžถแž“แž แŸแžแžปแž•แž›แž›แŸ’แžขแž˜แžทแž“แž”แŸ’แžšแžพแŸ– แž”แŸ’แžšแžพ `set -e` แžŠแžพแž˜แŸ’แž”แžธแž”แŸ„แŸ‡แž”แž„แŸ‹ (abort) แž“แŸ…แž–แŸแž›แž˜แžถแž“แž€แŸ†แž แžปแžŸ (nonzero exit code)แŸ” แž”แŸ’แžšแžพ `set -u` แžŠแžพแž˜แŸ’แž”แžธแžšแž€แž˜แžพแž›แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ variable แžŠแŸ‚แž›แž˜แžทแž“แž‘แžถแž“แŸ‹แž€แŸ†แžŽแžแŸ‹แŸ” แž–แžทแž…แžถแžšแžŽแžถ `set -o pipefail` แž•แž„แžŠแŸ‚แžš, แžŠแžพแž˜แŸ’แž”แžธ abort แž“แŸ…แž–แŸแž›แž˜แžถแž“แž€แŸ†แž แžปแžŸแž“แŸ…แž€แŸ’แž“แžปแž„ pipes (แž‘แŸ„แŸ‡แž”แžธแž‡แžถแž‚แžฝแžšแžขแžถแž“แž”แž“แŸ’แžแŸ‚แž˜แž›แžพแžœแžถแž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž’แŸ’แžœแžพแžŠแžผแž…แŸ’แž“แŸแŸ‡, แž–แŸ’แžšแŸ„แŸ‡แž”แŸ’แžšแž’แžถแž“แž”แž‘แž“แŸแŸ‡แž˜แžถแž“แž—แžถแž–แž›แŸ’แžขแžทแžแž›แŸ’แžขแž“แŸ‹แž”แž“แŸ’แžแžทแž…)แŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹ scripts แžŠแŸ‚แž›แžŸแŸ’แž˜แžปแž‚แžŸแŸ’แž˜แžถแž‰, แž”แŸ’แžšแžพ `trap` แž›แžพ EXIT แžฌ ERR แž•แž„แžŠแŸ‚แžšแŸ” แž‘แž˜แŸ’แž›แžถแž”แŸ‹แžŠแŸแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž˜แžฝแž™แž‚แžบแž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜ script แžŠแžผแž…แž“แŸแŸ‡, แžŠแŸ‚แž›แž“แžนแž„แž’แŸ’แžœแžพแžฑแŸ’แž™แžœแžถแžšแž€แžƒแžพแž‰ แž“แžทแž„ abort แž›แžพแž€แŸ†แž แžปแžŸแž‘แžผแž‘แŸ… แž“แžทแž„แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž–แžŸแžถแžšแŸ– + +```bash + set -euo pipefail + trap "echo 'error: Script failed: see failed command above'" ERR + +``` + +* แž“แŸ…แž€แŸ’แž“แžปแž„ Bash scripts, subshells (แžŸแžšแžŸแŸแžšแž‡แžถแž˜แžฝแž™แžœแž„แŸ‹แž€แŸ’แžšแž…แž€) แž‚แžบแž‡แžถแžœแžทแž’แžธแž„แžถแž™แžŸแŸ’แžšแžฝแž›แž€แŸ’แž“แžปแž„แž€แžถแžšแžŠแžถแž€แŸ‹แž€แŸ’แžšแžปแž˜แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแŸ” แžงแž‘แžถแž แžšแžŽแŸแž‘แžผแž‘แŸ…แž‚แžบแž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž‘แžธแž”แžŽแŸ’แžแŸ„แŸ‡แžขแžถแžŸแž“แŸ’แž“แž‘แŸ…แž€แžถแž“แŸ‹ working directory แž•แŸ’แžŸแŸแž„, แžง. + +```bash + # แž’แŸ’แžœแžพแžขแŸ’แžœแžธแž˜แžฝแž™แž€แŸ’แž“แžปแž„ current dir + (cd /some/other/dir && other-command) + # แž”แž“แŸ’แžแž€แŸ’แž“แžปแž„ original dir + +``` + +* แž“แŸ…แž€แŸ’แž“แžปแž„ Bash, แž…แŸ†แžŽแžถแŸ†แžแžถแž˜แžถแž“แž”แŸ’แžšแž—แŸแž‘ variable expansion แž‡แžถแž…แŸ’แžšแžพแž“แŸ” แž€แžถแžšแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž› variable แžแžถแž˜แžถแž“แžฌแžขแžแŸ‹แŸ– `${name:?error message}`แŸ” แžงแž‘แžถแž แžšแžŽแŸ, แž”แŸ’แžšแžŸแžทแž“แž”แžพ Bash script แžแŸ’แžšแžผแžœแž€แžถแžš single argument, แž‚แŸ’แžšแžถแž“แŸ‹แžแŸ‚แžŸแžšแžŸแŸแžš `input_file=${1:?usage: $0 input_file}`แŸ” แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ default value แž”แŸ’แžšแžŸแžทแž“แž”แžพ variable แž‘แž‘แŸแŸ– `${name:-default}`แŸ” แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž…แž„แŸ‹แž”แž“แŸ’แžแŸ‚แž˜ parameter (แžŸแŸ’แžšแŸแž…แž…แžทแžแŸ’แž) แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ…แž›แžพแžงแž‘แžถแž แžšแžŽแŸแž˜แžปแž“, แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžพแžขแŸ’แžœแžธแž˜แžฝแž™แžŠแžผแž…แž‡แžถ `output_file=${2:-logfile}`แŸ” แž”แŸ’แžšแžŸแžทแž“แž”แžพ `$2` แžแŸ’แžšแžผแžœแž”แžถแž“แž›แžปแž”แž…แŸ„แž› แž แžพแž™แžŠแžผแž…แŸ’แž“แŸแŸ‡แž‘แž‘แŸ, `output_file` แž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž€แŸ†แžŽแžแŸ‹แž‘แŸ…แž‡แžถ `logfile`แŸ” Arithmetic expansion: `i=$(( (i + 1) % 5 ))`แŸ” Sequences: `{1..10}`แŸ” แž€แžถแžšแž€แžถแžแŸ‹แžแŸ’แžŸแŸ‚แžขแž€แŸ’แžŸแžš (Trimming of strings): `${var%suffix}` แž“แžทแž„ `${var#prefix}`แŸ” แžงแž‘แžถแž แžšแžŽแŸ แž”แŸ’แžšแžŸแžทแž“แž”แžพ `var=foo.pdf`, แž“แŸ„แŸ‡ `echo ${var%.pdf}.txt` แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž– `foo.txt`แŸ” +* Brace expansion แžŠแŸ„แž™แž”แŸ’แžšแžพ `{`...`}` แžขแžถแž…แž€แžถแžแŸ‹แž”แž“แŸ’แžแž™แž€แžถแžšแžœแžถแž™แžขแžแŸ’แžแž”แž‘แžŸแŸ’แžšแžŠแŸ€แž„แž‚แŸ’แž“แžถแžกแžพแž„แžœแžทแž‰ แž“แžทแž„แž’แŸ’แžœแžพแžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแž€แž˜แŸ’แž˜แž”แž“แŸ’แžŸแŸ†แž“แŸƒแž’แžถแžแžปแŸ” แž“แŸแŸ‡แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž€แŸ’แž“แžปแž„แžงแž‘แžถแž แžšแžŽแŸแžŠแžผแž…แž‡แžถ `mv foo.{txt,pdf} some-dir` (แžŠแŸ‚แž›แž•แŸ’แž›แžถแžŸแŸ‹แž‘แžธแžฏแž€แžŸแžถแžšแž‘แžถแŸ†แž„แž–แžธแžš), `cp somefile{,.bak}` (แžŠแŸ‚แž›แž–แž„แŸ’แžšแžธแž€แž‘แŸ…แž‡แžถ `cp somefile somefile.bak`) แžฌ `mkdir -p test-{a,b,c}/subtest-{1,2,3}` (แžŠแŸ‚แž›แž–แž„แŸ’แžšแžธแž€แž”แž“แŸ’แžŸแŸ†แžŠแŸ‚แž›แžขแžถแž…แž’แŸ’แžœแžพแž”แžถแž“แž‘แžถแŸ†แž„แžขแžŸแŸ‹ แž“แžทแž„แž”แž„แŸ’แž€แžพแž directory tree)แŸ” Brace expansion แžแŸ’แžšแžผแžœแž”แžถแž“แžขแž“แžปแžœแžแŸ’แžแž˜แžปแž“แž€แžถแžšแž–แž„แŸ’แžšแžธแž€แž•แŸ’แžŸแŸแž„แž‘แŸ€แžแž‘แžถแŸ†แž„แžขแžŸแŸ‹แŸ” +* แž›แŸ†แžŠแžถแž”แŸ‹แž“แŸƒแž€แžถแžšแž–แž„แŸ’แžšแžธแž€แž‚แžบแŸ– brace expansion; tilde expansion, parameter แž“แžทแž„ variable expansion, arithmetic expansion, แž“แžทแž„ command substitution (แž’แŸ’แžœแžพแžแžถแž˜แž›แž€แŸ’แžแžŽแŸˆแž†แŸ’แžœแŸแž„แž‘แŸ…แžŸแŸ’แžแžถแŸ†); word splitting; แž“แžทแž„ filename expansionแŸ” (แžงแž‘แžถแž แžšแžŽแŸ, แž‡แžฝแžš (range) แžŠแžผแž…แž‡แžถ `{1..20}` แž˜แžทแž“แžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž”แž„แŸ’แž แžถแž‰แž‡แžถแž˜แžฝแž™ variables แžŠแŸ„แž™แž”แŸ’แžšแžพ `{$a..$b}` แž”แžถแž“แž‘แŸแŸ” แž”แŸ’แžšแžพ `seq` แžฌ `for` loop แž‡แŸ†แž“แžฝแžŸแžœแžทแž‰, แžง., `seq $a $b` แžฌ `for((i=a; i<=b; i++)); do ... ; done`แŸ”) +* แž›แž‘แŸ’แž’แž•แž› (output) แž“แŸƒแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž…แžถแžแŸ‹แž‘แžปแž€แžŠแžผแž…แž‡แžถแžฏแž€แžŸแžถแžšแžแžถแž˜แžšแž™แŸˆ `<(some command)` (แž‚แŸแžŸแŸ’แž‚แžถแž›แŸ‹แžแžถ process substitution)แŸ” แžงแž‘แžถแž แžšแžŽแŸ, แž”แŸ’แžšแŸ€แž”แž’แŸ€แž” local `/etc/hosts` แž‡แžถแž˜แžฝแž™ remote oneแŸ– + +```sh + diff /etc/hosts <(ssh somehost cat /etc/hosts) + +``` + +* แž“แŸ…แž–แŸแž›แžŸแžšแžŸแŸแžš scripts แžขแŸ’แž“แž€แž”แŸ’แžšแž แŸ‚แž›แž‡แžถแž…แž„แŸ‹แžŠแžถแž€แŸ‹แž€แžผแžŠแžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž‘แžถแŸ†แž„แžขแžŸแŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„ curly bracesแŸ” แž”แŸ’แžšแžŸแžทแž“แž”แžพแž”แžถแžแŸ‹ closing brace, script แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“แžšแžถแžšแžถแŸ†แž„แž˜แžทแž“แžฑแŸ’แž™แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแžŠแŸ„แž™แžŸแžถแžš syntax errorแŸ” แž“แŸแŸ‡แžŸแž˜แž แŸแžแžปแž•แž›แž“แŸ…แž–แŸแž› script แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“แž‘แžถแž‰แž™แž€แž–แžธ web, แž–แŸ’แžšแŸ„แŸ‡แžœแžถแž€แžถแžšแž–แžถแžš scripts แžŠแŸ‚แž›แž‘แžถแž‰แž™แž€แž”แžถแž“แžแŸ‚แž–แžถแž€แŸ‹แž€แžŽแŸ’แžแžถแž›แž˜แžทแž“แžฑแŸ’แž™แžŠแŸ†แžŽแžพแžšแž€แžถแžšแŸ– + +```bash +{ + # แž€แžผแžŠแžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž“แŸ…แž‘แžธแž“แŸแŸ‡ +} + +``` + +* "Here document" แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™ [แž”แž‰แŸ’แž‡แžผแž“ input แž…แŸ’แžšแžพแž“แž”แž“แŸ’แž‘แžถแžแŸ‹](https://www.tldp.org/LDP/abs/html/here-docs.html) แž แžถแž€แŸ‹แžŠแžผแž…แž‡แžถแž˜แž€แž–แžธแžฏแž€แžŸแžถแžšแŸ– + +``` +cat <logfile 2>&1` แžฌ `some-command &>logfile`แŸ” แž‡แžถแž‰แžนแž€แž‰แžถแž”แŸ‹, แžŠแžพแž˜แŸ’แž”แžธแž’แžถแž“แžถแžแžถแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž˜แžทแž“แž”แž“แŸ’แžŸแž›แŸ‹แž‘แžปแž€ open file handle แž‘แŸ… standard input, แžŠแŸ„แž™แž—แŸ’แž‡แžถแž”แŸ‹แžœแžถแž‘แŸ… terminal แžŠแŸ‚แž›แžขแŸ’แž“แž€แž€แŸ†แž–แžปแž„แž“แŸ…, แžœแžถแž€แŸแž‡แžถแž€แžถแžšแžขแž“แžปแžœแžแŸ’แžแž›แŸ’แžขแžŠแŸ‚แžšแž€แŸ’แž“แžปแž„แž€แžถแžšแž”แž“แŸ’แžแŸ‚แž˜ `>> 2+3 +5 + +``` + +## แž€แžถแžšแž…แžถแžแŸ‹แž…แŸ‚แž„แžฏแž€แžŸแžถแžš แž“แžทแž„แž‘แžทแž“แŸ’แž“แž“แŸแž™ (Processing files and data) + +* แžŠแžพแž˜แŸ’แž”แžธแž€แŸ†แžŽแžแŸ‹แž‘แžธแžแžถแŸ†แž„แžฏแž€แžŸแžถแžšแžแžถแž˜แžˆแŸ’แž˜แŸ„แŸ‡แž“แŸ…แž€แŸ’แž“แžปแž„ current directory, `find . -iname '*something*'` (แžฌแžŸแŸ’แžšแžŠแŸ€แž„แž‚แŸ’แž“แžถ)แŸ” แžŠแžพแž˜แŸ’แž”แžธแžŸแŸ’แžœแŸ‚แž„แžšแž€แžฏแž€แžŸแžถแžšแž“แŸ…แž€แž“แŸ’แž›แŸ‚แž„แžŽแžถแž˜แžฝแž™แžแžถแž˜แžˆแŸ’แž˜แŸ„แŸ‡, แž”แŸ’แžšแžพ `locate something` (แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžแŸ’แžšแžผแžœแž…แžถแŸ†แžแžถ `updatedb` แžขแžถแž…แž“แžนแž„แž˜แžทแž“แž‘แžถแž“แŸ‹แž”แžถแž“ indexed แžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž‘แžพแž”แž”แž„แŸ’แž€แžพแžแžแŸ’แž˜แžธแŸ—แž‘แŸ)แŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžŸแŸ’แžœแŸ‚แž„แžšแž€แž‘แžผแž‘แŸ…แžแžถแž˜แžšแž™แŸˆ source แžฌ data files, แž˜แžถแž“แž‡แž˜แŸ’แžšแžพแžŸแž‡แžถแž…แŸ’แžšแžพแž“แžŠแŸ‚แž›แž€แž˜แŸ’แžšแžทแžแžแŸ’แž–แžŸแŸ‹ แžฌแž›แžฟแž“แž‡แžถแž„ `grep -r`, แžšแžฝแž˜แž˜แžถแž“ (แžแžถแž˜แž›แŸ†แžŠแžถแž”แŸ‹แž–แžธแž…แžถแžŸแŸ‹แž‘แŸ…แžแŸ’แž˜แžธ) [`ack`](https://github.com/beyondgrep/ack2), [`ag`](https://github.com/ggreer/the_silver_searcher) ("the silver searcher"), แž“แžทแž„ [`rg`](https://github.com/BurntSushi/ripgrep) (ripgrep)แŸ” +* แžŠแžพแž˜แŸ’แž”แžธแž”แŸ†แž”แŸ’แž›แŸ‚แž„ HTML แž‘แŸ…แž‡แžถแžขแžแŸ’แžแž”แž‘ (text)แŸ– `lynx -dump -stdin` +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹ Markdown, HTML, แž“แžทแž„แž€แžถแžšแž”แŸ†แž”แŸ’แž›แŸ‚แž„แžฏแž€แžŸแžถแžšแž‚แŸ’แžšแž”แŸ‹แž”แŸ’แžšแž—แŸแž‘, แžŸแžถแž€แž›แŸ’แž”แž„ [`pandoc`](http://pandoc.org/)แŸ” แžงแž‘แžถแž แžšแžŽแŸ, แžŠแžพแž˜แŸ’แž”แžธแž”แŸ†แž”แŸ’แž›แŸ‚แž„แžฏแž€แžŸแžถแžš Markdown แž‘แŸ…แž‡แžถแž‘แž˜แŸ’แžšแž„แŸ‹ WordแŸ– `pandoc README.md --from markdown --to docx -o temp.docx` +* แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แžแŸ’แžšแžผแžœแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž‡แžถแž˜แžฝแž™ XML, `xmlstarlet` แž‚แžบแž…แžถแžŸแŸ‹แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž›แŸ’แžขแŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹ JSON, แž”แŸ’แžšแžพ [`jq`](http://stedolan.github.io/jq/)แŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แŸ‚แž”แžขแž“แŸ’แžแžšแž€แž˜แŸ’แž˜, แžŸแžผแž˜แž˜แžพแž› [`jid`](https://github.com/simeji/jid) แž“แžทแž„ [`jiq`](https://github.com/fiatjaf/jiq) แž•แž„แžŠแŸ‚แžšแŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹ YAML, แž”แŸ’แžšแžพ [`shyaml`](https://github.com/0k/shyaml)แŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžฏแž€แžŸแžถแžš Excel แžฌ CSV, [csvkit](https://github.com/onyxfish/csvkit) แž•แŸ’แžแž›แŸ‹แž“แžผแžœ `in2csv`, `csvcut`, `csvjoin`, `csvgrep`, แŸ”แž›แŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹ Amazon S3, [`s3cmd`](https://github.com/s3tools/s3cmd) แž‚แžบแž„แžถแž™แžŸแŸ’แžšแžฝแž› แž“แžทแž„ [`s4cmd`](https://github.com/bloomreach/s4cmd) แž‚แžบแž›แžฟแž“แž‡แžถแž„แŸ” [`aws`](https://github.com/aws/aws-cli) แžšแž”แžŸแŸ‹ Amazon แž“แžทแž„ [`saws`](https://github.com/donnemartin/saws) แžŠแŸ‚แž›แž”แžถแž“แž€แŸ‚แž›แž˜แŸ’แžขแž‚แžบแž…แžถแŸ†แž”แžถแž…แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžทแž…แŸ’แž…แž€แžถแžš AWS แž•แŸ’แžŸแŸแž„แž‘แŸ€แžแŸ” +* แžŠแžนแž„แžขแŸ†แž–แžธ `sort` แž“แžทแž„ `uniq`, แžšแžฝแž˜แž‘แžถแŸ†แž„แž‡แž˜แŸ’แžšแžพแžŸ `-u` แž“แžทแž„ `-d` แžšแž”แžŸแŸ‹ uniq -- แžŸแžผแž˜แž˜แžพแž› one-liners แžแžถแž„แž€แŸ’แžšแŸ„แž˜แŸ” แžŸแžผแž˜แž˜แžพแž› `comm` แž•แž„แžŠแŸ‚แžšแŸ” +* แžŠแžนแž„แžขแŸ†แž–แžธ `cut`, `paste`, แž“แžทแž„ `join` แžŠแžพแž˜แŸ’แž”แžธแž…แžถแžแŸ‹แž…แŸ‚แž„แžฏแž€แžŸแžถแžšแžขแžแŸ’แžแž”แž‘แŸ” แž˜แž“แžปแžŸแŸ’แžŸแž‡แžถแž…แŸ’แžšแžพแž“แž”แŸ’แžšแžพ `cut` แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž—แŸ’แž›แŸแž…แžขแŸ†แž–แžธ `join`แŸ” +* แžŠแžนแž„แžขแŸ†แž–แžธ `wc` แžŠแžพแž˜แŸ’แž”แžธแžšแžถแž”แŸ‹ newlines (`-l`), characters (`-m`), words (`-w`) แž“แžทแž„ bytes (`-c`)แŸ” +* แžŠแžนแž„แžขแŸ†แž–แžธ `tee` แžŠแžพแž˜แŸ’แž”แžธแž…แž˜แŸ’แž›แž„แž–แžธ stdin แž‘แŸ…แžฏแž€แžŸแžถแžš แž“แžทแž„แž‘แŸ… stdout แž•แž„แžŠแŸ‚แžš, แžŠแžผแž…แž“แŸ…แž€แŸ’แž“แžปแž„ `ls -al | tee file.txt`แŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž‚แžŽแž“แžถแžŠแŸ‚แž›แžŸแŸ’แž˜แžปแž‚แžŸแŸ’แž˜แžถแž‰แž‡แžถแž„แž“แŸแŸ‡, แžšแžฝแž˜แž‘แžถแŸ†แž„แž€แžถแžšแžŠแžถแž€แŸ‹แž€แŸ’แžšแžปแž˜, แž€แžถแžšแžแŸ’แžšแžกแž”แŸ‹ fields, แž“แžทแž„แž€แžถแžšแž‚แžŽแž“แžถแžŸแŸ’แžแžทแžแžท, แž–แžทแž…แžถแžšแžŽแžถ [`datamash`](https://www.gnu.org/software/datamash/)แŸ” +* แžŠแžนแž„แžแžถ locale แž”แŸ‰แŸ‡แž–แžถแž›แŸ‹แžŠแž›แŸ‹แžงแž”แž€แžšแžŽแŸ command line แž‡แžถแž…แŸ’แžšแžพแž“แžแžถแž˜แžœแžทแž’แžธแžŠแŸ‚แž›แž˜แžทแž“แž“แžนแž€แžŸแŸ’แž˜แžถแž“แžŠแž›แŸ‹, แžšแžฝแž˜แž‘แžถแŸ†แž„แž›แŸ†แžŠแžถแž”แŸ‹แž“แŸƒแž€แžถแžšแžแž˜แŸ’แžšแŸ€แž” (sorting order/collation) แž“แžทแž„แž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž– (performance)แŸ” แž€แžถแžšแžŠแŸ†แžกแžพแž„ Linux แž—แžถแž‚แž…แŸ’แžšแžพแž“แž“แžนแž„แž€แŸ†แžŽแžแŸ‹ `LANG` แžฌ locale variables แž•แŸ’แžŸแŸแž„แž‘แŸ€แžแž‘แŸ…แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แž€แŸ’แž“แžปแž„แžแŸ†แž”แž“แŸ‹แžŠแžผแž…แž‡แžถ US EnglishแŸ” แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžŸแžผแž˜แž”แŸ’แžšแž™แŸแžแŸ’แž“ แž€แžถแžšแžแž˜แŸ’แžšแŸ€แž”แž“แžนแž„แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžš localeแŸ” แž“แžทแž„แžŠแžนแž„แžแžถ i18n routines แžขแžถแž…แž’แŸ’แžœแžพแžฑแŸ’แž™ sort แžฌแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž•แŸ’แžŸแŸแž„แž‘แŸ€แžแžŠแŸ†แžŽแžพแžšแž€แžถแžšแž™แžบแžแž‡แžถแž„ *แž…แŸ’แžšแžพแž“แžŠแž„*แŸ” แž“แŸ…แž€แŸ’แž“แžปแž„แžŸแŸ’แžแžถแž“แž—แžถแž–แžแŸ’แž›แŸ‡ (แžŠแžผแž…แž‡แžถ set operations แžฌ uniqueness operations แžแžถแž„แž€แŸ’แžšแŸ„แž˜) แžขแŸ’แž“แž€แžขแžถแž…แž˜แžทแž“แžขแžพแž–แžพ i18n routines แžŠแŸ‚แž›แž™แžบแžแžŠแŸ„แž™แžŸแžปแžœแžแŸ’แžแžทแž—แžถแž– แž“แžทแž„แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹ byte-based sort order แž”แŸ‚แž”แž”แŸ’แžšแž–แŸƒแžŽแžธ, แžŠแŸ„แž™แž”แŸ’แžšแžพ `export LC_ALL=C`แŸ” +* แžขแŸ’แž“แž€แžขแžถแž…แž€แŸ†แžŽแžแŸ‹ environment แžšแž”แžŸแŸ‹แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹แž˜แžฝแž™แžŠแŸ„แž™แžŠแžถแž€แŸ‹ environment variable settings แž“แŸ…แž–แžธแž˜แžปแžแž€แžถแžšแž แŸ…แžšแž”แžŸแŸ‹แžœแžถ, แžŠแžผแž…แž“แŸ…แž€แŸ’แž“แžปแž„ `TZ=Pacific/Fiji date`แŸ” +* แžŠแžนแž„แž˜แžผแž›แžŠแŸ’แž‹แžถแž“ `awk` แž“แžทแž„ `sed` แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž€แŸ‚แžŸแž˜แŸ’แžšแžฝแž›แž‘แžทแž“แŸ’แž“แž“แŸแž™แžŸแžถแž˜แž‰แŸ’แž‰แŸ” แžŸแžผแž˜แž˜แžพแž› [One-liners](#แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž˜แžฝแž™แž‡แžฝแžš-one-liners) แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžงแž‘แžถแž แžšแžŽแŸแŸ” +* แžŠแžพแž˜แŸ’แž”แžธแž‡แŸ†แž“แžฝแžŸแžšแžถแž›แŸ‹แž€แžถแžšแž€แžพแžแžกแžพแž„แž“แŸƒแžแŸ’แžŸแŸ‚แžขแž€แŸ’แžŸแžšแž“แŸ…แž“แžนแž„แž€แž“แŸ’แž›แŸ‚แž„ (in place), แž“แŸ…แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžšแž˜แžฝแž™ แžฌแž…แŸ’แžšแžพแž“แŸ– + +```sh + perl -pi.bak -e 's/old-string/new-string/g' my-files-*.txt + +``` + +* แžŠแžพแž˜แŸ’แž”แžธแž”แŸ’แžแžผแžšแžˆแŸ’แž˜แŸ„แŸ‡แžฏแž€แžŸแžถแžšแž‡แžถแž…แŸ’แžšแžพแž“ แž“แžทแž„/แžฌแžŸแŸ’แžœแŸ‚แž„แžšแž€ แž“แžทแž„แž‡แŸ†แž“แžฝแžŸแž“แŸ…แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžš, แžŸแžถแž€แž›แŸ’แž”แž„ [`repren`](https://github.com/jlevy/repren)แŸ” (แž€แŸ’แž“แžปแž„แž€แžšแžŽแžธแžแŸ’แž›แŸ‡แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ `rename` แž€แŸแžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แž”แŸ’แžแžผแžšแžˆแŸ’แž˜แŸ„แŸ‡แž…แŸ’แžšแžพแž“แž•แž„แžŠแŸ‚แžš, แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžแŸ’แžšแžผแžœแž”แŸ’แžšแž™แŸแžแŸ’แž“แž–แŸ’แžšแŸ„แŸ‡แž˜แžปแžแž„แžถแžšแžšแž”แžŸแŸ‹แžœแžถแž˜แžทแž“แžŠแžผแž…แž‚แŸ’แž“แžถแž“แŸ…แž›แžพ Linux distributions แž‘แžถแŸ†แž„แžขแžŸแŸ‹แž‘แŸแŸ”) + +```sh + # แž”แŸ’แžแžผแžšแžˆแŸ’แž˜แŸ„แŸ‡แž–แŸแž‰แž›แŸแž‰แž“แŸƒ filenames, directories, แž“แžทแž„ contents foo -> bar: + repren --full --preserve-case --from foo --to bar . + # แžŸแž„แŸ’แž‚แŸ’แžšแŸ„แŸ‡ backup files whatever.bak -> whatever: + repren --renames --from '(.*)\.bak' --to '\1' *.bak + # แžŠแžผแž…แžแžถแž„แž›แžพ, แž”แŸ’แžšแžพ rename, แž”แŸ’แžšแžŸแžทแž“แž”แžพแž˜แžถแž“แŸ– + rename 's/\.bak$//' *.bak + +``` + +* แžŠแžผแž…แžŠแŸ‚แž› man page แž“แžทแž™แžถแž™, `rsync` แž–แžทแžแž‡แžถแžงแž”แž€แžšแžŽแŸแž…แž˜แŸ’แž›แž„แžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž›แžฟแž“ แž“แžทแž„แž˜แžถแž“แžŸแž˜แžแŸ’แžแž—แžถแž–แžแŸ’แž–แžŸแŸ‹แŸ” แžœแžถแžแŸ’แžšแžผแžœแž”แžถแž“แž‚แŸแžŸแŸ’แž‚แžถแž›แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž’แŸ’แžœแžพแžŸแž˜แž€แžถแž›แž€แž˜แŸ’แž˜แžšแžœแžถแž„แž˜แŸ‰แžถแžŸแŸŠแžธแž“ แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž€แŸแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแžŠแžผแž…แž‚แŸ’แž“แžถแž€แŸ’แž“แžปแž„แž˜แžผแž›แžŠแŸ’แž‹แžถแž“แŸ” แž“แŸ…แž–แŸแž›แžŠแŸ‚แž›แž€แžถแžšแžšแžนแžแž”แž“แŸ’แžแžนแž„แžŸแžปแžœแžแŸ’แžแžทแž—แžถแž–แžขแž“แžปแž‰แŸ’แž‰แžถแž, แž€แžถแžšแž”แŸ’แžšแžพ `rsync` แž‡แŸ†แž“แžฝแžŸแžฑแŸ’แž™ `scp` แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžŸแž„แŸ’แž‚แŸ’แžšแŸ„แŸ‡แž€แžถแžšแž•แŸ’แž‘แŸแžšแžŠแŸ„แž™แž˜แžทแž“แž…แžถแŸ†แž”แžถแž…แŸ‹แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แž–แžธแžŠแžพแž˜แŸ” แžœแžถแž€แŸแžŸแŸ’แžแžทแžแž€แŸ’แž“แžปแž„แž…แŸ†แžŽแŸ„แž˜ [แžœแžทแž’แžธแž›แžฟแž“แž”แŸ†แž•แžปแž](https://web.archive.org/web/20130929001850/http://linuxnote.net/jianingy/en/linux/a-fast-way-to-remove-huge-number-of-files.html) แžŠแžพแž˜แŸ’แž”แžธแž›แžปแž”แžฏแž€แžŸแžถแžšแž…แŸ†แž“แžฝแž“แž…แŸ’แžšแžพแž“แŸ– + +```sh +mkdir empty && rsync -r --delete empty/ some-dir && rmdir some-dir + +``` + +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžแžถแž˜แžŠแžถแž“แžœแžŒแŸ’แžแž“แž—แžถแž–แž“แŸ…แž–แŸแž›แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžฏแž€แžŸแžถแžš, แž”แŸ’แžšแžพ [`pv`](http://www.ivarch.com/programs/pv.shtml), [`pycp`](https://github.com/dmerejkowsky/pycp), [`pmonitor`](https://github.com/dspinellis/pmonitor), [`progress`](https://github.com/Xfennec/progress), `rsync --progress`, แžฌ, แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž…แž˜แŸ’แž›แž„แž€แž˜แŸ’แžšแžทแž block, `dd status=progress`แŸ” +* แž”แŸ’แžšแžพ `shuf` แžŠแžพแž˜แŸ’แž”แžธแžŸแžถแž”แŸ‹ (shuffle) แžฌแž‡แŸ’แžšแžพแžŸแžšแžพแžŸแž”แž“แŸ’แž‘แžถแžแŸ‹แž…แŸƒแžŠแž“แŸ’แž™แž–แžธแžฏแž€แžŸแžถแžšแŸ” +* แžŠแžนแž„แž–แžธแž‡แž˜แŸ’แžšแžพแžŸแžšแž”แžŸแŸ‹ `sort`แŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž›แŸแž, แž”แŸ’แžšแžพ `-n`, แžฌ `-h` แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž›แŸแžแžŠแŸ‚แž›แž˜แž“แžปแžŸแŸ’แžŸแžขแžถแž…แžขแžถแž“แž”แžถแž“ (human-readable numbers) (แžง. แž–แžธ `du -h`)แŸ” แžŠแžนแž„แž–แžธแžšแž”แŸ€แž”แžŠแŸ‚แž› keys แž’แŸ’แžœแžพแž€แžถแžš (`-t` แž“แžทแž„ `-k`)แŸ” แž‡แžถแž–แžทแžŸแŸแžŸ, แž”แŸ’แžšแž™แŸแžแŸ’แž“แžแžถแžขแŸ’แž“แž€แžแŸ’แžšแžผแžœแžŸแžšแžŸแŸแžš `-k1,1` แžŠแžพแž˜แŸ’แž”แžธแžแž˜แŸ’แžšแŸ€แž”แžแžถแž˜ field แž‘แžธแž˜แžฝแž™แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡; `-k1` แž˜แžถแž“แž“แŸแž™แžแžถแžแž˜แŸ’แžšแŸ€แž”แžแžถแž˜แž”แž“แŸ’แž‘แžถแžแŸ‹แž‘แžถแŸ†แž„แž˜แžผแž›แŸ” Stable sort (`sort -s`) แžขแžถแž…แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแŸ” แžงแž‘แžถแž แžšแžŽแŸ, แžŠแžพแž˜แŸ’แž”แžธแžแž˜แŸ’แžšแŸ€แž”แžŠแŸ†แž”แžผแž„แžแžถแž˜ field 2, แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€แž”แž“แŸ’แž‘แžถแž”แŸ‹แž”แž“แŸ’แžŸแŸ†แžแžถแž˜ field 1, แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžพ `sort -k1,1 | sort -s -k2,2`แŸ” +* แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แžแŸ’แžšแžผแžœแž€แžถแžšแžŸแžšแžŸแŸแžš tab literal แž“แŸ…แž€แŸ’แž“แžปแž„ command line แž€แŸ’แž“แžปแž„ Bash (แžง. แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแžถแž‚แžปแž™แž˜แŸ‰แž„แŸ‹ -t แž‘แŸ… sort), แž…แžปแž… **ctrl-v** **[Tab]** แžฌแžŸแžšแžŸแŸแžš `$'\t'` (แž€แŸ’แžšแŸ„แž™แž˜แž€แž‘แŸ€แžแž‚แžบแž›แŸ’แžขแž‡แžถแž„แž–แŸ’แžšแŸ„แŸ‡แžขแŸ’แž“แž€แžขแžถแž… copy/paste แžœแžถแž”แžถแž“)แŸ” +* แžงแž”แž€แžšแžŽแŸแžŸแŸ’แžแž„แŸ‹แžŠแžถแžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžš patch source code แž‚แžบ `diff` แž“แžทแž„ `patch`แŸ” แžŸแžผแž˜แž˜แžพแž› `diffstat` แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŸแŸ’แžแžทแžแžทแžŸแž„แŸ’แžแŸแž”แž“แŸƒ diff แž“แžทแž„ `sdiff` แžŸแž˜แŸ’แžšแžถแž”แŸ‹ side-by-side diffแŸ” แž…แŸ†แžŽแžถแŸ† `diff -r` แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŸแž˜แŸ’แžšแžถแž”แŸ‹ directories แž‘แžถแŸ†แž„แž˜แžผแž›แŸ” แž”แŸ’แžšแžพ `diff -r tree1 tree2 | diffstat` แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžŸแž„แŸ’แžแŸแž”แž“แŸƒแž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแŸ” แž”แŸ’แžšแžพ `vimdiff` แžŠแžพแž˜แŸ’แž”แžธแž”แŸ’แžšแŸ€แž”แž’แŸ€แž” แž“แžทแž„แž€แŸ‚แžŸแž˜แŸ’แžšแžฝแž›แžฏแž€แžŸแžถแžšแŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹ binary files, แž”แŸ’แžšแžพ `hd`, `hexdump` แžฌ `xxd` แžŸแž˜แŸ’แžšแžถแž”แŸ‹ simple hex dumps แž“แžทแž„ `bvi`, `hexedit` แžฌ `biew` แžŸแž˜แŸ’แžšแžถแž”แŸ‹ binary editingแŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹ binary files แž•แž„แžŠแŸ‚แžš, `strings` (แž”แžผแž€ `grep`, แŸ”แž›แŸ”) แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แžŸแŸ’แžœแŸ‚แž„แžšแž€แž”แŸ†แžŽแŸ‚แž€แž“แŸƒแžขแžแŸ’แžแž”แž‘แŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹ binary diffs (delta compression), แž”แŸ’แžšแžพ `xdelta3`แŸ” +* แžŠแžพแž˜แŸ’แž”แžธแž”แŸ†แž”แŸ’แž›แŸ‚แž„ text encodings, แžŸแžถแž€แž›แŸ’แž”แž„ `iconv`แŸ” แžฌ `uconv` แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž€แž˜แŸ’แžšแžทแžแžแŸ’แž–แžŸแŸ‹; แžœแžถแž‚แžถแŸ†แž‘แŸ’แžšแžšแžฟแž„ Unicode แž€แž˜แŸ’แžšแžทแžแžแŸ’แž–แžŸแŸ‹แž˜แžฝแž™แž…แŸ†แž“แžฝแž“แŸ” แžงแž‘แžถแž แžšแžŽแŸแŸ– + +```sh + # แž”แž„แŸ’แž แžถแž‰ hex codes แžฌแžˆแŸ’แž˜แŸ„แŸ‡แž‡แžถแž€แŸ‹แžŸแŸ’แžแŸ‚แž„แž“แŸƒแžแžฝแžขแž€แŸ’แžŸแžš (แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแžŸแž˜แŸ’แžšแžถแž”แŸ‹ debugging): + uconv -f utf-8 -t utf-8 -x '::Any-Hex;' < input.txt + uconv -f utf-8 -t utf-8 -x '::Any-Name;' < input.txt + # แžขแž€แŸ’แžŸแžšแžแžผแž… แž“แžทแž„แž›แžปแž” accents แž‘แžถแŸ†แž„แžขแžŸแŸ‹ (แžŠแŸ„แž™แž–แž„แŸ’แžšแžธแž€ แž“แžทแž„แž‘แž˜แŸ’แž›แžถแž€แŸ‹แž–แžฝแž€แžœแžถ): + uconv -f utf-8 -t utf-8 -x '::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] >; ::Any-NFC;' < input.txt > output.txt + +``` + +* แžŠแžพแž˜แŸ’แž”แžธแž”แŸ†แž”แŸ‚แž€แžฏแž€แžŸแžถแžšแž‡แžถแž•แŸ’แž“แŸ‚แž€แŸ—, แžŸแžผแž˜แž˜แžพแž› `split` (แžŠแžพแž˜แŸ’แž”แžธแž”แŸ†แž”แŸ‚แž€แžแžถแž˜แž‘แŸ†แž แŸ†) แž“แžทแž„ `csplit` (แžŠแžพแž˜แŸ’แž”แžธแž”แŸ†แž”แŸ‚แž€แžแžถแž˜ pattern)แŸ” +* แž€แžถแž›แž”แžšแžทแž…แŸ’แž†แŸแž‘ แž“แžทแž„แž–แŸแž›แžœแŸแž›แžถแŸ– แžŠแžพแž˜แŸ’แž”แžธแž‘แž‘แžฝแž›แž”แžถแž“แž€แžถแž›แž”แžšแžทแž…แŸ’แž†แŸแž‘ แž“แžทแž„แž–แŸแž›แžœแŸแž›แžถแž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“แž“แŸ…แž€แŸ’แž“แžปแž„แž‘แž˜แŸ’แžšแž„แŸ‹ [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) แžŠแŸแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸ, แž”แŸ’แžšแžพ `date -u +"%Y-%m-%dT%H:%M:%SZ"` (แž‡แž˜แŸ’แžšแžพแžŸแž•แŸ’แžŸแŸแž„แž‘แŸ€แž [แž˜แžถแž“](https://stackoverflow.com/questions/7216358/date-command-on-os-x-doesnt-have-iso-8601-i-option) [แž”แž‰แŸ’แž แžถ](https://unix.stackexchange.com/questions/164826/date-command-iso-8601-option))แŸ” แžŠแžพแž˜แŸ’แž”แžธแž…แžถแžแŸ‹แž…แŸ‚แž„แž€แž“แŸ’แžŸแŸ„แž˜ (expressions) แž€แžถแž›แž”แžšแžทแž…แŸ’แž†แŸแž‘ แž“แžทแž„แž–แŸแž›แžœแŸแž›แžถ, แž”แŸ’แžšแžพ `dateadd`, `datediff`, `strptime` แŸ”แž›แŸ” แž–แžธ [`dateutils`](http://www.fresse.org/dateutils/)แŸ” +* แž”แŸ’แžšแžพ `zless`, `zmore`, `zcat`, แž“แžทแž„ `zgrep` แžŠแžพแž˜แŸ’แž”แžธแž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžถแžšแž›แžพแžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž”แžถแž“แž”แž„แŸ’แž แžถแž”แŸ‹ (compressed files)แŸ” +* แž‚แžปแžŽแž›แž€แŸ’แžแžŽแŸˆแžฏแž€แžŸแžถแžš (File attributes) แžขแžถแž…แž€แŸ†แžŽแžแŸ‹แž”แžถแž“แžแžถแž˜แžšแž™แŸˆ `chattr` แž“แžทแž„แž•แŸ’แžแž›แŸ‹แž‡แž˜แŸ’แžšแžพแžŸแž€แž˜แŸ’แžšแžทแžแž‘แžถแž”แž‡แžถแž„ file permissionsแŸ” แžงแž‘แžถแž แžšแžŽแŸ, แžŠแžพแž˜แŸ’แž”แžธแž€แžถแžšแž–แžถแžšแž”แŸ’แžšแž†แžถแŸ†แž„แž“แžนแž„แž€แžถแžšแž›แžปแž”แžฏแž€แžŸแžถแžšแžŠแŸ„แž™แž…แŸƒแžŠแž“แŸ’แž™แž“แžผแžœ immutable flagแŸ– `sudo chattr +i /critical/directory/or/file` +* แž”แŸ’แžšแžพ `getfacl` แž“แžทแž„ `setfacl` แžŠแžพแž˜แŸ’แž”แžธแžšแž€แŸ’แžŸแžถแž‘แžปแž€ แž“แžทแž„แžŸแŸ’แžแžถแžš file permissionsแŸ” แžงแž‘แžถแž แžšแžŽแŸแŸ– + +```sh + getfacl -R /some/path > permissions.txt + setfacl --restore=permissions.txt + +``` + +* แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž€แžพแžแžฏแž€แžŸแžถแžšแž‘แž‘แŸแžšแž แŸแžŸ, แž”แŸ’แžšแžพ `truncate` (แž”แž„แŸ’แž€แžพแž [sparse file](https://en.wikipedia.org/wiki/Sparse_file)), `fallocate` (ext4, xfs, btrfs แž“แžทแž„ ocfs2 filesystems), `xfs_mkfile` (แžŸแŸ’แž‘แžพแžšแžแŸ‚แž‚แŸ’แžšแž”แŸ‹ filesystems, แž˜แž€แž€แŸ’แž“แžปแž„แž€แž‰แŸ’แž…แž”แŸ‹ xfsprogs), `mkfile` (แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แŸ’แžšแž–แŸแž“แŸ’แž’แžŠแžผแž… Unix แžŠแžผแž…แž‡แžถ Solaris, Mac OS)แŸ” + +## แž€แžถแžšแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž”แž‰แŸ’แž แžถแž”แŸ’แžšแž–แŸแž“แŸ’แž’ (System debugging) + +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹ web debugging, `curl` แž“แžทแž„ `curl -I` แž‚แžบแž„แžถแž™แžŸแŸ’แžšแžฝแž›, แžฌแžŸแž˜แž˜แžผแž› `wget` แžšแž”แžŸแŸ‹แž–แžฝแž€แž‚แŸ, แžฌ [`httpie`](https://github.com/jkbrzt/httpie) แžŠแŸแž‘แŸ†แž“แžพแž”แž‡แžถแž„แŸ” +* แžŠแžพแž˜แŸ’แž”แžธแžŠแžนแž„แž–แžธแžŸแŸ’แžแžถแž“แž—แžถแž– cpu/disk แž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“, แžงแž”แž€แžšแžŽแŸแž”แžปแžšแžถแžŽแž‚แžบ `top` (แžฌ `htop` แžŠแŸ‚แž›แž›แŸ’แžขแž‡แžถแž„), `iostat`, แž“แžทแž„ `iotop`แŸ” แž”แŸ’แžšแžพ `iostat -mxz 15` แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŸแŸ’แžแžทแžแžท CPU แž˜แžผแž›แžŠแŸ’แž‹แžถแž“ แž“แžทแž„แžŸแŸ’แžแžทแžแžท disk แž›แž˜แŸ’แžขแžทแžแžแžถแž˜ partition แž“แžทแž„แž€แžถแžšแž™แž›แŸ‹แžŠแžนแž„แž–แžธแž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž–แŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แž›แž˜แŸ’แžขแžทแžแž“แŸƒแž€แžถแžšแžแž—แŸ’แž‡แžถแž”แŸ‹แž”แžŽแŸ’แžแžถแž‰, แž”แŸ’แžšแžพ `netstat` แž“แžทแž„ `ss`แŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž˜แžพแž›แž‘แžทแžŠแŸ’แž‹แž—แžถแž–แž‘แžผแž‘แŸ…แžšแž แŸแžŸแž“แŸƒแžขแŸ’แžœแžธแžŠแŸ‚แž›แž€แŸ†แž–แžปแž„แž€แžพแžแžกแžพแž„แž“แŸ…แž›แžพแž”แŸ’แžšแž–แŸแž“แŸ’แž’, `dstat` แž‚แžบแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž‡แžถแž–แžทแžŸแŸแžŸแŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‘แžทแžŠแŸ’แž‹แž—แžถแž–แž‘แžผแž‘แŸ…แž”แŸ†แž•แžปแžแž‡แžถแž˜แžฝแž™แž“แžนแž„แž–แŸแžแŸŒแž˜แžถแž“แž›แž˜แŸ’แžขแžทแž, แž”แŸ’แžšแžพ [`glances`](https://github.com/nicolargo/glances)แŸ” +* แžŠแžพแž˜แŸ’แž”แžธแžŠแžนแž„แž–แžธแžŸแŸ’แžแžถแž“แž—แžถแž– memory, แžŠแŸ†แžŽแžพแžšแž€แžถแžš แž“แžทแž„แž™แž›แŸ‹แž–แžธ output แž“แŸƒ `free` แž“แžทแž„ `vmstat`แŸ” แž‡แžถแž–แžทแžŸแŸแžŸ, แžแŸ’แžšแžผแžœแžŠแžนแž„แžแžถแžแž˜แŸ’แž›แŸƒ "cached" แž‚แžบแž‡แžถ memory แžŠแŸ‚แž›แž€แžถแž“แŸ‹แž€แžถแž”แŸ‹แžŠแŸ„แž™ Linux kernel แž‡แžถ file cache, แžŠแžผแž…แŸ’แž“แŸแŸ‡แž˜แžถแž“แž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž–แžšแžถแž”แŸ‹แž…แžผแž›แž‘แŸ…แž€แŸ’แž“แžปแž„แžแž˜แŸ’แž›แŸƒ "free"แŸ” +* Java system debugging แž‚แžบแž‡แžถแžšแžฟแž„แž•แŸ’แžŸแŸแž„แž˜แžฝแž™, แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž›แŸ’แž”แžทแž…แžŸแžถแž˜แž‰แŸ’แž‰แž˜แžฝแž™แž“แŸ…แž›แžพ JVMs แžšแž”แžŸแŸ‹ Oracle แž“แžทแž„แžแŸ’แž›แŸ‡แž‘แŸ€แžแž‚แžบแžขแŸ’แž“แž€แžขแžถแž…แžŠแŸ†แžŽแžพแžšแž€แžถแžš `kill -3 ` แž แžพแž™ full stack trace แž“แžทแž„ heap summary (แžšแžฝแž˜แž‘แžถแŸ†แž„แž–แŸแžแŸŒแž˜แžถแž“แž›แž˜แŸ’แžขแžทแž generational garbage collection, แžŠแŸ‚แž›แžขแžถแž…แž•แŸ’แžแž›แŸ‹แž–แŸแžแŸŒแž˜แžถแž“แžแŸ’แž–แžŸแŸ‹) แž“แžนแž„แžแŸ’แžšแžผแžœแž”แžถแž“ dumped แž‘แŸ… stderr/logsแŸ” `jps`, `jstat`, `jstack`, `jmap` แžšแž”แžŸแŸ‹ JDK แž‚แžบแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแŸ” [SJK tools](https://github.com/aragozin/jvm-tools) แž‚แžบแž€แž˜แŸ’แžšแžทแžแžแŸ’แž–แžŸแŸ‹แž‡แžถแž„แŸ” +* แž”แŸ’แžšแžพ [`mtr`](http://www.bitwizard.nl/mtr/) แž‡แžถ traceroute แž”แŸ’แžšแžŸแžพแžšแž‡แžถแž„, แžŠแžพแž˜แŸ’แž”แžธแž€แŸ†แžŽแžแŸ‹แžขแžแŸ’แžแžŸแž‰แŸ’แž‰แžถแžŽแž”แž‰แŸ’แž แžถแž”แžŽแŸ’แžแžถแž‰แŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž˜แžพแž›แžแžถแžแžพแž แŸแžแžปแžขแŸ’แžœแžธแž”แžถแž“แž‡แžถ disk แž–แŸแž‰, [`ncdu`](https://dev.yorhel.nl/ncdu) แžŸแž“แŸ’แžŸแŸ†แž–แŸแž›แžœแŸแž›แžถแž‡แžถแž„แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž’แž˜แŸ’แž˜แžแžถแžŠแžผแž…แž‡แžถ `du -sh *`แŸ” +* แžŠแžพแž˜แŸ’แž”แžธแžŸแŸ’แžœแŸ‚แž„แžšแž€ socket แžฌ process แžŽแžถแžŠแŸ‚แž›แž€แŸ†แž–แžปแž„แž”แŸ’แžšแžพ bandwidth, แžŸแžถแž€แž›แŸ’แž”แž„ [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) แžฌ [`nethogs`](https://github.com/raboof/nethogs)แŸ” +* แžงแž”แž€แžšแžŽแŸ `ab` (แž˜แž€แž‡แžถแž˜แžฝแž™ Apache) แž‚แžบแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž› web server performance แž”แŸ‚แž” quick-and-dirtyแŸ” แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž’แŸ’แžœแžพแžแŸแžŸแŸ’แžแž”แž“แŸ’แž‘แžปแž€ (load testing) แžŠแŸ‚แž›แžŸแŸ’แž˜แžปแž‚แžŸแŸ’แž˜แžถแž‰แž‡แžถแž„แž“แŸแŸ‡, แžŸแžถแž€แž›แŸ’แž”แž„ `siege`แŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹ network debugging แžŠแŸ‚แž›แž’แŸ’แž„แž“แŸ‹แž’แŸ’แž„แžšแž‡แžถแž„แž“แŸแŸ‡, [`wireshark`](https://wireshark.org/), [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html), แžฌ [`ngrep`](http://ngrep.sourceforge.net/)แŸ” +* แžŠแžนแž„แžขแŸ†แž–แžธ `strace` แž“แžทแž„ `ltrace`แŸ” แž‘แžถแŸ†แž„แž“แŸแŸ‡แžขแžถแž…แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž”แŸ’แžšแžŸแžทแž“แž”แžพแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž˜แžฝแž™แž€แŸ†แž–แžปแž„แž”แžšแžถแž‡แŸแž™, แž‚แžถแŸ†แž„ (hanging), แžฌ crashing, แž แžพแž™แžขแŸ’แž“แž€แž˜แžทแž“แžŠแžนแž„แžแžถแž แŸแžแžปแžขแŸ’แžœแžธ, แžฌแž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž…แž„แŸ‹แž‘แž‘แžฝแž›แž”แžถแž“แž‚แŸ†แž“แžทแžแž‘แžผแž‘แŸ…แž“แŸƒแž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž–แŸ” แž…แŸ†แžŽแžถแŸ†แž‡แž˜แŸ’แžšแžพแžŸ profiling (`-c`), แž“แžทแž„แž›แž‘แŸ’แž’แž—แžถแž–แž€แŸ’แž“แžปแž„แž€แžถแžš attach แž‘แŸ… running process (`-p`)แŸ” แž”แŸ’แžšแžพแž‡แž˜แŸ’แžšแžพแžŸ trace child (`-f`) แžŠแžพแž˜แŸ’แž”แžธแž‡แŸ€แžŸแžœแžถแž„แž€แžถแžšแžแž€แžแžถแž“แž€แžถแžšแž แŸ…แžŠแŸแžŸแŸ†แžแžถแž“แŸ‹แŸ” +* แžŠแžนแž„แžขแŸ†แž–แžธ `ldd` แžŠแžพแž˜แŸ’แž”แžธแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž› shared libraries แŸ”แž›แŸ” โ€” แž”แŸ‰แžปแž“แŸ’แžแŸ‚ [แž€แžปแŸ†แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžœแžถแž›แžพแžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž˜แžทแž“แž‚แžฝแžšแžฑแŸ’แž™แž‘แžปแž€แž…แžทแžแŸ’แž](http://www.catonmat.net/blog/ldd-arbitrary-code-execution/)แŸ” +* แžŠแžนแž„แž–แžธแžšแž”แŸ€แž” connect แž‘แŸ… running process แž‡แžถแž˜แžฝแž™ `gdb` แž“แžทแž„แž‘แž‘แžฝแž›แž”แžถแž“ stack traces แžšแž”แžŸแŸ‹แžœแžถแŸ” +* แž”แŸ’แžšแžพ `/proc`แŸ” แžœแžถแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแžขแžŸแŸ’แž…แžถแžšแŸ’แž™แžŽแžถแžŸแŸ‹แž‡แžฝแž“แž€แžถแž›แž“แŸ…แž–แŸแž› debugging แž”แž‰แŸ’แž แžถแž•แŸ’แž‘แžถแž›แŸ‹แŸ” แžงแž‘แžถแž แžšแžŽแŸแŸ– `/proc/cpuinfo`, `/proc/meminfo`, `/proc/cmdline`, `/proc/xxx/cwd`, `/proc/xxx/exe`, `/proc/xxx/fd/`, `/proc/xxx/smaps` (แžŠแŸ‚แž› `xxx` แž‚แžบแž‡แžถ process id แžฌ pid)แŸ” +* แž“แŸ…แž–แŸแž› debugging แžแžถแž แŸแžแžปแžขแŸ’แžœแžธแž”แžถแž“แž‡แžถแž˜แžถแž“แžขแŸ’แžœแžธแž˜แžฝแž™แžแžปแžŸแž”แŸ’แžšแž€แŸ’แžšแžแžธแž€แžถแž›แž–แžธแžขแžแžธแžแž€แžถแž›, [`sar`](http://sebastien.godard.pagesperso-orange.fr/) แžขแžถแž…แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแžแŸ’แž›แžถแŸ†แž„แŸ” แžœแžถแž”แž„แŸ’แž แžถแž‰แžŸแŸ’แžแžทแžแžทแž”แŸ’แžšแžœแžแŸ’แžแžทแžŸแžถแžŸแŸ’แžšแŸ’แžแž›แžพ CPU, memory, network, แŸ”แž›แŸ” +* แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžœแžทแž—แžถแž‚แž”แŸ’แžšแž–แŸแž“แŸ’แž’ แž“แžทแž„แž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž–แž€แžถแž“แŸ‹แžแŸ‚แžŸแŸŠแžธแž‡แž˜แŸ’แžšแŸ…, แž˜แžพแž› `stap` ([SystemTap](https://sourceware.org/systemtap/wiki)), [`perf`](https://en.wikipedia.org/wiki/Perf_%2528Linux%2529), แž“แžทแž„ [`sysdig`](https://github.com/draios/sysdig)แŸ” +* แž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แžแžถแžขแŸ’แž“แž€แž€แŸ†แž–แžปแž„แž“แŸ…แž›แžพ OS แžขแŸ’แžœแžธแž‡แžถแž˜แžฝแž™ `uname` แžฌ `uname -a` (แž–แŸแžแŸŒแž˜แžถแž“ Unix/kernel แž‘แžผแž‘แŸ…) แžฌ `lsb_release -a` (แž–แŸแžแŸŒแž˜แžถแž“ Linux distro)แŸ” +* แž”แŸ’แžšแžพ `dmesg` แž“แŸ…แž–แŸแž›แžŽแžถแžŠแŸ‚แž›แž˜แžถแž“แžขแŸ’แžœแžธแž˜แžฝแž™แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แŸ’แž›แŸ‚แž€แŸ— (แžœแžถแžขแžถแž…แž‡แžถแž”แž‰แŸ’แž แžถ hardware แžฌ driver)แŸ” +* แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž›แžปแž”แžฏแž€แžŸแžถแžš แž แžพแž™แžœแžถแž˜แžทแž“ free up disk space แžŠแŸ‚แž›แžšแŸ†แž–แžนแž„แž‘แžปแž€แžŠแžผแž…แžŠแŸ‚แž›แž”แžถแž“แžšแžถแž™แž€แžถแžšแžŽแŸแžŠแŸ„แž™ `du`, แž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แžแžถแžแžพแžฏแž€แžŸแžถแžšแž€แŸ†แž–แžปแž„แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžŠแŸ„แž™ process แžŠแŸ‚แžšแžฌแž‘แŸแŸ– +`lsof | grep deleted | grep "filename-of-my-big-file"` + +## แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž˜แžฝแž™แž‡แžฝแžš (One-liners) + +แžงแž‘แžถแž แžšแžŽแŸแž˜แžฝแž™แž…แŸ†แž“แžฝแž“แž“แŸƒแž€แžถแžšแž•แŸ’แž‚แžปแŸ†แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž…แžผแž›แž‚แŸ’แž“แžถแŸ– + +* แžœแžถแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž‚แžฝแžšแžฑแŸ’แž™แž€แžแŸ‹แžŸแž˜แŸ’แž‚แžถแž›แŸ‹แž‡แžฝแž“แž€แžถแž›แžŠแŸ‚แž›แžขแŸ’แž“แž€แžขแžถแž…แž’แŸ’แžœแžพ set intersection, union, แž“แžทแž„ difference แž“แŸƒ text files แžแžถแž˜แžšแž™แŸˆ `sort`/`uniq`แŸ” แžงแž”แž˜แžถแžแžถ `a` แž“แžทแž„ `b` แž‚แžบแž‡แžถ text files แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž”แžถแž“ uniqued แžšแžฝแž…แž แžพแž™แŸ” แž“แŸแŸ‡แž‚แžบแž›แžฟแž“, แž“แžทแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž›แžพแžฏแž€แžŸแžถแžšแžŠแŸ‚แž›แž˜แžถแž“แž‘แŸ†แž แŸ†แžŽแžถแž˜แžฝแž™, แžšแž แžผแžแžŠแž›แŸ‹ gigabytes แž‡แžถแž…แŸ’แžšแžพแž“แŸ” (Sort แž˜แžทแž“แžแŸ’แžšแžผแžœแž”แžถแž“แž€แŸ†แžŽแžแŸ‹แžŠแŸ„แž™ memory แž‘แŸ, แž‘แŸ„แŸ‡แž”แžธแž‡แžถแžขแŸ’แž“แž€แž”แŸ’แžšแž แŸ‚แž›แž‡แžถแžแŸ’แžšแžผแžœแž”แŸ’แžšแžพแž‡แž˜แŸ’แžšแžพแžŸ `-T` แž”แŸ’แžšแžŸแžทแž“แž”แžพ `/tmp` แž“แŸ…แž›แžพ root partition แžแžผแž…แž€แŸแžŠแŸ„แž™แŸ”) แžŸแžผแž˜แž˜แžพแž›แž•แž„แžŠแŸ‚แžšแž…แŸ†แžŽแžถแŸ†แžขแŸ†แž–แžธ `LC_ALL` แžแžถแž„แž›แžพ แž“แžทแž„แž‡แž˜แŸ’แžšแžพแžŸ `-u` แžšแž”แžŸแŸ‹ `sort` (แž‘แžปแž€แž…แŸ„แž›แžŠแžพแž˜แŸ’แž”แžธแž—แžถแž–แž…แŸ’แž”แžถแžŸแŸ‹แž›แžถแžŸแŸ‹แžแžถแž„แž€แŸ’แžšแŸ„แž˜)แŸ” + +```sh + sort a b | uniq > c # c แž‚แžบแž‡แžถ union แž“แŸƒ a แž“แžทแž„ b + sort a b | uniq -d > c # c แž‚แžบแž‡แžถ intersect แž“แŸƒ a แž“แžทแž„ b + sort a b b | uniq -u > c # c แž‚แžบแž‡แžถ set difference a - b + +``` + +* Pretty-print JSON files แž–แžธแžš, normalizing syntax แžšแž”แžŸแŸ‹แž–แžฝแž€แž‚แŸ, แž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€ coloring แž“แžทแž„ paginating แž›แž‘แŸ’แž’แž•แž›แŸ– + +``` + diff <(jq --sort-keys . < file1.json) <(jq --sort-keys . < file2.json) | colordiff | less -R + +``` + +* แž”แŸ’แžšแžพ `grep . *` แžŠแžพแž˜แŸ’แž”แžธแž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แž˜แžถแžแžทแž€แžถแž“แŸƒแžฏแž€แžŸแžถแžšแž‘แžถแŸ†แž„แžขแžŸแŸ‹แž“แŸ…แž€แŸ’แž“แžปแž„ directory แž™แŸ‰แžถแž„แž†แžถแž”แŸ‹แžšแž แŸแžŸ (แžŠแžผแž…แŸ’แž“แŸแŸ‡แžšแžถแž›แŸ‹แž”แž“แŸ’แž‘แžถแžแŸ‹แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แž‚แžผแž•แŸ’แž‚แž„แž‡แžถแž˜แžฝแž™แžˆแŸ’แž˜แŸ„แŸ‡แžฏแž€แžŸแžถแžš), แžฌ `head -100 *` (แžŠแžผแž…แŸ’แž“แŸแŸ‡แžšแžถแž›แŸ‹แžฏแž€แžŸแžถแžšแž˜แžถแž“ heading)แŸ” แž“แŸแŸ‡แžขแžถแž…แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแžŸแž˜แŸ’แžšแžถแž”แŸ‹ directories แžŠแŸ‚แž›แž–แŸ„แžšแž–แŸแž‰แž‘แŸ…แžŠแŸ„แž™แž€แžถแžšแž€แŸ†แžŽแžแŸ‹ config แžŠแžผแž…แž‡แžถแž“แŸ…แž€แŸ’แž“แžปแž„ `/sys`, `/proc`, `/etc`แŸ” +* แž”แžผแž€แž›แŸแžแž‘แžถแŸ†แž„แžขแžŸแŸ‹แž€แŸ’แž“แžปแž„แž‡แžฝแžšแžˆแžšแž‘แžธแž”แžธแž“แŸƒ text file (แž“แŸแŸ‡แž‘แŸ†แž“แž„แž‡แžถแž›แžฟแž“แž‡แžถแž„ 3X แž“แžทแž„แž€แžผแžŠแžแžทแž…แž‡แžถแž„ 3X แž‡แžถแž„ Python แžŠแŸ‚แž›แžŸแž˜แž˜แžผแž›)แŸ– + +```sh + awk '{ x += $3 } END { print x }' myfile + +``` + +* แžŠแžพแž˜แŸ’แž”แžธแž˜แžพแž›แž‘แŸ†แž แŸ†/แž€แžถแž›แž”แžšแžทแž…แŸ’แž†แŸแž‘แž“แŸ…แž›แžพ tree of files, แž“แŸแŸ‡แž‚แžบแžŠแžผแž…แž‡แžถ `ls -l` แž”แŸ‚แž” recursive แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžถแž„แžถแž™แžŸแŸ’แžšแžฝแž›แžขแžถแž“แž‡แžถแž„ `ls -lR`แŸ– + +```sh + find . -type f -ls + +``` + +* แž“แžทแž™แžถแž™แžแžถแžขแŸ’แž“แž€แž˜แžถแž“ text file, แžŠแžผแž…แž‡แžถ web server log, แž“แžทแž„แžแž˜แŸ’แž›แŸƒแž‡แžถแž€แŸ‹แž›แžถแž€แŸ‹แž˜แžฝแž™แžŠแŸ‚แž›แž”แž„แŸ’แž แžถแž‰แž“แŸ…แž›แžพแž”แž“แŸ’แž‘แžถแžแŸ‹แžแŸ’แž›แŸ‡, แžŠแžผแž…แž‡แžถ `acct_id` parameter แžŠแŸ‚แž›แž˜แžถแž“แž“แŸ…แž€แŸ’แž“แžปแž„ URLแŸ” แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž…แž„แŸ‹แž”แžถแž“แž…แŸ†แž“แžฝแž“แžŸแžšแžปแž”แž“แŸƒแžŸแŸ†แžŽแžพ (requests) แžŸแž˜แŸ’แžšแžถแž”แŸ‹ `acct_id` แž“แžธแž˜แžฝแž™แŸ—แŸ– + +```sh + egrep -o 'acct_id=[0-9]+' access.log | cut -d= -f2 | sort | uniq -c | sort -rn + +``` + +* แžŠแžพแž˜แŸ’แž”แžธแžแžถแž˜แžŠแžถแž“แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž‡แžถแž”แž“แŸ’แžแž”แž“แŸ’แž‘แžถแž”แŸ‹, แž”แŸ’แžšแžพ `watch`, แžง. แž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž…แŸ†แž–แŸ„แŸ‡แžฏแž€แžŸแžถแžšแž“แŸ…แž€แŸ’แž“แžปแž„ directory แž‡แžถแž˜แžฝแž™ `watch -d -n 2 'ls -rtlh | tail'` แžฌแž…แŸ†แž–แŸ„แŸ‡แž€แžถแžšแž€แŸ†แžŽแžแŸ‹ network แžแžŽแŸˆแž–แŸแž› troubleshooting wifi settings แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž‡แžถแž˜แžฝแž™ `watch -d -n 2 ifconfig`แŸ” +* แžŠแŸ†แžŽแžพแžšแž€แžถแžš function แž“แŸแŸ‡แžŠแžพแž˜แŸ’แž”แžธแž‘แž‘แžฝแž›แž”แžถแž“แž‚แž“แŸ’แž›แžนแŸ‡แž…แŸƒแžŠแž“แŸ’แž™แž–แžธแžฏแž€แžŸแžถแžšแž“แŸแŸ‡ (parses Markdown แž“แžทแž„แžŸแŸ’แžšแž„แŸ‹แž™แž€แž’แžถแžแžปแž˜แžฝแž™)แŸ– + +```sh + function taocl() { + curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md | + sed '/cowsay[.]png/d' | + pandoc -f markdown -t html | + xmlstarlet fo --html --dropdtd | + xmlstarlet sel -t -v "(html/body/ul/li[count(p)>0])[$RANDOM mod last()+1]" | + xmlstarlet unesc | fmt -80 | iconv -t US + } + +``` + +## แž˜แžทแž“แžŸแžผแžœแžŸแŸ’แž‚แžถแž›แŸ‹แžแŸ‚แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸ (Obscure but useful) + +* `expr`: แžขแž“แžปแžœแžแŸ’แžแž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžถแžš arithmetic แžฌ boolean แžฌแžœแžถแž™แžแž˜แŸ’แž›แŸƒ regular expressions +* `m4`: simple macro processor +* `yes`: แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž–แžแŸ’แžŸแŸ‚แžขแž€แŸ’แžŸแžšแžŠแžŠแŸ‚แž›แŸ—แž‡แžถแž…แŸ’แžšแžพแž“ +* `cal`: แž”แŸ’แžšแžแžทแž‘แžทแž“แžŠแŸแžŸแŸ’แžšแžŸแŸ‹แžŸแŸ’แžขแžถแž +* `env`: แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ (แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž€แŸ’แž“แžปแž„ scripts) +* `printenv`: แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž– environment variables (แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž€แŸ’แž“แžปแž„ debugging แž“แžทแž„ scripts) +* `look`: แžŸแŸ’แžœแŸ‚แž„แžšแž€แž–แžถแž€แŸ’แž™แžขแž„แŸ‹แž‚แŸ’แž›แŸแžŸ (แžฌแž”แž“แŸ’แž‘แžถแžแŸ‹แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžš) แžŠแŸ‚แž›แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แžŠแŸ„แž™แžแŸ’แžŸแŸ‚แžขแž€แŸ’แžŸแžš +* `cut`, `paste` แž“แžทแž„ `join`: แž€แžถแžšแž€แŸ‚แžŸแž˜แŸ’แžšแžฝแž›แž‘แžทแž“แŸ’แž“แž“แŸแž™ +* `fmt`: แž‘แž˜แŸ’แžšแž„แŸ‹แž€แžแžถแžแžŽแŸ’แžŒแžขแžแŸ’แžแž”แž‘ (format text paragraphs) +* `pr`: แž‘แž˜แŸ’แžšแž„แŸ‹แžขแžแŸ’แžแž”แž‘แž‘แŸ…แž‡แžถแž‘แŸ†แž–แŸแžš/แž‡แžฝแžšแžˆแžš +* `fold`: แžšแžปแŸ†แž”แž“แŸ’แž‘แžถแžแŸ‹แž“แŸƒแžขแžแŸ’แžแž”แž‘ (wrap lines of text) +* `column`: แž‘แž˜แŸ’แžšแž„แŸ‹ text fields แž‘แŸ…แž‡แžถแž‡แžฝแžšแžˆแžšแžฌแžแžถแžšแžถแž„แžŠแŸ‚แž›แž˜แžถแž“แž‘แž‘แžนแž„แžแŸแžš, แžแž˜แŸ’แžšแžนแž˜แž‚แŸ’แž“แžถ +* `expand` แž“แžทแž„ `unexpand`: แž”แŸ†แž”แŸ’แž›แŸ‚แž„แžšแžœแžถแž„ tabs แž“แžทแž„ spaces +* `nl`: แž”แž“แŸ’แžแŸ‚แž˜แž›แŸแžแž”แž“แŸ’แž‘แžถแžแŸ‹ +* `seq`: แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž–แž›แŸแž +* `bc`: แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž‚แžทแžแž›แŸแž +* `factor`: factor integers +* [`gpg`](https://gnupg.org/): encrypt แž“แžทแž„ sign แžฏแž€แžŸแžถแžš +* `toe`: แžแžถแžšแžถแž„แž“แŸƒ terminfo entries +* `nc`: network debugging แž“แžทแž„แž€แžถแžšแž•แŸ’แž‘แŸแžšแž‘แžทแž“แŸ’แž“แž“แŸแž™ +* `socat`: socket relay แž“แžทแž„ tcp port forwarder (แžŸแŸ’แžšแžŠแŸ€แž„แž“แžนแž„ `netcat`) +* [`slurm`](https://github.com/mattthias/slurm): network traffic visualization +* `dd`: แž•แŸ’แž›แžถแžŸแŸ‹แž‘แžธแž‘แžทแž“แŸ’แž“แž“แŸแž™แžšแžœแžถแž„แžฏแž€แžŸแžถแžš แžฌแžงแž”แž€แžšแžŽแŸ +* `file`: แž€แŸ†แžŽแžแŸ‹แžขแžแŸ’แžแžŸแž‰แŸ’แž‰แžถแžŽแž”แŸ’แžšแž—แŸแž‘แž“แŸƒแžฏแž€แžŸแžถแžš +* `tree`: แž”แž„แŸ’แž แžถแž‰ directories แž“แžทแž„ subdirectories แž‡แžถ nesting tree; แžŠแžผแž… `ls` แž”แŸ‰แžปแž“แŸ’แžแŸ‚ recursive +* `stat`: แž–แŸแžแŸŒแž˜แžถแž“แžฏแž€แžŸแžถแžš +* `time`: แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžท แž“แžทแž„แž€แŸ†แžŽแžแŸ‹แž–แŸแž›แžœแŸแž›แžถแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ +* `timeout`: แž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž…แŸ†แž“แžฝแž“แž–แŸแž›แžœแŸแž›แžถแžŠแŸ‚แž›แž”แžถแž“แž”แž‰แŸ’แž‡แžถแž€แŸ‹ แž แžพแž™แž”แž‰แŸ’แžˆแž”แŸ‹ process แž“แŸ…แž–แŸแž›แž…แŸ†แž“แžฝแž“แž–แŸแž›แžœแŸแž›แžถแžŠแŸ‚แž›แž”แžถแž“แž”แž‰แŸ’แž‡แžถแž€แŸ‹แž”แž‰แŸ’แž…แž”แŸ‹แŸ” +* `lockfile`: แž”แž„แŸ’แž€แžพแž semaphore file แžŠแŸ‚แž›แžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž›แžปแž”แžŠแŸ„แž™ `rm -f` แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡ +* `logrotate`: แž”แž„แŸ’แžœแžทแž›, แž”แž„แŸ’แž แžถแž”แŸ‹ แž“แžทแž„แž•แŸ’แž‰แžพแžขแŸŠแžธแž˜แŸ‚แž› logsแŸ” +* `watch`: แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž˜แŸ’แžแž„แž แžพแž™แž˜แŸ’แžแž„แž‘แŸ€แž, แž”แž„แŸ’แž แžถแž‰แž›แž‘แŸ’แž’แž•แž› แž“แžทแž„/แžฌ highlighting แž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžš +* [`when-changed`](https://github.com/joh/when-changed): แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžŽแžถแž˜แžฝแž™แžŠแŸ‚แž›แžขแŸ’แž“แž€แž”แž‰แŸ’แž‡แžถแž€แŸ‹แž“แŸ…แž–แŸแž›แžŽแžถแžŠแŸ‚แž›แžœแžถแžƒแžพแž‰แžฏแž€แžŸแžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแŸ” แžŸแžผแž˜แž˜แžพแž› `inotifywait` แž“แžทแž„ `entr` แž•แž„แžŠแŸ‚แžšแŸ” +* `tac`: แž”แŸ„แŸ‡แž–แžปแž˜แŸ’แž–แžฏแž€แžŸแžถแžšแž”แž‰แŸ’แž…แŸ’แžšแžถแžŸ (reverse) +* `comm`: แž”แŸ’แžšแŸ€แž”แž’แŸ€แž” sorted files แž˜แžฝแž™แž”แž“แŸ’แž‘แžถแžแŸ‹แž˜แŸ’แžแž„แŸ— +* `strings`: แžŸแŸ’แžšแž„แŸ‹แž™แž€แžขแžแŸ’แžแž”แž‘แž–แžธ binary files +* `tr`: แž€แžถแžšแž”แž€แž”แŸ’แžšแŸ‚แžฌแž€แŸ‚แžŸแž˜แŸ’แžšแžฝแž›แžแžฝแžขแž€แŸ’แžŸแžš +* `iconv` แžฌ `uconv`: แž€แžถแžšแž”แŸ†แž”แŸ’แž›แŸ‚แž„แžŸแž˜แŸ’แžšแžถแž”แŸ‹ text encodings +* `split` แž“แžทแž„ `csplit`: แž€แžถแžšแž”แŸ†แž”แŸ‚แž€แžฏแž€แžŸแžถแžš +* `sponge`: แžขแžถแž“ input แž‘แžถแŸ†แž„แžขแžŸแŸ‹แž˜แžปแž“แž–แŸแž›แžŸแžšแžŸแŸแžšแžœแžถ, แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžขแžถแž“แž–แžธแž”แž“แŸ’แž‘แžถแž”แŸ‹แž˜แž€แžŸแžšแžŸแŸแžšแž‘แŸ…แžฏแž€แžŸแžถแžšแžแŸ‚แž˜แžฝแž™, แžง., `grep -v something some-file | sponge some-file` +* `units`: แž€แžถแžšแž”แŸ†แž”แŸ’แž›แŸ‚แž„แžแŸ’แž“แžถแž แž“แžทแž„แž€แžถแžšแž‚แžŽแž“แžถ; แž”แŸ†แž”แŸ’แž›แŸ‚แž„ furlongs per fortnight แž‘แŸ… twips per blink (แžŸแžผแž˜แž˜แžพแž› `/usr/share/units/definitions.units` แž•แž„แžŠแŸ‚แžš) +* `apg`: แž”แž„แŸ’แž€แžพแžแž–แžถแž€แŸ’แž™แžŸแž˜แŸ’แž„แžถแžแŸ‹แž…แŸƒแžŠแž“แŸ’แž™ +* `xz`: แž€แžถแžšแž”แž„แŸ’แž แžถแž”แŸ‹แžฏแž€แžŸแžถแžšแžขแž“แžปแž”แžถแžแžแŸ’แž–แžŸแŸ‹ (high-ratio file compression) +* `ldd`: แž–แŸแžแŸŒแž˜แžถแž“ dynamic library +* `nm`: symbols แž–แžธ object files +* `ab` แžฌ [`wrk`](https://github.com/wg/wrk): benchmarking web servers +* `strace`: system call debugging +* [`mtr`](http://www.bitwizard.nl/mtr/): traceroute แž”แŸ’แžšแžŸแžพแžšแž‡แžถแž„แžŸแž˜แŸ’แžšแžถแž”แŸ‹ network debugging +* `cssh`: visual concurrent shell +* `rsync`: sync แžฏแž€แžŸแžถแžš แž“แžทแž„แžแžแžฏแž€แžŸแžถแžšแžแžถแž˜แžšแž™แŸˆ SSH แžฌแž€แŸ’แž“แžปแž„ local file system +* [`wireshark`](https://wireshark.org/) แž“แžทแž„ [`tshark`](https://www.wireshark.org/docs/wsug_html_chunked/AppToolstshark.html): packet capture แž“แžทแž„ network debugging +* [`ngrep`](http://ngrep.sourceforge.net/): grep แžŸแž˜แŸ’แžšแžถแž”แŸ‹ network layer +* `host` แž“แžทแž„ `dig`: DNS lookups +* `lsof`: แž–แŸแžแŸŒแž˜แžถแž“ process file descriptor แž“แžทแž„ socket +* `dstat`: แžŸแŸ’แžแžทแžแžทแž”แŸ’แžšแž–แŸแž“แŸ’แž’แžŠแŸ‚แž›แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸ +* [`glances`](https://github.com/nicolargo/glances): แž€แž˜แŸ’แžšแžทแžแžแŸ’แž–แžŸแŸ‹, multi-subsystem overview +* `iostat`: แžŸแŸ’แžแžทแžแžท Disk usage +* `mpstat`: แžŸแŸ’แžแžทแžแžท CPU usage +* `vmstat`: แžŸแŸ’แžแžทแžแžท Memory usage +* `htop`: แž€แŸ†แžŽแŸ‚แžŠแŸ‚แž›แž”แžถแž“แž€แŸ‚แž›แž˜แŸ’แžขแž“แŸƒ top +* `last`: แž”แŸ’แžšแžœแžแŸ’แžแžท login +* `w`: แž“แžšแžŽแžถแž€แŸ†แž–แžปแž„ logged on +* `id`: แž–แŸแžแŸŒแž˜แžถแž“แžขแžแŸ’แžแžŸแž‰แŸ’แž‰แžถแžŽ user/group +* [`sar`](http://sebastien.godard.pagesperso-orange.fr/): แžŸแŸ’แžแžทแžแžทแž”แŸ’แžšแž–แŸแž“แŸ’แž’แž”แŸ’แžšแžœแžแŸ’แžแžทแžŸแžถแžŸแŸ’แžšแŸ’แž +* [`iftop`](http://www.ex-parrot.com/~pdw/iftop/) แžฌ [`nethogs`](https://github.com/raboof/nethogs): network utilization แžแžถแž˜ socket แžฌ process +* `ss`: แžŸแŸ’แžแžทแžแžท socket +* `dmesg`: แžŸแžถแžšแž€แŸ†แž แžปแžŸ boot แž“แžทแž„แž”แŸ’แžšแž–แŸแž“แŸ’แž’ +* `sysctl`: แž˜แžพแž› แž“แžทแž„แž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ Linux kernel parameters แž“แŸ… run time +* `hdparm`: SATA/ATA disk manipulation/performance +* `lsblk`: แžšแžถแž™แž”แž‰แŸ’แž‡แžธ block devices: tree view แž“แŸƒ disks แž“แžทแž„ disk partitions แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€ +* `lshw`, `lscpu`, `lspci`, `lsusb`, `dmidecode`: แž–แŸแžแŸŒแž˜แžถแž“ hardware, แžšแžฝแž˜แž‘แžถแŸ†แž„ CPU, BIOS, RAID, graphics, devices, แŸ”แž›แŸ” +* `lsmod` แž“แžทแž„ `modinfo`: แžšแžถแž™แž”แž‰แŸ’แž‡แžธ แž“แžทแž„แž”แž„แŸ’แž แžถแž‰แž–แŸแžแŸŒแž˜แžถแž“แž›แž˜แŸ’แžขแžทแžแž“แŸƒ kernel modulesแŸ” +* `fortune`, `ddate`, แž“แžทแž„ `sl`: um, well, แžœแžถแžขแžถแžŸแŸ’แžšแŸแž™แž›แžพแžแžถแžแžพแžขแŸ’แž“แž€แž…แžถแžแŸ‹แž‘แžปแž€แž€แŸ’แž”แžถแž›แžšแžแž—แŸ’แž›แžพแž„แž…แŸ†แž แžถแž™ แž“แžทแž„ Zippy quotations แž‡แžถ "แž”แŸ’แžšแž™แŸ„แž‡แž“แŸ" แžŠแŸ‚แžšแžฌแž‘แŸ + +## แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžแŸ‚ macOS (macOS only) + +แž‘แžถแŸ†แž„แž“แŸแŸ‡แž‚แžบแž‡แžถแž’แžถแžแžปแžŠแŸ‚แž›แž–แžถแž€แŸ‹แž–แŸแž“แŸ’แž’ *แžแŸ‚* แž“แŸ…แž›แžพ macOS แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แŸ” + +* แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž€แž‰แŸ’แž…แž”แŸ‹ (Package management) แž‡แžถแž˜แžฝแž™ `brew` (Homebrew) แž“แžทแž„/แžฌ `port` (MacPorts)แŸ” แž‘แžถแŸ†แž„แž“แŸแŸ‡แžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แž”แŸ’แžšแžพแžŠแžพแž˜แŸ’แž”แžธแžŠแŸ†แžกแžพแž„แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž‡แžถแž…แŸ’แžšแžพแž“แžแžถแž„แž›แžพแž“แŸ…แž›แžพ macOSแŸ” +* แž…แž˜แŸ’แž›แž„ output แž“แŸƒแž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžŽแžถแž˜แžฝแž™แž‘แŸ… desktop app แž‡แžถแž˜แžฝแž™ `pbcopy` แž“แžทแž„ paste input แž–แžธ desktop app แž‡แžถแž˜แžฝแž™ `pbpaste`แŸ” +* แžŠแžพแž˜แŸ’แž”แžธแž”แžพแž€ Option key แž“แŸ…แž€แŸ’แž“แžปแž„ macOS Terminal แž‡แžถ alt key (แžŠแžผแž…แžŠแŸ‚แž›แž”แžถแž“แž”แŸ’แžšแžพแž€แŸ’แž“แžปแž„แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแžแžถแž„แž›แžพแžŠแžผแž…แž‡แžถ **alt-b**, **alt-f**, แŸ”แž›แŸ”), แž”แžพแž€ Preferences -> Profiles -> Keyboard แž แžพแž™แž‡แŸ’แžšแžพแžŸแžšแžพแžŸ "Use Option as Meta key"แŸ” +* แžŠแžพแž˜แŸ’แž”แžธแž”แžพแž€แžฏแž€แžŸแžถแžšแž‡แžถแž˜แžฝแž™ desktop app, แž”แŸ’แžšแžพ `open` แžฌ `open -a /Applications/Whatever.app`แŸ” +* Spotlight: แžŸแŸ’แžœแŸ‚แž„แžšแž€แžฏแž€แžŸแžถแžšแž‡แžถแž˜แžฝแž™ `mdfind` แž“แžทแž„แžšแžถแž™แž”แž‰แŸ’แž‡แžธ metadata (แžŠแžผแž…แž‡แžถ photo EXIF info) แž‡แžถแž˜แžฝแž™ `mdls`แŸ” +* แžแŸ’แžšแžผแžœแžŠแžนแž„แžแžถ macOS แž‚แžบแž•แŸ’แžขแŸ‚แž€แž›แžพ BSD Unix, แž“แžทแž„แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž‡แžถแž…แŸ’แžšแžพแž“ (แžงแž‘แžถแž แžšแžŽแŸ `ps`, `ls`, `tail`, `awk`, `sed`) แž˜แžถแž“แž€แžถแžšแž”แŸ’แžšแŸ‚แž”แŸ’แžšแžฝแž›แž”แž“แŸ’แžแžทแž…แž”แž“แŸ’แžแžฝแž…แž‡แžถแž…แŸ’แžšแžพแž“แž–แžธ Linux, แžŠแŸ‚แž›แžแŸ’แžšแžผแžœแž”แžถแž“แž‡แŸ‡แžฅแž‘แŸ’แž’แžทแž–แž›แž™แŸ‰แžถแž„แžแŸ’แž›แžถแŸ†แž„แžŠแŸ„แž™ System V-style Unix แž“แžทแž„ GNU toolsแŸ” แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžถแž”แŸ‹แž–แžธแž—แžถแž–แžแžปแžŸแž‚แŸ’แž“แžถแž‰แžนแž€แž‰แžถแž”แŸ‹แžŠแŸ„แž™แž€แžแŸ‹แžŸแž˜แŸ’แž‚แžถแž›แŸ‹ man page แž˜แžถแž“แž…แŸ†แžŽแž„แž‡แžพแž„ "BSD General Commands Manual." แž€แŸ’แž“แžปแž„แž€แžšแžŽแžธแžแŸ’แž›แŸ‡ GNU versions แžขแžถแž…แžแŸ’แžšแžผแžœแž”แžถแž“แžŠแŸ†แžกแžพแž„แž•แž„แžŠแŸ‚แžš (แžŠแžผแž…แž‡แžถ `gawk` แž“แžทแž„ `gsed` แžŸแž˜แŸ’แžšแžถแž”แŸ‹ GNU awk แž“แžทแž„ sed)แŸ” แž”แŸ’แžšแžŸแžทแž“แž”แžพแžŸแžšแžŸแŸแžš cross-platform Bash scripts, แž‡แŸ€แžŸแžœแžถแž„แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถแž”แŸ‚แž”แž“แŸแŸ‡ (แžงแž‘แžถแž แžšแžŽแŸ, แž–แžทแž…แžถแžšแžŽแžถ Python แžฌ `perl`) แžฌแžŸแžถแž€แž›แŸ’แž”แž„แžŠแŸ„แž™แž”แŸ’แžšแžปแž„แž”แŸ’แžšแž™แŸแžแŸ’แž“แŸ” +* แžŠแžพแž˜แŸ’แž”แžธแž‘แž‘แžฝแž›แž”แžถแž“แž–แŸแžแŸŒแž˜แžถแž“ macOS release, แž”แŸ’แžšแžพ `sw_vers`แŸ” + +## แžŸแž˜แŸ’แžšแžถแž”แŸ‹แžแŸ‚ Windows (Windows only) + +แž’แžถแžแžปแž‘แžถแŸ†แž„แž“แŸแŸ‡แž‚แžบแž–แžถแž€แŸ‹แž–แŸแž“แŸ’แž’ *แžแŸ‚* แž“แŸ…แž›แžพ Windows แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แŸ” + +### แžœแžทแž’แžธแžŠแžพแž˜แŸ’แž”แžธแž‘แž‘แžฝแž›แž”แžถแž“ Unix tools แž“แŸ…แž€แŸ’แžšแŸ„แž˜ Windows + +* แž…แžผแž›แž”แŸ’แžšแžพแžแžถแž˜แž–แž›แž“แŸƒ Unix shell แž“แŸ…แž€แŸ’แžšแŸ„แž˜ Microsoft Windows แžŠแŸ„แž™แžŠแŸ†แžกแžพแž„ [Cygwin](https://cygwin.com/)แŸ” แž—แžถแž‚แž…แŸ’แžšแžพแž“แž“แŸƒแžขแŸ’แžœแžธแžŠแŸ‚แž›แž”แžถแž“แž–แžทแž–แžŽแŸŒแž“แžถแž“แŸ…แž€แŸ’แž“แžปแž„แžฏแž€แžŸแžถแžšแž“แŸแŸ‡แž“แžนแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžš out of the boxแŸ” +* แž“แŸ…แž›แžพ Windows 10, แžขแŸ’แž“แž€แžขแžถแž…แž”แŸ’แžšแžพ [Windows Subsystem for Linux (WSL)](https://msdn.microsoft.com/commandline/wsl/about), แžŠแŸ‚แž›แž•แŸ’แžแž›แŸ‹แž“แžผแžœ Bash environment แžŠแŸ‚แž›แž’แŸ’แž›แžถแž”แŸ‹แžŸแŸ’แž‚แžถแž›แŸ‹แž‡แžถแž˜แžฝแž™ Unix command line utilitiesแŸ” +* แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž…แž„แŸ‹แž”แŸ’แžšแžพ GNU developer tools (แžŠแžผแž…แž‡แžถ GCC) แž“แŸ…แž›แžพ Windows, แž–แžทแž…แžถแžšแžŽแžถ [MinGW](http://www.mingw.org/) แž“แžทแž„แž€แž‰แŸ’แž…แž”แŸ‹ [MSYS](http://www.mingw.org/wiki/msys) แžšแž”แžŸแŸ‹แžœแžถ, แžŠแŸ‚แž›แž•แŸ’แžแž›แŸ‹แž“แžผแžœ utilities แžŠแžผแž…แž‡แžถ bash, gawk, make แž“แžทแž„ grepแŸ” MSYS แž˜แžทแž“แž˜แžถแž“แž›แž€แŸ’แžแžŽแŸˆแž–แžทแžŸแŸแžŸแž‘แžถแŸ†แž„แžขแžŸแŸ‹แž”แžพแž’แŸ€แž”แž“แžนแž„ Cygwin แž‘แŸแŸ” MinGW แž‚แžบแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž‡แžถแž–แžทแžŸแŸแžŸแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž”แž„แŸ’แž€แžพแž native Windows ports แž“แŸƒ Unix toolsแŸ” +* แž‡แž˜แŸ’แžšแžพแžŸแž˜แžฝแž™แž‘แŸ€แžแžŠแžพแž˜แŸ’แž”แžธแž‘แž‘แžฝแž›แž”แžถแž“ Unix look and feel แž“แŸ…แž€แŸ’แžšแŸ„แž˜ Windows แž‚แžบ [Cash](https://github.com/dthree/cash)แŸ” แž…แŸ†แžŽแžถแŸ†แžแžถแž˜แžถแž“แžแŸ‚ Unix commands แž“แžทแž„ command-line options แžแžทแž…แžแžฝแž…แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แžŠแŸ‚แž›แž˜แžถแž“แž“แŸ…แž€แŸ’แž“แžปแž„ environment แž“แŸแŸ‡แŸ” + +### แžงแž”แž€แžšแžŽแŸ Windows command-line แžŠแŸ‚แž›แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸ + +* แžขแŸ’แž“แž€แžขแžถแž…แžขแž“แžปแžœแžแŸ’แž แž“แžทแž„ script แž€แžทแž…แŸ’แž…แž€แžถแžš Windows system administration แž—แžถแž‚แž…แŸ’แžšแžพแž“แž–แžธ command line แžŠแŸ„แž™แžšแŸ€แž“ แž“แžทแž„แž”แŸ’แžšแžพ `wmic`แŸ” +* แžงแž”แž€แžšแžŽแŸ Windows networking command-line แžŠแžพแž˜แžŠแŸ‚แž›แžขแŸ’แž“แž€แžขแžถแž…แž™แž›แŸ‹แžแžถแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแžšแžฝแž˜แž˜แžถแž“ `ping`, `ipconfig`, `tracert`, แž“แžทแž„ `netstat`แŸ” +* แžขแŸ’แž“แž€แžขแžถแž…แžขแž“แžปแžœแžแŸ’แž [แž€แžทแž…แŸ’แž…แž€แžถแžš Windows แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž‡แžถแž…แŸ’แžšแžพแž“](http://www.thewindowsclub.com/rundll32-shortcut-commands-windows) แžŠแŸ„แž™แž แŸ…แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ `Rundll32`แŸ” + +### แž‚แž“แŸ’แž›แžนแŸ‡ แž“แžทแž„แž›แŸ’แž”แžทแž… Cygwin + +* แžŠแŸ†แžกแžพแž„แž€แž˜แŸ’แž˜แžœแžทแž’แžธ Unix แž”แž“แŸ’แžแŸ‚แž˜แž‡แžถแž˜แžฝแž™ package manager แžšแž”แžŸแŸ‹ CygwinแŸ” +* แž”แŸ’แžšแžพ `mintty` แž‡แžถ command-line window แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แŸ” +* แž…แžผแž›แž”แŸ’แžšแžพ Windows clipboard แžแžถแž˜แžšแž™แŸˆ `/dev/clipboard`แŸ” +* แžŠแŸ†แžŽแžพแžšแž€แžถแžš `cygstart` แžŠแžพแž˜แŸ’แž”แžธแž”แžพแž€แžฏแž€แžŸแžถแžšแžŽแžถแž˜แžฝแž™แžแžถแž˜แžšแž™แŸˆแž€แž˜แŸ’แž˜แžœแžทแž’แžธแžŠแŸ‚แž›แž”แžถแž“แž…แžปแŸ‡แžˆแŸ’แž˜แŸ„แŸ‡แžšแž”แžŸแŸ‹แžœแžถแŸ” +* แž…แžผแž›แž”แŸ’แžšแžพ Windows registry แž‡แžถแž˜แžฝแž™ `regtool`แŸ” +* แž…แŸ†แžŽแžถแŸ†แžแžถ `C:\` Windows drive path แž€แŸ’แž›แžถแž™แž‡แžถ `/cygdrive/c` แž“แŸ…แž€แŸ’แžšแŸ„แž˜ Cygwin, แž“แžทแž„แžแžถ `/` แžšแž”แžŸแŸ‹ Cygwin แž”แž„แŸ’แž แžถแž‰แž“แŸ…แž€แŸ’แžšแŸ„แž˜ `C:\cygwin` แž“แŸ…แž›แžพ WindowsแŸ” แž”แŸ†แž”แŸ’แž›แŸ‚แž„แžšแžœแžถแž„ Cygwin แž“แžทแž„ Windows-style file paths แž‡แžถแž˜แžฝแž™ `cygpath`แŸ” แž“แŸแŸ‡แž‚แžบแž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแž”แŸ†แž•แžปแžแž“แŸ…แž€แŸ’แž“แžปแž„ scripts แžŠแŸ‚แž›แž แŸ… Windows programsแŸ” + +## แž’แž“แž’แžถแž“แž”แž“แŸ’แžแŸ‚แž˜ (More resources) + +* [awesome-shell](https://github.com/alebcay/awesome-shell): แž”แž‰แŸ’แž‡แžธแžŠแŸ‚แž›แž”แžถแž“แžšแŸ€แž”แž…แŸ†แž“แŸƒ shell tools แž“แžทแž„แž’แž“แž’แžถแž“แŸ” +* [awesome-osx-command-line](https://github.com/herrbischoff/awesome-osx-command-line): แž€แžถแžšแžŽแŸ‚แž“แžถแŸ†แžŸแŸŠแžธแž‡แž˜แŸ’แžšแŸ…แž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ€แžแžŸแž˜แŸ’แžšแžถแž”แŸ‹ macOS command lineแŸ” +* [Strict mode](http://redsymbol.net/articles/unofficial-bash-strict-mode/) แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžŸแžšแžŸแŸแžš shell scripts แž›แŸ’แžขแž”แŸ’แžšแžŸแžพแžšแŸ” +* [shellcheck](https://github.com/koalaman/shellcheck): แžงแž”แž€แžšแžŽแŸ shell script static analysisแŸ” แžŸแŸ†แžแžถแž“แŸ‹, lint แžŸแž˜แŸ’แžšแžถแž”แŸ‹ bash/sh/zshแŸ” +* [Filenames and Pathnames in Shell](http://www.dwheeler.com/essays/filenames-in-shell.html): แž—แžถแž–แž›แž˜แŸ’แžขแžทแžแžŸแŸ’แž˜แžปแž‚แžŸแŸ’แž˜แžถแž‰แž‚แžฝแžšแžฑแŸ’แž™แžŸแŸ„แž€แžŸแŸ’แžแžถแž™แžขแŸ†แž–แžธแžšแž”แŸ€แž”แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™ filenames แžฑแŸ’แž™แž”แžถแž“แžแŸ’แžšแžนแž˜แžแŸ’แžšแžผแžœแž“แŸ…แž€แŸ’แž“แžปแž„ shell scriptsแŸ” +* [Data Science at the Command Line](http://datascienceatthecommandline.com/#tools): แž–แžถแž€แŸ’แž™แž”แž‰แŸ’แž‡แžถ แž“แžทแž„แžงแž”แž€แžšแžŽแŸแž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ€แžแžŠแŸ‚แž›แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแž’แŸ’แžœแžพ data science, แž–แžธแžŸแŸ€แžœแž—แŸ…แžŠแŸ‚แž›แž˜แžถแž“แžˆแŸ’แž˜แŸ„แŸ‡แžŠแžผแž…แž‚แŸ’แž“แžถแŸ” + +## แž€แžถแžšแž”แžŠแžทแžŸแŸแž’แž‘แž‘แžฝแž›แžแžปแžŸแžแŸ’แžšแžผแžœ (Disclaimer) + +แž›แžพแž€แž›แŸ‚แž„แžแŸ‚แž€แžทแž…แŸ’แž…แž€แžถแžšแžแžผแž…แžแžถแž…แž”แŸ†แž•แžปแž, แž€แžผแžŠแžแŸ’แžšแžผแžœแž”แžถแž“แžŸแžšแžŸแŸแžšแžŠแžพแž˜แŸ’แž”แžธแžฑแŸ’แž™แžขแŸ’แž“แž€แžŠแž‘แŸƒแžขแžถแž…แžขแžถแž“แžœแžถแž”แžถแž“แŸ” แž‡แžถแž˜แžฝแž™แžแžถแž˜แž–แž›แž˜แž€แž‡แžถแž˜แžฝแž™แž€แžถแžšแž‘แž‘แžฝแž›แžแžปแžŸแžแŸ’แžšแžผแžœแŸ” แž€แžถแžšแž–แžทแžแžŠแŸ‚แž›แžขแŸ’แž“แž€ *แžขแžถแž…* แž’แŸ’แžœแžพแžขแŸ’แžœแžธแž˜แžฝแž™แž“แŸ…แž€แŸ’แž“แžปแž„ Bash แž˜แžทแž“แž˜แŸ‚แž“แž˜แžถแž“แž“แŸแž™แžแžถแžขแŸ’แž“แž€แž‚แžฝแžšแž’แŸ’แžœแžพแžœแžถแž‘แŸ! ;) + +## แžขแžถแž‡แŸ’แž‰แžถแž”แŸแžŽแŸ’แžŽ (License) + +[![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) + +แž€แžถแžšแž„แžถแžšแž“แŸแŸ‡แžแŸ’แžšแžผแžœแž”แžถแž“แž•แŸ’แžแž›แŸ‹แžขแžถแž‡แŸ’แž‰แžถแž”แŸแžŽแŸ’แžŽแž€แŸ’แžšแŸ„แž˜ [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/)แŸ” \ No newline at end of file diff --git a/README-ko.md b/README-ko.md index 80f86e6d..21dac32e 100644 --- a/README-ko.md +++ b/README-ko.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # The Art of Command Line diff --git a/README-pl.md b/README-pl.md index 58d64d84..33783309 100644 --- a/README-pl.md +++ b/README-pl.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # Sztuka uลผywania wiersza poleceล„ diff --git a/README-pt.md b/README-pt.md index e2075b64..e8390338 100644 --- a/README-pt.md +++ b/README-pt.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # A arte da linha de comando diff --git a/README-ro.md b/README-ro.md index 84734d86..ac13f769 100644 --- a/README-ro.md +++ b/README-ro.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # Arta liniei de comandฤƒ diff --git a/README-ru.md b/README-ru.md index a4a2a0ca..bb573075 100644 --- a/README-ru.md +++ b/README-ru.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # ะ˜ัะบัƒััั‚ะฒะพ ะบะพะผะฐะฝะดะฝะพะน ัั‚ั€ะพะบะธ diff --git a/README-sl.md b/README-sl.md index fa567dd5..52a93770 100644 --- a/README-sl.md +++ b/README-sl.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # Umetnost ukazne vrstice diff --git a/README-uk.md b/README-uk.md index d3061652..07b55714 100644 --- a/README-uk.md +++ b/README-uk.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # ะœะธัั‚ะตั†ั‚ะฒะพ ะบะพะผะฐะฝะดะฝะพะณะพ ั€ัะดะบะฐ diff --git a/README-zh-Hant.md b/README-zh-Hant.md index 96a70091..78763ffd 100644 --- a/README-zh-Hant.md +++ b/README-zh-Hant.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # ๅ‘ฝไปคๅˆ—็š„่—่ก“ diff --git a/README-zh.md b/README-zh.md index 43184640..fa21b420 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # ๅ‘ฝไปค่กŒ็š„่‰บๆœฏ diff --git a/README.md b/README.md index a1109d58..af664760 100755 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ ๐ŸŒ -*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* +*[ฤŒeลกtina](README-cs.md) โˆ™ [Deutsch](README-de.md) โˆ™ [ฮ•ฮปฮปฮทฮฝฮนฮบฮฌ](README-el.md) โˆ™ [English](README.md) โˆ™ [Espaรฑol](README-es.md) โˆ™ [Franรงais](README-fr.md) โˆ™ [Indonesia](README-id.md) โˆ™ [Italiano](README-it.md) โˆ™ [ๆ—ฅๆœฌ่ชž](README-ja.md) โˆ™ [แž—แžถแžŸแžถแžแŸ’แž˜แŸ‚แžš](README-km.md) โˆ™ [ํ•œ๊ตญ์–ด](README-ko.md) โˆ™ [polski](README-pl.md) โˆ™ [Portuguรชs](README-pt.md) โˆ™ [Romรขnฤƒ](README-ro.md) โˆ™ [ะ ัƒััะบะธะน](README-ru.md) โˆ™ [Slovenลกฤina](README-sl.md) โˆ™ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README-uk.md) โˆ™ [็ฎ€ไฝ“ไธญๆ–‡](README-zh.md) โˆ™ [็น้ซ”ไธญๆ–‡](README-zh-Hant.md)* # The Art of Command Line