タグ付けされた質問 「alias」

エイリアスは基本的に、キーボードショートカット、省略形、長いコマンドシーケンスの入力を回避する手段にすぎません。これにより、コマンドラインでの入力を大幅に節約でき、コマンドとオプションの複雑な組み合わせを覚える必要がなくなります。

3
バッシュで、エイリアスに余分な引数を含めない方法は?
私は次のようなことをしようとしています alias ftp='echo do not use ftp. Use sftp instead.' ftp誤って使用されることはありません。しかし、私はそれに気づきました ftp abcd.com コマンドをエコーさせます do not use ftp. Use sftp instead. abcd.com ためabcd.comの引数であると解釈されますecho。 Bashをabcd.com置換に追加しないようにする方法、またはechoそれを追加の引数として使用しないようにする方法はありますか?(各アプローチの解決策はありますか?) できると思った alias ftp='sftp' しかし、コマンドを一緒に停止させて、使用しないように気づかせたいだけですftp。
10 bash  alias  ftp  echo 

1
Bashで「エイリアス」を作成する方法はいくつありますか?
私は2つの方法しか知りません:alias foo=barとfunction foo() { bar }。 私が質問している理由は、bashセッションの1つで突然- がエラーになるlnため、コマンドを実行できないためbashです-bash: /usr/local/.../ln: No such file or directory(/usr/local/.../は私のPATH環境変数のエントリの1つです)。 PATHただし、問題が発生することはありません。実行するwhich lnと期待されるバイナリが出力されるためです/usr/bin/ln(絶対パスを指定すれば問題なく実行できます)。 私はまたのためにチェックしln、私にaliasとfunction宣言し、何もありません。 $ declare -f | grep ln $ alias | grep ln 問題は1つのbashセッションで発生しているだけです。新しいシェルを開始すると、再び正常に機能しますが、この特定のbashセッションで突然この問題が発生した原因を知りたいのです。 これを引き起こしている可能性のあるものに関するアイデアはありますか?
10 bash  shell  alias 

1
bashrcの遅延置換
〜/ .bashrcが実行されるとき(ターミナルを開くとき)ではなく、実行時に置換~/.bashrcを評価$()するエイリアスをどのように取得しますか? このコマンドを頻繁に実行して、エイリアスを追加します。 svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff ただし、~/.bashrcエイリアスとして追加すると、ターミナルを開いたときの評価にハードコードされていることがわかります。 $ alias alias svnbranch='svn diff -r 178184:HEAD svn+ssh://branches/t4252 | colordiff' 端末を開いた場合、~エラーが発生します。 svn: E155007: '/home/dotancohen' is not a working copy svn: E155007: '/home/dotancohen' is …
10 bash  shell  quoting  alias  bashrc 

6
dfとmountを使用する場合、物理ディスクのみを表示します
dfまたはを使用する場合mount、最も重要なのは物理ディスクパーティションです。最近では、これらのコマンドの出力は、一時的または仮想的なファイルシステム、cgroup、その他私が定期的に関心のないものに圧倒されています。 出力の物理パーティションは常に「/」で始まるためdf、およびのエイリアスを作成してみましたmount。 alias df1="df | egrep '^/'" alias mount1="mount | egrep '^/'" これは問題mount1なく動作します(ただし、 ' /'は赤で表示されます)。ただしdf1、-hオプションをに追加したい場合があるためdf、実行できませんdf1 -h。使用する可能性のあるすべてのオプションの組み合わせにエイリアスを設定したくない場合。私は本当にbashで関数を定義することを検討する必要がありますか?より良い解決策はありdf1ますか?

2
以降、新しいエイリアスは使用できません。
今までは、シェルのセミコロンは(どういうわけか)改行と同じ意味だと思っていました。だから私はそれに驚いた alias <name>=<replacement text>; <name> <name>次の行で知られていますが、不明です。csh、tcsh、sh、kshとbash同じように動作。少なくともcshエイリアスが直接使用されているか、スクリプトがsemccolonの前に供給されているかは問題ではありません。エイリアスは後ではわかりません;が、次のコマンドラインではわかります。これはバグですか、それとも意図された動作ですか?
9 shell  alias 

2
ユーザーが実行したいコマンドを実行する前に別のコマンドを実行します
lsツールの元の動作を次のように変更したいとします。 $ ls Hello World file1 file2 ... これどうやってするの? 実行しているときls、私は別のコマンドレットの発言権を実行したいと思いますecho "Hello World!"。 私が目にする簡単な解決策は、エイリアスを使用することです: alias orig_ls="ls" alias ls='echo "Hello World!"' ただし、実行orig_lsすると出力されるため、これは実際のソリューションではありません"Hello World!"。

1
複数の一時エイリアスを作成する
私はrootユーザーではないため、すべてのエイリアスが作成されたグローバルエイリアスファイルにアクセスできませんが、ログインしているセッションでのみアクティブなエイリアスをいくつか作成します。コマンドalias x='cd /parent/child'を使用して、xコンソールで入力するだけで使用できるエイリアス&dirを/ Parent / Childに変更します。 ただし、複数のエイリアスを作成したいし、作成するエイリアスを毎回入力する必要もありません。 すべてのalias = 'do this'行をファイルに入れて(777権限を付与)、ファイルを実行すると、これらのすべてのエイリアスがログインするたびに作成されることを期待しました。しかし、それは起こりませんでした。 例: alias x='cd /parent/child' alias y='cd /a/b/c' alias z='tail -0f some.log' 私もファイルでこれを試しましたが無駄でした: alias x='cd /parent/child';alias y='cd /a/b/c';alias z='tail -0f some.log' 私が試したエイリアス名は、グローバルエイリアスにすでに存在していませんでした。(エイリアスを入力して、画面に出力を見ました)。
9 alias 

1
空のディレクトリを再帰的に削除できますか?
古いバージョンのUnixでは、rmコマンドはディレクトリが空の場合にディレクトリを削除しました。rmのResearch Unix Eighth Editionのマニュアルページから:「エントリがディレクトリの場合、空の場合のみ削除されます。」私はこの動作が好きなので、このエイリアスを自分の中に持ってい/etc/profileます。alias rm='rm -d'私はGNU coreutilsバージョンのを使用しています。このバージョンではrm、ディレクトリが空の場合は先に進み、ディレクトリを削除するように-d指示rmしています。 ここまでは順調ですね。このエイリアスによりrm、昔と同じように使用できます。しかし、私はそれをさらに一歩進めたいと思います。私は...したいrmディレクトリに他のディレクトリが含まれている場合でも、ディレクトリのみが存在する限り、ディレクトリを削除します。ディレクトリ構造がどのくらい深いかは関係ありません。そこにファイルがなく、空になったら(一番下に到達したら)、ディレクトリをrmすべて削除します。 これは、通常として機能し、rm渡されたファイルを削除するエイリアスとして記述できますか?
9 directory  rm  alias 

2
Bash:変数でエイリアスを使用する
それぞれの引数をコマンドとして実行するbashスクリプトを書いています。これはmyのコマンドでは機能しますが、PATHエイリアスでは機能しません。スクリプトで直接エイリアスを呼び出すことはできますが、引数として渡されたエイリアスを呼び出すことはできません。 問題(私は想定)は、エイリアスが変数の前に展開されることです。変数からエイリアスを実行する方法はありますか? サンプルスクリプト: #!/bin/bash # File: runall shopt -s expand_aliases source ~/.aliases while (( "$#" )); do $1 shift done runall "echo test"動作しますがrunall "myalias"、runall: line 8: myalias: command not found
9 bash  alias 

4
特定のファイルまたはディレクトリのエイリアスを設定するにはどうすればよいですか?
よく使うファイルがいくつかあります。たとえば、いくつかの構成ファイルまたはログファイル。Apacheのログファイルについて考えてみましょう。私は頻繁にしたいtailか、grepそれ。書く代わりに: tail -50 /var/log/apache2/error_log 私は書くことを好む tail -50 apachelog つまり、apachelogこのファイル名のエイリアスとして機能します。しかし、でエイリアスを定義する場合bashrc、それはコマンド全体である必要があります。後で参照できるように、(明らかに)ファイル名のエイリアスにすることはできません。これを達成する方法はありますか? 注:実行したいファイルやコマンドが多岐にわたるため、これらのさまざまなオプションのすべてに対して関数やエイリアスを作成することは、私の推奨する解決策ではありません。
9 bash  alias 

3
zshのエイリアスとbashのエイリアスの違い
調べてみましたが、決定的なものは見つかりませんでした。zshのエイリアスコマンドとbashのエイリアスコマンドに違いはありますか?そうでない場合は、2つのシェル間で一連のエイリアスを共有して、意図したとおりに機能することを期待できるということですか?
9 bash  zsh  alias 

2
bashエイリアスは、shopt expand_aliasesを使用しても展開されません
bash -c構成内でエイリアスを実行したい。 bashマニュアルには書かれています: expand_aliasesシェルオプションが以下を使用して設定されていない限り、シェルがインタラクティブでない場合、エイリアスは展開されません。shopt この例では、明示的hiに設定したときにエイリアスが見つからないのはなぜexpand_aliasesですか? % bash -O expand_aliases -c "alias hi='echo hello'; alias; shopt expand_aliases; hi" alias hi='echo hello' expand_aliases on bash: hi: command not found 私は走っていGNU bash, version 5.0.0(1)-release (x86_64-pc-linux-gnu)ます。 コンテキスト:アイドル優先度でエイリアスを実行できるようにしたいと思います。 #!/bin/bash exec chrt -i 0 nice -n 19 ionice -c 3 bash -c ". ~/.config/bash/aliases; shopt -s …
8 bash  alias 

6
straceがrmのエイリアスを無視するのはなぜですか?
コマンドのaliasセットがありrmます。aliasコマンドを実行すると、これが出力として得られるものです。 alias rm='rm -i' これで、rmコマンドを実行すると、期待どおりに正常に動作します。 rm ramesh rm: remove regular empty file `ramesh'? y 今、私はコマンドを実行するときに呼び出されるシステムコールについて学習していました。そのために、straceコマンドを実行したときに呼び出されるファイルを一覧表示するコマンドについてここから知るようになりました。コマンドは以下の通りです。 strace -ff -e trace=file rm ramesh 2>&1 コマンドは、コマンドに設定したエイリアスを無視することを除いて、完全に正常に機能しrmます。ユーザーに確認せずにファイルを削除します。 それで、straceこのようなエイリアスを無視しますか?もしそうなら、なぜそうなのですか? 編集: これが何かをする必要があるかどうかはtype -a rmわかりませんが、出力は次のようになります: rm is aliased to `rm -i' rm is /bin/rm それで/bin/rm、この場合、削除する前にユーザーにプロンプ​​トが表示されないのはなぜですか?
8 alias  strace 

6
上書きを求められずにファイルをコピーまたは移動する方法は?
私が試したこと: root@host [/home1]# cp -f hello /home3 cp: omitting directory `hello' root@host [/home1]# cp -rf hello /home3 cp: overwrite `/home3/hello/.buildpath'? y cp: overwrite `/home3/hello/.bash_logout'? y cp: overwrite `/home3/hello/.project'? ^C 上書きするかどうかは常に尋ねられます。mvを使用しても機能しません。だから私は何をすべきですか? 私が試した他のこと: root@host [/home1]# cp -rf hello /home3 cp: overwrite `/home3/hello/.buildpath'? y cp: overwrite `/home3/hello/.bash_logout'? y cp: overwrite `/home3/hello/.project'? ^C root@host …
8 shell  alias  cp 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.