1つのディレクトリを上に移動したい場合は、
cd ..
しかし、7つのディレクトリを上に移動したい場合、7回入力する以外にこれを行う方法はありますcd ..
か?
cd ../../../../../../../
また、別の便利なナビゲーションのヒントは、たとえば、ディレクトリ(Aと呼びます)から7つのディレクトリが上にある別のディレクトリ(Bと呼びます)に切り替え続ける場合です。
したがって、ディレクトリAにいる場合:
A> cd ../../../../../../../
B> // Now you're in directory B and want to go back to A
B> cd -
これにより、ディレクトリAに戻り-
ます。前のディレクトリに展開されます。
エイリアスを作成します(あなたの中で〜/ .bashrc)
function cd_up() {
cd $(printf "%0.0s../" $(seq 1 $1));
}
alias 'cd..'='cd_up'
と使用:
$ cd.. 7
UPD: または、より強力なバリアントを作成し、現在のパスのディレクトリ名にcdします。
# cd up to n dirs
# using: cd.. 10 cd.. dir
function cd_up() {
case $1 in
*[!0-9]*) # if no a number
cd $( pwd | sed -r "s|(.*/$1[^/]*/).*|\1|" ) # search dir_name in current path, if found - cd to it
;; # if not found - not cd
*)
cd $(printf "%0.0s../" $(seq 1 $1)); # cd ../../../../ (N dirs)
;;
esac
}
alias 'cd..'='cd_up' # can not name function 'cd..'
使用する:
$ cd /home/user/documents/projects/reports/2014-10-01
$ cd.. doc
$ pwd
> /home/user/documents
pushd .
1つのディレクトリを記憶し、そのディレクトリpopd
に戻るために使用できます。
よく使うコマンドがある場合は、エイリアスを作成します。
あなたはタイプすることができます
alias ..='cd ..'
alias ...='cd ../..'
次に、を使用..
して1レベル上に移動し、 ...
2レベル上に移動できます。
これが私が見つけたわずかな改善です:
通常、cd ..で1つのディレクトリに戻ると、1つ後に1つのディレクトリに進むことになります。これを機能させるには、エイリアスではなく関数を使用する必要があるため、次の代わりに次のようにします。
alias ..=”cd ../”
alias ..2=”cd ../../”
使用できます:
..()
{
cd ../$@
}
..2()
{
cd ../../$@
}
ただし、これを使用すると、この関数のコマンド補完が欠落していることがすぐに明らかになり、有用性が大幅に低下します。したがって、私は戻って、この関数用に独自のbash補完関数を追加しました。これは、回避したい場合は、〜/ .bashrcまたは〜/ .bashrcから呼び出される任意のファイル(たとえば、〜/ .bash_completion)に貼り付けることができます。散らかっています。完了コードは次のとおりです。
_..()
{
local cur=../${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -d — $cur) )
local i=${#COMPREPLY[*]}
while [ $((--i)) -ge 0 ]; do
COMPREPLY[$i]=$(echo ${COMPREPLY[$i]} | sed -r ‘s/(\.\.\/)*//’)
done
}
complete -F _.. -o nospace -S / ..
_..2()
{
local cur=../../${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -d — $cur) )
local i=${#COMPREPLY[*]}
while [ $((--i)) -ge 0 ]; do
COMPREPLY[$i]=$(echo ${COMPREPLY[$i]} | sed -r ‘s/(\.\.\/)*//’)
done
}
complete -F _..2 -o nospace -S / ..2
.bashrc
この関数をどこからコピーしたか覚えていませんが、私にとってはうまく機能します(たとえば、ファイルに入れることができます)
up() { local p= i=${1:-1}; while (( i-- )); do p+=../; done; cd "$p$2" && pwd; }
たとえば、7つのディレクトリを上に移動するには、次のように入力する必要があります。up 7
あなたはこのようにそれを行うことができますcd ../../../../../../../
ナビゲーションを改善するために適用できるいくつかのハックについてのクールな記事があります。
for i in {1..7}; do cd ..; done
うーん、そうは思いません。
cd ../../../..
しかし、7回のcdの代わりに書くことができます(など)。
次の関数をに追加できます.bashrc
:
# ~/.bashrc
up() {
for D in $(seq 1 $1);
do
cd ..
done
}
したがって、使用法は単純に次のようになります。
user ~ $ up 3
user / $
この気の利いた機能は、両方向への上昇をサポートします。
/ a / b / c / dにいる場合は、「up1」で/a / b/cに移動します。それはかなり標準的であり、他のほとんどの回答でカバーされています。
さて、特別な部分のために; 負の数を使用すると、反対方向から移動します。したがって、/ a / b / c / dにいる場合、「up-1」は/aに移動します。
function up() {
UP=$1
if [[ $UP =~ ^[\-0-9]+$ ]]; then
if ((UP<0)); then
UP=${UP#-}
cd $(echo $PWD | cut -d/ -f1-$((UP+1)))
else
cd $(printf "%0.s../" $(seq 1 ${UP}));
fi
fi
}
githubでダウンロード/インストールできます。
魚のユーザーのために、
function cdd
for x in (seq $argv)
cd ..
end
end
そしてそれをあなたに保存してください:〜/ .config / fish / features / cdd.fish
そして、$ cdd 3
3つのディレクトリを上に移動します。
深いディレクトリ構造のナビゲートを少し簡単にする小さなユーティリティを作成しました:https ://github.com/ianatha/up 。
インストールするとup
、次のことができます。
$ pwd
/Users/jdoe/Developer/backend/src/main/java/com/example/service/db/
$ up example
$ pwd
/Users/jdoe/Developer/backend/src/main/java/com/example/
$ up 4
$ pwd
/Users/jdoe/Developer/backend/src/
この解決策を試すことができます。それは私にとってはうまくいきます:
#!/bin/bash
#this sctipt should take one parameter - number of steps. And do "cd" command step times.
# example usage: cd `cde 3`
NEW_PATH=$(pwd)
step="../"
upper=""
for i in seq $1
do
upper="$upper$step"
done
echo $upper
〜/.barshファイルにエイリアスを作成しました。そして、これは私にとってはうまくいきます。
たとえば、3つのフォルダまで。
$ cd `cde 3`