最新記事

Emacs: ターミナルとシェルの違いは? 質問する
shell
emacs
terminal

Emacs: ターミナルとシェルの違いは? 質問する

私はEMACS内でシェルを使用する方法を読んでいましたが、その途中でターミナルの概念を見つけました。これは、シェルと対話する古い物理デバイスを抽象化したものです。 しかし、最近では、その使用に関する利点がまったく理解できません。そこで、Emacsでシェルの代わりにターミナルを使用する必要がある状況や例をいくつか教えていただけますか?

Admin

SSH+byobu経由でマイクロからCtrl+左/右
terminal
keyboard-shortcuts
editors
byobu

SSH+byobu経由でマイクロからCtrl+左/右

現地で営業microテキストエディタ、Ctrl + left/rightうまく動作します(1ワードジャンプ)。 しかし、SSH + byobuを介して実行するCtrl + left/rightと[1;5C]と[1;5D]。 Ctrl + S機能しない場合は、Ctrl + Q保存して終了するのではなく端末を一時停止します。 この問題の原因は何であり、回避策は何ですか? 修正する ローカルでbyobu同様の問題が発生して[1;5Candを提供し[1;5DましたがCtrl + S、andはCtrl + Qうまくいきました。 SSHがないと、byobuこの問題は発生せず、すべてがうまく機能します。

Admin

inotifywaitはDELETEイベントを受け取りません。
bash
command-line
terminal
inotify

inotifywaitはDELETEイベントを受け取りません。

テストするには、次のbashスクリプトを使用しています。inotify待つ。 while true; do inotifywait -r -e modify,create,delete "$DIRECTORY_TO_WATCH" done inotifywaitは生成されたファイルを受け取ります。 /directory_to-watch/ CREATE test (copy).sh また、ファイルを修正しました。 /directory_to-watch/ MODIFY test.sh ただし、ファイルをコピーして削除すると仮定すると、inotifywaitは何も記録しません。どうしたの?

Admin

端末コマンドで列名を識別する方法
linux
grep
terminal
man
filter

端末コマンドで列名を識別する方法

コマンド出力データから特定の列を選択/選択解除することが役に立つ場合もありますが、マンページにこれらの列が必ず名前でリストされるわけではありません。これらの名前をどのように見つけることができますか? 例えば 2 つのコマンドを実行して出力を表示します。 $ sudo journalctl -eu NetworkManager -o short Feb 06 06:52:56 user NetworkManager[713]: [1707206156.8193] device (tun0): state change: ip-check -> secondaries (reason 'none', sys-iface-state: 'external') Feb 06 06:52:56 user NetworkManager[713]: [1707206156.8195] device (tun0): state change: secondaries -> activated (reason 'none', sys-iface-state: 'external') Feb 06 06:52:56 user NetworkManager[713]: [1707206156.8207] device (tun0): Activation: successful, device activated. この出力には、6つの異なる列(強調表示のために類似名が付けられています)が含まれているようです。 日付、ユーザー、プロセス、タイプ、日付2、メッセージ 2番目のコマンドを実行すると、列にlsblk名前が割り当てられていることがわかります。 $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT zram0 253:0 0 7.3G 0 disk [SWAP] nvme0n1 259:0 0 238.5G 0 disk --output以下を実行して必要な列を選択できます。columns $ lsblk --output NAME,SIZE NAME SIZE zram0 7.3G nvme0n1 238.5G man lsblkページは、他の多くのコマンドが提供しない列のヘルプを提供します。 -o, --output list Specify which output columns to print. Use --help to get a list of all supported columns. The columns may affect tree-like output. The default is to use tree for the column 'NAME' (see also --tree). The default list of columns may be extended if list is specified in the format +list (e.g., lsblk -o +UUID). マンページにリストされていない場合(選択または見つからない場合)、どのように列を識別して名前を付けますか?

Admin

新しくインストールされたAlmaLinux 9(Puttyを使用)でLINESとCOLUMNSの問題
bash
terminal
ncurses

新しくインストールされたAlmaLinux 9(Puttyを使用)でLINESとCOLUMNSの問題

Almalinux 9で私が解決できない奇妙な問題に気付いたようです。 LINES変数とCOLUMNS変数は、対話型の非ログインシェルの場合はフルサイズに設定されていますが、対話型ログインシェルの場合はフルサイズに設定されていないようです。残念ながら、これはユーザーがvimログインしlessたときに一部のツールが正しく機能しないように見える副作用がありますman(提供されたVMでコンソールを有効にすると、対話型の非ログインのルートシェルが表示されますqemu-guest-agent)。 以前の展開ではこの問題は発生せず、検索によってこれらの値を自動的に設定するシェルに関するいくつかの情報が見つかりました(bashv5.1.8を使用しています)。すべてのインタラクティブシェルに対してシェルオプションを設定してこれを確認しましたが、ターミナルのサイズを変更しようとするcheckwinsizeと変更は表示されません(明らかにこれはPuttyターミナルとAlmalinux 9にのみ影響するようです)。on/etc/bashrc /tmp/size.sh私の問題が何であるかを示すために、各セッションで次のエイリアス(場所)を実行します。 alias test_size="echo -e \ \"login: \$(shopt -q login_shell && echo 'yes' || echo 'no') \ \ninteractive: \$([[ -t 0 || -p '/dev/stdin' ]] && echo 'yes' || echo 'no') \ \n\$(id) \ \n\$(tty) \$TERM \${COLUMNS}x\${LINES} \ \"" KVMのデフォルトコンソールには、正しいフルスクリーンサイズ(列= 425、行= 79)があります。 bash-5.1# . /tmp/size.sh bash-5.1# test_size login: no interactive: yes uid=0(root) gid=0(root) groups=0(root) context=system_u:system_r:unconfined_t:s0 /dev/pts/0 putty-256color 425x79 非ログインシェルのサイズも正確です。 bash-5.1# su test2 [test2@files01 /]$ . /tmp/size.sh [test2@files01 /]$ test_size login: no interactive: yes uid=1001(test2) gid=1001(test2) groups=1001(test2) context=system_u:system_r:unconfined_t:s0 /dev/pts/0 putty-256color 425x79 [test2@files01 /]$ exit ログインシェルのサイズは非常に小さいです(COLUMNS = 80、LINES = 24)。 bash-5.1# su - test2 [test2@files01 ~]$ . /tmp/size.sh [test2@files01 ~]$ test_size login: yes interactive: yes uid=1001(test2) gid=1001(test2) groups=1001(test2) context=system_u:system_r:unconfined_t:s0 /dev/pts/0 putty-256color 80x24 [test2@files01 ~]$ logout これを入力している間、他のコンピュータの端末が正しく実行され、サイズ変更に反応することがわかりました。 適切なサイズの対話型ログインシェル: [root@files01 ~]# . /tmp/size.sh [root@files01 ~]# test_size login: yes interactive: yes uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 /dev/pts/1 xterm-256color 238x58 これで問題になる可能性がありますが、TERM=putty-256color同じ端末が他の展開でも機能するかどうかはわかりません。私はAlmalinux 9で利用可能な最新バージョンであるように見えるterminfoをncurses-base-6.2-10.20210508提供しました。putty-256color最新のncursesterminfo(v6.4.20231202)を使用したローリングリリースがあり、Puttyを使用すると正しく機能し、サイズが変更されます。 私の質問は、正しいフルスクリーンサイズを取得し、checkwinsizeログインしているすべての端末で作業する方法です。他のインストール(主にCentOS 7/8、Debian 10/11/12、およびOpenSUSE Tumbleweed)では、この特定の問題は表示されません。各ユーザーに対して行と列のサイズをハードコードすることを避けたいと思います。サポートが必要な場合は、追加情報を提供できます。 ありがとう

Admin

編集する
bash
shell-script
shell
command-line
terminal

編集する

このスレッドで質問があります。sudoersに入力されたパスをダブルクリックしてbashスクリプトを実行するには?。sudoファイルに権限を付与することは安全ではないという説明を聞いたので、ファイル自体に権限を付与せずにscript.shファイルをダブルクリックする方法を見つけることにしました。script.shsudo安全を確保し、。 私はDebian 12とKDE Plasmaデスクトップ環境を使用しています。コマンドを実行するには、sudo sh /path/to/script.sh端末に移動してを入力してからsudo sh /path/to/script.shパスワードを入力する必要があります。ユーザーインターフェイスでダブルクリックしてファイルを実行できるファイルが必要なので、ダブルクリックsudo sh /path/to/script.shしてパスワードを入力するだけです。 sudoスクリプトには、ip tuntap add devまたはでのみ使用できるいくつかのコマンドがありますroute add。どうすればいいですか? ありがとうございます。

Admin

macOS端末:名前を変更した後にMP3ファイルのメタデータを編集するには?
terminal
macos
file-metadata

macOS端末:名前を変更した後にMP3ファイルのメタデータを編集するには?

変数を使用してファイル名を次の形式に変更するスクリプトがあります。 (track#) - (title) - (artist) - (date).mp3 #! /bin/zsh - set -o extendedglob pattern='(#b)*_ \((<0-999>)\)(* )—( * )(<1-12>)_(<1-31>)_(<1900-2100>)(.mp3)' ret=0 for file { if [[ $file = $~pattern ]] { argv=( "$match[@]" ) mv -i -- $file "${(l[3][0])1} -$2-$3- $6-${(l[2][0])5}-${(l[2][0])4}-0900$7" || ret=$? } } exit $ret このスクリプト、このファイルを使用してください。 Public Talks_ (9) Walking With God Brings Blessings Now and Forever — Chris Ruscher 10_28_2023.mp3 名前変更: 009 - Walking With God Brings Blessings Now and Forever - Chris Ruscher - 2023-28-10-0900.mp3 フォーマットはトラック番号 - タイトル - アーティスト - 日付.mp3、表示変数:です$1 - $2 - $3 - $6-$5-$4-0900$7。 上記のすべての作業は完璧に動作します。今このスクリプトに追加したいと思います。 その後、この値を以下に示すメタデータに挿入しようとします。 $1>> で開催される軌道kMDItemAudioTrackNumber タイトル、保存場所$2>>kMDItemTitle      アーティスト、開催場所$3>>kMDItemAuthors 以下を連結したタイムスタンプ: $6${(l[2][0])5}${(l[2][0])4}0900>>kMDItemContentCreationDate また、スクリプトはファイル生成日をkMDItemContentCreationDate。touch -t上記の最後のステップ(4)でループにコマンドを追加しようとしましたが、うまくいきませんでした。 #! /bin/zsh - set -o extendedglob pattern='(#b)*_ \((<0-999>)\)(* )—( * )(<1-12>)_(<1-31>)_(<1900-2100>)(.mp3)' ret=0 for file { if [[ $file = $~pattern ]] { argv=( "$match[@]" ) > fecha=( "$6${(l[2][0])5}${(l[2][0])4}0900$7" ) > touch -t $(date -j -f "%Y%m%d%H%M" $fecha +%Y%m%d%H%M) $file mv -i -- $file "${(l[3][0])1} -$2-$3- $6-${(l[2][0])5}-${(l[2][0])4}-0900$7" || ret=$? } } exit $ret これは端末でzshを使用するmacOS用です。 メタデータの編集と作成日の調整の2つの問題についてどう思いますか?私はスクリプトが初めてだったので、フォーラムで見つけたものをまとめました。あなたの洞察力に心から感謝します。

Admin

SSH Chrootの問題
linux
ssh
terminal
sshd
chroot

SSH Chrootの問題

Chrootを設定しようとしたときにいくつかの問題が発生しました。 ログインすると、ユーザー名に「名前がありません!」と表示されます。このetc/passwdファイルは.chrootファイルと共に存在し、chrootユーザーがアクセスできますnsswitch.conf。 バックスペースキーは文字を削除するために使用されますが、端末では空白として表示されます。 terminfoファイルとシンボリックリンクとファイルは問題ないようですnanorc。 nanoを開こうとすると、「Error opening Terminal: xterm-256color」エラーが発生します。 テストするすべてのファイルに755の権限を付与し、ユーザーがホームディレクトリに正しく配置されているようです。 sshdログにエラーがあり、内容は次のとおりですerror: /dev/pts/1: No such file or directory。私が知っているものの/dev/pts両方が/dev/pts/ptmx存在します。 誰でも問題が何であるかを教えてもらえますか?

Admin

Linux端末でコマンドをすばやく編集するには?
bash
centos
terminal

Linux端末でコマンドをすばやく編集するには?

Linux端末にコマンド、特に非常に長いコマンドを入力し、1つ以上の単語を削除して別の単語に置き換えたい場合は、端末でそれをすばやく実行する方法はありますか? これはLinuxとは何の関係もありませんが、メモ帳などのアプリケーションでは、1つ以上の単語を選択して1段階で削除できます。しかし、私が知っている限り、端末から1文字ずつ削除する必要がありますが、これは遅くなる可能性があります。 Vimがこれを行うことができることを知っていますが、Vimで開くのではなく、端末で直接編集したいとしましょう。

Admin

出力リダイレクトの問題 - 自動インクリメントビルドカウンター付きのm4マクロ
terminal
pipe
macro
m4

出力リダイレクトの問題 - 自動インクリメントビルドカウンター付きのm4マクロ

BUILD私の目標は、ファイル()から値を読み取ってその値を増やし、出力をファイルに保存するm4マクロを作成することです。私は次の解決策を思い出しました(BUILD.m4)。 define(`__buildnumber__',`esyscmd(cat BUILD)')dnl define(`counter',__buildnumber__)dnl popdef(__buildnumber__)dnl define(`count',`define(`counter',eval(counter+1))counter')dnl count dnl BUILD3が含まれると出力m4 BUILD.m4が実行されます4。本当に良いです! ところで、このように呼び出すと、m4 BUILD.m4 > BUILDファイルにはBUILD常に1。 別のファイルにパイプするとm4 BUILD.m4 > B機能し、ファイルにはwasがB含まれます。4BUILD3 私はこれが出力リダイレクトに関連していると思います>。これら2つのバリアントをデバッグトレースと比較すると、同じファイルにリダイレクトされるバリアントはもはやそのファイルから読み取れなくなっているようです。 バリアントは別のファイルにリダイレクトされます。 % m4 -dtaeq BUILD.m4 > B m4trace: -1- define(`__buildnumber__', `esyscmd(`cat BUILD')') m4trace: -1- dnl m4trace: -2- __buildnumber__ -> `esyscmd(`cat BUILD')' m4trace: -2- esyscmd(`cat BUILD') -> `3' m4trace: -1- define(`counter', `3') バリアントは同じファイルにリダイレクトされます。 % m4 -dtaeq BUILD.m4 > BUILD m4trace: -1- define(`__buildnumber__', `esyscmd(`cat BUILD')') m4trace: -1- dnl m4trace: -2- __buildnumber__ -> `esyscmd(`cat BUILD')' m4trace: -2- esyscmd(`cat BUILD') m4trace: -1- define(`counter', `') これを行う方法はありますか?または、出力をキャプチャするために別の方法を使用する必要がありますか?

Admin

Homebrew をインストールした後、`zsh: command not found: brew` というエラーが表示される [closed] 質問する
macos
terminal
homebrew
zsh

Homebrew をインストールした後、`zsh: command not found: brew` というエラーが表示される [closed] 質問する

終了しました。 この質問は プログラミングやソフトウェア開発に関するものではありません 現在回答を受け付けておりません。 この質問は、特定のプログラミング問題、ソフトウェアアルゴリズム、またはプログラマーが主に使用するソフトウェアツール質問がトピックに沿っていると思われる場合は、別の Stack Exchange サイト質問がどこで回答される可能性があるかを説明するコメントを残すことができます。 昨年閉店しました。 コミュニティは3 か月前にこの質問を再開するかどうかを検討し、質問を閉じたままにしました。 元のクローズ理由は解決されませんでした この質問を改善する ➜ ~ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" -e:77: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040677 It appears Homebrew is already installed. If your intent is to reinstall you should do the following before running this installer again: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)" The current contents of /usr/local are bin CODEOFCONDUCT.md etc git lib Library LICENSE.txt munki README.md sbin share .git .github .gitignore ➜ ~ brew install maven zsh: command not found: brew

Admin