ref:ttps://mp.weixin.qq.com/s_biz=MzI4Njg5MDA5NA==&mid=2247484231&idx=1&sn=4cf217a4d692a7aba804e5d96186b15b&chksm=ebd74246dca0cb5024de2f1d9f9e2ecb631e ...
http://www.jb51.net/article/98513.htm
https://blog.csdn.net/qq_34620589/article/details/70268148
一、常用的文件、目錄操作命令
這是我們使用得最多的命令了,Linux最基礎的命令!
-
可用
pwd
命令查看用戶的當前目錄 -
可用
cd
命令來切換目錄 -
.
表示當前目錄 -
..
表示當前目錄的上一級目錄(父目錄) -
-
表示用 cd 命令切換目錄前所在的目錄 -
~
表示用戶主目錄的絕對路徑名
絕對路徑:
-
以斜線(/)開頭 ,描述到文件位置的完整說明 ,任何時候你想指定文件名的時候都可以使用
相對路徑 :
-
不以斜線(/)開頭 ,指定相對於你的當前工作目錄而言的位置 ,可以被用作指定文件名的簡捷方式
tips:輸入命令的時候要常用tab鍵來補全
-
ls
:顯示文件或目錄信息 -
mkdir
:當前目錄下創建一個空目錄 -
rmdir
:要求目錄為空 -
touch
:生成一個空文件或更改文件的時間 -
cp
:複製文件或目錄 -
mv
:移動文件或目錄、文件或目錄改名 -
rm
:刪除文件或目錄 -
ln
:建立鏈接文件 -
find
:查找文件 -
file/stat
:查看文件類型或文件屬性信息 -
cat:
查看文本文件內容 -
more:
可以分頁看 -
less:
不僅可以分頁,還可以方便地搜索,回翻等操作 -
tail -10
: 查看文件的尾部的10行 -
head -20
:查看文件的頭部20行 -
echo
:把內容重定向到指定的文件中 ,有則打開,無則創建 -
管道命令 |
:將前面的結果給後面的命令,例如:ls -la | wc
,將ls的結果加油wc命令來統計字數 -
重定向 > 是覆蓋模式,>> 是追加模式
,例如:echo "Java3y,zhen de hen xihuan ni" > qingshu.txt
把左邊的輸出放到右邊的文件里去
二、文件打包和壓縮命令
壓縮的方式也是有好幾種,我們常用的有下麵這三種:
-
gzip
-
bzip2
-
tar
常用的壓縮的命令就有:
-
gzip filename
-
bzip2 filename
-
tar -czvf filename
常用的解壓命令有:
-
gzip -d filename.gz
-
bzip2 -d filename.bz2
-
tar -xzvf filename.tar.gz
三、正則表達式+grep
1、正則表達式
2、grep命令
grep(global search regular expression)是一個強大的文本搜索工具。grep 使用正則表達式搜索文本,並把匹配的行列印出來。
格式:grep [options] PATTERN [FILE...]
-
PATTERN 是查找條件:可以是普通字元串、可以是正則表達式,通常用單引號將RE括起來。
-
FILE 是要查找的文件,可以是用空格間隔的多個文件,也可是使用Shell的通配符在多個文件中查找PATTERN,省略時表示在標準輸入中查找。
-
grep命令不會對輸入文件進行任何修改或影響,可以使用輸出重定向將結果存為文件
例子:
-
在文件 myfile 中查找包含字元串 mystr的行
grep -n mystr myfile
-
顯示 myfile 中第一個字元為字母的所有行
grep '^[a-zA-Z]' myfile
-
在文件 myfile 中查找首字元不是 # 的行(即過濾掉註釋行)
grep -v '^#' myfile
-
列出/etc目錄(包括子目錄)下所有文件內容中包含字元串“root”的文件名
grep -lr root /etc/*
四、系統管理命令
stat 顯示指定文件的詳細信息,比ls更詳細
who 顯示線上登陸用戶
whoami 顯示當前操作用戶
hostname 顯示主機名
uname 顯示系統信息
top 動態顯示當前耗費資源最多進程信息
ps 顯示瞬間進程狀態 ps -aux
du 查看目錄大小 du -h /home帶有單位顯示目錄信息
df 查看磁碟大小 df -h 帶有單位顯示磁碟信息
ifconfig 查看網路情況
ping 測試網路連通
netstat 顯示網路狀態信息
man 命令不會用了,找男人 如:man ls
clear 清屏
alias 對命令重命名 如:alias showmeit="ps -aux" ,另外解除使用unaliax showmeit
kill 殺死進程,可以先用ps 或 top命令查看進程的id,然後再用kill命令殺死進程。
五、遠程登錄與NFS
Telnet是Internet提供的一項基本服務,用來將本地電腦作為遠程電腦的終端機使用。
telnet 主機名或IP地址
exit或logout命令退出
telnet以明文傳輸不安全,因此禁止root身份登錄
SSH 主機名或IP地址
//作為telnet的替代,以公開密鑰演算法加密數據,允許root登錄
scp 本地文件路徑 遠程用戶名@主機:文件路徑
//用於本地與遠程電腦之間安全拷貝文件 如:
scp [email protected]:a.txt
sftp 遠程用戶名@主機
//以安全模式進入ftp狀態,此時可執行該狀態下的命令:
get 遠程路徑 本地路徑
//下載
put 本地路徑 遠程路徑
//上傳
quit
退出
? //列出該狀態可使用的命令清單,其中不少同Linux Bash命令如mkdir、cd、ls等,都是針對被登錄機操作,若對本地機操作,則在命令前加字母l,如lmkdir、lls等
NFS(Network File System):通過網路將遠程主機的文件系統掛載到本地主機目錄下,以便於使用,它基於客戶機/伺服器模式,建立在TCP/IP協議的表示層協議與會話層協議機制之上。
六、vim程式編輯器
vim是vi文本編輯器的進階版,在所有linux系統上均可使用,被稱為“編輯器之神”。
vi分為三種模式:一般模式,編輯模式和指令列命令模式
vi hello.c //進入hello.c文件,此時為一般模式,若hello.c不存在則自動新建
一般模式下執行vi定義的鍵盤上轉義字元操作,del為刪除游標上字元,dd為刪除一整列,退格鍵及上下左右鍵移動游標,i進入插入游標前編輯模式,a進入插入游標後編輯模式,r進入改寫編輯模式;
編輯模式下鍵盤上所有按鍵除ESC外都可輸入字元,如上下左右鍵分別代表ABCD大寫字母,按ESC退出編輯;
在一般模式下按:進入指令列模式,最下麵一行為指令列,wq保存並退出。
七、gcc編程
gcc中庫的鏈接順序是從右往左進行,所以要把最基礎實現的庫放在最後,這樣左邊的lib就可以調用右邊的lib中的代碼。同時,當一個函數的實現代碼在多個lib都存在時,最左邊的lib代碼最後
link,所以也將最終保存下來。
objdump -T libmysqlclient.so
//打開當前目錄下的動態鏈接庫libmysqlclient.so查看其中的API。objdump命令用來查看各種目標文件(elf文件)內部的結構
obidump -h hello.o
//參數-h把hello.o各個段的基本信息列印出來,elf文件是分段的,通常分為Header、.data(數據段包括局部靜態變數和全局變數)、.text(代碼
)、.rodata、.bss、.comment等
readelf -s hello.o //查看詳盡段信息
gcc錯誤:undefined reference to function 該函數具體實現沒有找到
info gcc
//顯示gcc的所有信息
八、mysql操作
SQL:Structured Query Language
netstat -tap|grep mysql
//檢查系統有沒有已安裝mysql,若socket顯示listen則表示就緒。
mysql中unique key(唯一鍵)指除主鍵外確保某一列唯一性的約束,該列可包含NULL(空值);primary key為主鍵
apt-get install mysql-server
//安裝mysql
mysql -u root -p
//以root用戶登錄mysql server,之後需輸入密碼
show databases; show tables;
//查看資料庫和數據表單,註意在mysql server中輸入指令以;結尾。
use mysql;
//使用資料庫mysql也可以在登錄時輸入指令:
mysql -D mysql -u root -p
quit;
//退出
insert into students(id,name,sex) value(1,zhengfeng,man);
//向students表中插入zhengfeng的信息
select * from students
//輸出students的所有信息,*是通配符,可指定為列名稱
create table students(
id int(8) not null auto_increment,
name varchar(255) not null,
sex char(4) not null,
tel char(13) not null default “-”,
primary key(id),
unique key unique_name(name)
);
describe students
//輸出表結構信息
mysql_config --libs
//使用mysql_config工具確定MySql程式的鏈接參數,同理,若需確定編譯參數,使用mysql_config –include
九、redis操作
註:redis是一個高性能的key-value資料庫,由ANSI C編寫,支持網路,它支持的value類型包括string、list(字元串鏈表)、set(字元串集合)、zset(字元串有序集合)、hash(字元串哈希類型)。
競態條件和原子操作的概念:
原子操作指該命令在執行過程中不會被其他插入命令打斷,是“一氣呵成”的;
競態條件:指一個系統或進程的輸出,依賴於不受控制事件出現的順序或時機,若多個客戶端連接到redis,同時執行多項命令時有可能出現競態條件,關於此問題的深入討論在《鏈接、裝載和庫》中詳細提及。
apt-get install redis-server
//安裝redis
netstat -nlt grep|6379
//查看系統中redis運行狀態,listen為就緒
redis-cli
//進入redis命令行客戶端,cli:command line interface 此為進入交互模式,可自由輸入命令。
select 1
//選擇1號資料庫,redis實例預設自帶16個資料庫,以數字編號,可通過配置文件更改。