Browse Source

Sample scripts to convert NUL to newline

master
Arun Prakash Jana 6 years ago
parent
commit
0617c8d90a
No known key found for this signature in database GPG Key ID: A75979F35C080412
3 changed files with 44 additions and 50 deletions
  1. +38
    -38
      README.md
  2. +1
    -1
      scripts/user-scripts/copier.sh
  3. +5
    -11
      scripts/user-scripts/picker.sh

+ 38
- 38
README.md View File

@@ -53,6 +53,7 @@ We need contributors. Please visit the [ToDo list](https://github.com/jarun/nnn/
- [Leader key](#leader-key) - [Leader key](#leader-key)
- [Contexts](#contexts) - [Contexts](#contexts)
- [Directory color](#directory-color) - [Directory color](#directory-color)
- [Selection](#selection)
- [Filters](#filters) - [Filters](#filters)
- [Navigate-as-you-type mode](#navigate-as-you-type-mode) - [Navigate-as-you-type mode](#navigate-as-you-type-mode)
- [File indicators](#file-indicators) - [File indicators](#file-indicators)
@@ -62,7 +63,6 @@ We need contributors. Please visit the [ToDo list](https://github.com/jarun/nnn/
- [How to](#how-to) - [How to](#how-to)
- [add bookmarks](#add-bookmarks) - [add bookmarks](#add-bookmarks)
- [copy file paths](#copy-file-paths) - [copy file paths](#copy-file-paths)
- [selection](#selection)
- [to clipboard](#to-clipboard) - [to clipboard](#to-clipboard)
- [get selection manually](#get-selection-manually) - [get selection manually](#get-selection-manually)
- [cd on quit](#cd-on-quit) - [cd on quit](#cd-on-quit)
@@ -291,6 +291,29 @@ Each context can have its own color for directories specified:
export NNN_CONTEXT_COLORS="1234" export NNN_CONTEXT_COLORS="1234"
colors: 0-black, 1-red, 2-green, 3-yellow, 4-blue (default), 5-magenta, 6-cyan, 7-white colors: 0-black, 1-red, 2-green, 3-yellow, 4-blue (default), 5-magenta, 6-cyan, 7-white


#### Selection

Use <kbd>^K</kbd> to copy the absolute path of the file under the cursor.

To copy multiple absolute file paths:

- press <kbd>^Y</kbd> (or <kbd>Y</kbd>) to enter selection mode. In this mode it's possible to
- cherry-pick individual files one by one by pressing <kbd>^K</kbd> on each entry (works across directories and contexts); or,
- navigate to another file in the same directory to select a range of files
- press <kbd>^Y</kbd> (or <kbd>Y</kbd>) _again_ to copy the paths and exit the selection mode

The files in the list can now be copied (<kbd>P</kbd>), moved (<kbd>V</kbd>) or removed (<kbd>X</kbd>).

To list the file paths copied to memory press <kbd>y</kbd>.

File paths are copied to the temporary file `DIR/.nnncp`, where `DIR` (by priority) is:

$HOME or,
$TMPDIR or,
/tmp

The path is shown in the help and configuration screen.

#### Filters #### Filters


Filters support regexes to instantly (search-as-you-type) list the matching entries in the current directory. Filters support regexes to instantly (search-as-you-type) list the matching entries in the current directory.
@@ -384,41 +407,36 @@ NOTE: Bookmark keys should be single-character to use them in combination with t


#### copy file paths #### copy file paths


##### selection
##### to clipboard


Use <kbd>^K</kbd> to copy the absolute path of the file under the cursor.
Along with default copy, `nnn` can pipe the absolute path of the current file or multiple files to a copier script. For example, you can use `xsel` on Linux or `pbcopy` on macOS. Here's a sample [copier script](https://github.com/jarun/nnn/blob/master/scripts/user-scripts/copier.sh).


To copy multiple absolute file paths:
To inform `nnn` of the executable copier script location:


- press <kbd>^Y</kbd> (or <kbd>Y</kbd>) to enter selection mode. In this mode it's possible to
- cherry-pick individual files one by one by pressing <kbd>^K</kbd> on each entry (works across directories and contexts); or,
- navigate to another file in the same directory to select a range of files
- press <kbd>^Y</kbd> (or <kbd>Y</kbd>) _again_ to copy the paths and exit the selection mode
export NNN_COPIER="/path/to/copier.sh"


The files in the list can now be copied (<kbd>P</kbd>), moved (<kbd>V</kbd>) or removed (<kbd>X</kbd>).
##### get selection manually


To list the file paths copied to memory press <kbd>y</kbd>.
NOTE: In the following examples we assume the copy file is at `~/.nnncp`.


File paths are copied to the temporary file `DIR/.nnncp`, where `DIR` (by priority) is:
The file paths are `NUL`-terminated, so additional processing is required to make them usable.


$HOME or,
$TMPDIR or,
/tmp
To get a space-separated list of the file paths in selection:


The path is shown in the help and configuration screen..
cat ~/.nnncp | xargs -0 echo


To use the copied paths from the cmdline, use command substitution. For example, if `DIR` above is `/home/user`:
To get a newline-separated list of the file paths in selection:


# bash/zsh # bash/zsh
ls -ltr `cat /home/user/.nnncp`
ls -ltr $(cat /home/user/.nnncp)
ls -ltr `cat /home/user/.nnncp | tr '\0' '\n'`
ls -ltr $(cat /home/user/.nnncp | tr '\0' '\n')


# fish # fish
ls -ltr (cat /home/user/.nnncp)
ls -ltr (cat /home/user/.nnncp | tr '\0' '\n')


An alias may be handy, e.g. when you want to copy selection at the _run a command_ prompt: An alias may be handy, e.g. when you want to copy selection at the _run a command_ prompt:


alias ncp='cat /home/user/.nnncp'
alias ncp="cat /home/user/.nnncp | tr '\0' '\n'"


so you can easily handle files together: so you can easily handle files together:


@@ -429,24 +447,6 @@ so you can easily handle files together:
# fish # fish
ls -ltr (ncp) ls -ltr (ncp)


##### to clipboard

Along with default copy, `nnn` can pipe the absolute path of the current file or multiple files to a copier script. For example, you can use `xsel` on Linux or `pbcopy` on macOS. Here's a sample [copier script](https://github.com/jarun/nnn/blob/master/scripts/user-scripts/copier.sh).

To inform `nnn` of the executable copier script location:

export NNN_COPIER="/path/to/copier.sh"

##### get selection manually

To get a space-separated list of the file paths in selection, say at the command-prompt:

cat ~/.nnncp | xargs -0 echo

Set an easy to remember alias:

alias ncp="cat ~/.nnncp | xargs -0 echo"

To get the list in a file: To get the list in a file:


ncp > out.txt ncp > out.txt


+ 1
- 1
scripts/user-scripts/copier.sh View File

@@ -1,4 +1,4 @@
#!/bin/sh
#!/usr/bin/env sh


# Linux # Linux
cat ~/.nnncp | xargs -0 | xsel -bi cat ~/.nnncp | xargs -0 | xsel -bi


+ 5
- 11
scripts/user-scripts/picker.sh View File

@@ -1,8 +1,8 @@
#!/bin/bash
#!/usr/bin/env sh


# Description: Pick files and pipe the line-separated list to another utility # Description: Pick files and pipe the line-separated list to another utility
# #
# Shell: bash
# Shell: sh
# Author: Arun Prakash Jana # Author: Arun Prakash Jana
# #
# Usage: # Usage:
@@ -16,12 +16,6 @@
# #
# NOTE: This use case is limited to picking files, other functionality may not work as expected. # NOTE: This use case is limited to picking files, other functionality may not work as expected.


nnn -p /tmp/pickerout
> /tmp/picked
while read -d $'\0' line ; do
echo $line >> /tmp/picked
done < /tmp/pickerout
echo $line >> /tmp/picked
cat /tmp/picked

rm /tmp/pickerout /tmp/picked
nnn -p /tmp/picked
cat /tmp/picked | tr '\0' '\n'
rm /tmp/picked

Loading…
Cancel
Save