Как найти файл скрипта

This code:

import os
dn = os.path.dirname(os.path.realpath(__file__))

sets «dn» to the name of the directory containing the currently executing script. This code:

fn = os.path.join(dn,"vcb.init")
fp = open(fn,"r")

sets «fn» to «script_dir/vcb.init» (in a platform independent manner) and opens
that file for reading by the currently executing script.

Note that «the currently executing script» is somewhat ambiguous. If your whole program consists of 1 script, then that’s the currently executing script and the «sys.path[0]» solution works fine. But if your app consists of script A, which imports some package «P» and then calls script «B», then «P.B» is currently executing. If you need to get the directory containing «P.B», you want the «os.path.realpath(__file__)» solution.

«__file__» just gives the name of the currently executing (top-of-stack) script: «x.py». It doesn’t
give any path info. It’s the «os.path.realpath» call that does the real work.

Andreys


3 Июн 2015


  • #1

Часто возникают моменты, когда в скрипте ищешь например где находится меню или где исправить название меню, или появляется чужая реклама или в каком файле прописан код к картинке и не понятно в каких это файлах это все находится, приходится открывать каждый фаел и просматривать его.
Вопрос как его находить ? Я пользуюсь через браузер , просмотр кода элемента, или исходного кода. Но это не то там общая картинка и точного названия файла все равно не выдает. Как найти точно?

AriCosmo

The Doshs


3 Июн 2015


  • #3

Надо знать,где находится тот или иной файл,память в помощь.

Andreys


3 Июн 2015


  • #4

ГУГЛ в помощь ) «тогда зачем мы здесь сегодня собрались» по моему слова из какой то песни.
Че реально чтоли все так и делают, файлы по одному лопатят) Че нет проги никакой чтобы по быстрому просмотреть.?

Последнее редактирование: 4 Июн 2015

AriCosmo


3 Июн 2015


  • #5

Andreys написал(а):

ГУГЛ в помощь ) «тогда зачем мы здесь сегодня собрались» по моему слова из какой то песни.
Че реально чтоли все так и делают, фалы по одному лопатят) Че нет проги никакой чтобы по быстрому просмотреть.?

Честно говоря скрипты на FF однотипны мало кто переписывает дизайн. Я когда делал первый дизайн, работал через код элемента. Смотрел названия блока, если в стайле нет, то прописано в самом файле.(логика:umnik:) Тут всё просто если ты работаешь со скриптом FF. В папке inc прописаны основные элементы сайта.(шапка, меню, главная, статистика, авторизация — то есть в основном нужно в ней лазить) В папке pages находятся файлы которые отображаются на сайте без авторизации(Правила, список выплат и т.д.) В папке pages/account находятся файлы которые пользователь видит после авторизации.(моя ферма, собрать, продать, мой аккаунт и т.д.) Думаю, если ты будешь знать это, тебе будет на много проще работать с дизайном и в целом со скриптом!

Andreys


3 Июн 2015


  • #6

AriCosmo написал(а):

Честно говоря скрипты на FF однотипны мало кто переписывает дизайн. Я когда делал первый дизайн, работал через код элемента. Смотрел названия блока, если в стайле нет, то прописано в самом файле.(логика:umnik:) Тут всё просто если ты работаешь со скриптом FF. В папке inc прописаны основные элементы сайта.(шапка, меню, главная, статистика, авторизация — то есть в основном нужно в ней лазить) В папке pages находятся файлы которые отображаются на сайте без авторизации(Правила, список выплат и т.д.) В папке pages/account находятся файлы которые пользователь видит после авторизации.(моя ферма, собрать, продать, мой аккаунт и т.д.) Думаю, если ты будешь знать это, тебе будет на много проще работать с дизайном и в целом со скриптом!

Да это понятно. Верно говоришь, если дело касается FF , сам наполовину его выучил уже.
Просто скрипт сейчас переделываю не фермы, а в нем куча файлов, я уже 2 день ищу чтоб $ на RUB поменять, и не скрипт а просто слово, и не могу найти.
Общем я так думаю, прогу я все рано какую нибудь найду, раз до этого никто не нашел, сюды скину ).

AriCosmo


3 Июн 2015


  • #7

Andreys написал(а):

Да это понятно. Верно говоришь, если дело касается FF , сам наполовину его выучил уже.
Просто скрипт сейчас переделываю не фермы, а в нем куча файлов, я уже 2 день ищу чтоб $ на RUB поменять, и не скрипт а просто слово, и не могу найти.
Общем я так думаю, прогу я все рано какую нибудь найду, раз до этого никто не нашел, сюды скину ).

Тут ещё проще, открой все файлы скрипта через Нодпед++ и сделай поиск по файлом лова USD

Andreys


4 Июн 2015


  • #8

Andreys написал(а):

Часто возникают моменты, когда в скрипте ищешь например где находится меню или где исправить название меню, или появляется чужая реклама или в каком файле прописан код к картинке и не понятно в каких это файлах это все находится, приходится открывать каждый фаел и просматривать его.
Вопрос как его находить ? Я пользуюсь через браузер , просмотр кода элемента, или исходного кода. Но это не то там общая картинка и точного названия файла все равно не выдает. Как найти точно?

Не прошло и пол года ) как и говорил нашел программу, точнее скрипт который ищет слово, цифру или закорючку сразу во всех файлах скрипта. С помощью данного скрипта я нашел закорючку ($) ,буквально за пять минут, а когда искал в ручном режиме потерял 2 дня и 3 раза скрипт пересмотрел) но так и не нашел , решил все таки найти прогу по всякому надеялся что такая существует. Поиск удался успехом.
И так как работает скрипт:
1) Скачиваете скрипт sog.php
2) Кидаете фаел sog.php в корень своего сайта
3) Меняем пароль в 8 строке на свой (например 1255454554)
4) Запускаем скрипт: вводим в строке браузера
h t t р:// W W W . ВАШ САЙТ/sog.php?pass=1255454554 (на денвере)
h t t p://ВАШ САЙТ.RU/sog.php?pass=1255454554 (на хостинге)
Появится вот такое окно

Где текст поиска пишем слово или цифру или….. то что хотите найти в скрипте вашего сайта. (Внимание есть чувства к регистру))
(На данный момент я искал где находится счетчик Хотлог)
И нажимаем ИСКАТЬЗАМЕНИТЬ
5) После чего появится вот такое окно

Из чего следует что данная надпись и сам фаел php находится в файле template.php
На все ушло меньше минуты времени, без скрипта я потратил бы уйму времени.
Вот и всё, пользуйтесь на здоровье, данным скриптом и не тратьте зря время на «перелапачивание файлов в ручную»

Последнее редактирование: 5 Июн 2015


4 Июн 2015


  • #9

Andreys написал(а):

ВАЖНО : После того как использовали скрип удалите его с корневой директории своего сайта, так как неизвестно, что еще умеет делать данный скриптик ))

А может данный скриптик сразу сделал все, что хотел, как только ты его запустил)

Andreys


4 Июн 2015


  • #10

MegaGoblin написал(а):

А может данный скриптик сразу сделал все, что хотел, как только ты его запустил)

А вот ты и проверь) а потом скажешь всем) так или нет
Елиб я такой скрипт сделал, думаешь бы я бы рекламировал так себя здесь) Просто бы в инет по тихому забросил да и всё.
Как говорится я предложил, а ваше дело отказаться или нет


4 Июн 2015


  • #11

Andreys написал(а):

А вот ты и проверь) а потом скажешь всем) так или нет
Елиб я такой скрипт сделал, думаешь бы я бы рекламировал так себя здесь) Просто бы в инет по тихому забросил да и всё.
Как говорится я предложил, а ваше дело отказаться или нет

К тебе претензий никаких нет) Претензия к тому, что ты пользуешься скриптами, о которых ничего не знаешь, и которые могут быть потенциально опасными)

Andreys


5 Июн 2015


  • #12

MegaGoblin написал(а):

К тебе претензий никаких нет) Претензия к тому, что ты пользуешься скриптами, о которых ничего не знаешь, и которые могут быть потенциально опасными)

Да как бы не я только пользуюсь такими скриптами , все скрипты считаются потенциально опасными, раз он не твой. Твое дело проверить его и решить подходит он тебе или нет. Этот скрипт помогает в поиске, дело каждого использовать его или нет)

GLookin


5 Июн 2015


  • #13

Andreys написал(а):

Да как бы не я только пользуюсь такими скриптами , все скрипты считаются потенциально опасными, раз он не твой. Твое дело проверить его и решить подходит он тебе или нет. Этот скрипт помогает в поиске, дело каждого использовать его или нет)

Не щупал его ещё, но судя по описаниям — я думаю, этот скрипт может не только искать, но и добавлять данные в твои файлы, среди которых проводится поиск.
Прикрутит какой-нибудь файл licence.php к твоему сайту, а ты и не заметишь.


Как найти файл где спрятан нужный кусок кода ???

K

На сайте с 18.07.2012

Offline

48

Andrij411:
Хочу отредактировать допустим какое то изображение ( в дизайне темы-сайта ) на главной странице. Приходится искать где этот файл, но это простой пример и даже с помощью браузера просмотрев код можна понять что да как.
Но появляется проблема когда нужно отредактировать какой то елемент просмотрел код в браузере Хром, ищеш по всех файлах админки и там его ненаходиш. Ищу и по логике ..ищу по всех файлах что доступны с админки вордпресс и часто не нахожу, то есть нужно ити на сервер искать по все существующим файлам. Уходит много времени.
Если кто знает ,как помочь быстро найти файл где спрятан нужный кусок кода,Буду Очень благодарен

Только так и можно отредактировать файлы темы ( это если изображения ). Если нужно найти код, то в браузера будет другой код — HTML. Файлы темы написаны на php.

A4

На сайте с 20.12.2012

Offline

56

kventman:
Только так и можно отредактировать файлы темы ( это если изображения ). Если нужно найти код, то в браузера будет другой код — HTML. Файлы темы написаны на php.

ну что нет какой то возможности к примеру на сервере, серед всех файлов мне нужно найти код вида #home-top .title span { , в одном файле то без проблем нажал ctrl + F и нашел а вот среди сотни файлов искать, это бред, ну должен же быть ? или может плагин для вордпресс есть что позволяет что то подобное делать из админки ?

K

На сайте с 18.07.2012

Offline

48

Можно все файлы скачать на компьютер и в программе notepad++ открыть все текстовые файлы. И там уже сделать поиск по всем открытым документам.

Насчет платина не знаю.

Paxan911

На сайте с 14.07.2013

Offline

70

kventman:
Можно все файлы скачать на компьютер и в программе notepad++ открыть все текстовые файлы. И там уже сделать поиск по всем открытым документам.

Насчет платина не знаю.

тоже юзаю этот способ. Самый нормальный.

Помню сайт ломанули, поставили линк на порнуху. Быстро нашлась ссылочка.

Быстрый хостинг — 50 рублей за 512МБ, ∞ сайтов и БД. Милая техподдержка. (https://goo.gl/uhv6aX)

A4

На сайте с 20.12.2012

Offline

56

Paxan911:
тоже юзаю этот способ. Самый нормальный.

Помню сайт ломанули, поставили линк на порнуху. Быстро нашлась ссылочка.

а что то ( плагин ), что бы з админки можно по всем файлам пропарсить ?

siv1987

На сайте с 02.04.2009

Offline

427

sema_87

На сайте с 28.08.2009

Offline

249

Uh-Oh We’re In Trouble, Something’s
Come Along And It’s Burst Our Bubble!

melkozaur

На сайте с 06.04.2010

Offline

505

Если файлы на компе, то для поиска-замены самое удобное — это Text Replacer.

K

На сайте с 16.12.2009

Offline

185

Я ищу по файлам в Total Commander’e

Зашел в папку, ALT+F7, отметил «Find text», вбил строку для поиска.

Это же вроде как должен уметь делать любой современный файл-менеджер.

1

doctorpc

На сайте с 12.07.2009

Offline

112

16 января 2014, 01:34

#10

Andrij411:
ну что нет какой то возможности к примеру на сервере, серед всех файлов мне нужно найти код вида #home-top .title span { , в одном файле то без проблем нажал ctrl + F и нашел а вот среди сотни файлов искать, это бред, ну должен же быть ? или может плагин для вордпресс есть что позволяет что то подобное делать из админки ?

Если именно на сервере нужен поиск, разбирайтесь с командой grep через ssh.

Пример решения похожей проблемы

Как найти файл процесса?

Есть сервер на FreeBSD 6.4. Заметил на нем странные процессы:

# ps -U www | grep perl
14695  ??  Rs   938:10,45 mail (perl5.8.9)
14696  ??  Rs   948:30,79 mail (perl5.8.9)
29638  ??  Rs   835:28,49 mail (perl5.8.9)

Я так понимаю, что это какой-то Perl’овый скрипт рассылает почту. Как найти этот скрипт?


  • Вопрос задан

    более трёх лет назад

  • 5451 просмотр

Пригласить эксперта

Попробуйте через procfs.

mount -t procfs proc /proc
cat /proc/14695/cmdline

А вот так:

lsof -p $(pgrep perl| tr 'n' ',')

?

lsof по pid’у покажет используемые процессом файлы и сокеты.

В Linux прокатывает так:
ls -l /proc/$PID/exe

Может быть Вам тоже поковыряться в /proc/


  • Показать ещё
    Загружается…

29 мая 2023, в 18:40

2000 руб./за проект

29 мая 2023, в 18:11

25000 руб./за проект

29 мая 2023, в 18:02

1000 руб./за проект

Минуточку внимания

Summary:

FULL_PATH_TO_SCRIPT="$(realpath "${BASH_SOURCE[-1]}")"

# OR, if you do NOT need it to work for **sourced** scripts too:
# FULL_PATH_TO_SCRIPT="$(realpath "$0")"

# OR, depending on which path you want, in case of nested `source` calls
# FULL_PATH_TO_SCRIPT="$(realpath "${BASH_SOURCE[0]}")"

# OR, add `-s` to NOT expand symlinks in the path:
# FULL_PATH_TO_SCRIPT="$(realpath -s "${BASH_SOURCE[-1]}")"

SCRIPT_DIRECTORY="$(dirname "$FULL_PATH_TO_SCRIPT")"
SCRIPT_FILENAME="$(basename "$FULL_PATH_TO_SCRIPT")"

Details:

How to obtain the full file path, full directory, and base filename of any script being run OR sourced

…even when the called script is called from within another bash function or script, or when nested sourcing is being used!

For many cases, all you need to acquire is the full path to the script you just called. This can be easily accomplished using realpath. Note that realpath is part of GNU coreutils. If you don’t have it already installed (it comes default on Ubuntu), you can install it with sudo apt update && sudo apt install coreutils.

get_script_path.sh (for the latest version of this script, see get_script_path.sh in my eRCaGuy_hello_world repo):

#!/bin/bash

# A. Obtain the full path, and expand (walk down) symbolic links
# A.1. `"$0"` works only if the file is **run**, but NOT if it is **sourced**.
# FULL_PATH_TO_SCRIPT="$(realpath "$0")"
# A.2. `"${BASH_SOURCE[-1]}"` works whether the file is sourced OR run, and even
# if the script is called from within another bash function!
# NB: if `"${BASH_SOURCE[-1]}"` doesn't give you quite what you want, use
# `"${BASH_SOURCE[0]}"` instead in order to get the first element from the array.
FULL_PATH_TO_SCRIPT="$(realpath "${BASH_SOURCE[-1]}")"
# B.1. `"$0"` works only if the file is **run**, but NOT if it is **sourced**.
# FULL_PATH_TO_SCRIPT_KEEP_SYMLINKS="$(realpath -s "$0")"
# B.2. `"${BASH_SOURCE[-1]}"` works whether the file is sourced OR run, and even
# if the script is called from within another bash function!
# NB: if `"${BASH_SOURCE[-1]}"` doesn't give you quite what you want, use
# `"${BASH_SOURCE[0]}"` instead in order to get the first element from the array.
FULL_PATH_TO_SCRIPT_KEEP_SYMLINKS="$(realpath -s "${BASH_SOURCE[-1]}")"

# You can then also get the full path to the directory, and the base
# filename, like this:
SCRIPT_DIRECTORY="$(dirname "$FULL_PATH_TO_SCRIPT")"
SCRIPT_FILENAME="$(basename "$FULL_PATH_TO_SCRIPT")"

# Now print it all out
echo "FULL_PATH_TO_SCRIPT = "$FULL_PATH_TO_SCRIPT""
echo "SCRIPT_DIRECTORY    = "$SCRIPT_DIRECTORY""
echo "SCRIPT_FILENAME     = "$SCRIPT_FILENAME""

IMPORTANT note on nested source calls: if "${BASH_SOURCE[-1]}" above doesn’t give you quite what you want, try using "${BASH_SOURCE[0]}" instead. The first (0) index gives you the first entry in the array, and the last (-1) index gives you the last last entry in the array. Depending on what it is you’re after, you may actually want the first entry. I discovered this to be the case when I sourced ~/.bashrc with . ~/.bashrc, which sourced ~/.bash_aliases with . ~/.bash_aliases, and I wanted the realpath (with expanded symlinks) to the ~/.bash_aliases file, NOT to the ~/.bashrc file. Since these are nested source calls, using "${BASH_SOURCE[0]}" gave me what I wanted: the expanded path to ~/.bash_aliases! Using "${BASH_SOURCE[-1]}", however, gave me what I did not want: the expanded path to ~/.bashrc.

Example command and output:

  1. Running the script:
    ~/GS/dev/eRCaGuy_hello_world/bash$ ./get_script_path.sh 
    FULL_PATH_TO_SCRIPT = "/home/gabriel/GS/dev/eRCaGuy_hello_world/bash/get_script_path.sh"
    SCRIPT_DIRECTORY    = "/home/gabriel/GS/dev/eRCaGuy_hello_world/bash"
    SCRIPT_FILENAME     = "get_script_path.sh"
    
  2. Sourcing the script with . get_script_path.sh or source get_script_path.sh (the result is the exact same as above because I used "${BASH_SOURCE[-1]}" in the script instead of "$0"):
    ~/GS/dev/eRCaGuy_hello_world/bash$ . get_script_path.sh 
    FULL_PATH_TO_SCRIPT = "/home/gabriel/GS/dev/eRCaGuy_hello_world/bash/get_script_path.sh"
    SCRIPT_DIRECTORY    = "/home/gabriel/GS/dev/eRCaGuy_hello_world/bash"
    SCRIPT_FILENAME     = "get_script_path.sh"
    

If you use "$0" in the script instead of "${BASH_SOURCE[-1]}", you’ll get the same output as above when running the script, but this undesired output instead when sourcing the script:

~/GS/dev/eRCaGuy_hello_world/bash$ . get_script_path.sh 
FULL_PATH_TO_SCRIPT               = "/bin/bash"
SCRIPT_DIRECTORY                  = "/bin"
SCRIPT_FILENAME                   = "bash"

And, apparently if you use "$BASH_SOURCE" instead of "${BASH_SOURCE[-1]}", it will not work if the script is called from within another bash function. So, using "${BASH_SOURCE[-1]}" is therefore the best way to do it, as it solves both of these problems! See the references below.

Difference between realpath and realpath -s:

Note that realpath also successfully walks down symbolic links to determine and point to their targets rather than pointing to the symbolic link. If you do NOT want this behavior (sometimes I don’t), then add -s to the realpath command above, making that line look like this instead:

# Obtain the full path, but do NOT expand (walk down) symbolic links; in
# other words: **keep** the symlinks as part of the path!
FULL_PATH_TO_SCRIPT="$(realpath -s "${BASH_SOURCE[-1]}")"

This way, symbolic links are NOT expanded. Rather, they are left as-is, as symbolic links in the full path.

The code above is now part of my eRCaGuy_hello_world repo in this file here: bash/get_script_path.sh. Reference and run this file for full examples both with and withOUT symlinks in the paths. See the bottom of the file for example output in both cases.

References:

  1. How to retrieve absolute path given relative
  2. taught me about the BASH_SOURCE variable: Unix & Linux: determining path to sourced shell script
  3. taught me that BASH_SOURCE is actually an array, and we want the last element from it for it to work as expected inside a function (hence why I used "${BASH_SOURCE[-1]}" in my code here): Unix & Linux: determining path to sourced shell script
  4. man bash —> search for BASH_SOURCE:

    BASH_SOURCE

    An array variable whose members are the source filenames where the corresponding shell function names in the FUNCNAME array variable are defined. The shell function ${FUNCNAME[$i]} is defined in the file ${BASH_SOURCE[$i]} and called from ${BASH_SOURCE[$i+1]}.

See also:

  1. [my answer] Unix & Linux: determining path to sourced shell script

Понравилась статья? Поделить с друзьями:
  • Как найти предел последовательности с корнем
  • Как найти каналы на телевизоре хайсенс
  • Fallout 3 как найти скафандр
  • Как найти список групп в колледже
  • Бизнес аналитик как найти