Показать символическую цель в nautilus

Возможно ли показать цель символической ссылки в Nautilus в качестве столбца в списке папки? Пожалуйста, не указывайте мне на ls -l, я знаю об этом и использую его, но было бы неплохо, если бы пользователь UI имел возможность пользовательского интерфейса видеть ссылку в списке.

1
задан 21 November 2017 в 23:36

2 ответа

Эта цель может быть достигнута с помощью Nautilus Script.

Источник этого ответа является ответом на вопрос: если я создаю ссылку на папку, как я могу получить из этой связанной папки & Quot; реальное & Quot; папка из Nautilus?

Также есть начало сценария: Если я создаю ссылку на папку, как я могу получить из этой связанной папки в "real & quot; папка из Nautilus? . Заданными зависимостями являются perl и zenity, но они уже установлены по умолчанию.

В содержимое скрипта нет разницы, но в современных версиях Ubuntu путь местоположения для Nautilus Scripts изменяется на: ~/.local/share/nautilus/scripts

1. Создайте файл сценария и сделайте его исполняемым:

touch ~/.local/share/nautilus/scripts/"Open link target" chmod +x ~/.local/share/nautilus/scripts/"Open link target"

1. Отредактируйте файл сценария:

gedit ~/.local/share/nautilus/scripts/"Open link target" &

3. Вставьте следующие строки в качестве содержимого скрипта:

#!/bin/bash #Title=Open-the-link-target-in-nautilus #Title[fr]=ouvrir-le-repertoire-cible-dans-nautilus #============================================================================== # open-the-link-target-in-nautilus # # author : SLK # version : v2011051501 # license : Distributed under the terms of GNU GPL version 2 or later # #============================================================================== # # description : # nautilus-script : # opens the target of a symbolic link of the selected object; if # the target of the symbolic link is a file, opens the parent folder # # informations : # - a script for use (only) with Nautilus. # - to use, copy to your ${HOME}/.gnome2/nautilus-scripts/ directory. # # WARNINGS : # - this script must be executable. # - package "zenity" must be installed # #============================================================================== #============================================================================== # CONSTANTS # 0 or 1 - 1: doesn't open but displays a message DRY_RUN=0 #------> some labels used for zenity [en] z_title='Open the link target in nautilus' z_err_bin_not_found='not found\nEXIT' z_no_object='no object selected\nEXIT' z_info_target='path of the target' z_choice_open_nautilus='open target in nautilus' z_choice_open_file='open file with default application' z_choice_display_filepath='open a messagebox to copy filepath' #------> some labels used for zenity [fr] #z_title='ouvrir le repertoire cible dans nautilus' #z_err_bin_not_found='introuvable\nEXIT' #z_no_object='aucun objet selectionne\nEXIT' #z_info_target='chemin de la cible' #z_choice_open_nautilus='ouvrir la cible dans nautilus' #z_choice_open_file='ouvrir le fichier avec le programme par defaut' #z_choice_display_filepath='ouvrir une boite de dialogue affichant le chemin du fichier' #============================================================================== # INIT VARIABLES # may depends of your system DIRNAME='/usr/bin/dirname' GREP='/bin/grep' NAUTILUS='/usr/bin/nautilus' PERL='/usr/bin/perl' READLINK='/bin/readlink' XDG_OPEN='/usr/bin/xdg-open' ZENITY='/usr/bin/zenity' #============================================================================== # FUNCTIONS function check_bin { err=0 for bin in $* ; do if [ ! -x "$bin" ] ; then $ZENITY --error --title "$z_title" \ --text="$bin $z_err_bin_not_found" err=1 fi done [ $err -eq 1 ] && exit 1 } #============================================================================== # MAIN # lets check for required binaries : [ -x "$ZENITY" ] || { echo "[ERROR] $ZENITY not found : EXIT" exit 1 } check_bin "$DIRNAME" "$GREP" "$NAUTILUS" "$PERL" "$READLINK" # lets check if object is selected : [ "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" == "" ] && { $ZENITY --error --title "$z_title" \ --text="$z_no_object" exit 1 } # retrieve the first object selected : first_object=`echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" \ | $PERL -ne 'print;exit'` # lets check if local path : [ `echo "$first_object" | $GREP -c "^/"` -eq 0 ] && { $ZENITY --error --title "$z_title" \ --text="[ERROR] $first_object has not a valid path\nEXIT" exit 1 } # retrieve the target path : if [ -L "$first_object" ] ; then # symbolic link target=`$READLINK -f "$first_object"` else # not a symbolic link : target="$first_object" fi if [ -d "$target" ] ; then # target is a directory target_to_open_in_nautilus="$target" else # target is a file, let's take the parent directory target_to_open_in_nautilus=`$DIRNAME "$target"` fi ### DRY RUN : noop [ $DRY_RUN -eq 1 ] && { $ZENITY --info --title "$z_title" \ --text="<b>DRY RUN</b> first_object: $first_object target: $target target_to_open_in_nautilus: $target_to_open_in_nautilus" exit 0 } ### GO : let's open choice=`$ZENITY --list --title="$z_title" --width="500" --height="200" \ --text="<b>$z_info_target</b>\n$target" \ --radiolist --column "" --column "action" \ TRUE "$z_choice_open_nautilus" \ FALSE "$z_choice_open_file" \ FALSE "$z_choice_display_filepath"` case $choice in "$z_choice_open_nautilus") $NAUTILUS --no-desktop "$target_to_open_in_nautilus" ;; "$z_choice_open_file") $XDG_OPEN "$target" ;; "$z_choice_display_filepath") $ZENITY --entry --title="$z_title" --width="500" \ --text="$z_info_target" \ --entry-text="$target" & ;; *) exit 1 ;; esac exit 0 ### EOF

3. Сохраните файл, откройте Nautilus, щелкните правой кнопкой мыши на некоторой символической ссылке, перейдите в раздел «Сценарии» и нажмите на 'Цель открытой ссылки':

5. Затем появится диалоговое окно:

Я боюсь, что если вы хотите добавить новый столбец в представление списка, исходный код Nautilus должен быть изменен и перекомпилирован.

1
ответ дан 18 July 2018 в 12:11

Эта цель может быть достигнута с помощью Nautilus Script.

Источник этого ответа является ответом на вопрос: если я создаю ссылку на папку, как я могу получить из этой связанной папки & Quot; реальное & Quot; папка из Nautilus?

Также есть начало сценария: Если я создаю ссылку на папку, как я могу получить из этой связанной папки в "real & quot; папка из Nautilus? . Заданными зависимостями являются perl и zenity, но они уже установлены по умолчанию.

В содержимое скрипта нет разницы, но в современных версиях Ubuntu путь местоположения для Nautilus Scripts изменяется на: ~/.local/share/nautilus/scripts

1. Создайте файл сценария и сделайте его исполняемым:

touch ~/.local/share/nautilus/scripts/"Open link target" chmod +x ~/.local/share/nautilus/scripts/"Open link target"

1. Отредактируйте файл сценария:

gedit ~/.local/share/nautilus/scripts/"Open link target" &

3. Вставьте следующие строки в качестве содержимого скрипта:

#!/bin/bash #Title=Open-the-link-target-in-nautilus #Title[fr]=ouvrir-le-repertoire-cible-dans-nautilus #============================================================================== # open-the-link-target-in-nautilus # # author : SLK # version : v2011051501 # license : Distributed under the terms of GNU GPL version 2 or later # #============================================================================== # # description : # nautilus-script : # opens the target of a symbolic link of the selected object; if # the target of the symbolic link is a file, opens the parent folder # # informations : # - a script for use (only) with Nautilus. # - to use, copy to your ${HOME}/.gnome2/nautilus-scripts/ directory. # # WARNINGS : # - this script must be executable. # - package "zenity" must be installed # #============================================================================== #============================================================================== # CONSTANTS # 0 or 1 - 1: doesn't open but displays a message DRY_RUN=0 #------> some labels used for zenity [en] z_title='Open the link target in nautilus' z_err_bin_not_found='not found\nEXIT' z_no_object='no object selected\nEXIT' z_info_target='path of the target' z_choice_open_nautilus='open target in nautilus' z_choice_open_file='open file with default application' z_choice_display_filepath='open a messagebox to copy filepath' #------> some labels used for zenity [fr] #z_title='ouvrir le repertoire cible dans nautilus' #z_err_bin_not_found='introuvable\nEXIT' #z_no_object='aucun objet selectionne\nEXIT' #z_info_target='chemin de la cible' #z_choice_open_nautilus='ouvrir la cible dans nautilus' #z_choice_open_file='ouvrir le fichier avec le programme par defaut' #z_choice_display_filepath='ouvrir une boite de dialogue affichant le chemin du fichier' #============================================================================== # INIT VARIABLES # may depends of your system DIRNAME='/usr/bin/dirname' GREP='/bin/grep' NAUTILUS='/usr/bin/nautilus' PERL='/usr/bin/perl' READLINK='/bin/readlink' XDG_OPEN='/usr/bin/xdg-open' ZENITY='/usr/bin/zenity' #============================================================================== # FUNCTIONS function check_bin { err=0 for bin in $* ; do if [ ! -x "$bin" ] ; then $ZENITY --error --title "$z_title" \ --text="$bin $z_err_bin_not_found" err=1 fi done [ $err -eq 1 ] && exit 1 } #============================================================================== # MAIN # lets check for required binaries : [ -x "$ZENITY" ] || { echo "[ERROR] $ZENITY not found : EXIT" exit 1 } check_bin "$DIRNAME" "$GREP" "$NAUTILUS" "$PERL" "$READLINK" # lets check if object is selected : [ "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" == "" ] && { $ZENITY --error --title "$z_title" \ --text="$z_no_object" exit 1 } # retrieve the first object selected : first_object=`echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" \ | $PERL -ne 'print;exit'` # lets check if local path : [ `echo "$first_object" | $GREP -c "^/"` -eq 0 ] && { $ZENITY --error --title "$z_title" \ --text="[ERROR] $first_object has not a valid path\nEXIT" exit 1 } # retrieve the target path : if [ -L "$first_object" ] ; then # symbolic link target=`$READLINK -f "$first_object"` else # not a symbolic link : target="$first_object" fi if [ -d "$target" ] ; then # target is a directory target_to_open_in_nautilus="$target" else # target is a file, let's take the parent directory target_to_open_in_nautilus=`$DIRNAME "$target"` fi ### DRY RUN : noop [ $DRY_RUN -eq 1 ] && { $ZENITY --info --title "$z_title" \ --text="<b>DRY RUN</b> first_object: $first_object target: $target target_to_open_in_nautilus: $target_to_open_in_nautilus" exit 0 } ### GO : let's open choice=`$ZENITY --list --title="$z_title" --width="500" --height="200" \ --text="<b>$z_info_target</b>\n$target" \ --radiolist --column "" --column "action" \ TRUE "$z_choice_open_nautilus" \ FALSE "$z_choice_open_file" \ FALSE "$z_choice_display_filepath"` case $choice in "$z_choice_open_nautilus") $NAUTILUS --no-desktop "$target_to_open_in_nautilus" ;; "$z_choice_open_file") $XDG_OPEN "$target" ;; "$z_choice_display_filepath") $ZENITY --entry --title="$z_title" --width="500" \ --text="$z_info_target" \ --entry-text="$target" & ;; *) exit 1 ;; esac exit 0 ### EOF

3. Сохраните файл, откройте Nautilus, щелкните правой кнопкой мыши на некоторой символической ссылке, перейдите в раздел «Сценарии» и нажмите на 'Цель открытой ссылки':

5. Затем появится диалоговое окно:

Я боюсь, что если вы хотите добавить новый столбец в представление списка, исходный код Nautilus должен быть изменен и перекомпилирован.

1
ответ дан 24 July 2018 в 19:55

Другие вопросы по тегам:

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