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

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

2
これからの回復は?sudo chmod 600。*
WARNING - DO NOT RUN THE言及COMMAND だから、私はそれを穏やかに置くためにここでかなり馬鹿なことをしたようです。私はすべてが.sudo / rootのみの読み取り/書き込みを開始したディレクトリ内のいくつかのファイルのアクセス許可を変更しようとしました。 一度にいくつかのファイルを変更しようとする私の試みは、かなりひどくグローバルなことをしたようです。ディレクトリ内(ルートディレクトリではない)で実行sudo chmod 600 .*したところ、これを携帯電話から投稿しています...まだターミナルウィンドウを開いたままですが、ラップトップが起動するかどうかは確かです寝るのはもう終わりです。陽気にそれはこの質問に少し緊急性があることを意味します。 ああ、これは私が推測しているあらゆる場所の近くでいまいましい許可を変更したようです。lsまたはcd ..コマンドを実行することもできません。エラーの試行cd /home/brianまたはcd ~エラーbash: cd: /home/brian: Permission Deniedおよびsudoコマンドの試行は、単に言うbash: /usr/bin/sudo: Permission Denied 私は再起動することを恐れています、このばかげた何かからの組み込みの回復があるかどうかの手掛かりはありませんが、事態を悪化させる前にここで尋ねようとするだろうと考えました。私はメインのOSを変換し、最近それを少し提唱しているので、かなり新しいLinuxですが、まあ、これは少し刺します。やろうと思ったことはありがたいです。 編集:私はこのコマンドが実行された方法/場所を明確にしたかったのです。これは/.atx $、任意のディレクトリであるから実行されましたが、以下で詳しく説明します。 通常のユーザー名brianでログインしているときに、/.atx3つの構成タイプのテキストのみのファイルを含むターミナルを開いていました。各ファイル名は.。で始まります そのディレクトリ/名前/ファイルは、一般的なパッケージの一部ではなく、プログラムで移動していた任意の構成セットだけです。ファイルには、SQLサーバーの接続文字列情報が含まれており、それらを半ば隠しておく必要がありました。


1
「suspend」コマンドを発行した後に端末機能を再開するにはどうすればよいですか?
suspend端末に入力すると、実行が中断されました。 どうすれば通常のターミナル機能に戻ることができますか?私が試したてきたCtrl+ C、Ctrl+ D、Ctrl+ Q(ここで示唆したように)、およびCtrl+ Zが、これらの作品のどれも。もちろん、ターミナルを閉じて新しいターミナルを開くことはできますが、ターミナルの機能を「再開」する方法はありませんか? Ubuntu GNOME 16.04をデフォルト(bash)シェルで実行しています。

1
履歴コマンドはどのように機能しますか?
ターミナルでコマンドを入力すると~/.bash_history、セッションを終了するまでファイルに表示されません。 また、~/.bash_historyファイルを手動で編集するとき(たとえば、最後の3つのコマンドを削除するとき)にhistory入力すると、~/.bash_historyファイルから削除したコマンドが表示されます。セッションを終了して再度ログインしたときにのみ、それらは消えます。 ~/.bash_historyファイルとhistoryコマンドはどのように同期されますか?

7
〜/ .bash_historyから履歴を削除する
に保存されている端末またはコマンドラインの履歴についていくつか質問があり~/.bash_historyます。 historyコマンドでターミナルにファイルを表示できますが、ファイルで開こうとするgedit bash_historyと完全に空です。どうして? 次のコード行を使用して、ターミナルからファイル内の特定の数の行を削除する方法を見つけました。 for i in {1..N}; do history -d N; done ここで、Nは削除する行(またはコマンド)の数ですが、履歴ファイルにはこの最後のコマンドが表示されるため、対象をカバーしようとする場合はそれほど賢くありません。だから問題は:最後のコード行をどのように与え、これが記録されないようにすることができるか?

2
バックスペースは実行中のbashスクリプト内では機能しません
1行ずつ読み取り、入力した行をターミナルに出力する非常に単純なスクリプトを実行しています。 while read CMD; do echo $CMD done 正常に動作しますが、backspace文字を含む行を編集しようとすると、文字^?を削除する代わりに印刷されます。Ctrl+ を押すとbackspace、出力はになり^Hます。この動作を修正してbackspace、これらの文字を追加する代わりに文字を削除するにはどうすればよいですか?stty erase '^?'コマンドを試しましたが、うまくいきませんでした。

3
ファイルがまだそこに存在しない場合にのみ、ディレクトリ構造内のすべてのファイルを特定のパスにコピーします
ファイルが存在しない場合にのみ、ディレクトリ構造から特定のディレクトリにすべてのファイルをコピーします。 このスタックオーバーフローの質問の最初の部分を手に入れました: find . -type f -exec cp {} /target-directory \; ファイルが存在するかどうかを確認するにはどうすればよいですか?そうでない場合はファイルをコピーし、そうでない場合はスキップします。

2
Ubuntu 16.04でパッケージをスナップするエイリアスを作成する正しい方法は何ですか?
TL; DR Ubuntu 16.04でパッケージをスナップするシステム全体のエイリアスを作成する方法 もっと詳しく Blenderを簡単にインストールしたいのですが。私はそこにあることが見出さブレンダー-tpawのインストール可能なパッケージ。残念ながらそれをインストールした後、名前blender-tpawではなくターミナルで利用できますblender。 スナップエイリアスの使用 したがって、最初に私はcommandを実行しようとしましsudo snap alias blender-tpaw blenderた:https : //insights.ubuntu.com/2017/01/28/ubuntu-core-how-to-enable-aliases-for-your-snaps-commands /。しかし、これは私が持っているものです: error: cannot perform the following tasks: - Enable aliases for snap "blender-tpaw" (cannot enable alias "blender" for "blender-tpaw", no such alias) / usr / local / binにシンボリックリンクを作成します 次に、シンボリックリンクを作成しようとしましたsudo ln -s /snap/bin/blender-tpaw /usr/local/bin/blenderが、この場合、非常に奇妙なことが起こります。blenderターミナルに入力すると、snapコマンドの出力が表示されます... /etc/profile.dにエイリアスを配置します 私もエイリアスを作成しようとしました /etc/profile.d/alias.sh …

1
外部から呼び出されたときにスクリプトが機能しない
単純なスクリプトを使用して、.mp4ファイルから.mp3を作成します。 #!/bin/bash for i in *.mp4 do ffmpeg -i "$i" -ab 128k "${i%mp4}mp3" done スクリプトは、デスクトップから実行するか、ターミナルから呼び出すと正常に実行されます。ただし、スクリプトが外部スクリプトから呼び出されると、実行に失敗し、 「* .mp4:そのようなファイルまたはディレクトリはありません」。 問題はシェル拡張にあると思われますが、この状況でそれを修正する方法に頭を抱えることはできません。
8 bash  scripts 

7
Bashスクリプト-次の文字列を連結する方法は?
Linux(Ubuntu / Fedora)で検出を実行するbashスクリプトの一部を次に示しますcpuid。 /usr/bin/cpuid > id.txt CPUID=id.txt echo `grep "extended model" $CPUID` | sed 's/0x//' | awk ' { print $4 } ' > cpu.txt a=`cat cpu.txt` echo `grep "extended family" $CPUID`| sed 's/0x//' | awk ' { print $4 } ' > cpu.txt a+=`cat cpu.txt` つまり、私のラップトップの場合、スクリプトのこの部分(ここに表示)は60になります。 中間ファイル(cpu.txt)を使用せずに、ローカル変数のみを使用してこれを行うにはどうすればよいですか?


5
3日ごとに文字通りbashスクリプトを実行する
3日ごとに文字通りシェルスクリプトを実行したい。crontabを使用して01 00 */3 * *も、31日に実行され、その後、月の1日に実行されるため、実際には条件を満たしません。*/3構文は1,4,7 ... 25,28,31を言うと同じです。 スクリプト自体で条件をチェックし、3日が経過していない場合は終了する方法があるはずです。したがって、crontabはスクリプトを毎日実行しますが、スクリプト自体は3日が経過したかどうかをチェックします。 いくつかのコードも見つけましたが、構文エラーが発生しました。助けていただければ幸いです。 if (! (date("z") % 3)) { exit; } main.sh: line 1: syntax error near unexpected token `"z"' main.sh: line 1: `if (! (date("z") % 3)) {'

1
Win Explorerを使用してWindows上のUbuntuでBashのフォルダーを作成する方法
Windowsエクスプローラーで「Windows上のUbuntuのBash」を使用してホームディレクトリーにフォルダーまたはファイルを作成するにはどうすればよいですか? 私は以下を試しました: WindowsエクスプローラでC:\ Users {user} \ AppData \ Local \ lxss {username}と入力します Windowsエクスプローラを使用して「scripts」という名前のフォルダを作成します Windows上のUbuntuでBashを開く 走る ls -a 結果:合計0 このような作品を作る予定はありますか? PS回避策のような: 私はmkdir&touchbashでフォルダとファイルを作成するために使用しました例えばscripts/menu.py Windows ExplorerとNotepad ++を使用してmenu.pyを編集しました 私はスクリプトを実行しました python scripts/menu.py

4
ツールがすでに実行中であるかどうかを検出しますが、現在のユーザーに対してのみ
今まで使った pidof -o %PPID -x "my-tool" 最終的に実行中のmy-toolのインスタンスのpidを検出します。 これは、実行可能なbashスクリプトであるmy-toolファイルの短縮バージョンです。 #!/bin/bash if pidof -o %PPID -x "my-tool"; then echo "Already running" exit 1 fi ... if not running go on しかし、ユーザーごとに1つのインスタンスとマシンごとに複数のインスタンスを許可する必要があるので、同時に100のmy-toolを実行できますが、ユーザーごとに1つしかありません。 シングルトンのようなものを作成するにはテストが必要です。ツールが開始され、別のインスタンスが実行されている場合、ツールは自動的に終了します。 つまり、bashスクリプトが現在のユーザーに対して既に実行されているかどうかを検出でき、この場合は終了する必要があります。 方法 ?
8 bash 

1
php7.0- {いくつかのモジュール}をapt-getインストールする短い方法
私は現在php7.0をインストールしていますが、モジュールをインストールする短い方法があるかどうか疑問に思っていました。通常は次のように入力します。 apt-get install php7.0 php7.0-fpm php7.0-mbstring php7.0-mcrypt php7.0-phpdbg php7.0-dev php7.0-curl php7.0-sqlite3 php7.0-json php7.0-gd php7.0-cli 正規表現があるので、php7.0を何度も入力する必要はありませんか?何かのようなもの: apt-get install php7.0-{fpm mbstring mcrypt phpdbg dev curl sqlite3 json gd cli} このようなものを何時間も検索しましたが、見つかりませんでした。よろしくお願いします。
8 apt  bash  regex  php7 

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