Previous Up Next

自作fishコマンド

自作fishコマンドの使い方

 /.config/fish/functions/ 以下に "コマンド名.fish" というファイルを作って function   end 部分をコピー&ペーストして保存する。 使用上の注意 すべて自己責任でご使用下さい。できる限りfish 文法を理解の上、ご使用ください。

pwdname (/ なしカレントディレクトリ名)

カレントディレクトリ名から / を取り除いて、環境変数 $pwdname に格納する
使用法:pwdname
応用:pwdname; ifort hoge.f90 -o $pwdname.out

pwdname.fish:

function pwdname -d "echo pwd without / and something, and setenv it $pwdname"
set -e pwdname
setenv pwdname (pwd | ssed 's/\///g' | ssed 's/~//')
echo $pwdname
end

mved (対話的編集 mv)

ファイル名の変更を対話的に行う。
使用法:mved foo.txt

mved.fish:

function mved -d"edit file name "
set -g name $argv
vared name
mv $argv $name
echo "mv $argv $name"
set -e name
end

mcp (マルチコピー)

単一のファイルまたはディレクトリを複数のファイルまたはディレクトリにコピーする。 また、cp と同じオプションが使える。
使用法:mcp foo.txt dir1/ dir2/  ← foo.txt が dir1/ dir2/ 以下にそれぞれコピーされる。
mcp -r dir-foo dir1/ dir2/ ← ディレクトリ dir-foo が dir1/ dir2/ 以下にそれぞれコピーされる。

mcp.fish:

function mcp -d "multi copy. copy one file to multi-directories or files"
for i in $argv
if expr "$i" : "\(-.*\)"
set option $option $i
else
set var $var $i
end
end 
for i in $var
if test $i != $var[1] 
echo "cp $option $var[1] $i"
command cp $option $var[1] $i
end
end
end

cd (カスタマイズド cd)

カスタマイズされた cd。指定したディレクトリに移動した後、自動的に ls する。また環境変数 $dirs に移動後のディレクトリ内にあるディレクトリ名を配列として格納する。 通常の cd と同じオプションが使える。元々の cd.fish を改造しただけ。

cd.fish:

#
# The following functions add support for a directory history
#

function cd --description "Change directory"

# Skip history in subshells
if status --is-command-substitution
builtin cd $argv
return $status
end

# Avoid set completions
set -l previous $PWD

if test $argv[1] = - ^/dev/null
if test $__fish_cd_direction = next ^/dev/null
nextd
else
prevd
end
return $status
end

builtin cd $argv[1]
set -l cd_status $status

if test $cd_status = 0 -a $PWD != $previous
set -g dirprev $dirprev $previous
set -e dirnext
set -g __fish_cd_direction prev
end
ls

set -e dirs 
for i in (ls)
if test -d $i
setenv dirs $dirs $i
end
end

return $cd_status
end

Previous Up Next