Сценарий Bash для замены двух шагов: cd ./some_dir, ls -al?

Dijiste que es C++, por lo que debería ser posible volcarlo de la memoria.

Primero desea encontrar el proceso en la memoria:

$ cat /proc/[pid]/maps
00400000-00404000 r-xp 00000000 ca:01 16823     /home/ec2-user/a.out (deleted)

Entonces puedes volcarlo

$ gdb --pid [pid]
dump memory /home/ec2-user/output 0x00400000 0x00404000

Entonces debería poder ejecutarlo marcándolo como ejecutable(chmod +x)

$ file output
output: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, missing section headers
1
14.03.2017, 13:49
2 ответа

Вы не можете сделать это с помощью сценария оболочки, потому что сценарии выполняются в новых оболочках, и при выходе из сценария оболочка выходит из оболочки и «забывает» изменение каталога. См. Скрипт для изменения текущего каталога (cd, pwd), например (возможно, где-то на сайте есть более подробные ответы).

Вместо этого вам нужно использовать функцию:

cd1() {
    cd "$@"
    ls -al
}
4
27.01.2020, 23:16

Другой вариант (в вашем .bashrc):

PROMPT_COMMAND='if [[ "$PWD" != "$_promptPWD" ]]; then ls -al; _promptPWD=$PWD; fi'
_promptPWD=$PWD

Это подключается к функции PROMPT_COMMAND bash, чтобы она выполняла ls за вас, если вы изменили директории. Минусы:

  • нужно будет вставить в любую существующую PROMPT_COMMAND, если таковая имеется
  • загромождает окружение еще одной переменной (_promptPWD)

Плюс в том, что вы можете продолжать набирать cd как обычно, и не нужно набирать что-то другое, чтобы получить поведение ls.

1
27.01.2020, 23:16

Теги

Похожие вопросы