学习笔记--2014年7月7日
2014年7月7日晚上學習筆記
================
目錄:
一、學習Bash筆記
二、利用Ubuntu創建無線wifi
三、在Ubuntu里禁用不用的桌面
四、安裝軟件時依賴沖突的萬能解決方案
五、Ubuntu安裝nginx
六、配置自己的ubuntu編碼
七、ubuntu 命令行管理軟件
八、ubuntu 命令行安裝 phpmyadmin
九、ubuntu下目錄含義
--------------------
所有的文章全部在http://tiankonguse.com
上看的,記錄了一些自己認為有用的和以后常用的
===================================
學習Bash筆記--2014-07-07
來自:http://tiankonguse.com/record/record.php?id=602
----------------------
編寫工具:
vi/vim;gvim
運行bash:
sh file.sh or ./file.sh
Bash介紹
一個bash文件,就是包含shell命令的文件,也是一個shell程序
Shell變量
變量用來暫時儲存數據
使用Varname=value來給變量賦值,等號兩邊不能有空格
使用${Varname}可以獲得變量的值,大括號可以省略
有類型變量
使用declare加下面的參數聲明特定的變量
·-a將變量看作數組
·-f只使用函數名
·-F顯示未定義的函數名
·-i將變量看作整數
·-r使用變量只讀
·-x標記變量未通過環境導出
位置參數
位置參數可以理解為函數的參數。一個bash文件也可以理解為一個函數
位置參數使用$0,$1,$2等獲得他們的值
$*代表包含所有參數位置的單一字符串。
$@等價與N個單獨的由空格分隔的雙引號字符串
函數
函數可以理解為一個獨立的程序塊,可以多次使用
字符串與模式
條件測試
shell使用[]結構提供了測試各種條件的方式,稱為test測試
可以使用該結構檢驗一個文件的各種屬性(是否存在、文件類型、權限和所有者)
或者比較兩個文件那個更新,以及字符串進行比較
[和]的后和前必須有空格
字符串比較
· == 匹配
· != 不匹配
· < ?小于
· > 大于
· -n str 為null,長度大于0
· -z str 為null,長度為0
分號是shell的標準語句分隔字符
文件屬性檢查
· -d file file存在并且為一個目錄
· -e file file存在
· -f file file存在并且為一個正規文件
· -r file 對 file 有讀權限
· -s file 文件存在且非空
· -w file 對 file 有寫權限
· -x file 對file有可執行權限,如果為目錄,則有目錄搜索權限
· -O file 你是file的所有者
· -G file file的組ID匹配你的ID
· file1 -nt file2 file1比file2新
· file1 -ot file2 file1比file2舊
· -a 和 -o 操作符類似于退出狀態時所用的 && 和 || 操作符。
只有在test條件表達式內可用。
整數條件
· -lt 小于
· -le 小于等于
· -eq 等于
· -ge 大于等于
· -gt 大于
· -ne 不等于
if流程
if condition
then
statements
elif
statements
else
statements
fi
for 流程
for name [in list]
do
statement
done
read可以讀入一個字符串
ssh代碼(例子)
#########################################################################
# File Name: ssh.sh
# Author: tiankonguse
# mail: i@tiankonguse.com
# Created Time: Thu 27 Feb 2014 11:50:04 AM CST
#########################################################################
#!/bin/bash
# declare show name
declare -a names;
names[0]="ms";
names[1]="msProxy";
nameNum=${#names[@]};
echo "pleace select a number that you want to connect.";
i=0;
while [ $i -lt $nameNum ];
do
? ?echo "$i : ?${names[$i]}";
? ?i=$(($i+1));
done
# declare command name
declare -a commands;
commands[0]="ssh tiankonguse@tiankonguse.com";
commands[1]="ssh -D 7070 tiankonguse@tiankonguse.com ";
read i;
if [[ $i =~ ^[0-9]+$ ]]&&[[ $i < $nameNum ]]
then
? ?eval ${commands[$i]};
else
? ?echo "input error!";
fi
==========================
利用Ubuntu 無線網卡創建wifi
參照:http://tiankonguse.com/record/record.php?id=678
第一步:安裝 plasma-nm
可以使用下面的命令,不過建議點擊這個鏈接
sudo apt-get install plasma-nm
第二步:啟動程序
可以使用 Alt+F2 后,搜索 kde-nm-connection-editor
也可以終端直接輸入 kde-nm-connection-editor 。
第三步:建一個wifi
點擊 add, 選擇 Wireless (shared)。
ssid 就是無線名字,比如我的是 tiankonguse。
mode 選擇 Access Point。
可以去 Wireless Security 設置一個密碼,我選的是 WPA & WPA2 Personal 那一項。
第四步:連接 wifi
一般是點擊聯網的圖標,選擇 Connect to Hidden Wi-Fi network 那一項, Connection 選擇你新建的 wifi .
第五步:真正的連接wifi
在wifi列表中是不是看到了 你建的wifi,點擊,輸入密碼等一會就可以了。
教程是美好的,現實是殘酷的。
實際上第二個教程我在第三步建wifi的時候就彈出一個對話框,提示我我的電腦不支持 ap-wifi.
或者是第四步吧,記不清了。
框的內容大概是
(32) Access Point (AP) mode is not supported by this device.
然后中午午覺時間到了,我關閉電腦去睡午覺。
醒來后開機,發現 wifi 列表中有我建的wifi, 點擊之,漫長的等待后竟然連上了。
手機拿出來試試,真的可以建wifi了。
參照:http://ubuntuhandbook.org/index.php/2014/02/wifi-hotspot-ubuntu-laptop-android/
http://ubuntuhandbook.org/index.php/2014/06/share-internet-with-android-ubuntu-1404/
========================
在Ubuntu里禁用不用的桌面:
簡單的說就是在
/usr/share/xsessions/ 里面,
把不想顯示的桌面對應的文件添加下面一句話即可
NoDisplay=true
用來顯示:
Delete `NoDisplay=true' in
/usr/share/xsessions/awesome.desktop
?solves the problem.
====================
安裝軟件時依賴沖突的萬能解決方案
來自:http://tiankonguse.com/record/record.php?id=653
-------------------------
安裝軟件時提示的是什么錯誤信息呢?
安裝的軟件依賴的軟件版本過低.
首先系統怎么知道依賴沖突呢?
應該是每個軟件都寫清楚了自己依賴哪些軟件以及這些軟件的最低版本.
那我們能不能手動修改這些依賴的軟件的版本呢?
如果知道這些信息在哪里儲存,那就可以修改了.
那這些信息在哪里儲存呢?
貌似在 /var/lib/dpkg/status 這個文件里面.
比如我的 vim-common 的信息
Package: vim-common
Status: install ok installed
Priority: important
Section: editors
Installed-Size: 296
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: i386
Source: vim
Version: 2:7.3.547-6ubuntu3~blueyed1~precise
Depends: libc6 (>= 2.3.4)
Recommends: vim | vim-gnome | vim-gtk | vim-athena | vim-nox | vim-tiny
Conffiles:
/etc/vim/vimrc 682aa2a07693cc27756eee9751db3903
Description: Vi IMproved - Common files
Vim is an almost compatible version of the UNIX editor Vi.
.
Many new features have been added: multi level undo, syntax
highlighting, command line history, on-line help, filename
completion, block operations, folding, Unicode support, etc.
.
This package contains files shared by all non GUI-enabled vim
variants (vim and vim-tiny currently) available in Debian.
Examples of such shared files are: manpages, common executables
like xxd, and configuration files.
Homepage: http://www.vim.org/
Original-Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
可以看到里面的兩個對我們來說重要的數據
Version: 2:7.3.547-6ubuntu3~blueyed1~precise
Depends: libc6 (>= 2.3.4)
假設我們的 libc6 的版本是 2.3.2 的話,安裝 vim-common 的話機會提示依賴沖突,說需要 libc6 的版本至少是 2.3.4.
此時我們可以做修改了最低依賴版本會怎么樣呢?
比如
Version: 2:7.3.547-6ubuntu3~blueyed1~precise
Depends: libc6 (>= 2.3.2)
這是再次修復竟然成功了,也可以卸載了.
好吧,解決方案就是這個:把依賴的軟件的版本修改為目前安裝的版本即可.
==========================
Linux下man手冊的認識
來源:http://tiankonguse.com/record/record.php?id=183
用Linux要學會使用man info命令
這是最好用的教程
例如:man ls
?man date
?info printf
man細節使用說明
可以使用范圍
1 -- commands
2 -- system calls
3 -- library calls
4 -- special files
5 -- file formats and convertions
6 -- games for Linux
7 -- macro packages and conventions
8 -- system managment commands
9 -- other
中文含義:
1是普通的命令
2是系統調用,如open,write之類的(通過這個,至少可以很方便的查到調用這個函數,需要加什么頭文件)
3是庫函數,如printf,fread
4是特殊文件,也就是/dev下的各種設備文件
5是指文件的格式,比如passwd, 就會說明這個文件中各個字段的含義
6是給游戲留的,由各個游戲自己定義
7是附件還有一些變量,比如向environ這種全局變量在這里就有說明
8是系統管理用的命令,這些命令只能由root使用,如ifconfig
9其他
===========================
Ubuntu安裝nginx
來源:http://tiankonguse.com/record/record.php?id=494
-----------
安裝nginx
sudo apt-get nginx
配置文件簡介
所有的配置文件都在/etc/nginx下,并且每個虛擬主機已經安排在了、etc/nginx/sites-available下
程序文件在/usr/sbin/nginx
日志放在了/var/log/nginx中
并已經在/etc/init.d/下創建了啟動腳本nginx
默認的虛擬主機的目錄設置在了/var/www/nginx-default(有的版本默認的虛擬主機的目錄設置在了/var/www or /usr/share/nginx/html)
安裝FastCgi
nginx本身不能處理php,它只是個web服務器 ,當接收到請求后,如果是php請求,則發給php解釋器處理并把結果返回給客戶端
所以我們還要安裝其他東西以支持我們需要的服務,比如支持FastCgi
/usr/bin/spawn-fcgi這個文件來管理fastcgi,它原屬于lighttpd這個包里面,但現在spawn-fcgi被分離出來單獨成包
sudo apt-get install spawn-fcgi
配置nginx
修改nginx的配置文件:/etc/nginx/sites-available/default修改方機名:
server_name localhost
修改index的一行內容添加index.php:
index index.php index.html index.html
去掉下面部分的注釋用于支持php腳本:
location ~ \.php$ {
? ?include /etc/nginx/fastcgi_params; #需放在第一行,否則會出錯
? ?fastcgi_pass 127.0.0.1:9000;
? ?fastcgi_index index.php;
? ?fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
}
重啟nginx
/etc/init.d/nginx stop
/etc/init.d/nginx start
啟動fastcgi php:
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -i www-date -f /usr/bin/php-cgi
為了讓PHP-cgi開機自動啟動
在/etc/rc.local文件中的添加 (加到exit 0前面才行 )
spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -i www-date -f /usr/bin/php-cgi
==================
配置自己的ubuntu編碼
來源:http://tiankonguse.com/record/record.php?id=505
-----------------
支持中英文
sudo vi /var/lib/locales/supported.d/local
修改為:
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
默認英文
sudo vi /etc/default/locale
改成:
LANG="en_US.UTF-8"
LANGUAGE="en_US:en_US:en"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
加載:
source /etc/default/locale
重新加載語言
sudo locale-gen
=====================
ubuntu 命令行管理軟件
來源:http://tiankonguse.com/record/record.php?id=573
1、apt命令管理。
(1)安裝:apt-get install softname1 softname2 …;
(2)修復:apt-get -f install softname1 softname2... ;(-f Atemp to correct broken dependencies)
(3)重新:apt-get --reinstall install softname1 softname2...;
(4) 簡單卸載 : apt-get remove softname1 softname2 …;(配置文件未刪除)
(5) 完全卸載 : apt-get --purge remove softname1 softname2...;(同時清除配置)
(6) 完全卸載2 : apt-get purge sofname1 softname2...;(清除配置文件)
apt常用命令
關于 apt 的命令有很多的,這里只是簡單的記錄一下基本用法。
apt-get install # ------(package 安裝包)
apt-get --reinstall install # -----(package --reinstall 重新安裝包)
apt-get -f install # -----(強制安裝, "-f = --fix-missing"當是修復安裝吧...)
apt-get remove #-----(package 刪除包)
apt-get remove --purge # ------(package 刪除包,包括刪除配置文件等)
apt-get autoremove --purge # ----(package 刪除包及其依賴的軟件包+配置文件等(只對6.10有效,強烈推薦))
apt-get update #------更新源
apt-get upgrade #------更新已安裝的包
apt-get dist-upgrade # ---------升級系統
apt-get dselect-upgrade #------使用 dselect 升級
apt-get build-dep # ------(package 安裝相關的編譯環境)
apt-get source #------(package 下載該包的源代碼)
apt-get clean && apt-get autoclean # --------清理下載文件的存檔 && 只清理過時的包
apt-get check #-------檢查是否有損壞的依賴
apt-cache search # ------(package 搜索包)
apt-cache show #------(package 獲取包的相關信息,如說明、大小、版本等)
apt-cache showpkg #顯示軟件包更多細節,以及和其它包的關系。
apt-cache depends #-------(package 了解使用依賴)
apt-cache rdepends # ------(package 了解某個具體的依賴,當是查看該包被哪些包依賴吧...)
apt-file search filename -----查找filename屬于哪個軟件包
apt-file list packagename -----列出軟件包的內容
apt-file update --更新apt-file的數據庫
2、dpkg方式安裝deb包
(1) 安裝 : dpkg -i package_name.deb
(2) 簡單卸載 : dpkg -r pkg1 pkg2 ...;
(3) 完全卸載 : dpkg -P pkg1 pkg2...;
dpkg擴展知識
dpkg 使用文本文件來作為數據庫.通稱在 /var/lib/dpkg 目錄下. 通稱在 status 文件中存儲軟件狀態,和控制信息. 在 info/ 目錄下備份控制文件, 并在其下的 .list 文件中記錄安裝文件清單, 其下的 .mdasums 保存文件的 MD5 編碼.
dpkg -l 可以顯示包的列表,后面也可以加上搜索的包的名字
每條記錄對應一個軟件包, 注意每條記錄的第一, 二, 三個字符. 這就是軟件包的狀態標識, 后邊依此是軟件包名稱, 版本號, 和簡單描述.
第一字符為期望值,它包括:
u 狀態未知,這意味著軟件包未安裝,并且用戶也未發出安裝請求.
i 用戶請求安裝軟件包.
r 用戶請求卸載軟件包.
p 用戶請求清除軟件包.
h 用戶請求保持軟件包版本鎖定.
第二列,是軟件包的當前狀態.此列包括軟件包的六種狀態.
n 軟件包未安裝.
i 軟件包安裝并完成配置.
c 軟件包以前安裝過,現在刪除了,但是它的配置文件還留在系統中.
u 軟件包被解包,但還未配置.
f 試圖配置軟件包,但是失敗了.
h 軟件包安裝,但是但是沒有成功.
第三列標識錯誤狀態,可以總結為四種狀態. 第一種狀態標識沒有問題,為空. 其它三種符號則標識相應問題.
h 軟件包被強制保持,因為有其它軟件包依賴需求,無法升級.
r 軟件包被破壞,可能需要重新安裝才能正常使用(包括刪除).
x 軟包件被破壞,并且被強制保持.
dpkg的具體使用說明,可以查閱手冊,這里列出基本說明信息。
dpkg --info "軟件包名" --列出軟件包解包后的包名稱.
dpkg -l --列出當前系統中所有的包.可以和參數less一起使用在分屏查看. (類似于rpm -qa)
dpkg -l |grep -i "軟件包名" --查看系統中與"軟件包名"相關聯的包.
dpkg -s 查詢已安裝的包的詳細信息.
dpkg -L 查詢系統中已安裝的軟件包所安裝的位置. (類似于rpm -ql)
dpkg -S 查詢系統中某個文件屬于哪個軟件包. (類似于rpm -qf)
dpkg -I 查詢deb包的詳細信息,在一個軟件包下載到本地之后看看用不用安裝(看一下唄).
dpkg -i 手動安裝軟件包(這個命令并不能解決軟件包之前的依賴性問題),如果在安裝某一個軟件包的時候遇到了軟件依賴的問題,可以用apt-get -f install在解決信賴性這個問題.
dpkg -r 卸載軟件包.不是完全的卸載,它的配置文件還存在.
dpkg -P 全部卸載(但是還是不能解決軟件包的依賴性的問題)
dpkg -reconfigure 重新配置
3、源碼安裝(.tar、tar.gz、tar.bz2、tar.Z)
首先解壓縮源碼壓縮包,可以參考這里ubuntu解壓命令(http://tiankonguse.com/record/record.php?id=495)
然后進入到解壓出的目錄中,建議先讀一下README之類的說明文件
一般依次執行 ./configure; make; sudo make install; ?即可完成安裝。
==========================
ubuntu 命令行安裝 phpmyadmin
來源:http://tiankonguse.com/record/record.php?id=598
--------------
安裝phpmyadmin
sudo apt-get install phpmyadmin
訪問phpmyadmin
php -- /var/www
phpmyadmin -- /usr/share
創建一個鏈接:
sudo ln -s /usr/share/phpmyadmin /var/www
======================
ubuntu 下個目錄的含義
來源:http://tiankonguse.com/record/record.php?id=604
----------------
/bin : bin是binary的縮寫;
/boot :存放啟動Linux時使用的一些核心文件;
/root :root(超級管理員)的用戶主目錄;
/sbin :s就是Super User,存放系統管理員使用的系統管理程序;
/dev :dev是device(設備)的縮寫;這個目錄下是所有Linux的外部設備;
/etc :所有的系統管理所需要的配置文件和子目錄;
/home :用戶的主目錄;
/lib :存放系統最基本的動態鏈接共享庫;幾乎所有的應用程序都需要用到這些共享庫;
/lost+found :這個目錄平時是空的,當系統不正常關機后,一些丟失文件會存放到該目錄下;
/mnt :空目錄,系統提供這個目錄是讓用戶臨時掛載別的文件系統;
/proc :虛擬目錄,它是系統內存的映射,我們可以通過直接訪問這個目錄來獲取系統信息。
/tmp :存放一些臨時文件;
/usr :這是個最龐大的目錄,很多應用程序和文件幾乎都放在這個目錄下;包括以下內容:
? ? /usr/X11R6 :存放X-Windows的目錄;
? ? /usr/bin :存放許多應用程序;
? ? /usr/sbin :存放給超級用戶使用的一些管理程序;
? ? /usr/doc :存放Linux文檔;
? ? /usr/include :Linux下開發和編譯應用程序需要的頭文件;
? ? /usr/lib :存放一些常用的動態鏈接共享庫和靜態檔案庫;
? ? /usr/local :一般用戶的/usr目錄,在這安裝軟件最適合;
? ? /usr/man :幫助文檔目錄;
? ? /usr/src :Linux開放的源代碼就存在這個目錄;
/var :存放那些不斷在擴充著的東西;為了保持/usr的相對穩定,那些經常被修改的目錄可以放在這個目錄下;其中,系統的日志文件就在/var/log目錄中;
轉載于:https://blog.51cto.com/cysky/1435654
總結
以上是生活随笔為你收集整理的学习笔记--2014年7月7日的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android游戏的心跳效果
- 下一篇: [\u4e00-\u9fa5] //匹配