生産性を向上させるために、シェルプロファイルでどのようなカスタマイズを行いましたか?


25

スタートアップスクリプトを持っている人もいれば、プロンプトをパーソナライズしている人もいます。ある開発者は、頻繁に訪れる長いパスと頻繁に実行するコマンドに短いエイリアスを使用します。

生産性と使いやすさを向上させるために、UNIXプロファイルで行った効果的なカスタマイズは何ですか?


CWである必要があり、客観的に回答することはできません。
アキラ

同意する。ただし、CWのオプションはありませんでした。:-(
サン

@akira @Michael私はこの状況にしばしば直面します。モデレーターが質問を編集/クロスポスト/リダイレクトできると便利です。あなたが残したコメントは、ユーザーが本当に望んでいることを達成するためにユーザーをあまり助けないからです。違反はありません。単なる提案です。ご理解ください。
サン

質問コミュニティWikiを作成する場合は、モデレーターの注意を引くためにフラグを立ててください。コミュニティWiki FAQを参照してください
ジル 'SO-悪であるのをやめる'

回答:


11

.vimrc

次のように入力して、ファイルをルート権限で保存しますw!!

cmap w!! w !sudo tee % > /dev/null


.bashrc

以下を実行するときに、デバイスやバイナリファイルを気にしないでくださいgrep

alias grep='grep --color=auto --binary-files=without-match --devices=skip'


ウェブ上でコードを共有します(pastebinのようですが、よりシンプルです)。 cat 1337.sh | webshare

alias webshare='curl -F "sprunge=<-" http://sprunge.us | xclip'

クリップボードの短いURLが返されます。返されたURL追加?whatever-langして、構文を強調表示し、行に番号を付けることができます


.inputrc

readlineライブラリを使用するすべてのプログラム(多くのプログラム)でviモードを使用します。

set editing-mode vi
set keymap vi

私が知らなかった素晴らしいヒント。
サン

7

1つのコマンドでディレクトリとcdを作成します

ほとんどのmkdir場合、私の次のコマンドはcd <that dir>です。

これにより、入力の手間が省けます。

# make a directory and cd to it
mcd()
{
    test -d "$1" || mkdir "$1" && cd "$1"
}

例えば:

/home/mikel$ mcd somedir
/home/mikel/somedir$ 

もう1つ便利だと思うのは、使い捨てディレクトリを簡単に作成する方法です。たとえば、プログラムをコンパイルしている場合、またはこのサイトで問題を再現しようとしている場合です。ディレクトリのクリーンアップを忘れることがあります。

# make a temporary directory and cd to it
mtd()
{
    local dir
    dir=$(mktemp -d)
    if test -n "$dir"
    then
        if test -d "$dir"
        then
            echo "$dir"
            cd "$dir"
        else
            echo "mktemp directory $dir does not exist"
        fi
    else
        echo "mktemp didn't work"
    fi
}

動作を示す:

/home/mikel$ mtd
/tmp/tmp.wsnZjJ2KN6
/tmp/tmp.wsnZjJ2KN6$ 

/tmp再起動後にシステムをクリーンアップすることに頼っていますが、これを強化することは可能です。たとえば、シェルを終了した後に一時ディレクトリを削除するなどです。


私はmcdオプションが大好きでした。いいね、ありがとう。
サン

+1私はmcd長年にわたって自分のバージョンを使用してきましたが、mtdすぐに追加する予定です。
-maaartinus

を定義しましたmtd() { mcd $TMP/`date +%y%m%d-%H%M%S-%N`; }。おそらく移植性に欠けていますが、私には十分です。
-maaartinus

4

bashプロンプトに、前のコマンドがゼロ以外の場合の終了コードを表示するのが好きです。また、使用するときにシェルが元気を出してくれるので、少し愚かさを加えました。

smiley() {
    RC=$?
    [[ ${RC} == 0 ]] && echo ':)' || echo ":( ${RC}"
}

export PS1="\$(smiley) \h [\A] [\W] \$ "

コマンドを実行すると、視覚的なフィードバックが得られます。

:) mycomputer [23:03] [~] $ sh -c 'exit 0'
:) mycomputer [23:03] [~] $ sh -c 'exit 11'
:( 11 mycomputer [23:03] [~] $ 

編集:これは私が私の〜/ .bashrcに入れたものです


とても興味深い。しかし、私には疑問があります。コードはどこに置くべきですか?
サン

.bashrc、おそらく。
ミケル

はい、それは私の〜/ .bashrcにあります
-jsbillings

それを試してみてください
サン

4

アップN

ディレクトリツリーでN個のディレクトリをジャンプアップする

入力する代わりに

cd ../../../..

あなたはタイプするだけです

up 4

cd -    

あなたを連れ戻します

関数を.bashrcに入れて使用します。

# (c) 2007 stefan w. GPLv3          
function up {
ups=""
for i in $(seq 1 $1)
do
        ups=$ups"../"
done
cd $ups
}

うわー..素敵なアイデアです
サン

2

.zshrc

alias l='ls -CF'
alias ll='ls -ClhF'
alias la='ls -CaF'
alias lla='ls -CalhF'
alias l.='ls -CAF --ignore=\*'
alias ll.='ls -CAlhF --ignore=\*'
alias t='tree -C'

PS1=$'%{\e[0;33m%}%m %{\e[32;1m%}%~ %{\e[0;31m%}%#%{\e[m%} '

bindkey '^[[3~' delete-char

export GREP_OPTIONS="--color"

.xmodmaprc

clear lock
keycode 9 = Caps_Lock ISO_Next_Group Caps_Lock ISO_Next_Group
keycode 66 = Escape NoSymbol Escape
add lock = Caps_Lock

(エスケープキーとCaps Lockキーを入れ替えます)。


キーの再マッピングで+ 1、Caps LockはReturnにマップされます。CapsLockが必要な人はいますか?
ワグ

1
私はVimユーザーです。EscapeをCaps Lockにマップすることは、Vimユーザーにとって典型的です。Emacsユーザーは、ControlをCaps Lockにマップする傾向があります。
ポレモン

1

私は端末をよく使うので、bashrcを台無しにします(これにより、学習が速くなり、使用する興味深いものや興味深いツールを学ぶことができます)。私は通常、bashrcで多くの関数を定義しています。例:

アーカイブの抽出:

extract () {
libextract () {
if [ -f "$1" ] ; then
  case "$1" in
    *.tar.bz2) tar xjf "$1" ;;
    *.tar.gz)  tar xzf "$1" ;;
    *.bz2) bunzip2 "$1" ;;
    *.rar) rar x "$1" ;;
    *.gz) gunzip "$1" ;;
    *.tar) tar xf "$1" ;;
    *.tbz2) tar xjf "$1" ;;
    *.tgz) tar xzf "$1" ;;
    *.zip) unzip "$1" ;;
    *.Z) uncompress "$1" ;;
    *.7z) 7z x "$1" ;;
    *) echo "$1 ne moze biti raspakovan!" ;;
  esac
else
  echo "$1 nije validan fajl"
fi
}
 echo "Unesite putanju do direktorijuma u kome se nalaze arhive: " && read dir && dirprovera && cd $dir
  for f in *
    do
      mkdir ./$f-raspakovano && cd ./$f-raspakovano
      libextract ./../$f
      cd ./../
    done
  tipka
}

ファイルとフォルダーの名前を変更します。

frename () {
if [ $# -gt 0 ]
then
 dir="$(echo $1)"
  dirprovera
  cd $dir
  for f in *
    do
      mv "$f" "`echo "$f" | tr -s " " "_" | tr "A-Z" "a-z"`" 2>/dev/null &
    done
  tipka
else
 echo "Upotreba: frename [direktorijum]" >&2
fi
}

大きなファイルをいくつかの小さなファイルに分割するためのこのように:

fsplit () {
if [ $# -gt 1 ]
then
 file="$(echo $1)"
 SIZE="$(echo $2)"
 PREFIX="$(echo $3)"
 if [ -z "$PREFIX" ]; then PREFIX="fsplit"; fi
  fileprovera
  split -d -a 3 -b $SIZE $file "$PREFIX-part-" || echo "Doslo je do greske!"
  tipka
else
 echo "Upotreba: fsplit [fajl] [velicina] [prefix]
Za velicinu se koriste m (MB), g (GB) ili k (KB) (15m, 650kb, 4.7g...)

Prefiks moze sadrzati brojeve, slova, i crtice (primer: moj_pre-fiks)
Ukoliko ne unesete prefiks isti ce biti dodeljen automatski u sledecem formatu:
  fsplit-part-XXX
gde XXX predstavlja broj dela fajla (001, 005, 189...)" >&2
fi
}

また、いくつかの場合(ls、grep、小さなコマンドなど)、デフォルトで引数付きの1つのコマンドを使用してから、すべてを毎回入力する方がはるかに簡単であることがわかったため、多くのエイリアスを編集しました


1

(コミュニティwiki。したがって、各トリックは個別の回答に属します。)

安全なログアウト

Ctrl+ Dはシェルを終了する最も簡単な方法ですが、まだ実行中のジョブがある場合は、とにかくシェルを終了します。デフォルトでは、これはそのシェル内から実行していたすべてのプログラムが強制終了されることを意味します。

一部のシェルでは、Ctrl+をD2回押してからしかログアウトできませんが、誤ってログアウトするのはまだ簡単です。

代わりに、これを.bashrc.zshrcまたは任意の構成ファイルに追加します。

alias x='_exit'

# prevent running "exit" if the user is still running jobs in the background
# the user is expected to close the jobs or disown them
_exit()
{
    case $- in *m*)
        # this way works in bash and zsh
        jobs | wc -l | grep -q '^ *0 *$'
        if test $? -eq 0
        then
            command exit "$@"
        else
            jobs
        fi
        ;;
    *)
        command exit "$@"
        ;;
    esac
}

1

(コミュニティwiki。したがって、各トリックは個別の回答に属します。)

コマンドを実行したすべての方法について履歴を検索する

すでにCtrl+ について知っているかもしれませんRが、この方法ははるかにスムーズです。

Alt+ Pを設定して、すでに入力したもので始まるコマンドの履歴を検索します。

たとえば、ls Alt+ PAlt+ PAlt+ P は、すべてのlsコマンドを逆方向に検索します。

あなたは、あなたにこれを置く必要がある/etc/inputrc.inputrcについてbash

$if mode=emacs
"\ep": history-search-backward
"\en": history-search-forward
$endif

そしてこれはあなたの中.zshrcのためにzsh

bindkey -M emacs '^[p' history-beginning-search-backward
bindkey -M emacs '^[n' history-beginning-search-forward

さらに一歩進んで、上矢印でこれを行うこともできます。


1

シンプルな電卓

$(( ... ))またはexpr ...を使用して非常に基本的な計算を実行できますが、整数除算を実行します。たとえば、

$ expr 3 / 2
1

$ expr 1.5 \* 2
expr: non-integer argument

より良い方法はを使用することbcです。

# do some floating point arithmetic
calc()
{
    echo "scale=3; $*" | bc
}

その後:

$ calc 3 / 2
1.500
$ calc 1.5 \* 2
3.0

1
私の電卓はあるalias py='PYTHONSTARTUP=~/.pythonstartup python'from math import *;、そのファイルに。整数除算の問題は未解決のままですが、より複雑な操作にはより使いやすい方法です。
-maaartinus

1

より良いタブ補完

カスタマイズのTab完了についてはまだ誰も言及していないと思います。

これが私が持っているものです。

主なものは次の2つです。

  • 各コマンドは、コマンドが予期している内容に応じてタブ補完を行います。
    たとえば、cd <Tab>ディレクトリのみを提案します
  • ケースを無視します。
    たとえば、d<Tab>まだ完了Desktopします。Downloads

bashの場合:

# custom tab completions
if type complete >/dev/null 2>&1
then
    if complete -o >/dev/null 2>&1
    then
        COMPDEF="-o complete"
    else
        COMPDEF="-o default"
    fi
    complete -a alias unalias
    complete -d cd pushd popd pd po
    complete $COMPDEF -g chgrp 2>/dev/null
    complete $COMPDEF -u chown
    complete -j fg
    complete -j kill
    complete $COMPDEF -c command
    complete $COMPDEF -c exec
    complete $COMPDEF -c man
    complete -e printenv
    complete -G "*.java" javac
    complete -F complete_runner -o nospace -o default nohup 2>/dev/null
    complete -F complete_runner -o nospace -o default sudo 2>/dev/null
    complete -F complete_services service
    # completion function for commands such as sudo that take a
    # command as the first argument but should complete the second
    # argument as if it was the first
    complete_runner()
    {
        # completing the command name
        # $1 = sudo
        # $3 = sudo
        # $2 = partial command (or complete command but no space was typed)
        if test "$1" = "$3"
        then
            set -- `compgen -c "$2"`
        # completing other arguments
        else
            # $1 = sudo
            # $3 = command after sudo (i.e. second word)
            # $2 = arguments to command
            # use the custom completion as printed by complete -p,
            # fall back to filename/bashdefault
            local comps
            comps=`complete -p "$3" 2>/dev/null`
            # "complete -o default -c man" => "-o default -c"
            # "" => "-o bashdefault -f"
            comps=${comps#complete }
            comps=${comps% *}
            comps=${comps:--o bashdefault -f}
            set -- `compgen $comps "$2"`
        fi
        COMPREPLY=("$@")
    }

    # completion function for Red Hat service command
    complete_services()
    {
        OIFS="$IFS"
        IFS='
        '
        local i=0
        for file in $(find /etc/init.d/ -type f -name "$2*" -perm -u+rx)
        do
            file=${file##*/}
            COMPREPLY[$i]=$file
            i=$(($i + 1))
        done
        IFS="$OIFS"
    }
fi

zshの場合:

# set command completions
compctl -a {,un}alias
compctl -b bindkey
compctl -c command
compctl -/ {c,push,pop}d
compctl -E {print,set,unset}env
#compctl -c exec
compctl -f -x "c[-1,exec]" -c -- exec
compctl -j fg
# no -g according to zshcompctl
#compctl -g {ch}grp
compctl -j kill
compctl -c man
compctl -c nohup
compctl -u {ch}own
compctl -o {set,unset}opt
compctl -f -x "c[-1,sudo]" -c -- sudo
compctl -c {whence,where,which}
compctl -M '' 'm:{a-zA-Z}={A-Za-z}'

# make file name completion case-insensitive
zstyle ':completion:*' matcher-list '' 'm:{a-zA-Z}={A-Za-z}'

1

安全な圧縮

圧縮プログラムは、デフォルトで元のファイルを削除します。私はそれが好きではありません。

alias gzip='gzip --keep'
alias bzip2='bzip2 --keep'
alias xz='xz --keep'
alias lzma='lzma --keep'

複数行プロンプト

tag() {
    TAG="${TAG} [$1]" exec zsh
}

reset_tags() {
    TAG='' exec zsh
}

color='green'
if [ "${USER}" = 'root' ]; then
    color='red'
fi

export PS1="${TAG} %B%F{yellow} *** %F{blue}%~\

%F{yellow}%(1j.[%j] .)%F{red}%(?..(%?%) )%F{${color}}%n@%m %F{blue}%# %f%b"
export RPS1='%B%F{blue}%D{%Y-%m-%d} %F{green}%D{%H:%M:%S}'
export PS2='%B%F{red}%n@%m%k %B%F{blue}%_> %b%f%k'
unset color
  • 現在のディレクトリを別の行に表示します。80列の端末で深いディレクトリツリーを処理する場合に役立ちます。
  • グラフィカル環境を使用する場合、コーナーに時計を置くことは素晴らしいことです。このプロンプトは時間を示します。残念ながら、更新するにはEnterキーを押す必要があります。
  • 環境変数で「タグ」を表示できます。例:

    tag 'DONT SHTUDOWN!!'
    reset_tags
  • コードはこれに少なくとも部分的に基づいてます。

履歴設定

dont_log() {
    HISTFILE="/dev/null" TAG="${TAG} %B%F{red}[LOGGING DISABLED]" zsh
}

if [ "${HISTFILE}" != '/dev/null' ]; then
    # history
    export HISTFILE="${HOME}/.zsh/history"
    export HISTSIZE="4096"
    export SAVEHIST="4096"

    # Don't overwrite, append!
    setopt APPEND_HISTORY

    # Write after each command
    # setopt INC_APPEND_HISTORY

    # Killer: share history between multiple shells
    setopt SHARE_HISTORY

    # If I type cd and then cd again, only save the last one
    setopt HIST_IGNORE_DUPS

    # Even if there are commands inbetween commands that are the same, still only save the last one
    setopt HIST_IGNORE_ALL_DUPS

    # Pretty    Obvious.  Right?
    setopt HIST_REDUCE_BLANKS

    # If a line starts with a space, don't save it.
    setopt HIST_IGNORE_SPACE
    setopt HIST_NO_STORE

    # When using a hist thing, make a newline show the change before executing it.
    setopt HIST_VERIFY

    # Save the time and how long a command ran
    setopt EXTENDED_HISTORY

    setopt HIST_SAVE_NO_DUPS
    setopt HIST_EXPIRE_DUPS_FIRST
    setopt HIST_FIND_NO_DUPS
fi
  • ここから恥知らずに盗まれ
  • ロギングを明示的に無効にするサポートを追加しました。CLI引数としてパスワードを必要とするプログラムを扱う場合に役立ちます。

0
  • bashrc:私はzshユーザーです。そのため、bashrcには、システムで使用可能な場合にzshを開始する数行があります。
  • zshrc:grshのようなものからzshrcをコピーする代わりに(zshrcはかなり優れているので、自分でロールバックしたくない場合はおそらく最高のものの1つです)私は自分のzshrcを書きます。
    • カスタマイズされたプロンプトがあります。他のいくつかのものの中で、最後のコマンドが0でない場合の最後のコマンドの戻りコードを示します。
    • エイリアスがあります。私は非常に多くのサーバーにアカウントを持っているため、システムで使用可能なコマンドのバージョンを確認し、それに応じてエイリアスを設定する必要がある場合があります。
    • PATH変数を設定します。
    • 他の環境変数をいくつか設定します(たとえば、$ EDITOR)
  • vimrc:私はvimユーザーなので、カスタマイズされた配色とカスタマイズされた配色があります。
  • screenrc:GNU screenを使用して、複数の端末を開く必要を回避し、ログインしていないときに履歴を保存するため、独自のscreenrcを使用しています。

0

オートコンプリートとファイル名のスペル修正をオンにできる場合!それはおそらくあなたの時間を最も節約する二つのことです。次に、それらの使用方法を学びます-BashとZshにはタブ補完機能があります。Kshのエスケープバックスラッシュは非効率的であるため、Kshにはお勧めしません。

私はZshを使用していますが、このようなエイリアスはCshを除くほとんどすべてのシェルで機能します。

alias l='ls -FC --color=tty'
alias ls='ls -FC --color=tty'
alias h=history
alias m=more
alias vi=vim
alias cx='chmod +x'

「ps」のエイリアスがそこにあるように思えますが、「ps」をさまざまな方法で使用していることに気付き、今のところ何も見つかりませんでした。

Zshで、RPROMPT(タイプミスではない!)変数を設定します。

RPROMPT='%d'

ディレクトリ全体がコマンドラインの右側に表示され、カットアンドペーストの準備が整います。それについては後で詳しく説明します。

1つのファイルに複数のvim-windowsと複数のバッファーを含めることができるため、適切にコンパイルされた最新のVimを使用する必要があります。.vimrcには次のようなものが含まれている可能性があります。

set mouse=c
set ml
set mls=5
set nowrap
set nobackup
set nonu
set showmatch
set tabstop=4
set shiftwidth=4
set showmode
set showcmd
set ruler
set notextauto
set laststatus=2
set mps=(:),{:},[:],<:>
set modelines=0

それらの多くは個人的な好みですが、8スペースのタブはコードの可読性を低下させ、それを証明するためにさまざまな研究が行われていると思います。

また、「mouse = c」も重要です。マウスを使用してファイル内を移動しないでください。キーボードから手を離し、マウスに触れてマウスを戻すのは遅いです。「hjkl」カーソル移動、およびその他のキーボードページングとカーソル移動キーを使用します。

X11を使用している場合は、Xtermの構成に対していくつかのことを行う必要があります。これは私の.Xresourcesファイルから出てきます:

XTerm*VT100.scrollBar: true
XTerm*VT100.saveLines: 1000
XTerm*VT100.cutNewLine: false 
XTerm*VT100.cutToBeginningOfLine: false
XTerm*VT100.charClass: 33:48,35:48,37:48,42:48,45-47:48,64:48,95:48,126:48
XTerm*VT100*translations: #override \n\
    <Key>F2: insert-selection(PRIMARY,CUT_BUFFER0)

デフォルトでXtermにスクロールバーを与え、1000行のテキストをバッファに保存します。これは非常に標準的なことです。

charClassディレクティブは、「単語」に「。」、「/」、「*」などを含めます。「/」で区切られたファイル名の任意の部分をダブルクリックすると、「:」文字を除いた全体が表示されます。

cutToBeginningOfLineは、上記のZsh RPROMPTで動作します。コマンドラインのRHSに表示される現在の作業ディレクトリのパスをトリプルクリックすると、パスのみが選択されます。コピーは単語の先頭で停止します。慣れれば非常に効率的です。

上記のXリソースは、ペーストキーにもなります。そうすれば、コピーした後(おそらくマウスを使用して)、クリックしてマウスに手を戻さずに貼り付けることができます。


FWIW、ファイル名の補完はEsc``EscまたはEsc``=ksh、でTab動作しksh93ます。誰かがそれにこだわっているか、それを好む場合に備えて。
ミケル

0

最後のコマンドのゼロ以外の戻り値を追加するのは素晴らしいアイデアです。オリジナルのポスターは.profile / .cshrc / .bashrcについて具体的に尋ねていたと思います。他の一般的にカスタマイズされたRCファイルのリストに言及する価値はありますが、この質問ではシェルのカスタマイズのみに固執します。

また、最近、シェルが画面で実行されているときに表示されるフラグをプロンプトに追加しました。solarisの「ptree」コマンドを使用して祖先プロセスを検索しますが、Linuxで「pstree」コマンドを使用して同じことを行うこともできます。

SCREEN=""
if [ -f /usr/bin/ptree ]; then
   if ptree $$ | grep -v grep | grep -w screen > /dev/null 2>&1; then
       SCREEN="SCREEN "
   fi
fi

最後のコマンドのリターンコードを埋め込む方法を理解するのに数分かかりましたので、ここに投稿します。

PROMPT_COMMAND='if [ "$?" = 0 ]; \
        then RC=""; \
        else RC="RV=$? "; fi; PS1="% ${SCREEN}\h $RC\w\n% "'

それはもっと美しくできると確信しています。:-)

今後のヒントは、$の読み取りに注意してください。「if [」を使用した後。左括弧が組み込みの場合、$?の値はオーバーライドされません。しかし、[が組み込まれていないシェルを使用すると、$?の値がリセットされます。テスト後。$を割り当てる方が安全ですか?すぐに一時変数に入れて、その変数をテストします。


あなたの答えはおそらくコメントでしょう...このように!
VxJasonxV

0

最後に変更されたファイルを表示する

多くの場合、最新のファイルを見たいと思います。たとえば、私はlogsディレクトリにいて、どのファイルが機能していないのかを調べるための最初の場所であるため、どのファイルが最新であるかを知りたい場合があります。

ls -lt | head 入力するのは面倒ですが、ここに別の方法があります:

# show the most recently changed file
latest()
{
    if test $# -ne 0
    then
        /bin/ls -t -1 -d "$@" | head -n 1
    else
        /bin/ls -t -1 -d * | head -n 1
    fi
}

また、ワイルドカードまたはファイルのリストも受け取ります。たとえば、

$ latest mail* syslog*
syslog

これは、すべてのログファイルの名前にタイムスタンプが含まれている場合に特に便利です。タイムスタンプの形式を気にすることなく、そのプログラムの最新のログを見つけることができます。

$ touch -d 'Feb 1' mylog.20110201
$ touch -d 'Feb 2' mylog.20110202
$ touch -d 'Feb 3' mylog.20110203
$ latest mylog*
mylog.20110203

そして、これは行の代わりに行-<number>を印刷するオプションをサポートする拡張バージョンです<number>

# show the most recently changed file
latest()
{
    local count=1               # how many files to print
    local promptlines=5         # how many lines to leave for the prompt
                                # when printing a screenful with -s
    local usage="Usage: latest [-n <number>] [-s] [--] [pattern]"
    while test $# -gt 0
    do
        case $1 in
        # -- = stop processing options
        --)
            shift
            break
            ;;
        # -n <number> = <number> files
        -n)
            if test -n "$2"
            then
                count=$2
                shift 2
            else
                echo "$usage" 1>&2
                return 1
            fi
            ;;
        # -s = one screenful
        -s)
            count=$((LINES - promptlines))
            shift
            ;;
        # -<number> = <number> files
        -[0-9]*)
            count=${1#-}
            shift
            ;;
        # anything else starting with a minus is a usage error
        -*)
            echo "$usage" 1>&2
            return 1
            ;;
        *)
            break
            ;;
        esac
    done

    if test $# -ne 0
    then
        /bin/ls -t -1 -d "$@" | head -n $count
    else
        /bin/ls -t -1 -d * | head -n $count
    fi
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.