Вы не можете сделать это без изменения языка или оболочки.
Если вы хотите использовать Python в качестве оболочки, вам действительно следует попробовать IPython , это позволяет вам определитьмакросы, которые вы можете использовать, не набирая столько ключей.Это также позволяет вам делать !pwd
, вы также можете назначить это переменной x = !pwd
.Он даже позволяет вызывать функции с одним аргументом, написав f x
вместо f(x)
.
. Кстати, Haskell - это язык, который использует пробелы для списка аргументов, то есть: f(1,2,3)
в Python будет f 1 2 3
в Haskell и в оболочке любое IO-действие можно выполнить, просто набрав action
.
Я забыл, что есть еще способ взлома:
class Pwd(object):
def __repr__(self):
# do pwd command
# return result in string form
pwd = Pwd()
Теперь, когда вы вводите pwdв оболочке он вызовет __repr__
, чтобы получить строковое представление объекта.К сожалению, вы ограничены в возврате строки (в отличие от списка строк, представляющих файлы / папки в текущем каталоге, если вы реализуете ls), потому что язык python вызывает это.