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

Bash(Bourne-Again SHell)は、Ubuntuのコマンドラインインターフェースでデフォルトで使用されるシェルです。

1
PATH変数は常にリセットされます。それを修正するには?
少し前に、PATH変数を展開してカスタムコマンドターミナルを作成できることがわかりました。残念ながら、ターミナルを閉じて再び開くと、常にリセットされます。 この問題を解決する方法を知っていますか? ターミナルコマンドを使用していくつかのスクリプトを開始する場合、以前はPATH変数を毎回展開したくありません...

3
bashプロンプトの現在のパスをディレクトリごとに1文字に短縮するにはどうすればよいですか?
私はどこにいたか思い出せませんが、bashプロンプトの現在のパスが興味深い方法で短縮されているのを見てきました。パスに含まれるすべてのディレクトリ(最後のディレクトリを除く)は、最初の文字だけに置き換えられます。たとえば、path/to/some/directoryはに短縮されp/t/s/directoryます。 どうすればその動作を再現できますか?

4
bashプロファイルはユーザーには機能しますが、sudoには機能しません
フラッシュドライブが接続されている場合にフォルダーを含めるように.profileを変更しました。ユーザーとしてコマンドを実行すると、正常に機能しますが、スクリプトはsudoで実行する必要があることを通知します(これは私が望んでいることです)。ただし、sudoで実行しようとすると、「コマンドが見つかりません」と表示されます / var / wwwフォルダーに/ media / flashドライブを指すシンボリックリンク(フラッシュ)があります。(ただの開発のため、この設定は気にしないでください) これは私のユーザーの.profileです。 # set PATH so it includes flash scripts if [ -d "/var/www/flash/scripts" ] ; then PATH="/var/www/flash/scripts:$PATH" fi 私が得るsudoとして実行しようとすると: sudo: script: command not found 何か案は?
9 bash 

3
eval $(cat filename)はソースファイル名と同じですか?
いくつかのbash関数を扱っていて、source ...コマンドがわからなかったのでeval $(cat ...)代わりに使用しました。今、私はそれを使用するたびに変更する必要がありますか、それともまったく同じ機能ですか? 現在は同じように機能しているようですが、後で誤解を招く可能性のある違いがあるかもしれません。知りたいだけです。

1
エイリアス:.bash_rc、.bash_aliases、/ usr / local / binの違い
ターミナルで遊んでみて、永続的なエイリアスを作成する方法はたくさんあることに気づきました。 私はLinux初心者です。私が知っていることから、次のことをしています。 sudo ln -s /path/to/executable /usr/local/bin/desired_alias 追加desired_alias = '/path/to/executable'します~/.bashrc これらの行のコメントを解除し~/.bashrcます。 if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi に入れdesired_alias = '/path/to/executable'て~/.bash_aliases すべて同じ効果があります。 1番目と2番目の方法の違いは何ですか?

2
すべての通常のユーザーをシャドウにするAwk
スクリプトがあります。 /etc/shadowたとえば、シャドウファイルの2番目の用語が$またはで始まるすべてのユーザーから、すべての通常のユーザーを取得します!$。 私のパターンは sudo getent shadow | awk -F: '$2 ~ /^$/ || /^!$/ {print $1}' 今のところ機能しません。
8 bash  scripts 

4
コマンドの出力をコマンドとしてBashにインポートするにはどうすればよいですか?
システム Linux hosek 4.15.0-48-generic #51-Ubuntu SMP Wed Apr 3 08:28:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 問題 変数を格納するために、bashスクリプトでコマンドとして出力を取得する必要があります。 例 sed -n '/# Main configuration./,/# Websites./p' webcheck-$category.cfg | sed '1,1d' | sed '$ d' このコマンドは次の行を返します。 email_sender='some@email.com' email_recipients='another@email.com' これらの出力/行をスクリプトのコマンドとしてどのように読み取り/実行できますか?この出力をファイルに保存してから、sourceコマンドのみで読み取りますか? | sourceコマンドの最後で試しましたが、ファイルからしか読み取れません。 echo最初は試しましたが効果がありませんでした。 ありがとう。

3
Ubuntuの多くのファイルで^ Lコードを変更するにはどうすればよいですか?
XMLファイルはたくさんあり、そのうち50000以上があります。 一部のXMLファイルでは、一部のファイルは次のように記述されています <filename>abc.JPEG<^Lilename> ^Lは1文字ですが^L、Googleの意味がわかりません。 を使用catしてファイルの内容を印刷すると、次のように表示されます <filename>abc.JPEG< ilename> とにかく、私は変更したい<filename>abc.JPEG<^Lilename>に<filename>abc.JPEG</filename> 次のような多くのファイルで単語を変更するコマンドをすでに見つけました find . -exec perl -pi -e 's/[find_word]/[change_word]/g' {} \; しかし、このコマンドは、私が入力しただけでは検索語を認識できないため、私の場合は機能しません^L。 どのように私は変更することができます<filename>abc.JPEG<^Lilename>に<filename>abc.JPEG</filename>多くのファイルに?
8 bash  perl 

2
bashコマンドから部分文字列を取得する方法
コマンドから取得した次の部分文字列があるとしますdf /dev/sdb1 | tail -n 1。 /dev/sdb1 1952971772 1441131032 511840740 74% /media/kaiman/ShareData 私は、抽出したい1952971772と74%、その文字列から、bashスクリプトでそれを使用します。 一部のカットコマンドなどを使用できることはわかっていますが、たとえばサイズが変更されると機能しなくなります。 私も正規表現か何かを使用することについて考えましたが、私は最も推奨されるアプローチを持ちたいと思います。 前もって感謝します!

1
bashオートコンプリートが完了のページ化されたリストを表示するタイミングをどのように制御しますか?
以前のLinuxインストールでは、bashのオートコンプリートは常に問題なく機能していました。ファイルに何かをしたい場合は、ファイル名のプレフィックスを指定し、プレビュターに一致するすべてのタブ一覧を押すと、その下のプロンプトがコマンドとプレフィックスで繰り返されるため、すぐに入力を続けることができます。 システムをkubuntu 18.04に更新しましたが、オートコンプリートが流暢に機能しなくなりました。さらに奇妙なことに、これはコンソールに依存しているように、動作は予測できません。コマンドがの場合、less(上記のように)常に正しく機能しますが、コマンドがcpまたはの場合mv、動作は異なります。正しく動作することもありますが、多くの場合、一致するファイルのリストが(プロンプトを非表示にして)qより多く表示されます。小さなことですが、追加のタイピングが必要なので面倒です。 その.bashrc呼び出しはわかります/usr/share/bash-completion/bash_completion が、これに対する変更は行っていません。 質問:この予測不可能な動作の原因は何ですか?どうすれば修正できますか?

4
SSHはif条件でどのように機能しますか?
ifファイルを計算し、最新の3つのファイルを除くすべてを削除するステートメントがあります。しかし、このコマンドをリモートで実行したいと思います。条件と組み合わせるにsshはどうすればよいifですか? 私はこれを試しましたが、成功しませんでした。 #!/bin/bash ssh -t test@192.168.94.139 "cd /var/www/test.com/backup ; if [ $(ls | wc -l) -lt 3 ] then echo "Less" else [ $(ls -t *.tgz|awk 'NR >3'|xargs rm -f) ] echo "deleted" fi" 私が得たエラー: ls:* .tgzにアクセスできません:そのようなファイルまたはディレクトリはありません

6
'/'文字を含むtxtファイルから名前を付けてディレクトリを作成する
このようなテキストを含む.txtファイルがあります A1/B1/C1 A2/B2/C2 A3/B3/C3 各行の.txtファイルを読み取り、最初の単語(A1、A2、A3)に基づいてディレクトリを作成するスクリプトが必要です 私はこのようなスクリプトを作成しました: file="test.txt" while IFS='' read -r line do name="line" mkdir -p $line done <"$file" 私がそれを実行している間、それはディレクトリA1を作成し、次にサブディレクトリB1とC1も作成します。同じことが別の行(A2 *およびA3 *)でも起こります A1、A2、A3ディレクトリのみを作成するにはどうすればよいですか? 「/」文字を含むA1 / B1 / C1のような名前を作りたくありません。「/」文字の前の単語を取り、それをディレクトリ名にしたいだけです。「A1」「A2」「A3」だけです。

3
インストールされている場合にPPAをスキップするシェルスクリプト
新しいPPAを追加するか、既にインストールされている場合はスキップするスクリプトを作成したいと思います。 誰かがこの解決策を別の質問に投稿しました: #!/bin/bash add_ppa() { for i in "$@"; do grep -h "^deb.*$i" /etc/apt/sources.list.d/* > /dev/null 2>&1 if [ $? -ne 0 ] then echo "Adding ppa:$i" sudo add-apt-repository -y ppa:$i else echo "ppa:$i already exists" fi done } 条件付きでaptリポジトリを追加するシェルスクリプト 私の場合ppa:otto-kesselgulasch/gimp-edge、を追加したいのですが、これをスクリプトのどこに追加することになっているかわかりません。 私は試しましたadd_ppa(ppa:otto-kesselgulasch/gimp-edge)が、次のエラーが表示され続けます(ppaは私のスクリプトの名前です): ppa: 1: ppa: Syntax error: word unexpected (expecting …
8 bash  scripts  ppa 

3
何度も表示されますが、値を1回だけ出力するコマンド
値が何度も繰り返されている大きなtxtファイルがあります。ファイルを通過する使用可能なコマンドはありますか?1つの値が表示された場合、それを再度繰り返さないでください? SO4 HOH CL BME HOH SO4 HOH CL BME HOH SO4 HOH SO4 HOH CL BME HOH SO4 HOH CL BME HOH CL したがって、次のようになります。 S04 HOH CL BME ことは、私は非常に多くの異なる値を持っているので、ここのように手動でそれを行うことができないということです。

3
実行中のシェルで変数を編集するにはどうすればよいですか?
PS1プロンプトを編集していますが、bashrcを更新して更新する必要はありません(bashrcによって他の設定もリセットされるため)。また、何度もコピーして貼り付けたくありません。nano(私のデフォルトのエディター)を使用するように、変数をインタラクティブに編集する方法はありますか? PS1はほとんどの例です。他の変数でも同じことをしたいからです。インタラクティブに実行したいのは、変数がすでにかなり長く、その中のいくつかの文字を編集する必要があるだけだからです。現在のシェルで変更するだけです。

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