一つ前のフォルダに戻る
cd -
ls のオプション
-t(時系列), -l(詳細も記述) -r(順番を反対に) -a(隠しファイルを含む)-
ワイルドカード: *,?,[文字列], [a-z], [A-Z], [A-Za-z],[0-9]
ブレース展開 or: {hoge, hogeho,hogehoge}
リンクを設定
ln -s file linkname (-sがない場合、ハードリンクの作成になる)
apt
sudo apt update
sudo apt upgrade
sudo apt install hoge
今どこ半島
pwd
内部のディレクトリの容量確認(-c 合計,-h 単位, -s ディレクトリの中を表示しない)
du -csh
ディスクの空き容量
df -h
メモリの使用状況確認(ギガバイト)
free -g
実行中のプロセスの確認
top -n #(n回実行)
テキストファイルを見る
less filename
space 次ページ: b 一つ前のページへ移動: / + 文字列 検索
terminalで新しいタブ, macでは使えない
gnome-terminal --tab
-eでオプションをしていできるので、sshに接続した新しいタブを開くとかができる。
優先順位nice値を指定して実行する。-20から20で小さい方が優先度が高い。マイナスはrootしか使えない.デフォルトは+10
nice -n #(-20--20) コマンド
キャッシュの解放
$sudo sh -c "echo 1 > /proc/sys/vm/drop_caches"
なお、2を指定した場合にはSlabキャッシュの解放、3を指定した場合にはページキャッシュとSlabキャッシュの解放を行います。
find オプション
find ファイル名
find 検索先 -name ファイル名
find 検索先 -atime 日数(0 今日 -3 ここ三日 +3 三日以上前) アクセスされた日数で検索
find 検索先 -mtime 日数 更新された日数で検索
-amin, -mminも使える。
find ファイル名 -type f ファイルのみ検索 (d ディレクトリのみ)
find 検索先 条件 -and (-or) 条件2
find 検索元 検索ファイル名 -exec 実行するコマンド \; 結果に対してコマンドを実行する
標準入出力 忘れがちなもの
>:標準出力をファイルに出力
> >:標準出力をファイルに追記
< :標準入力をファイルにする
2>:標準エラー出力ファイルに出力
2 > >:標準エラー出力ファイルに追記
>&:標準出力とエラー出力をファイルに出力
コマンドを連続で実行
hoge ; HOGE hogeが終了してから、実行結果に関わらずHOGEを実行する
hoge & HOGE hogeをバックグラウンドで実行しつつ、HOGEを実行する
hoge && HOGE hogeが正常終了してから、HOGEを実行する
hoge | HOGE hogeの出力結果を渡して、HOGEを実行する
hoge || HOGE hogeが異常終了したら、HOGEを実行する
クリップボードにコピー
cat hoge.txt | xsel --clipboard --input
cat hoge.txt | pbcopy (macの場合)
どっちも面倒なので次の様にしておけばいいい
alias pbcopy='xsel --clipboard --input'
dmidecode
sudo dmidecode -t X
X=bios, system,baseboard, chassis, processor, memory, cache, connector, slot
-qで表示が減る。
指定文字列がある行を表示
grep (-i 大文字小文字区別しない、-n 行数も表示、-v 一致しないところ, -r ディレクトリ内も検索対象) 文字列 (-rlで再起的に検索) ファイル
よく忘れる文字
*はオールマイティ,もしhibiki, tsubasa,kurisuという文字列を含むもののみ探したければ、*{hibiki, tsubasa,kurisu}*で検索すればいい
arXivから落としたソースや.tgzを展開
tar -xvzf file.tgz
-cはファイル作成,-vは状況表示,-fは圧縮ファイル名指定,-xは解凍,-zはgz,-iはbz2,-Jはxz
.zipを展開
zip -r xxx.zip directory / unzip xxx.zip
rsyncでバックアップ
rsync -avz -e ssh original server:file
-avzはディレクトリから再帰的コピー,情報を表示,通信を圧縮.-e sshはsshを使いますよということ
文字列を名前に含むファイルとディレクトリを探す(定期的にupdatedbでデータベースを更新する必要あり)
locate 文字列
ファイルの中身を確認
頭からX行
head -X ファイル名
お尻からX行
tail -X ファイル名
xargs
xargsで前の出力を受け取る。例えばすべてのファイルを.pyから .txtにしたければ
find "*.py" | sed -e 's/\.py$/.txt/' | xargs -I{} mv {}x {}
とすれば良さそう。ここでsedは置換。
権限(読み込み4,書き込み・変更2,実行1,順番は所有者グループその他の順)
chmod 644 ファイル
-Rでディレクトリ内全部。macのファイルは755になってる。状況はls -lsで確認ができる
所有権
chown username ファイル
でファイルの所有者を変更できる。グループ所有権も変更したいときにはユーザー:グループでいい。-Rでディレクトリ内全部。macのファイルは755になってる。状況はls -lsで確認ができる
文字の置換
tr A B A,Bを置換する。標準入出力で読み込む必要があるので以下の様にして使う。
tr "," ":" <input.txt > output.txt でinput の,を:に書き換えてoutputに書き込む。
tr "ABCD" "1234" とするとAが1みたいに変換される。置換後が足りない時には最後の文字に変換される。
tr -d "hoge" とすると、h o g eが削除される。
sort
sort -n file テキストを番号順に並べ替える。fileを複数指定するとまとめて並び替える。
sort -nr file で番号の降順
uniq
uniq file.txtで各行の重複を取り除いて表示
ジョブ
カレントと、バックグラウンドのジョブの確認。-lでPIDの確認
jobs
ジョブをバックグラウンドで実行、引数がないとctrl+Zで中止していたジョブ
bg % job番号
ジョブをフォアグラウンドで実行
fg % job番号
ジョブを停止
kill % job番号
実行中のプロセスの確認(a端末操作 x端末操作以外 uユーザー)
ps axu
(-u usernameでユーザーを指定して検索, -pでPID指定して検索。grep と合わせてポート調べがち
ポートNoが分かっている場合のプロセスの確認
lsof -i:[portNo]
kill
kill PID
これで殺せないときはkill -9 PIDとすればよい
sshのリモートからコピー
scp -r server:original file
sshの接続先でコマンド実行
ssh server -t "command"
e.g."cd hoge; bash --login"でhogeディレクトリにログイン,"emacs hoge"でemacs 起動
公開鍵認証
ssh-keygen -t rsa -b 2048で公開鍵作成rsaで2048 bitの鍵
id_rsaが秘密鍵、id_rsa.pubが公開鍵。公開鍵を接続先の~/.ssh/authorized_keysへ登録する
このとき、ssh先の~/.sshが700、~/.ssh/authorized_keysが600であることを確認しておく。
登録は例えば、cat ~/.ssh/id_rsa.pub | ssh hoge_user@hogehoge.hoge.com 'cat >> .ssh/authorized_keys'
公開鍵認証以外を無効にするには、/etc/ssh/sshd_config/
PasswordAuthentication no
に設定する。他にも、PubkeyAuthentication yesにしておくべき、RSAAuthentication yes, RhostsAuthentication noはどうなんだろうな。
ssh ポートフォワード:攻めのポート30000を受けのポート22222に対応させる。
受けの設定
まずは/etc/ssh/sshd_configのフォルダが作られているか確認しないといけない。
なければsudo apt install sshをすればsshがインストールされる。普段使ってるsshとの違いはよくわからない。
/etc/ssh/sshd_config に開放するポートとポートフォワードの許可を追加
Port 22222
AllowTcpForwarding yes
#は初期設定なのでそれは消さずに追記すればよい。
sudo /etc/init.d/ssh restart
でsshをリスタート。
ここでfirewallを設定していると、Portが設定されていてもfirewallでブロックされる可能性がある。
firewall-cmd --add-port=[port#]/tcp --zone=[zone] --permanent
攻めの手続き
まずは京大のsshサーバーを経由して受けで開いてたポートにログインする
ssh -fN -L 30000:[受けのIPアドレス]:22222 [ECS-ID]@forward.kuins.kyoto-u.ac.jp
(-fNはバックグラウンド起動、-Lは攻めでポートを開いて受けのポートに流し込む。これは京大のポートフォワードサーバの場合)
ssh -p 30000 [受けのユーザー]@localhost
これで攻めから受けにログインできる。次のHPも参考(けつあご,京大)。
使い終わったらポートを閉じておく。
なんかlinuxでロックしているだけだとログインできるけど、そうでないとできなくなりうるらしい。そういう時はautosshを用いればいいらしい。
ssh-agent
ssh-add (-k) 鍵の場所でmacに鍵を覚えさせることができる(メモリ上)。これによっていちいちパスワードを入力しなくても複数回のrsync等が可能になる。-kをつけると終了しても情報が残る
ssh -A でssh接続するとこの情報を持ってサーバーへ入れる
-l 登録している鍵の確認
-d (-D) 登録している鍵の(全)消去, 場所で消去する奴を指定する。
ssh-keygen -yf ~/.ssh/秘密鍵ファイル名で公開鍵を出力、パスフレーズが設定されているかどうか確認できる。
ssh-keygen -f 秘密鍵ファイル名 -p でパスワード変更
X11
/etc/ssh/sshd_config のX11Forwardingをyesにする。
でssh -XY hoge で接続できる。
macでつなぐ場合にはデフォルトだとなぜか20分でX11がタイムアウトになるので以下をconfigに追記
ForwardX11Timeout 24h(続ける長さ)
.ssh/configの設定(ssh)
((ssh -i ~/.ssh/id_filename -p portnumber username@address は次の様に設定しておけば良い))
Host hostname (ssh hostname でこのsshに接続する)
Hostname addressなど@以下
User username
Port portnumber(指定向こう側で開けているポート番号を指定する。デフォでは22)
IdentityFile ~/.ssh/id_filename(鍵が入ってるファイル)
(ForwardX11 yes (-X) X11 fowardingをデフォルトで設定する場合)
(Compression yes (-C) 圧縮して転送する場合)
ssh portforwardの設定 (KUINSの場合)
((ssh kyodaiPCと入力してkuinsのforwardを経由してkyodaiIPにあるPCで開いている22222のポートにusernameでログインする))
Host kyodaiPC
HostName kyodaiIP
User username
Port 22222
ProxyCommand ssh -CW %h:%p kuins_PF
Host kuins_PF
HostName forward.kuins.kyoto-u.ac.jp
User ECS-ID
LocalForward 30000 kyodaiIP:22222
その他
ssh server -t "command"
で接続先でコマンドを実行できる。-tは仮想端末を割り当てるというオプション。
-XでX11の転送を許可する、-Yで信頼されたX11の転送を許可する
KUINS-IIは外から入れるのでいじると危険らしい。注意するべき。
sftp [オプション] ホスト名 [コマンド]
sshを使って対話的にファイルの転送が行える。
-o でsshのオプションを使える。
cdでリモートでの移動、lcdでローカルでの移動といった様にlを頭につけてローカルの操作をする。
getでリモートからローカルへファイル移動、putでローカルからリモートへファイルの転送
これではtab補完ができない。 brew install lftpでlftpをインストールするとこちらではtab補完がつかえる。
lftp sftp://user@IPでつなぐ。lが!になっているので注意するべし。また、get, put はmget, mputを使う方が*とか使えて便利
sudo lastb
sshのログイン失敗履歴が残っているので(/var/log/btmp),それを確認する。
ipadからのssh接続.
termiusというアプリをしようした。公開鍵認証の設定は このサイトを参考にした。
鍵の種類はRSAの公開鍵認証を使った。
セッションの取り扱い
screen -S name nameという名前のついたセッション作成
screen -ls セッション状態の確認
screen -r PID or name アタッチする
以下のctrl + a については先頭に移動するコマンドとかぶるので~/.screenrcにescape ^Jjと設定しておけばctrl+jで同様の動作ができてこっちの方が多分使い勝手がいい
セッション中でのコマンド
ctrl + a & d デタッチ
ctrl + a & :kill で開いているscreenを強制終了
以上はスクリーンの開き方、以下は開いたスクリーン上で複数のタブを開く際の扱い方
ctrl + a & c 新しいウインドウ(スクリーンではない)を作る
ctrl + a & :kill 今いるウインドウを強制終了
ctrl + a & A でウインドウに名前をつける
ctrl + a & w 開いているウインドウの確認、下に表示される
ctrl + a & n(p) で次(前)のウインドウに切り替える
ctrl + a & # で#番目のウインドウに移動
ctrl + a & :number # で今いるウインドウを#番目に移動させる
ctrl + a & S (|)で水平(垂直)方向に画面を分割
ctrl + a & tabで分割された画面の移動
ctrl + a & Xで分割された画面の消去
ctrl + a & Qで画面分割を終了する
ctrl + a & :resize # で# cellに今の画面をリサイズする
screen1 の中でscreen2開いてしまった場合。
ctrl+a & d では外側のscreen1から抜け出す
ctrl+a & a & d で内側のscreen2から抜け出せる
screenにタッチしていたsshが死んで入れなくなった場合
s aux|grep pts|grep sshdで死んだsshのプロセス番号を確認する。
タイムスタンプやptsの番号から残っているセッションを探す。
killする。
ある決まった時間に決まったコマンドを実行させる
cronを設定する,表示する, 削除する,ユーザー指定する
crontab -e -l -r -u
書き方、毎月10日の2230に、シェルスクリプト/home/user/work.shを実行
30 22 10 * * ./home/user/work.sh
min hour day month year command の順番
sudo が頭に必要な場合
sudo suでrootとしてログインしてcrontab -eでrootのcrontabからコマンドを設定すればいい。
もしくは/etc/crontab,/etc/cron.d/ファイル名にあるcrontabファイルは実行ユーザを指定できるらしいので
日付 root コマンド
と追記しておけばrootから実行できる。
gif再生 (macだと何故か動かない...)
animate hoge.gif
フォーマット変更
convert hoge.jpg hoge.png
例えばPDFの編集したものの書き出しは次のようにできる
convert -density #(100とか) hoge.pdf hoge2.pdf
サイズ変更
convert -geometry 100x75 hoge.jpg hoge.jpg
回転
convert -rotate 30(30度) (-flip 上下反転) (-flop 左右反転)
連番の名前をつけた画像ファイルからgifを作成できる(-delayは画像の切り替わる単位10ms, -loopはループする回数で0は無限,frame_*.pngは*に数字が入る、-layer optimizeで適当に圧縮してくれる)
convert -layers optimize -loop 0 -delay 40 e*.png anim.gif
何も考えずに作っているとメモリが足りなくなりうるので、そういう場合は/etc/ImageMagick-6/policy.xmlの設定ファイルについて<policy domain="resource" name="memory" value="256MiB"/ > と書いてある部分をいじってメモリの値を1GiBとかにすればいい。
gif->mp4
ffmpeg -i [GIF ファイル] -pix_fmt yuv420p [出力ファイル名].mp4
さらに速度を上げるには, 例えば2倍にするには
ffmpeg -i [出力].mp4 -vf setpts=PTS/2.0 -af atempo=2.0 [出力2].mp4
初期設定
自己紹介
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Omit --global to set the identity only in this repository.
運用
git init ディレクトリの初期化, .gitが作成される。
git add (name) (name)ファイルの変更履歴をローカルリポジトリに保存したいファイルをインデックスに追加.全ファイルに適用する場合には-A
-pを使うと部分的にaddすることができる。
git commit -m "(message)" (message)をつけてaddした内容をローカルリポジトリに保存する。以前のcommitからの差分が保存される。-Aについては同様
git status 状況の確認、ブランチとcommit状況が確認できる。
git log --graph(グラフ) --all(全てのブランチ) -oneline(一行で) コミット履歴を見る。
git diff (commit A) (commit B) A,Bの差分を見る。
git diff (--cached)インデックスとワークツリー(リポジトリとインデックス)の差分を見る
git checkout (hoge) HEADをhogeブランチやコミットに移動して、ワークツリーとインデックスをHEADの内容に更新する。
git branch (hoge) ブランチ(hoge) を作成
git checkout -b (hoge) ブランチ(hoge) を作成してそちらへ移動
git merge (branch name) 今いるブランチのデータに(branch name)での変更をマージする。
git rebase main 今いるブランチを最新のmainからブランチしたものに変更する(mainでの変更履歴を取り込む)
git cherry-pick (commit ID) 今いるブランチに、ある特定のコミットの変更をコピーする
git reset --soft HEADを指定したコミットにリセット, --mixed indexをリセット, --hard インデックスとワークツリーをリセット
git stash コミットしたくないけどなくなると困る変更を保存する。
github
ping
-Rで経路を記録
-4(6)でIPv4(6)で通信する
IPまでに通過する経路を確認する
traceroute IPアドレス(ホスト名)
IPアドレスかわホスト名(NetBIOS)を知りたい時
smbutil -v status -ae "IPアドレス"
IPアドレスとMACアドレスの対応
arp -a
IPアドレスの固定
sudo emacs /etc/netplan/99_config.yamlで以下を追記
今のところこれで問題なく動いているが今後何か問題が出るかも
*DNSサーバーは以下のコマンドでは確認できないかもしれない。LAN内にmacがあればネットワーク設定から確認できる。
DNSサーバーを設定できていないと、外からつなげるが、内からLANの外に出れなくなっちゃう。
network:
version: 2
renderer: NetworkManager
ethernets:
enp4s0:(ここはインターフェース名)
dhcp4: false
dhcp6: false
addresses: [ここにIPアドレスを記載/24]
gateway4: ゲートウェイアドレスを書く(ip route show で確認、via以下のアドレス))
nameservers:
addresses: [DNSサーバーのIPアドレス(cat /etc/resolv.confで確認)]
次のコマンドで設定を適用する
sudo netplan apply
pathを通す
home/userにbin/を作成して内部にコマンドを表すテキストファイルを作成すれば~/.bashrcを編集しなくてもコマンドを追加できる。(もちろん実行できるようにするために権限は設定しないといけない。)
通っているPATHはecho $PATHで確認できる
ただし、このときにpathを通しておく必要がある。bashrcに以下を追記?
export PATH=$PATH:/~bin
コマンド格納path
which [command]
通ってるパスの確認 (echoで表示させる)
echo $PATH
環境設定を適用
source ~/.bashrc
.bash_profile->.zshenv
.bashrc->.zshrc
aliasの例
alias ls='ls --color=auto'
引数が2つ以上ある時のaliasの代わり
function shortcut(){command hogehoge $1 $2}
link stationなどのマウント(cifs,-oでユーザーや権限,vers=2.0はなんかバージョンらしい。研究室のやつは1.0でないといけない。)
sudo mount -t cifs -o username=namaedesu, password=passworddesu,vers=2.0,dir_mode=0777,file_mode=0777(ここはカンマなし) //IPaddress/folder /mnt/folder
macの場合にはfinderメニューの[移動]からサーバーへ接続を選ぶ,もしくは
mount -t smbfs //user:password@IP address/folder /mnt/folder
sudoでやってルートでマウントするとユーザーから見れない
この時にはsudo chown user fileで所有権を変更すると見られるようになる、ファイル作成、書き込みにsudo が必要なくなるのでやっておくべき。
findmnt
でマウントしているものをツリー状に表示してくれる。
新しくHDDを取り付ける手順
1.差し込む
2.デバイスを確認する。差した直後だとdmesgで[sd?]Big Stroge 10TBみたいにメッセージが出る。もしくは、/dev/sd*をlsすればわかる。lsblkも使えそう
3.HDDにファイルシステムを作成する。sudo mkfs -t ext4 /dev/sd?でできる。ファイルシステムはext4にしておけば問題ない。lsblk -fで確認
4.mountする。mount /dev/sd? hogeでhogeにマウントすればいい。一応,df -Thでマウントできてるか、ext4で初期化できてるか確認しておく。
5.mountした後、owner がrootになっていて接続できない時があった。chown usrname fileで所有権を変更しておく。
起動時に自動でマウントする(ubuntu)
マウントしたい端末のパス
sudo fdisk -l
UUIDの確認
sudo blkid /dev/sdaとか
/etc/fstabにマウント設定を記載する
UUID=hogehoege /mnt/sd ext4 defaults 0 0 (デバイス名 tab マウントポイント t ファイスシステム t オプション 0 t 0)
NASについても同様に設定することができる。sudo apt install cifsでcifsオプションを使える様にした上で
//IP address/folder /mnt/linkstation cifs username=hoge,password=hoge,vers=1.0,file_mode=0777,dir_mode=0777
と書いておけば勝手にやってくれる。
ディストリビューション, CPU, メモリの情報はそれぞれ/etc/issue, /proc/cpuinfo, /proc/meminfoに入ってるのでcatすればわかる。
温度を知る, cpuは一声40-80度くらいならセーフらしい。
sudo apt install lm-sensorsの後
sensors
視覚的に知るにはpsensorsを使うといい。GPUもわかる
cpu クロック周波数
仕様値 cat /proc/cpuinfo|grep "cpu MHz"
実測値 sar -m CPU # (#secごとに実測値を出力)
オーバークロック設定
以下のサイトを参考にする。
初心者向けのCPUオーバークロックとメモリのXMP設定方法
「MSI MEG Z490 UNIFY」をレビュー。
bluetooth
bluetoothマウスしかない時に、間違ってbluetoothをオフにしてしまってマウスが使えなくなる、という頭の悪いことをやらかした場合。
bluetoothctlを使って手動で接続する。
次の3つを参照
sono1:
sono 2nd
(sono 3rd):
基本的にはbluetoothctl
を起動して、power on
, scan on
でMACアドレスを取得して(既に接続したことのあるデバイスのMACアドレスはdevice
コマンドで確認できるので、scan しなくてもいい。scanすると大量に関係ないbluetoothが表示されて邪魔。)、pair [MAC]
, trust [MAC]
, connect [MAC]
で接続する。
ただし、scan on
がうまく行かなかった。これはhci0がdownしていたからであった。
これをsudo hciconfig -a
で確認して、sudo hciconfig hci0 up
でUPすると繋がる。
しかし、このUPがSIOCSIFFLAGS: Operation not possible due to RF-killで失敗した。これは、rfkill unblock bluetooth
、でblockを解除すれば、hci0 をupにできた。
bios の設定
基本的に機器がつながっているかを確認すればいい
ubuntu の設定
apt のインストール (emacs, screen, net-tools, make, gcc, mpich, ssh, python3-pip, python2,gnuplot-x11, lm-sensors, geeqiw, gparted, nbtscan)
HDDのマウントの設定
sshの設定
データの引越し(scp)
初期設定したもの一覧: 上のapt,
gsl,
python, conda
ドライバのインストール
PACKAGE_NAME="r8125"
PACKAGE_VERSION="9.005.01"
BUILT_MODULE_LOCATION[0]="src"
BUILT_MODULE_NAME[0]="r8125"
MAKE[0]="'make' KVER=${kernelver} modules"
CLEAN="make clean"
DEST_MODULE_LOCATION[0]="/updates/dkms"
AUTOINSTALL="yes"
ここは次のページを参考にした。各変数の意味はこのサイトを参照するべし。プリンタの設定
次のサイトを参照次
-PでPPDファイル名を指定するというのがあるが、YITPでは指定しなくてもうまく動いた。
function lab(){
command export DISPLAY=:10.0
command screen -S lab
}
alias inlab='screen -r lab'
function fld(){
command export DISPLAY=:10.0
command screen -S fld
}
alias infld='screen -r fld'
alias psensors='psensor'
alias ls='ls -FG'
alias lt='ls -tlrhFG'
alias la='ls -tlrhAFG'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias df='df -h'
alias cacheclear='sudo sh -c "echo 1 > /proc/sys/vm/drop_caches""'
alias ..='cd ..'
alias ...='cd ../..'
alias q='exit'
alias b='brew'
alias e='emacs'
alias g='git'
alias d='~/.dropbox-dist/dropboxd'
alias sc='screen'
alias glga='git log --graph --all'
alias gcom='git commit -m '
alias gadd='git add '
alias gche='git checkout'
alias gbra='git branceh'
alias gmer='git merge'
alias gche='git cherry-pick'
alias topm='top -o rsize'
alias topc='top -o cpu'
alias ipy='ipython3'
alias py='python3'
export PATH=$PATH:~/bin
export PATH=/usr/local/cuda-11.4/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}
function yscp(){
command scp -r U@Y:$1 $2
}
function scpy(){
#command scp -r $1 U@Y:$2
command scp -r $1 U@Y:$2
}
function em(){
command emacs $1 &
}
function ema(){
command emacs -nw $1
}
function emm(){
command emacs --load ~/.emacs.d/mininit.el $1 &
}
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
# PS1='${debian_chroot:+($debian_chroot)}\[\033[00;45;32m\]\u@\h\[\033[00m\]:\[\033[00;34m\]\w\[\033[00m\]\$ '
#PS1='${debian_chroot:+($debian_chroot)}\[\033[00;35m\]\u@\h\[\033[00m\]:\[\033[00;32m\]\w\[\033[00m\]\$ '#shogoki?
PS1='${debian_chroot:+($debian_chroot)}\[\033[00;35m\]\u@\h\[\033[00m\]:\[\033[00;32m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
# some more ls aliases
#alias ll='ls -alF'
#alias la='ls -A'
#alias l='ls -CF'
# Add an "alert" alias for long running commands. Use like so:
# sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi