Skip to content

raibann/sh_manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Shell Manager / แžงแž”แž€แžšแžŽแŸแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„ Shell

แžแŸ’แž˜แŸ‚แžš | English


แžงแž”แž€แžšแžŽแŸแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„ Shell

แžงแž”แž€แžšแžŽแŸแžŠแŸ‚แž›แž”แž„แŸ’แž€แžพแžแžกแžพแž„แžŠแŸ„แž™ Python แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„ แž“แžทแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžš shell scripts แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž‡แŸ’แžšแžพแžŸแžšแžพแžŸแžขแž“แŸ’แžแžšแž€แž˜แŸ’แž˜ แž“แžทแž„แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž€แžถแžšแžขแž“แžปแž‰แŸ’แž‰แžถแžแžŠแŸ„แž™แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแŸ” แž›แŸ’แžขแžŸแž˜แŸ’แžšแžถแž”แŸ‹แžขแŸ’แž“แž€แžขแž—แžทแžœแžŒแŸ’แžแž“แŸแžŠแŸ‚แž›แž”แŸ’แžšแžพ shell scripts แž‰แžนแž€แž‰แžถแž”แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžทแž…แŸ’แž…แž€แžถแžšแžขแž—แžทแžœแžŒแŸ’แžแž“แŸแžŠแžผแž…แž‡แžถแž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแžขแŸ’แž“แž€แž”แŸ’แžšแžพ Git แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžกแžพแž„แžœแžทแž‰แž“แžผแžœ IDE แž“แžทแž„แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž‘แžทแž“แŸ’แž“แž“แŸแž™แŸ”


๐Ÿš€ แž˜แžปแžแž„แžถแžš

  • แž€แžถแžšแž‡แŸ’แžšแžพแžŸแžšแžพแžŸ Script แžขแž“แŸ’แžแžšแž€แž˜แŸ’แž˜: แžšแžปแž€แžšแž€ แž“แžทแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžš .sh scripts แž–แžธแžแž shell_file/ แž”แžถแž“แž™แŸ‰แžถแž„แž„แžถแž™แžŸแŸ’แžšแžฝแž›แžŠแŸ„แž™แž”แŸ’แžšแžพแž…แŸ†แžŽแžปแž…แž”แŸ’แžšแž‘แžถแž€แŸ‹แž”แŸŠแžผแžแžปแž„แžœแžทแž‘แŸ’แž™แžปแžŠแŸ‚แž›แž™แž›แŸ‹แž”แžถแž“แŸ”
  • แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž€แžถแžšแžขแž“แžปแž‰แŸ’แž‰แžถแžแžŠแŸ„แž™แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžท: แžŸแŸ’แž“แžพแžฑแŸ’แž™แž’แŸ’แžœแžพแžฑแŸ’แž™ scripts แžขแžถแž…แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžถแž“แž˜แžปแž“แž–แŸแž›แžŠแŸ†แžŽแžพแžšแž€แžถแžš แž’แžถแž“แžถแž€แžถแžšแžŠแŸ†แžŽแžพแžšแž€แžถแžšแžšแž›แžผแž“แŸ”
  • แž€แžถแžšแžšแŸ€แž”แž…แŸ†แž€แžถแžšแžขแž“แžปแž‰แŸ’แž‰แžถแžแž…แŸ’แžšแžพแž“: แžงแž”แž€แžšแžŽแŸแž˜แŸ’แžแž„แž˜แžฝแž™แžŠแž„แžŠแžพแž˜แŸ’แž”แžธแž’แŸ’แžœแžพแžฑแŸ’แž™ shell scripts แž‘แžถแŸ†แž„แžขแžŸแŸ‹แžขแžถแž…แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžถแž“แž‡แžถแž˜แžฝแž™แž“แžนแž„แž€แžถแžšแž”แž‰แŸ’แž‡แžถแž€แŸ‹แž‡แžถแž€แŸ’แžšแžปแž˜ แžฌแž”แžปแž‚แŸ’แž‚แž›แŸ”
  • แžŸแžปแžœแžแŸ’แžแžทแž—แžถแž– แž“แžทแž„แžขแž“แžถแž˜แžทแž€: แžแŸ‚แž„แžแŸ‚แžŸแŸ’แž“แžพแž˜แžปแž“แž–แŸแž›แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž€แžถแžšแžขแž“แžปแž‰แŸ’แž‰แžถแž แž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž€แŸ†แž แžปแžŸแž™แŸ‰แžถแž„แžšแž›แžผแž“แž‡แžถแž˜แžฝแž™แž“แžนแž„แžŸแžถแžšแž€แŸ†แž แžปแžŸแž…แŸ’แž”แžถแžŸแŸ‹แž›แžถแžŸแŸ‹แŸ”
  • แž€แžถแžšแžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž› uv: แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž™แŸ‰แžถแž„แžšแž›แžผแž“แž‡แžถแž˜แžฝแž™แž“แžนแž„ uv Python package manager แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžขแž—แžทแžœแžŒแŸ’แžแž“แŸ Python แž‘แŸ†แž“แžพแž”แŸ”
  • แž€แžถแžšแžšแžปแž€แžšแž€แžŠแŸ„แž™แž–แŸ’แžšแžฝแž‰: แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžš keyboard แž–แŸแž‰แž›แŸแž‰แž‡แžถแž˜แžฝแž™แž“แžนแž„แž–แŸ’แžšแžฝแž‰แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžถแžšแžšแžปแž€แžšแž€ แž“แžทแž„แž€แžถแžšแž‡แŸ’แžšแžพแžŸแžšแžพแžŸแŸ”

๐Ÿ“ แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แž‚แž˜แŸ’แžšแŸ„แž„

sh_manager/
โ”œโ”€โ”€ main.py                 # แž…แŸ†แžŽแžปแž…แž…แžผแž›แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž‚แŸ„แž›
โ”œโ”€โ”€ make_executable.py      # แžงแž”แž€แžšแžŽแŸแž€แžถแžšแžขแž“แžปแž‰แŸ’แž‰แžถแžแž…แŸ’แžšแžพแž“
โ”œโ”€โ”€ pyproject.toml          # แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ แž“แžทแž„แž€แžถแžšแž–แžนแž„แž•แŸ’แžขแŸ‚แž€แž‚แž˜แŸ’แžšแŸ„แž„
โ”œโ”€โ”€ uv.lock                 # แžฏแž€แžŸแžถแžš lock แžŸแž˜แŸ’แžšแžถแž”แŸ‹ uv package manager
โ”œโ”€โ”€ data/
โ”‚   โ””โ”€โ”€ git_user_configs.json  # แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แžขแŸ’แž“แž€แž”แŸ’แžšแžพ Git
โ””โ”€โ”€ shell_file/
    โ”œโ”€โ”€ switch_git_user.sh      # แžงแž”แž€แžšแžŽแŸแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแžขแŸ’แž“แž€แž”แŸ’แžšแžพ Git
    โ”œโ”€โ”€ reset_intellijidea.sh   # Script แž€แŸ†แžŽแžแŸ‹แžกแžพแž„แžœแžทแž‰แž“แžผแžœ IntelliJ IDEA
    โ””โ”€โ”€ reset_navicate.sh       # Script แž€แŸ†แžŽแžแŸ‹แžกแžพแž„แžœแžทแž‰แž“แžผแžœ Navicat database

๐Ÿ› ๏ธ แž€แžถแžšแžŠแŸ†แžกแžพแž„

แžแž˜แŸ’แžšแžผแžœแž€แžถแžšแž˜แžปแž“

  • macOS แžแŸ‚แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡: แžงแž”แž€แžšแžŽแŸแž“แŸแŸ‡แžแŸ’แžšแžผแžœแž”แžถแž“แžšแž…แž“แžถแžกแžพแž„แžŸแž˜แŸ’แžšแžถแž”แŸ‹ macOS แžแŸ‚แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡
  • Python 3.11.11 แžฌแžแŸ’แž–แžŸแŸ‹แž‡แžถแž„
  • uv package manager (แžŽแŸ‚แž“แžถแŸ†)

แž€แžถแžšแžšแŸ€แž”แž…แŸ†

  1. Clone แžฌแž‘แžถแž‰แž™แž€ repository แž“แŸแŸ‡
  2. แž…แžผแž›แž‘แŸ…แž€แžถแž“แŸ‹แžแžแž‚แž˜แŸ’แžšแŸ„แž„
  3. แžŠแŸ†แžกแžพแž„แž€แžถแžšแž–แžนแž„แž•แŸ’แžขแŸ‚แž€แžŠแŸ„แž™แž”แŸ’แžšแžพ uv:
    uv sync

๐Ÿš€ แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹

แž€แžถแžšแžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž‚แŸ„แž›

แž…แžถแž”แŸ‹แž•แŸ’แžแžพแž˜แžงแž”แž€แžšแžŽแŸแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„ shell script แžขแž“แŸ’แžแžšแž€แž˜แŸ’แž˜:

# แž”แŸ’แžšแžพ uv
uv run main.py

# แžฌแžŠแŸ†แžกแžพแž„ แž“แžทแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž‡แžถ script
uv run sh-manager

แž€แžถแžšแžšแŸ€แž”แž…แŸ†แž€แžถแžšแžขแž“แžปแž‰แŸ’แž‰แžถแžแž…แŸ’แžšแžพแž“

แž’แŸ’แžœแžพแžฑแŸ’แž™ shell scripts แž‘แžถแŸ†แž„แžขแžŸแŸ‹แžขแžถแž…แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžถแž“แž€แŸ’แž“แžปแž„แž˜แŸ’แžแž„:

# แž”แŸ’แžšแžพ uv
uv run make_executable.py

# แžฌแžŠแŸ†แžกแžพแž„ แž“แžทแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž‡แžถ script
uv run make-executable

๐Ÿ“‹ Scripts แžŠแŸ‚แž›แž˜แžถแž“

1. switch_git_user.sh

แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแžšแžœแžถแž„แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แžขแŸ’แž“แž€แž”แŸ’แžšแžพ Git แž•แŸ’แžŸแŸแž„แŸ—แž‚แŸ’แž“แžถแžŠแŸ‚แž›แž€แŸ†แžŽแžแŸ‹แž€แŸ’แž“แžปแž„ data/git_user_configs.jsonแŸ”

แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แž”แž…แŸ’แž…แžปแž”แŸ’แž”แž“แŸ’แž“:

2. reset_intellijidea.sh

แž€แŸ†แžŽแžแŸ‹แžกแžพแž„แžœแžทแž‰แž“แžผแžœแž€แžถแžšแž€แŸ†แžŽแžแŸ‹ แž“แžทแž„ cache แžšแž”แžŸแŸ‹ IntelliJ IDEAแŸ” แž˜แžถแž“แž”แŸ’แžšแž™แŸ„แž‡แž“แŸแžŸแž˜แŸ’แžšแžถแž”แŸ‹แžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž”แž‰แŸ’แž แžถ IDEแŸ”

3. reset_navicate.sh

แž€แŸ†แžŽแžแŸ‹แžกแžพแž„แžœแžทแž‰แž“แžผแžœแž€แžถแžšแž€แŸ†แžŽแžแŸ‹แž€แžถแžšแžแž—แŸ’แž‡แžถแž”แŸ‹แž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž‘แžทแž“แŸ’แž“แž“แŸแž™ Navicat แž“แžทแž„ cacheแŸ”


๐Ÿ–ฅ๏ธ แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžŠแŸ‚แž›แžขแžถแž…แž€แŸ†แžŽแžแŸ‹แžกแžพแž„แžœแžทแž‰แž”แžถแž“

JetBrains IDE Suite

แžงแž”แž€แžšแžŽแŸ reset_intellijidea.sh แžขแžถแž…แž€แŸ†แžŽแžแŸ‹แžกแžพแž„แžœแžทแž‰แž”แžถแž“แž‚แŸ’แžšแž”แŸ‹แž€แž˜แŸ’แž˜แžœแžทแž’แžธ JetBrains แžŠแžผแž…แž‡แžถ:

  • IntelliJ IDEA - Java IDE

Database Management Tools

แžงแž”แž€แžšแžŽแŸ reset_navicate.sh แžขแžถแž…แž€แŸ†แžŽแžแŸ‹แžกแžพแž„แžœแžทแž‰แž”แžถแž“:

  • Navicat Premium (แž‡แŸ†แž“แžถแž“แŸ‹ 15, 16, 17) - แžงแž”แž€แžšแžŽแŸแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž‘แžทแž“แŸ’แž“แž“แŸแž™

แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžกแžพแž„แžœแžทแž‰แžšแžฝแž˜แž”แž‰แŸ’แž…แžผแž›:

  • แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ แž“แžทแž„ cache
  • แž€แžถแžšแž›แžปแž”แž–แŸแž›แžœแŸแž›แžถแžŸแžถแž€แž›แŸ’แž”แž„
  • แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžกแžพแž„แžœแžทแž‰แž“แžผแžœแž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžขแŸ’แž“แž€แž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹
  • แž€แžถแžšแž›แžปแž”แžฏแž€แžŸแžถแžš preferences แž“แžทแž„ plist

๐ŸŽฎ แž…แŸ†แžŽแžปแž…แž”แŸ’แžšแž‘แžถแž€แŸ‹แžขแž“แŸ’แžแžšแž€แž˜แŸ’แž˜

แž€แž˜แŸ’แž˜แžœแžทแž’แžธแž•แŸ’แžแž›แŸ‹แž…แŸ†แžŽแžปแž…แž”แŸ’แžšแž‘แžถแž€แŸ‹แž”แŸŠแžผแžแžปแž„แžœแžทแž‘แŸ’แž™แžปแžŠแŸ‚แž›แž™แž›แŸ‹แž”แžถแž“:

  • แž–แŸ’แžšแžฝแž‰ โ†‘/โ†“: แžšแžปแž€แžšแž€แžšแžœแžถแž„ scripts
  • แž–แŸ’แžšแžฝแž‰ โ†’: แž‡แŸ’แžšแžพแžŸแžšแžพแžŸ script (แž€แžถแžšแž‡แŸ’แžšแžพแžŸแžšแžพแžŸแž”แŸŠแžผแžแžปแž„แžœแžทแž‘แŸ’แž™แžป)
  • Enter: แžŠแŸ†แžŽแžพแžšแž€แžถแžš script แžŠแŸ‚แž›แž”แžถแž“แž‡แŸ’แžšแžพแžŸแžšแžพแžŸ
  • q: แž…แžถแž€แž…แŸแž‰แž–แžธแž€แž˜แŸ’แž˜แžœแžทแž’แžธ

แžงแž‘แžถแž แžšแžŽแŸแž…แŸ†แžŽแžปแž…แž”แŸ’แžšแž‘แžถแž€แŸ‹:

แž”แŸ’แžšแžพ โ†‘/โ†“ แžŠแžพแž˜แŸ’แž”แžธแž•แŸ’แž›แžถแžŸแŸ‹แž‘แžธ, โ†’ แžŠแžพแž˜แŸ’แž”แžธแž‡แŸ’แžšแžพแžŸแžšแžพแžŸ, Enter แžŠแžพแž˜แŸ’แž”แžธแžŠแŸ†แžŽแžพแžšแž€แžถแžš, q แžŠแžพแž˜แŸ’แž”แžธแž…แžถแž€แž…แŸแž‰แŸ”

> [x] switch_git_user.sh
  [ ] reset_intellijidea.sh
  [ ] reset_navicate.sh

แžšแžปแž€แžšแž€แžŠแŸ„แž™แž–แŸ’แžšแžฝแž‰แŸ” แž‡แŸ’แžšแžพแžŸแžšแžพแžŸแžŠแŸ„แž™ โ†’, แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŠแŸ„แž™ Enter, แž…แžถแž€แž…แŸแž‰แžŠแŸ„แž™ qแŸ”

๐Ÿ”ง แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’

แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แžขแŸ’แž“แž€แž”แŸ’แžšแžพ Git

แž€แŸ‚แžŸแž˜แŸ’แžšแžฝแž› data/git_user_configs.json แžŠแžพแž˜แŸ’แž”แžธแž”แž“แŸ’แžแŸ‚แž˜ แžฌแž€แŸ‚แž”แŸ’แžšแŸ‚ profile แžขแŸ’แž“แž€แž”แŸ’แžšแžพ Git:

แž…แŸ†แžŽแžถแŸ†: แž”แŸ’แžšแžŸแžทแž“แž”แžพแžฏแž€แžŸแžถแžš git_user_configs.json แž˜แžทแž“แž˜แžถแž“แž‘แŸ แžŸแžผแž˜แž…แž˜แŸ’แž›แž„แž–แžธ data/git_user_configs_example.json แž‘แŸ… data/git_user_configs.json แž“แžทแž„แž€แŸ‚แžŸแž˜แŸ’แžšแžฝแž›แžแžถแž˜แžแž˜แŸ’แžšแžผแžœแž€แžถแžšแžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แŸ”

[
  {
    "name": "แžˆแŸ’แž˜แŸ„แŸ‡แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€",
    "email": "email.แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€@example.com"
  }
]

แž€แžถแžšแž”แž“แŸ’แžแŸ‚แž˜ Scripts แžแŸ’แž˜แžธ

  1. แžŠแžถแž€แŸ‹ .sh script แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž€แŸ’แž“แžปแž„แžแž shell_file/
  2. แžแŸ’แžšแžผแžœแž”แŸ’แžšแžถแž€แžŠแžแžถ script แž˜แžถแž“ shebang แžแŸ’แžšแžนแž˜แžแŸ’แžšแžผแžœ (#!/bin/bash) แž“แžทแž„แž€แžถแžšแžขแž“แžปแž‰แŸ’แž‰แžถแž
  3. Script แž“แžนแž„แž”แž„แŸ’แž แžถแž‰แžŠแŸ„แž™แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแž€แŸ’แž“แžปแž„แž…แŸ†แžŽแžปแž…แž”แŸ’แžšแž‘แžถแž€แŸ‹แž‡แŸ’แžšแžพแžŸแžšแžพแžŸ

๐Ÿ›ก๏ธ แž˜แžปแžแž„แžถแžšแžŸแžปแžœแžแŸ’แžแžทแž—แžถแž–

  • แž€แžถแžšแž”แž‰แŸ’แž‡แžถแž€แŸ‹แž€แžถแžšแžขแž“แžปแž‰แŸ’แž‰แžถแž: แžแŸ‚แž„แžแŸ‚แžŸแŸ’แž“แžพแž˜แžปแž“แž–แŸแž›แž’แŸ’แžœแžพแžฑแŸ’แž™แžฏแž€แžŸแžถแžšแžขแžถแž…แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžถแž“
  • แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž€แŸ†แž แžปแžŸ: แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž€แŸ†แž แžปแžŸแž™แŸ‰แžถแž„แžšแž›แžผแž“แž‡แžถแž˜แžฝแž™แž“แžนแž„แžŸแžถแžšแž€แŸ†แž แžปแžŸแž…แŸ’แž”แžถแžŸแŸ‹แž›แžถแžŸแŸ‹
  • แž€แžถแžšแžŠแŸ†แžŽแžพแžšแž€แžถแžšแž˜แžถแž“แžŸแžปแžœแžแŸ’แžแžทแž—แžถแž–: Scripts แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แŸ’แž“แžปแž„แž”แžšแžทแžŸแŸ’แžแžถแž“แžŠแŸ‚แž›แž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž”แžถแž“
  • แž€แžถแžšแž•แŸ’แž‘แŸ€แž„แž•แŸ’แž‘แžถแžแŸ‹แž€แžถแžšแž”แž‰แŸ’แž…แžผแž›: แž€แžถแžšแž•แŸ’แž‘แŸ€แž„แž•แŸ’แž‘แžถแžแŸ‹แžแŸ’แžšแžนแž˜แžแŸ’แžšแžผแžœแž“แžผแžœแž€แžถแžšแž”แž‰แŸ’แž…แžผแž›แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž”แŸ’แžšแžพ

๐Ÿ”ง แž€แžถแžšแžขแž—แžทแžœแžŒแŸ’แžแž“แŸ

แž€แžถแžšแžšแŸ€แž”แž…แŸ†แž‚แž˜แŸ’แžšแŸ„แž„

# แžŠแŸ†แžกแžพแž„แž€แžถแžšแž–แžนแž„แž•แŸ’แžขแŸ‚แž€แžขแž—แžทแžœแžŒแŸ’แžแž“แŸ
uv sync

# แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แž˜แŸ’แž˜แžœแžทแž’แžธแž‚แŸ„แž›
uv run main.py

# แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžงแž”แž€แžšแžŽแŸแž€แžถแžšแžขแž“แžปแž‰แŸ’แž‰แžถแž
uv run make_executable.py

แž€แžถแžšแž–แžนแž„แž•แŸ’แžขแŸ‚แž€

  • Python 3.11.11+: แž˜แžปแžแž„แžถแžš แž“แžทแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžš Python แž‘แŸ†แž“แžพแž”
  • Standard Library แžแŸ‚แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡: แž˜แžทแž“แžแŸ’แžšแžผแžœแž€แžถแžšแž€แžถแžšแž–แžนแž„แž•แŸ’แžขแŸ‚แž€แžแžถแž„แž€แŸ’แžšแŸ…
  • uv: แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„ package Python แž‘แŸ†แž“แžพแž”

๐Ÿ“ แžขแžถแž‡แŸ’แž‰แžถแž”แŸแžŽแŸ’แžŽ

แž‚แž˜แŸ’แžšแŸ„แž„แž“แŸแŸ‡แž‚แžบแž‡แžถ open source แž“แžทแž„แž˜แžถแž“แž‡แžถแž˜แžฝแž™แžขแžถแž‡แŸ’แž‰แžถแž”แŸแžŽแŸ’แžŽ MITแŸ”


๐Ÿค แž€แžถแžšแžšแžฝแž˜แž…แŸ†แžŽแŸ‚แž€

  1. Fork repository
  2. แž”แž„แŸ’แž€แžพแž feature branch
  3. แž’แŸ’แžœแžพแž€แžถแžšแž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแžšแž”แžŸแŸ‹แžขแŸ’แž“แž€
  4. แž’แŸ’แžœแžพแžแŸแžŸแŸ’แžแž™แŸ‰แžถแž„แž แŸ’แž˜แžแŸ‹แž…แžแŸ‹
  5. แžŠแžถแž€แŸ‹แžŸแŸ’แž“แžพ pull request

๐Ÿ› แž€แžถแžšแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แž”แž‰แŸ’แž แžถ

แž”แž‰แŸ’แž แžถแž‘แžผแž‘แŸ…

Script แž˜แžทแž“แžขแžถแž…แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžถแž“:

  • แžŠแŸ†แžŽแžพแžšแž€แžถแžš uv run make-executable แžŠแžพแž˜แŸ’แž”แžธแžšแŸ€แž”แž…แŸ†แž€แžถแžšแžขแž“แžปแž‰แŸ’แž‰แžถแž
  • แžฌแžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŠแŸ„แž™แžŠแŸƒ chmod +x shell_file/your_script.sh

แž€แžถแžšแžขแž“แžปแž‰แŸ’แž‰แžถแžแžแŸ’แžšแžผแžœแž”แžถแž“แž”แžŠแžทแžŸแŸแž’:

  • แžแŸ’แžšแžผแžœแž”แŸ’แžšแžถแž€แžŠแžแžถแžขแŸ’แž“แž€แž˜แžถแž“แž€แžถแžšแžขแž“แžปแž‰แŸ’แž‰แžถแžแžŸแžšแžŸแŸแžšแž‘แŸ…แžแž shell_file/
  • แž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แžแžถ script files แž˜แžทแž“แž˜แŸ‚แž“แž‡แžถ read-only

Script แž˜แžทแž“แžแŸ’แžšแžผแžœแž”แžถแž“แžšแž€แžƒแžพแž‰:

  • แž•แŸ’แž‘แŸ€แž„แž•แŸ’แž‘แžถแžแŸ‹แžแžถ script แž˜แžถแž“แž“แŸ…แž€แŸ’แž“แžปแž„แžแž shell_file/
  • แž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แžแžถ file แž˜แžถแž“ extension .sh

๐Ÿ“ž แž€แžถแžšแž‚แžถแŸ†แž‘แŸ’แžš

แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž‰แŸ’แž แžถ แžŸแŸ†แžŽแžฝแžš แžฌแž€แžถแžšแžšแžฝแž˜แž…แŸ†แžŽแŸ‚แž€ แžŸแžผแž˜แž”แžพแž€ issue แž“แŸ…แž›แžพ repository แž‚แž˜แŸ’แžšแŸ„แž„แŸ”


Shell Manager

A Python-based tool for managing and running shell scripts with interactive selection and automatic permission handling. Perfect for developers who frequently use shell scripts for development tasks like Git user switching, IDE resets, and database management.


๐Ÿš€ Features

  • Interactive Script Selection: Easily browse and run .sh scripts from the shell_file/ directory using an intuitive radio-button interface.
  • Automatic Permission Handling: Prompts to make scripts executable before running, ensuring smooth execution.
  • Bulk Permission Setup: One-time utility to make all shell scripts executable with batch or individual confirmation.
  • Safe & Secure: Always asks before changing permissions; handles errors gracefully with proper error messages.
  • uv Integration: Works seamlessly with the uv Python package manager for modern Python development.
  • Arrow Key Navigation: Full keyboard support with arrow keys for navigation and selection.

๐Ÿ“ Project Structure

sh_manager/
โ”œโ”€โ”€ main.py                 # Main application entry point
โ”œโ”€โ”€ make_executable.py      # Bulk permission utility
โ”œโ”€โ”€ pyproject.toml          # Project configuration and dependencies
โ”œโ”€โ”€ uv.lock                 # Lock file for uv package manager
โ”œโ”€โ”€ data/
โ”‚   โ””โ”€โ”€ git_user_configs.json  # Git user configurations
โ””โ”€โ”€ shell_file/
    โ”œโ”€โ”€ switch_git_user.sh      # Git user switching utility
    โ”œโ”€โ”€ reset_intellijidea.sh   # IntelliJ IDEA reset script
    โ””โ”€โ”€ reset_navicate.sh       # Navicat database reset script

๐Ÿ› ๏ธ Installation

Prerequisites

  • macOS Only: This tool is designed specifically for macOS
  • Python 3.11.11 or higher
  • uv package manager (recommended)

Setup

  1. Clone or download this repository
  2. Navigate to the project directory
  3. Install dependencies using uv:
    uv sync

๐Ÿš€ Usage

Running the Main Application

Start the interactive shell script manager:

# Using uv
uv run main.py

# Or install and run as a script
uv run sh-manager

Bulk Permission Setup

Make all shell scripts executable at once:

# Using uv
uv run make_executable.py

# Or install and run as a script
uv run make-executable

๐Ÿ“‹ Available Scripts

1. switch_git_user.sh

Switches between different Git user configurations defined in data/git_user_configs.json.

Current configurations:

2. reset_intellijidea.sh

Resets IntelliJ IDEA settings and caches. Useful for resolving IDE issues.

3. reset_navicate.sh

Resets Navicat database connection settings and caches.


๐Ÿ–ฅ๏ธ Applications That Can Be Reset

JetBrains IDE Suite

The reset_intellijidea.sh tool can reset all JetBrains applications including:

  • IntelliJ IDEA - Java IDE

Database Management Tools

The reset_navicate.sh tool can reset:

  • Navicat Premium (Versions 15, 16, 17) - Database management tool

Reset Includes:

  • Settings and cache reset
  • Trial period reset
  • User configuration reset
  • Preferences and plist file cleanup

๐ŸŽฎ Interactive Interface

The application provides an intuitive radio-button interface:

  • โ†‘/โ†“ Arrow Keys: Navigate between scripts
  • โ†’ Arrow Key: Select a script (radio button selection)
  • Enter: Run the selected script
  • q: Quit the application

Example interface:

Use โ†‘/โ†“ to move, โ†’ to select, Enter to run, q to quit.

> [x] switch_git_user.sh
  [ ] reset_intellijidea.sh
  [ ] reset_navicate.sh

Navigate with arrow keys. Select with โ†’, run with Enter, quit with q.

๐Ÿ”ง Configuration

Git User Configurations

Edit data/git_user_configs.json to add or modify Git user profiles:

Note: If the git_user_configs.json file doesn't exist, copy from data/git_user_configs_example.json to data/git_user_configs.json and modify according to your needs.

[
  {
    "name": "Your Name",
    "email": "[email protected]"
  }
]

Adding New Scripts

  1. Place your .sh script in the shell_file/ directory
  2. Make sure the script has proper shebang (#!/bin/bash) and permissions
  3. The script will automatically appear in the selection interface

๐Ÿ›ก๏ธ Security Features

  • Permission Confirmation: Always asks before making files executable
  • Error Handling: Graceful error handling with informative messages
  • Safe Execution: Scripts run in a controlled environment
  • Input Validation: Proper validation of user inputs

๐Ÿ”ง Development

Project Setup

# Install development dependencies
uv sync

# Run the main application
uv run main.py

# Run the permission utility
uv run make_executable.py

Dependencies

  • Python 3.11.11+: Modern Python features and performance
  • Standard Library Only: No external dependencies required
  • uv: Modern Python package management

๐Ÿ“ License

This project is open source and available under the MIT License.


๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

๐Ÿ› Troubleshooting

Common Issues

Script not executable:

  • Run uv run make-executable to set up permissions
  • Or manually run chmod +x shell_file/your_script.sh

Permission denied:

  • Ensure you have write permissions to the shell_file/ directory
  • Check that the script files are not read-only

Script not found:

  • Verify the script exists in the shell_file/ directory
  • Check that the file has a .sh extension

๐Ÿ“ž Support

For issues, questions, or contributions, please open an issue on the project repository.


About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published