最新記事

「set keymap vi」は何をしますか? 質問する
bash
shell

「set keymap vi」は何をしますか? 質問する

ターミナルに vim のようなナビゲーションが欲しかったので、以下を追加しました: set editing-mode vi set keymap vi 私の.inputrcファイルに基づいてこれ. editing-mode vivi ナビゲーションを追加します。これは何keymap viをするものですか? また、なぜ必要なのですか?

Admin

文字列に複数のパラメータが格納されている場合にのみ、sshは失敗します。
bash
raspberry-pi

文字列に複数のパラメータが格納されている場合にのみ、sshは失敗します。

私はRaspberry Pi OS(Debian 12 Bookwormベース)でbashスクリプトを書いています。スクリプトは次の操作を試みます。 ssh "$args" "$user"@"$ip" 'command' 私が知る限り、これは標準的な慣行です。ただし、$args次のような複数のパラメータが含まれているケースが見つかりました。 -v -i /path/to/keyfile -o StrictHostKeyChecking=yes その後実行 ssh "$args" "$user"@"$ip" 'echo "Success in logging into $HOSTNAME"' sshは終了ステータスとともに次のものを返します255。 unknown option -- usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] destination [command [argument ...]] $argsただし、成功を使用するのではなく、コンテンツだけで同じコマンドを実行すると、ステータス$argsは終了します0。 ssh -v -i /path/to/keyfile -o StrictHostKeyChecking=yes "$user"@"$ip" 'echo "Success in logging into $HOSTNAME"' つまり、$argsパラメータが1つしかない場合を使用することは非常に効果的です。 -o StrictHostKeyChecking=yes ここで何が起こっているのでしょうか?これが起こらないようにするにはどうすればよいですか? 2つ以上の引数(inが2回発生)がある場合にのみこれについて文句を言うので、何かが解析して何かを削除するようunknown option --です。$args-$args

Admin

コンテナごとに別々のBash履歴ファイルと統合履歴ファイルを設定するには?
linux
bash
command-history

コンテナごとに別々のBash履歴ファイルと統合履歴ファイルを設定するには?

現在の設定では、すべてのbash履歴は、次を指すファイルに保存されます。HISTFILE. この履歴には、ホストシステムとすべてのコンテナの履歴が含まれます。 この記録に加えて、各コンテナに設定したいと思いますbash_history_。 設定の詳細: ホストシステムにはドッカーコンテナ設定があります。 すべてのコンテナは/home/uname/ホストシステムと共有されます。 (.bashrcも共有されます) [ホストとすべてのコンテナ]のすべてのコマンド履歴が記録されますHISTFILE。 クイックアップデートのために、HISTFILE次のように.bashrcのプロンプトを更新してください。 PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r" このシステムが装備されています。また、コンテナ内で使用されたコマンド履歴をそのコンテナ関連ファイルに保存したいと思います。 前任者。コンテナの場合、ContAコマンドContB,履歴はパブリック「HISTFILE」に保存され、個々のコンテナのコマンド履歴も更新する必要があります。の場合もContA更新~/bash_history_ContAする必要があります。 PS:単一ファイルのコマンド履歴は、コマンドの実行直後に更新されます。各bash_history_コンテナは遅延更新ファイルである可能性があります。

Admin

Bashでタイトルバーの高さを取得する方法
bash
size
window-title

Bashでタイトルバーの高さを取得する方法

私はさまざまなLinux Mint PCのタイトルバーの高さを理解することに関連するペットプロジェクトを進めています。私は答えを探していましたが、それを正確に見つけることができないようです。見つけるのは簡単だと確信していますが、どこですか! 現在、Mint 21.3を実行しており、xdotoolがインストールされています。私は初めてBashスクリプトに遭遇し、いくつかの問題があり、私には簡単なことはありませんでしたが、わずかな調査と約8時間の試行錯誤の後にこれを見つけました... sleep .05 id=$(xdotool getactivewindow) xdotool windowmove $id 0 0 sleep .05 y=$(xprop -root '_NET_WORKAREA') y=$(($(xwininfo -id $id|grep -oP "(?<=Absolute upper-left Y:).*") - $(echo ${y#=}|cut -d, -f2))) read -n1 -p "Title Bar = $y" これはうまくいきますsleep .05。 xdotool、xprop、およびwininfoが速すぎて実行され、ウィンドウの移動が失敗したり、「0」が発生しないようにするために、これら2つを追加する必要がありました。これは追加する前に時々起こりました。それらを。おそらくより簡単な方法があります。教えてくださいecho $TITLEBAR! id=$(xdotool getactivewindow)この時点でまだアクティブなウィンドウである前のウィンドウのIDを提供しているため、スクリプトの起動時に眠りに落ち、端末がアクティブなウィンドウになるのを待つ必要があります。 。 Bashは私にとってとても新しいものなので、どんなヒントやコツでも大歓迎です。変数に引用符を追加します。${y#=}変数「y」から「=」の前のすべての項目を削除する必要があります。おそらく "="の後ろの値を取得するより良い方法がたくさんあります。しかし、これが私が知っている唯一の方法です。私のスクリプトの読みやすさについては、すべてを圧縮する傾向があります。 (申し訳ありません!)結果を表示するために最後に読んだのは、結果を表示するために数週間前にスクリプトを一時停止したことと同じです。初心者に「Hello World」が動作するようにしてください。動作しますが、ウィンドウが起動し、黒い点滅で閉じます。何が問題なのかわかりません。 提案どおりに変更し、今回が2回目の試みです。 #!/bin/bash id=$(xdotool getactivewindow) echo "Id = "$id" Wrong One!!" sleep .08 # .05 was not quite enough, it occasionally failed. id=$(xdotool getactivewindow) echo -e "Id = "$id"\n" xdotool windowmove $id 0 0 sleep .05 # Prevent xprop from giving pre-move results. workarea=$(xprop -root "_NET_WORKAREA") # Strip everything before the values. workarea=${workarea#*=} top_panel=$(echo "$workarea" | cut -d, -f2) echo "Top Panel = "$top_panel # Get height of top panel + header bar y=$(xwininfo -id "$id" | grep -oP "(?<=Absolute upper-left Y:).*") echo -e "Top panel + Header Bar ="$y"\n" headerbar=$(( y - top_panel )) echo "Title Bar = "$headerbar"px" read -n1 -p "Any key to exit" 結果: ID = 46137366エラー! ! Id = 83886086 トップパネル = 32 トップパネル + タイトルバー = 82 タイトルバー = 50px 終了するには任意のキーを使用してください 小さな数字を見つけるには多くの機器が必要なようです! 「簡単な」方法は何ですか? これは私の元のスクリプトの更新版です。 #!/bin/bash sleep .08 # Allow time for the active window to become this window. id=$(xdotool getactivewindow) # Move the window to the top of the screen so that xprop gives # the exact size of the window header bar including top panel. xdotool windowmove "$id" "0" "0" sleep .05 # Allow time for xdotool to move this window. xprop=$(xprop -root "_NET_WORKAREA") # Cut out the desired value and trim the space before the value. top_panel=$(echo "$xprop" | cut -d, -f2 | xargs) # Get the size between the top of screen and the start of this window. xwininfo=$(xwininfo -id "$id" | grep -oP "(?<=Absolute upper-left Y:).*") headerbar=$(( xwininfo - top_panel )) echo -e "Top panel = $top_panel""px""\nHeader Bar = $headerbar""px""\n" # Remove the variables from memory. unset id xprop top_panel xwininfo headerbar read -n1 -p "Any key to exit." さて、スクリプトの内容に近づくでしょう!それでも私は難読症があり、行を読みにくいので、以下のようにスクリプトに引用符がなく、空白のない変数を使用します echo -e "Top panel = $top_panel""px""\nHeader Bar = $headerbar""px""\n"。

Admin

「xdg.BaseDirectory」というモジュールはありません。
bash

「xdg.BaseDirectory」というモジュールはありません。

syncal pip3 install 'syncall[caldav, tw]' khalをインストールした後、もう機能しません。 エラーメッセージ: yoga-x1:~$ **khal** Traceback (most recent call last): File "/usr/bin/khal", line 2, in from khal.cli import main_khal File "/usr/lib/python3/dist-packages/khal/cli.py", line 35, in from .settings import InvalidSettingsError, get_config File "/usr/lib/python3/dist-packages/khal/settings/__init__.py", line 1, in from .settings import get_config # noqa File "/usr/lib/python3/dist-packages/khal/settings/settings.py", line 26, in import xdg.BaseDirectory ModuleNotFoundError: No module named 'xdg.BaseDirectory' 現在のPythonバージョン: Python 3.10.12 Kajaには以下が必要です。 Python 3.8+ この問題をどのように解決できますか?

Admin

ディレクトリ名のピリオドを変更したいです。
bash
ubuntu
rename

ディレクトリ名のピリオドを変更したいです。

オンラインで見つけたすべてが失敗しました。私はunbuntu 2204を使用しており、メディアライブラリのディレクトリ名のピリオドを置き換えるためにbashスクリプトを作成しようとしています。私が見つけた最新のスクリプトは4年前のものですが、それ以来状況が変わったことを知っています。とにかく試しましたが、doコマンドの2行目に誤った構文エラーが発生し、失敗しました。 私にとって必要なのは、子供の映画カタログと私の映画カタログだけです。どちらも400以上の映画を含み、一部にはタイトルにオーディオタイプや解像度などの詳細が含まれています。私はplexライブラリに表示されるので気にしません。映画のタイトルと年を括弧で囲むだけです。 Avatar.2019.4k.DTS.xyzではなくAvatar(2019)です。 最後に、ダウンロード時にディレクトリ名を正しく変更できるダウンロードハンドラを取得しましたが、戻って現在のライブラリの名前もこの形式に変更したいと思います。助けてくれてありがとう! アップデート前にあいまいなことをお詫び申し上げます。私は一般的なLinuxコマンドに加えて、スクリプトやどのような言語も知りません。私は2013年からUbuntuを使用してきました。 4年前スクリプトリンクディレクトリ名とサブディレクトリ名のすべての点を繰り返し空白に置き換えます。 私のメディアはNASに保存され、起動時にマウントされ、次のディレクトリにあります:/home/plex/MediaShare/Kids_Movies/*および/home/plex/MediaShare/My_Movies/* 現在のディレクトリ名は次のとおりです。カンフーパンダ.3.2016.1080p.BluRay.DDP.5.1.H.265.-iVy そして、必要なディレクトリ名は次のとおりです。カンフーパンダ3(2016) 推奨ZSHコマンドを試しましたが、zmvが認識されませんでした。最新のシェルは5.8.1です。これは私のデフォルトのシェルです。私も喜んで受け入れるカンフーパンダ.3.2016しかし、今ではディレクトリ名の型拡張子を予測することはできません。

Admin

ターミナルウィンドウで起動したGUIアプリケーションを閉じずにターミナルウィンドウを自動的に閉じる方法は?
bash
shell-script

ターミナルウィンドウで起動したGUIアプリケーションを閉じずにターミナルウィンドウを自動的に閉じる方法は?

現在、私はObsidianを最初に開き、Vaultブラウザを使用するのではなく、ファイルエクスプローラ自体でObsidian Notes Vaultを開く方法を理解しようとしています。 これを行うには、次のコマンドが機能します(私はObsidian Notes Appimageを使用しており、パッケージスタイルのインストールを好む)。 #!/bin/bash /home/username/Desktop/Obsidian-1.5.11.AppImage "obsidian://open?vault=testvault" (ボルト名とボルトフォルダ名はtestvault) .shVaultフォルダ自体に保存されているファイルにコマンドを配置しました。 次に、Vaultフォルダでターミナルを開きます(スクリプトを実行するためにダブルクリックすると、コマンドが期待どおりに機能せず、指定されたVaultが開かず、最後に開かれたVaultのみが開かれるため、ターミナルを開く必要があります)。次にファイルを実行します.sh。 。 ./openvault.sh 今やりたいことは、Obsidian Notesアプリケーションを閉じずにVaultを開いた後に端末を自動的に閉じることです。 このために、以下を試しました。 #!/bin/bash /home/username/Desktop/Obsidian-1.5.11.AppImage "obsidian://open?vault=testvault" & disown && exit # `&&` after `disown` so that `exit` only gets executed after disown is successfully executed 今これは部分的にのみ動作します。コマンドの実行を管理しますdisown。これにより、ターミナルアプリケーションの閉じるボタンを使用してターミナルを閉じたときにObsidian Notesが引き続き実行されます。 ただし、exitコマンドは実行されません。どのように実行させることができますか? コマンド実行時の端末ログは次のとおりです。 2024-03-22 09:26:20 Loading main app package /tmp/.mount_Obsidi8hbnvd/resources/obsidian.asar xdg-settings: default-url-scheme-handler not implemented for xfce Received callback URL obsidian://open?vault=tesvault 2024-03-22 09:26:21 Checking for update using Github 2024-03-22 09:26:21 Success. 2024-03-22 09:26:21 Latest version is 1.5.11 2024-03-22 09:26:21 App is up to date. 端末がプロンプトに戻るのではなく、カーソルはログの最後の行の下で点滅し続けますusername@machinename:/current/working/directory$。

Admin

jqを介してbash変数を保存する簡単な方法はありますか?
bash
jq

jqを介してbash変数を保存する簡単な方法はありますか?

declare外部から連想配列を手動で読み書きするオプションを使用せずに、継続的なbash連想配列(事前)リポジトリを作成する簡単な方法を探しています。 「jq」と「json」のリポジトリは間違いなく内部のbashリポジトリよりも強力ですが、膨大な量の「jq」情報の中でbashを「jq」に関連付ける簡単な答えが見つかりません。 揮発性bash連想配列を使用する代わりに、jqファイルを使用してbashに永続キー文字列値を保存/呼び出し/削除できますか?JSON 注:あなたのフィードバックに感謝します。私の質問をよりよく表現したと思いますが、例を追加することはこの問題には適用されません。

Admin

コマンドライン引数の一部として2つのファイルを結合する
bash
shell-script
command-line
zsh

コマンドライン引数の一部として2つのファイルを結合する

csvgrep(csvkitの一部)を使用して、2つのファイルのいずれかに一致する行を抽出しようとしています。残念ながら、grepのように2つの一致するファイルを許可するコマンドラインオプションはありません。ただ、 csvgrep -f list1.txt -c 2 myfile.csv コマンドの一部としてlist1.txtをlist2.txtに関連付ける方法はありますか? csvgrep -f (list1.txt+list2.txt) -c 2 myfile.csv 私が考えることができる唯一の方法は一時的な中間ファイルを使用することですが、可能であればそうしない方が良いです。

Admin

どうやって使うの? \?を使用してbashからコマンドをラップしますか?
bash
string

どうやって使うの? \?を使用してbashからコマンドをラップしますか?

私の状況では、私のイベントの解決策が見つかりません。 Bashで長いコマンドを実行する必要があります。たとえば、次のようになります。 node -p "const db = {1:1, 2:2};Object.keys(db).sort((a, b)=> a-b).map(Number).filter((n) => {return !isNaN(n)})" \このコマンドは比較的長いので、コマンドをそれにまとめてみました。このように: node -p "const db = {1:1, 2:2};Object.keys(db)\ .sort((a, b)=> a-b).map(Number).filter((n) => {return !isNaN(n)})" しかし文句を言う bash: !isNaN: event not found これと似ています。質問 "だから次に変えようとしました'。 node -p 'const db = {1:1, 2:2};Object.keys(db)\ .sort((a, b)=> a-b).map(Number).filter((n) => {return !isNaN(n)})' しかし今回は、\コマンドの一部とみなされる内容は実際には意味がありません。なぜなら、コマンドをラップしたいからです。 このジレンマをどのように解決しますか?

Admin

Bashを起動したときに表示されるこのメッセージは何ですか?
bash
shell

Bashを起動したときに表示されるこのメッセージは何ですか?

bashを起動すると、ubuntu@ubuntu-Inspiron-3593:~$次のように表示され、次に点滅します。これは何ですか?どういう意味ですか? 私はシェルについて完全に最初に触れましたbash、私が何を見ているのかわからず、シェルが私に言う情報が何であるかもしれません。 それは私に何を教えてくれますか? これは名前がありますか?なぜ存在するのですか?

Admin