Skip to content

Lorraineboza/shell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kernel_shell

kernel_shell — это полноценное ядро командной оболочки, реализованное на чистом C (shell.c). Функционируя в нативной среде UNIX-подобные системы.Проект воплощает в себе низкоуровневую архитектуру и ключевые механизмы работы интерактивного терминала, обеспечивая полный цикл выполнения пользовательских команд

demo

Prompt

Формат приглашения:

[username@hostname cwd]$ 

Сборка

1) Без readline (гарантированно работает)

cc shell.c -o shell

2) С readline (рекомендуется для полноценного интерактива)

cc -DUSE_READLINE shell.c -lreadline -o shell

Если readline установлен через Homebrew, используйте явные пути:

cc -DUSE_READLINE shell.c \
  -I"$(brew --prefix readline)/include" \
  -L"$(brew --prefix readline)/lib" \
  -lreadline -o shell

Запуск

./shell

Что поддерживает Kernel_shell

  • Внутренние команды:
    • cd, pwd, export, unset, echo, exit
    • alias, history, type, which
    • kill, jobs, fg, bg
    • true, false
  • Внешние команды через fork/exec + поиск по PATH
  • Операторы:
    • ;, &, &&, ||, |
  • Перенаправления:
    • >, >>, <, 2>, 2>>, 2>&1, &>, >&, << (heredoc)
  • Подстановки:
    • переменные: $VAR, ${VAR}, $?, $$, $!
    • command substitution: $(...) и обратные кавычки `...`
  • Кавычки и экранирование
  • Globbing:
    • *, ?, []
  • Job control:
    • фоновые задачи (&), jobs, fg, bg
  • Сигналы:
    • Ctrl+C, Ctrl+Z, Ctrl+D
  • История команд:
    • в режиме USE_READLINE: стрелки, Ctrl+R, Tab completion
    • без USE_READLINE: история хранится и доступна через builtin history
  • Однострочные и многострочные команды

Примеры

ls | grep ".c"
echo hello > out.txt
cat < out.txt
sleep 30 &
jobs
fg %1
cat << EOF
line 1
line 2
EOF

История

По умолчанию файл истории:

~/.myshell_history

Ограничения

Kernel_shell — учебно-практический shell. Он покрывает большой набор возможностей, но не является 100% клоном bash/zsh по всем POSIX-деталям!

Файлы проекта

  • shell.c — весь shell в одном C-файле
  • shell - исполняемый файл
  • kernel_shell.png - изображение демонстрации работы shell
  • README.md — документация

About

kernel shell

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages