]> Sergey Matveev's repositories - nnn.git/commitdiff
Sample scripts to convert NUL to newline
authorArun Prakash Jana <engineerarun@gmail.com>
Fri, 4 Jan 2019 17:03:55 +0000 (22:33 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Fri, 4 Jan 2019 17:03:55 +0000 (22:33 +0530)
README.md
scripts/user-scripts/copier.sh
scripts/user-scripts/picker.sh

index 52b946982ee694cd080b51963c0baaf360ec7e5a..2627d38446ebe92abb704be81a8ff961992333e4 100644 (file)
--- a/README.md
+++ b/README.md
@@ -53,6 +53,7 @@ We need contributors. Please visit the [ToDo list](https://github.com/jarun/nnn/
   - [Leader key](#leader-key)
   - [Contexts](#contexts)
   - [Directory color](#directory-color)
+  - [Selection](#selection)
   - [Filters](#filters)
   - [Navigate-as-you-type mode](#navigate-as-you-type-mode)
   - [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)
   - [add bookmarks](#add-bookmarks)
   - [copy file paths](#copy-file-paths)
-    - [selection](#selection)
     - [to clipboard](#to-clipboard)
     - [get selection manually](#get-selection-manually)
   - [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"
 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 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
 
-##### 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
-    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
-    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:
 
-    alias ncp='cat /home/user/.nnncp'
+    alias ncp="cat /home/user/.nnncp | tr '\0' '\n'"
 
 so you can easily handle files together:
 
@@ -429,24 +447,6 @@ so you can easily handle files together:
     # fish
     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:
 
     ncp > out.txt
index 3d8ccb580ff6f6de450f378125ece8fed76efcf2..391770cb2a5a3665b5a3804e15cc16b558003a0e 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/usr/bin/env sh
 
 # Linux
 cat ~/.nnncp | xargs -0 | xsel -bi
index 1968c9646a9eedad847245c8f25564df077aa873..8885ed6b40708ff1a237fe2037c3133359dfa223 100644 (file)
@@ -1,8 +1,8 @@
-#!/bin/bash
+#!/usr/bin/env sh
 
 # Description: Pick files and pipe the line-separated list to another utility
 #
-# Shell: bash
+# Shell: sh
 # Author: Arun Prakash Jana
 #
 # Usage:
 #
 # 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