Bashを使用して最もお気に入りのコマンドライントリックは何ですか?[閉まっている]


156

私たちは皆<ctrl>-R、履歴を逆検索する方法を知っていますが、設定する<ctrl>-Sと順方向検索に使用できることを知っていましたstty stop ""か?また、bind -pを実行して、すべてのキーボードショートカットを一覧表示したことがありますか?Mac OS Xには、デフォルトで455以上あります。

bashを使用した最もお気に入りの1つのあいまいなトリック、キーボードショートカット、またはショップ構成は何ですか?


2
これを「あなたのシングルで一番好きなものは何ですか」と言い換えてください。これにより、人々は投票のように特定の回答に賛成投票できます。
SCdF 2008

>これを言い換えて、「あなたの最もお気に入りの1つは何ですか」と言ってください。できました。
Martin Klinke、

1
このまさに質問のためのStackOverflowクローンがあります:commandlinefu.com
rkb

これらの455のデフォルトのキー割り当てのうち232だけが「自己挿入」(「このキーを入力」)以外のことを行います。$ bind -p | grep -v self-insert | wc
Ed Brannin 09年

ここにいくつかのきちんとしたものがあります。しかし、bashが... Emacsのモードにあるときにそれらのかなりの数だけ働くことに留意すべきである
ミズーリ州

回答:


157

サフィックスのあるファイルの名前を変更/移動する:
cp /home/foo/realllylongname.cpp{,-old}

これは次のように拡張されます。
cp /home/foo/realllylongname.cpp /home/foo/realllylongname.cpp-old


12
驚くばかり!これを試して覚えておく必要があります。
Jon Ericson

9
逆を行う(.cpp-oldから.cppに移行する)には、cp /home/foo/realllylongname.cpp{-old、}
Michael

振り返ってみると明らかですが、自分でそれを行うことを覚えているとは思いません。ありがとう!
Zecc

150
cd -

これは、戻るボタンに相当するコマンドラインです(前のディレクトリに移動します)。


6
私自身、ディレクトリスタックを使用pushdpopdて維持することを好みます。
Alex M

21
しかし、「cd-」には、pushdを使用することを覚えていなくても機能するという利点があります。
セルジオアコスタ

10
「cd」を使用すると、ホームディレクトリに移動します。
dr-jan

これがman cdor cd --help(少なくとも私のもの)に現れないのは興味深いことです。
HalilÖzgür11年

135

別のお気に入り:

!!

最後のコマンドを繰り返します。次の形式で最も役立ちます:

sudo !!

81
それはあなたにもそれについて本当に怒っているように聞こえるようにする追加の利点があります。「コンピューター、これをやって」"アクセスが拒否されました"。"やれ!!"
nickf 2008

それはほとんど知られていない!:-)
hoyhoy

10
実行できる同様のこと:mkdir testdir; cd !$..これは実行されますcd [last word of previous line](例ではcd testdir
dbr

13
私をサンドイッチ須藤にしよう!!
Kibbee 2009

!!、!$、!-1:^ foo ^ barが好きなら、 "Space:magic-space"もバインドします。 stackoverflow.com/questions/603696/...
ユ・

81

私のお気に入りは '^ string ^ string2'で、最後のコマンドを取得し、stringをstring2に置き換えて実行します

$ ehco foo bar baz
bash: ehco: command not found
$ ^ehco^echo
foo bar baz

Bashコマンドライン履歴ガイド


これは貪欲ではありません。どうすれば貪欲にできますか?
Altreus 2008年

9
!!:gs/ehco/echo/
andre-r

そのガイドの2ページ目は不可欠です
jmoz

1
@アンドレ-R:!!:gs/ehco/echo/グローバル検索を実行し、最後のコマンド(協議に代わる!!stackoverflow.com/questions/68372/...)。これは^ehco^echo、「ehco」の1つのインスタンスを置き換えるだけではなく、より正確な応答になります!!:s/ehco/scho
Iceland_jack 2010

64

名前を変更

例:

$ ls
this_has_text_to_find_1.txt
this_has_text_to_find_2.txt
this_has_text_to_find_3.txt
this_has_text_to_find_4.txt

$ rename 's/text_to_find/been_renamed/' *.txt
$ ls
this_has_been_renamed_1.txt
this_has_been_renamed_2.txt
this_has_been_renamed_3.txt
this_has_been_renamed_4.txt

とても便利


3
うわー、私はこれまでずっとbasename、mv、{}のトリックを使ってこれをしているバカです。/ foreheadsmack。
グレッグリンド

7
ただし、名前の変更は、他の投稿のようにbash / readline固有ではありません。

1
ほとんどの場合、zshディストリビューションのzmvがはるかに優れています。
ZyX

util-linux-ngにも名前変更コマンドがあり、この回答で言及されているものとは異なります。ここで説明するコマンドは、実際にはmmvです。
クリスチャンCiupitu

60

私はのファンだ!$!^!*最後の項目、最初の非コマンドアイテム、およびすべての非コマンドアイテム:最新の提出、コマンドラインから、戻って、expandos。ウィットするには(シェルが最初にコマンドを出力することに注意してください):

$ echo foo bar baz
foo bar baz
$ echo bang-dollar: !$ bang-hat: !^ bang-star: !*
echo bang-dollar: baz bang-hat: foo bang-star: foo bar baz
bang-dollar: baz bang-hat: foo bang-star: foo bar baz

これは、たとえばls filea fileb、のvi !$いずれか、または両方を編集する場合に便利ですvimdiff !*n次のように「th番目の引数」に一般化することもできます。

$ echo foo bar baz
$ echo !:2
echo bar
bar

最後に、パス名で、あなたが追加することで、パスの部分で取得することができます:hし、:t上記expandosのいずれか:

$ ls /usr/bin/id
/usr/bin/id
$ echo Head: !$:h  Tail: !$:t
echo Head: /usr/bin Tail: id
Head: /usr/bin Tail: id

'echo !! 2'が機能しなかったので、後の投稿から、それが
正しい

8
"bind Space:magic-space"を.bashrcと任意の!スペースを押すと、組み合わせが自動的に展開されます。
ユ・

47

コマンドを実行するときに、前の引数を使用してコマンドを実行したい場合があります。これを行うには、次のショートカットを使用できます。

$ mkdir /tmp/new
$ cd !!:*

findを使用する代わりに、ファイルのリストに対して一連のコマンドを実行する必要がある場合は、1行のループを解除します。

for file in *.wav; do lame "$file" "$(basename "$file" .wav).mp3" ; done;

.bash_login(または.bashrc)でコマンドライン履歴オプションを構成すると、非常に便利です。以下は、Macbook Proで使用する設定の幹部です。

以下を設定すると、bashは履歴内の重複するコマンドを消去します。

export HISTCONTROL="erasedups:ignoreboth"

私も履歴サイズをかなり高く上げています。何故なの?今日のマイクロプロセッサの速度が低下するようには見えません。

export HISTFILESIZE=500000
export HISTSIZE=100000

私がするもう1つのことは、私の歴史の一部のコマンドを無視することです。exitコマンドを覚えておく必要はありません。

export HISTIGNORE="&:[ ]*:exit"

あなたは間違いなくhistappendを設定したいです。そうでない場合、bashは終了時に履歴を上書きします。

shopt -s histappend

私が使用する別のオプションはcmdhistです。これにより、複数行のコマンドを1つのコマンドとして履歴に保存できます。

shopt -s cmdhist

最後に、Mac OS X(viモードを使用していない場合)では、<CTRL> -Sをスクロール停止からリセットする必要があります。これにより、bashがそれを前方検索として解釈できなくなります。

stty stop ""

6
「Alt-」を見つけます。最後のコマンドの最後の単語を繰り返すには、「!!:*」よりはるかに優れています。
ヴァイデンリンデ2008

履歴の追加:1.履歴を定期的に保存します(一度に複数のシェルを開いている場合は-aを使用)export PROMPT_COMMAND = "history -a" 2.他のシェルから履歴を読み取るためのエイリアス。エイリアス-h = 'history -n; 歴史| grep '
ヴァイデンリンデ'09 / 09/17

HISTIGNORE = "[] *"をエクスポートする必要はありません。HISTCONTROL= ignorebothも同じようにする必要があるためです
Weidenrinde

歴史にとってもう1つの良いこと:export HISTTIMEFORMAT = "%Y-%m-%d%H:%M:%S:"
Weidenrinde

「cd !!:*」からいくつかのキーストロークを保存するには、「cd!$」を試してください。「!$」は、最後のコマンドの最後の引数として解釈されます。
Tim Stewart

43

現在のサブディレクトリのみを一覧表示するにどうすればよいですか?

ls -d */

それは簡単なトリックですが、それを見つけるのにどれだけの時間が必要だったかはわかりません。


2
優れた!これらすべての年の間、私が思いつくことができた最高のalias lsd='ls -F | grep --color /'ものは、同じことをリストしますが、より下品な方法でした。ただし、解析を簡単にするために、1行に1つのディレクトリがリストされます。同じことを行うようにコマンドを変更しました:ls -d1 */
Artem Russakovskii

これはどのように作動しますか?「ls -d」は単にをリストします。(奇妙ですが) "ls -d * /"は機能します。
ユー

1
それは少しトリッキーです... "ls -d"は "ls -d ./"や "ls -d /"から "ls -d ./*/"に似ています。'-d'スイッチは 'ls' tuリストをディレクトリエントリのみに設定しますが、パラメータを指定しない場合、現在のディレクトリをパラメータとして使用するため、*のみが含まれます。リストするディレクトリ...
edomaur

1
これまでに発見したことがないなんて信じられません。素晴らしいヒント。
Nick Dixon

言葉がない、すごい!:)
dimba

41

ESC.

最後のbashコマンドから最後の引数を挿入します。思った以上に重宝します。

cp file /to/some/long/path

CD ESC.


これは私にとっては機能します(bash)。Escキーを押してからピリオドキーを押すことに注意してください。ハイフンも何もありません。
ハウラー、2009

9
また、alt-。同じことです。
Mark Ba​​ker、

ええ、それはバッシュだけです。ただし、<esc>(またはAlt-またはMeta-)_は同じ関数にバインドされており、<esc> -_はviモードでも動作します。
Nick Dixon

@hendry私のzshでは実際に動作します。多分あなたはviモードを使いますか?
ZyX 2010年

キーボードのヒットにはkbd-tagを使用します:<kbd> ESC </ kbd>(ただし、コードのフォーマット/インデントと一緒に使用すると、うまく機能しません)。
不明なユーザー、

36

確かに " diff file1.txt file2.txt" できますが、Bashはプロセス置換をサポートしています、次のことができます。diffはコマンドの出力ます。

たとえば、スクリプトで期待どおりの出力が得られるようにしたいとします。スクリプトを<()でラップしてフィードしdiff、迅速でダーティーな単体テストを取得できます。

$ cat myscript.sh
#!/bin/sh
echo -e "one\nthree"
$
$ ./myscript.sh 
one
three
$
$ cat expected_output.txt
one
two
three
$
$ diff <(./myscript.sh) expected_output.txt
1a2
> two
$

別の例として、2つのサーバーに同じRPMリストがインストールされているかどうかを確認するとします。各サーバーにsshし、RPMの各リストを個別のファイルに書き込んでdiff、それらのファイルに対してを実行するのでdiffはなく、ワークステーションからを実行するだけです。

$ diff <(ssh server1 'rpm -qa | sort') <(ssh server2 'rpm -qa | sort')
241c240
< kernel-2.6.18-92.1.6.el5
---
> kernel-2.6.18-92.el5
317d315
< libsmi-0.4.5-2.el5
727,728d724
< wireshark-0.99.7-1.el5
< wireshark-gnome-0.99.7-1.el5
$

http://tldp.org/LDP/abs/html/process-sub.htmlの Advanced Bash-Scripting Guideに他の例があります。


35

私のお気に入りのコマンドは "ls -thor"です

それは、最も最近変更されたファイルを便利な読み取り可能な形式でリストする神々力を呼び起こします。


6
別の、まったく役に立たないが面白いコマンドを思い出します: ls -bart -simpson -ruls。S、ICNR
filiprem

大きなファイルをすばやく見つけることができるので、「ls -tor」も役立ちます。また、雷神の名前の元のスウェーデン語のスペルは、実際には「トール」です。
dala

ls -lortデンマーク語では、デンマーク語の「たわごと」を使用できます。グループを省略し、ヴァルハルの怒りを得ない:)
JesperRønn-Jensen2010

1
「ls -lotr」のように言うこともできます。これは明らかに、トールキンとロードオブザリングと関係があるようです:)
ADEpt

28

もっと目新しさがありますが、賢い...

使用される上位10コマンド:

$ history | awk '{print $2}' | awk 'BEGIN {FS="|"}{print $1}' | sort | uniq -c | sort -nr | head

出力例:

 242 git
  83 rake
  43 cd
  33 ss
  24 ls
  15 rsg
  11 cap
  10 dig
   9 ping
   3 vi

1
ここでは短く、より高速なバージョンがあります:history | awk 'BEGIN {FS="[ \t]+|\\|"} {print $3}' | sort | uniq -c | sort -nr | head
追って通知があるまで一時停止しました。

25

^ R逆検索。^ Rを押して、一致させたい前のコマンドのフラグメントを入力し、必要なコマンドが見つかるまで^ Rを押します。そうすれば、履歴に残っている最近使用したコマンドを覚えておく必要はありません。bashだけでなく、行末を表す^ E、行頭を表す^ A、カーソルの前後をそれぞれ削除する^ Uおよび^ K。


2
何らかの理由で^ Uを思い出せません。削除と削除のショートカットという単語もありませんか?
hoyhoy 2008

1
^ Wはカーソルの前の単語を削除します。(これを使って自由に回答を編集してください。)
Jon Ericson

2
^ Rは非常に有用なので、質問で言及されました:)
Mark Ba​​ker

20

私はしばしばviやlsなどのエイリアスを持っていますが、エイリアスをエスケープしたい場合があります。前のコマンドにバックスラッシュを追加するだけです:

例えば:

$ alias vi=vim
$ # To escape the alias for vi:
$ \vi # This doesn't open VIM

かっこいいですね。


実行することもできますcommand。BashのSHELL BUILTIN COMMANDSマニュアルを参照してください。
Iceland_jack 2011年

17

次に、いくつかの構成の微調整を示します。

~/.inputrc

"\C-[[A": history-search-backward
"\C-[[B": history-search-forward

これは同じように機能し^Rますが、代わりに矢印キーを使用します。これは、(たとえば)入力してcd /media/から上向き矢印を押して、最後に入力したものに移動できることを意味cdします/media/フォルダーます。

(私はGnomeターミナルを使用しています。他のターミナルエミュレータのエスケープコードを変更する必要があるかもしれません。)

Bash補完も非常に便利ですが、はるかに微妙な追加です。で~/.bashrc

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

これにより、プログラムごとのタブ補完が有効になります(たとえば、コマンドラインが evinceすると、evinceで開くことができるファイルのみが表示さコマンドラインオプションも表示されます)。

これでもうまく動作します~/.inputrc

set completion-ignore-case on
set show-all-if-ambiguous on
set show-all-if-unmodified on

+1 bash_completionはすばらしい
prestomation

Macでは、矢印キーを使用した履歴検索は次のコマンドで有効にできます。bind '"\ e [A"':history-search-backward bind '"\ e [B"':history-search-forward
Asmus

17

私は次のものをたくさん使います:

:p修飾子は、履歴結果を印刷します。例えば

!!:p

最後のコマンドを出力して、もう一度実行する前に、コマンドが正しいことを確認できるようにします。入力するだけ!!して実行してください。

同じような調子で:

!?foo?:p

文字列 'foo'を含む最新のコマンドの履歴を検索して出力します。

印刷する必要がない場合は、

!?foo

検索を実行してすぐに実行します。


2
代わりに使用する:pは、あなたも魔法のスペースを使用することができます。stackoverflow.com/questions/603696/...
ユ・

bashrcでconfiure magick-spaceを実行せずに履歴コントロールを拡張するbind Space:magic-space # !pin<space>
SergioAraujo

16

私は秘密の武器を持っています: shell-fu。

何千ものスマートなヒント、クールなトリック、効率的なレシピがあり、ほとんどの場合1つの行に収まります。

私が大好きなもの(ただし、現在ほとんどのUnixシステムにPythonがインストールされているという事実を利用しているので、私は少しごまかしています):

alias webshare='python -m SimpleHTTPServer'

これで、「webshare」と入力するたびに、現在のディレクトリがポート8000​​を介して利用できるようになります。USBキーやリモートディレクトリなしでローカルネットワーク上の友達とファイルを共有する場合に非常に便利です。ストリーミングビデオと音楽も機能します。

そしてもちろん、完全に役に立たないが、それでも多くの楽しみがある古典的なフォーク爆弾:

$ :(){ :|:& };:

本番サーバーでそれを試さないでください...


私はウェブシェアをすべきではないと思います/
Yoo

私はあなたにコマンドを簡略化することができますねpython -m SimpleHTTPServer私は、元のコマンドがない空想何か欠けている場合を除き(
ジェスパーロン・ジェンセン

ええ。フォーク爆弾がOSによってスケルチされる本番サーバーでは、どのユーザーでも作成できるプロセスの数には制限があります。
ドナルフェロー

3
@Donal:それを試して、あなたの発見を報告するべきです。
マイケル・フカラキス2010

12

watchコマンドを別のコマンドと組み合わせて使用​​して、変更を探すことができます。この例は、ルーターをテストしていて、信号対雑音比などの最新の数値を取得したい場合でした。

watch --interval=10 lynx -dump http://dslrouter/stats.html

監視コマンドは本当にクールです。Linux Server Hacksの本で最初に読んだのは約5年前です。それが存在することを誰が知っていましたか?
hoyhoy 2008

11
「ウォッチ」はbashとどのように関係していますか?
Artem Russakovskii 08

11
type -a PROG

PROGが利用できるすべての場所を見つけるために、通常は/ usr / bin / PROGにある場所ではなく、〜/ binのどこかにあるはずです。


1
また、関数かエイリアスかがわかります。PATHそれがあなたの複数の場所にある場合、それはそれらのそれぞれを表示します。
追って通知があるまで一時停止。

11

私はエコーでコマンドを作成し、それらをシェルにパイプするのが好きです:

$ find dir -name \*~ | xargs echo rm
...
$ find dir -name \*~ | xargs echo rm | ksh -s

どうして?それは私がそれをする前に何が行われるのかを見ることができるからです。そうすれば、(ホームディレクトリの削除などの)恐ろしいエラーが発生した場合でも、発生する前にそれを見つけることができます。明らかに、これは破壊的または取り返しのつかない行動にとって最も重要です。


1
スペースが含まれているファイルやフォルダの問題を回避するには、find -print0およびxargs -0を使用することをお勧めします。
neu242 2008

または、名前に空白が含まれているファイルやフォルダを作成して操作しないでください。;-)ユーザーが生成した名前を使用している場合は、提案が不可欠です。
ジョンエリクソン

4
「エコー」だけを削除できるのに、なぜ「| ksh -s」を追加するのですか?
ユー

GNUとパイプする必要が見つかりません:$ find dir -name \\*~ -exec rm {} +
bobbogo

10

大きなファイルをダウンロードするとき、私はよくやります。

while ls -la <filename>; do sleep 5; done

そして、私が終わったとき(またはlsゼロ以外の値が返されたとき)には、ctrl + cを押します。watchプログラムに似ていますが、代わりにシェルを使用するため、プラットフォームなしで動作しますwatch

別の便利なツールはnetcat、またはncです。もし、するなら:

nc -l -p 9100 > printjob.prn

次に、別のコンピューターにプリンターをセットアップできますが、代わりにnetcatを実行しているコンピューターのIPアドレスを使用します。印刷ジョブが送信されると、netcatを実行しているコンピューターによって受信され、にダンプされprintjob.prnます。


なぜこれで、たとえばそうではないのwgetですか?
ポルジュ2008

試してくださいwatch ls -la <filename>(デフォルトの2秒が気に入らない場合は-n5を使用してください)。
テッドパーシバル

1
@Tedは、watchSolaris、Mac OS Xなど、すべてのプラットフォームで使用できるわけではありません。@ Porges、意味がわかりません。wgetはポートでもリッスンできますか?
dreamlax 2008


10

ツリー階層内の大きく離れた場所で複数のディレクトリを使用している場合の好ましいナビゲーション方法の1つは、acf_func.sh(以下にリスト)を使用することです。定義したら、次のことができます

cd-

数値メニューで最近のディレクトリのリストを表示するには

cd -2

2番目に新しいディレクトリに移動します。

とても使いやすく、とても便利です。

これがコードです:

# do ". acd_func.sh"
# acd_func 1.0.5, 10-nov-2004
# petar marinov, http:/geocities.com/h2428, this is public domain

cd_func ()
{
  local x2 the_new_dir adir index
  local -i cnt

  if [[ $1 ==  "--" ]]; then
    dirs -v
    return 0
  fi

  the_new_dir=$1
  [[ -z $1 ]] && the_new_dir=$HOME

  if [[ ${the_new_dir:0:1} == '-' ]]; then
    #
    # Extract dir N from dirs
    index=${the_new_dir:1}
    [[ -z $index ]] && index=1
    adir=$(dirs +$index)
    [[ -z $adir ]] && return 1
    the_new_dir=$adir
  fi

  #
  # '~' has to be substituted by ${HOME}
  [[ ${the_new_dir:0:1} == '~' ]] && the_new_dir="${HOME}${the_new_dir:1}"

  #
  # Now change to the new dir and add to the top of the stack
  pushd "${the_new_dir}" > /dev/null
  [[ $? -ne 0 ]] && return 1
  the_new_dir=$(pwd)

  #
  # Trim down everything beyond 11th entry
  popd -n +11 2>/dev/null 1>/dev/null

  #
  # Remove any other occurence of this dir, skipping the top of the stack
  for ((cnt=1; cnt <= 10; cnt++)); do
    x2=$(dirs +${cnt} 2>/dev/null)
    [[ $? -ne 0 ]] && return 0
    [[ ${x2:0:1} == '~' ]] && x2="${HOME}${x2:1}"
    if [[ "${x2}" == "${the_new_dir}" ]]; then
      popd -n +$cnt 2>/dev/null 1>/dev/null
      cnt=cnt-1
    fi
  done

  return 0
}

alias cd=cd_func

if [[ $BASH_VERSION > "2.05a" ]]; then
  # ctrl+w shows the menu
  bind -x "\"\C-w\":cd_func -- ;"
fi

10

恐ろしいエンターを打つ前に複雑なラインを拡大する

  • Alt+ Ctrl+ eshell-expand-line(キーボードEscCtrl+ を使用する必要がある場合がありeます)
  • Ctrl+ _元に戻す
  • Ctrl+ x*glob-expand-word

$ echo !$ !-2^ * Alt+ Ctrl+ e
$ echo aword someotherword * Ctrl+ _
$ echo !$ !-2^ * Ctrl+ x*
$echo !$ !-2^ LOG Makefile bar.c foo.h

&c。


1、私は常に押すのが怖いEnter:)
ジョアン・ポルテラ

これらのどれも知りませんでした。元に戻すはキラーです。コマンドライン編集に適しています。
フィリップA.

9

私はいつも以下のことに不満を持っています:

ctrl-E # move cursor to end of line
ctrl-A # move cursor to beginning of line

私もを使用しているshopt -s cdable_varsので、共通のディレクトリにbash変数を作成できます。したがって、私の会社のソースツリーでは、次のような一連の変数を作成します。

export Dcentmain="/var/localdata/p4ws/centaur/main/apps/core"

その後、私はそのディレクトリに変更できますcd Dcentmain


HomeとEndは、crtl-Aおよびctrl-Eと同じことを行います。
davidfg4 2009

これは、HomeキーとEndキーがないMacラップトップで役立ちます。
jamesh 2009

残念ながらctrl-Aはscreenデフォルトでのエスケープキーでもあります。私はそれをctrl-Xに再マッピングし.screenrcますが、emacsユーザーではありません。
システム一時停止

cdable_varsオプションにある程度関連しており、CDPATH環境変数もあります。しかし、PATHのように親ディレクトリを設定するため、動作は異なります。cdable_varsを使用すると、より詳細に制御できます。
Zecc

1
ショートカットリストの詳細:CTRL + Kでカーソルから行末まですべてを削除し、CTRL + Uでカーソルの前のすべてを削除し、ALT + F / ALT + Bで1単語ずつ前後に移動します(またはCTRL +左矢印/ CTRL +右矢印)。cdable_varsの+1!
フィリップA.

8

pbcopy

これはMacシステムのクリップボードにコピーされます。あなたはそれにコマンドをパイプすることができます...試してみてください:

pwd | pbcopy


NB!これはMac固有のコマンドです。
dala

これらは、次のとおりalias pbcopy='xsel --clipboard --input' で はありません alias pbpaste='xsel --clipboard --output'
。-ワワワ

7
$ touch {1,2}.txt
$ ls [12].txt
1.txt  2.txt
$ rm !:1
rm [12].txt
$ history | tail -10
...
10007  touch {1,2}.txt
...
$ !10007
touch {1,2}.txt
$ for f in *.txt; do mv $f ${f/txt/doc}; done

history 10代わりに使用します(その構文は非推奨であるため、ちなみにhistory | tail -10そうtail -n 10する必要があります)。
追って通知があるまで一時停止。

7

コマンドラインから「set -o vi」を使用するか、.bashrcでそれを使用すると、コマンドラインでvi編集モードになります。「挿入」モードで開始すると、通常どおりに入力してバックスペースを挿入できますが、「大きな」ミスを犯した場合は、escキーを押してから、viと同じように「b」と「f」を使用して移動できます。cwで単語を変更します。変更したい履歴コマンドを呼び出した後に特に役立ちます。


7

上記の多くと同様に、私の現在のお気に入りはキーストローク[alt]です。(Altと "。"キーを一緒に)これは$と同じです!(直前のコマンドの最後の引数を挿入します)即時であり、入力が簡単です。(スクリプトでは使用できません)

例えば:

mkdir -p /tmp/test/blah/oops/something
cd [alt].

また、Alt- [0-9]と組み合わせてみてください(最初の組み合わせをヒットし、次にリリースし、次に2番目の組み合わせ)。たとえば、最後のコマンドが「mv foo bar」の場合、「Alt-0 Alt-」となります。「mv」、「Alt-1 Alt-」を与えます。「foo」、「Alt-2 Alt-」を返します。そして基本的なAlt-。両方とも「バー」などを与える
サム・ストークス

1
また、Alt-を押してみてください。2回以上(またはAltを押したまま、その場所を押したまま、ドットを何度も押してからAltを離す)これは、Ctrl-Rを2回以上押すのと同じです。
ユー

7

&&コマンドを使用して複数のコマンドをつなぎ合わせる:

./run.sh && tail -f log.txt

または

kill -9 1111 && ./start.sh

1
1つが失敗した場合、他のコマンドは実行されません(プログラムのように速く失敗します)
Frederic Morin

1
反対は、論理または '||'を使用することです この場合、左側がfalseの場合にのみ右側が実行されます。例:<code> command_1 || command_2 </ code>
dala
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.