This file is indexed.

/usr/share/fish/completions/dd.fish is in fish-common 2.4.0-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
complete -c dd -xa '(__fish_complete_dd)'
complete -c dd -d 'display help and exit' -xa '--help'
complete -c dd -d 'output version information and exit' -xa '--version'

function __fish_complete_dd --description 'Complete dd operands'

    # set operand_string as a local variable containing the current command-line token.
    set -l operand_string (commandline -t)

    switch $operand_string

        case 'if=*' 'of=*'
            # the read command uses $IFS to tokenise stdin input
            set -l IFS =
            # $operand now contains the left side of the operator, $value the right
            echo $operand_string | read -l operand value

            for entry in $value*
                # if $entry is a directory, append a '/'
                if test -d $entry
                    echo $operand"="$entry/
                else
                    echo $operand"="$entry
                end
            end

        case 'iflag=*' 'oflag=*'
            set -l IFS =
            echo $operand_string | read -l operand value

            set -l IFS ' '
            echo $value | sed -e 's/\(.*\)\(,\)/\1 \2/' | read -l complete comma

            # check if there is only one option
            if test $comma = ''
                set complete ''
            else
                set complete $complete,
            end

			printf "%s\t%s\n" "$operand=$complete""append" "append mode (makes sense only for output; conv=notrunc suggested)"
			printf "%s\t%s\n" "$operand=$complete""direct" "use direct I/O for data"
			printf "%s\t%s\n" "$operand=$complete""directory" "fail unless a directory"
			printf "%s\t%s\n" "$operand=$complete""dsync" "use synchronized I/O for data"
			printf "%s\t%s\n" "$operand=$complete""sync" "use synchronized I/O for data and metadata"
			printf "%s\t%s\n" "$operand=$complete""fullblock" "accumulate full blocks of input (iflag only)"
			printf "%s\t%s\n" "$operand=$complete""nonblock" "use non-blocking I/O"
			printf "%s\t%s\n" "$operand=$complete""noatime" "do not update access time"
			printf "%s\t%s\n" "$operand=$complete""nocache" "discard cached data"
			printf "%s\t%s\n" "$operand=$complete""noctty" "do not assign controlling terminal from file"
			printf "%s\t%s\n" "$operand=$complete""nofollow" "do not follow symbolic links"

        case 'conv=*'
            set -l IFS =
            echo $operand_string | read -l operand value

            set -l IFS ' '
            echo $value | sed -e 's/\(.*\)\(,\)/\1 \2/' | read -l complete comma

            if test $comma = ''
                set complete ''
            else
                set complete $complete,
            end

			printf "%s\t%s\n" "$operand=$complete""ascii" "from EBCDIC to ASCII"
			printf "%s\t%s\n" "$operand=$complete""ebcdic" "from ASCII to EBCDIC"
			printf "%s\t%s\n" "$operand=$complete""ibm" "from ASCII to alternate EBCDIC"
			printf "%s\t%s\n" "$operand=$complete""block" "pad newline-terminated records with spaces to cbs-size"
			printf "%s\t%s\n" "$operand=$complete""unblock" "replace trailing spaces in cbs-size records with newline"
			printf "%s\t%s\n" "$operand=$complete""lcase" "change upper case to lower case"
			printf "%s\t%s\n" "$operand=$complete""ucase" "change lower case to upper case"
			printf "%s\t%s\n" "$operand=$complete""swab" "swap every pair of input bytes"
			printf "%s\t%s\n" "$operand=$complete""sync" "pad every input block with NULs to ibs-size; with block or ublock use spaces"
			printf "%s\t%s\n" "$operand=$complete""excl" "fail if the output file already exists"
			printf "%s\t%s\n" "$operand=$complete""nocreat" "do not create the output file"
			printf "%s\t%s\n" "$operand=$complete""notrunc" "do not truncate the output file"
			printf "%s\t%s\n" "$operand=$complete""noerror" "continue after read errors"
			printf "%s\t%s\n" "$operand=$complete""fdatasync" "physically write output file data before finishing"
			printf "%s\t%s\n" "$operand=$complete""fsync" "physically write output file data and metadata before finishing"

        case 'status=*'
			printf "%s\t%s\n" status=noxfer "suppress final transfer statistics"
			printf "%s\t%s\n" status=none "suppress everything but errors"
			printf "%s\t%s\n" status=progress "show periodic transfer statistics"

        case '*'
			printf "%s=\t%s\n" bs "read and write up to BYTES bytes at a time"
			printf "%s=\t%s\n" cbs "convert BYTES bytes at a time"
			printf "%s=\t%s\n" conv "convert the file as per the comma separated symbol list"
			printf "%s=\t%s\n" count "copy only BLOCKS input blocks"
			printf "%s=\t%s\n" ibs "read up to BYTES bytes at a time (default 512)"
			printf "%s=\t%s\n" if "read from FILE instead of stdin"
			printf "%s=\t%s\n" iflag "read as per the comma separated symbol list"
			printf "%s=\t%s\n" obs "write BYTES bytes at a time (default 512)"
			printf "%s=\t%s\n" of "write to FILE instead of stdout"
			printf "%s=\t%s\n" oflag "write as per the comma separated symbol list"
			printf "%s=\t%s\n" seek "skip BLOCKS obs-sized blocks at the start of output"
			printf "%s=\t%s\n" skip "skip BLOCKS ibs-sized blocks at the start of input"
			printf "%s=\t%s\n" status "set the level of information to print to stderr"
    end
end