必須熟練的基礎linux命令
推薦:命令大全
http://man.linuxde.net/
重要的幾個熱鍵[Tab],[ctrl]-c, [ctrl]-d
[Tab]按鍵---具有『命令補全』不『檔案補齊』的功能
[Ctrl]-c按鍵---讓當前的程序『停掉』
[Ctrl]-d按鍵---通常代表著:『鍵盤輸入結束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用來取代exit
1、常用命令
shutdown -h now 現在馬上關機
shutdown -r now 現在重新啟動
reboot 現在重新啟動
su - 如果當前是普通用戶,則輸入這條命令切換到管理員用戶(root),如果要切換到其他用戶則敲入 su - 用戶名 如: su - wangxin
cd 切換目錄【如:cd / 表示切換到linux的根目錄!!(/)表示根目錄】
pwd 顯示用戶當前在哪個路徑下的命令 (這個命令用的特別多,在命令行裏如果不知道當前所處文件夾,可以輸入該命令 pwd
clear 清空屏幕
useradd 用戶名 【添加一個用戶】 如:useradd wangxin
passwd 用戶名 【給指定的用戶名修改密碼】 如:passwd wangxin
userdel 用戶名 【刪除一個用戶,但是該用戶在home文件下的子文件夾會保留】 如:userdel wangxin
du 度量目錄文件大小
du –sh 顯示本文件夾整體空間大小
文件數
find databak -type f | wc –l databak 目錄下的文件數
find . -type f | wc –l 當前目錄下的文件數
ls
ls 【列出文件和目錄】 如:ls /home (列出home下面的所有文件和目錄)
ls -l 【列出的文件和目錄以長列表顯示】 如:ls -l /home
ls -a 【列出隱藏的文件和目錄】 如:ls -a /home
rmdir 【刪除空目錄】 如:rmdir xiaoluo(只能刪除空目錄,如果該目錄下還有其它文件則該命令無效)
rm -rf /var/lib/mysql #清除目錄下所有數據文件!!!必須慎用!!!
rm /etc/my.cnf
cp
cp 【復制命令】 如:cp /home/Test.java / (將home路徑下的Test.java文件復制到根目錄下)
cp -r dir1 dir2 【-r表示遞歸,將dir1代表的文件夾及裏面的文件復制到dir2路徑那裏】
如:cp -r /home/xiaoluo /(將home下的xiaoluo文件夾復制到根目錄下)
mv 【移動文件和改文件名】 如:
mv /home/Test.java /(表示將home下的Test.java文件移動到根目錄下)
mv /Test.java /Hello.java(表示將Test.java文件名改成Hello.java)
mv data/* databak 將data目錄下所有文件剪切到databak目錄
rm 【刪除文件和目錄】 如:
rm /Test.java (將根目錄下的Test.java刪除)【註:如果該文件是個文件夾則刪除不了】
rm -rf *【(-r表示遞歸、f表示強制刪除)刪除所有內容,包括目錄和文件夾】 如:rm -rf /home/xiaoluo(強制刪除home下的xiaoluo文件夾)
touch 【建立空文件】 如:touch Test.java
pwd 【顯示當前所在目錄】 pwd
vi 編輯文本文件
②輸入 i 【進入到編輯狀態】
③敲入 esc【進入到命令行輸入狀態】
④敲入 : 【這樣就可以輸入命令了。】
⑤敲入 wq【保存並退出】 q!【不保存並退出】
cat /etc/profile (只是查看該文件裏的內容)
vi /etc/profile (查看、並且可以修改該文件裏的內容)
創建新文件的兩種方法
vi newfile
或者
touch newfile
只看文件頭幾行 head
後幾行 tail
[[email protected] home]# head openfire_mysql.sql
CREATE TABLE ofUser (
username VARCHAR(64) NOT NULL,
只看文件後幾行 tail
[[email protected] home]# tail openfire_mysql.sql
INSERT INTO ofID (idType, id) VALUES (26, 2);
…
列出行號
nl
# nl log2015.log
ln 【建立符號鏈接,類似於windows中的快捷方式(需root權限或相應用戶權限)】
ln -s 源目標 目的目標 如:ln -s /etc/inittab /inittab(這樣就會在根目錄下建立一個inittab鏈接,該鏈接指向了etc目錄下的inittab文件)
more
less 【顯示文件內容,帶分頁】 如果我們的一個文件裏面有很多內容,就可以使用more命令給其分頁
如:more /etc/prelink.conf (給etc下面的prelink.conf文件內容進行分頁顯示)
| 【管道命令】 【這個命令在linux系統中用的很多】 ( | 這個命令的作用就是將 | 前面的那個命令的結果交給 | 後面的那個命令來處理)
如:ls /etc | more (|前面那個命令是顯示出etc文件夾下的所有文件及目錄,|後面那個命令就是以分頁形式顯示,
所以這個命令的意思就是 以分頁來顯示出etc目錄下的所有文件和目錄)
grep 【在文本中查詢內容】
這條命令用的非常多 如:grep "xiaoluo" /home/Test.txt (在Test.txt文件中查詢出包含有xiaoluo的那行文本信息)
如果需要顯示出所查文本所在行數則使用: grep -n "xiaoluo" /home/Test.txt(查詢出Test.txt文件中xiaoluo該信息所在行數以及改行所有文本)
重定向命令【> 、>>、<】
如:ls -l /etc> a.txt (將etc下面的列表信息寫入到a.txt文件中【覆寫】,如果之前不存在a.txt文件,則創建a.txt文件然後將信息寫進去,
如果存在a.txt文件,則會覆蓋掉之前的信息)
ls -al /etc>> aa.txt (將etc下面的列表信息追加到aa.txt文件信息後面)
從文件中輸入信息 aaa < bbb
2、查看IP
ip address show
#或者
ifconfig #如果執行不了則需要: yum install net-tools
3、設置靜態IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
這裏ifcfg-ens33文件請ls後查看
默認網絡配置(DHCP設置)
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=20d0e0a7-151c-451f-8904-63db006104ee
DEVICE=ens33
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no
ONBOOT=yes
IPADDR=192.168.43.50
靜態IP配置
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7cb5f2a3-f916-402d-bd78-efe652798112
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.43.50
NETMASK=255.255.255.0
之後重啟配置
/etc/rc.d/init.d/network restart
或者:
service network restart
關閉防火墻
systemctl stop firewalld
4、修改文件和文件夾權限屬性
chmod命令文件權限屬性設置
文件或目錄權限的控制分別以讀取、寫入、執行3種一般權限來區分,另有3種特殊權限可供運用。
用戶可以使用chmod指令去變更文件與目錄的權限,設置方式采用文字或數字代號皆可。
權限範圍的表示法如下:
? u User,即文件或目錄的擁有者;
? g Group,即文件或目錄的所屬群組;
? Other,除了文件或目錄擁有者或所屬群組之外,其他用戶皆屬於這個範圍;
? a All,即全部的用戶,包含擁有者,所屬群組以及其他用戶;
? r 讀取權限,數字代號為“4”;
? w 寫入權限,數字代號為“2”;
? x 執行或切換權限,數字代號為“1”;
- 不具任何權限,數字代號為“0”;
s 特殊功能說明:變更文件或目錄的權限。
語法 chmod(選項)(參數) 選項
-c或——changes:效果類似“-v”參數,但僅回報更改的部分;
-f或--quiet或——silent:不顯示錯誤信息;
-R或——recursive:遞歸處理,將指令目錄下的所有文件及子目錄一並處理;
-v或——verbose:顯示指令執行過程;
--reference=<參考文件或目錄>:把指定文件或目錄的所屬群組全部設成和參考文件或目錄的所屬群組相同;
<權限範圍>+<權限設置>:開啟權限範圍的文件或目錄的該選項權限設置;
<權限範圍>-<權限設置>:關閉權限範圍的文件或目錄的該選項權限設置;
<權限範圍>=<權限設置>:指定權限範圍的文件或目錄的該選項權限設置;
--符號類型改變檔案權限:
其他實例:
$ chmod u+x file 給file的屬主增加執行權限
$ chmod 751 file 給file的屬主分配讀、寫、執行(7)的權限,給file的所在組分配讀、執行(5)的權限,給其他用戶分配執行(1)的權限
$ chmod u=rwx,g=rx,o=x file 上例的另一種形式
$ chmod =r file 為所有用戶分配讀權限
$ chmod 444 file 同上例
$ chmod a-wx,a+r file 同上例
$ chmod -R u+r directory 遞歸地給directory目錄下所有文件和子目錄的屬主分配讀的權限
$ chmod 4755 設置用ID,給屬主分配讀、寫和執行權限,給組和其他用戶分配讀、執行的權限。
5、改變文件或目錄所有者
chown命令文件權限屬性設置
chown命令改變某個文件或目錄的所有者和所屬的組,該命令可以向某個用戶授權,使該用戶變成指定文件的所有者或者改變文件所屬的組。
用戶可以是用戶或者是用戶D,用戶組可以是組名或組id。
文件名可以使由空格分開的文件列表,在文件名中可以包含通配符。
只有文件主和超級用戶才可以便用該命令。
-c或——changes:效果類似“-v”參數,但僅回報更改的部分;
-f或--quite或——silent:不顯示錯誤信息;
-h或--no-dereference:只對符號連接的文件作修改,而不更改其他任何相關文件;
-R或——recursive:遞歸處理,將指定目錄下的所有文件及子目錄一並處理;
-v或——version:顯示指令執行過程;
--dereference:效果和“-h”參數相同;
--help:在線幫助;
--reference=<參考文件或目錄>:把指定文件或目錄的擁有者與所屬群組全部設成和參考文件或目錄的擁有者與所屬群組相同;
--version:顯示版本信息。
實例:
$ chown user:market f01 //把文件f01給uesr,添加到market組
6、安裝JDK1.8
# cd /usr/lib
# tar –xvf /home/jdk-8-linux-x64.tar.gz
vi /etc/profile
在文件末尾加上
##########
JAVA_HOME=/usr/lib/jdk1.8.0
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
############
7、修改主機名
一:
#hostname hn1
二:
修改/etc/sysconfig/network中的 HOSTNAME=name1
三:
修改/etc/hosts文件 127.0.0.1 name1
8、時區和時間設置
查看服務器時間:
date
顯示日歷
cal
修改時區:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改時間:
date -s 9:06:50
9、安裝必要編譯環境
裝wget
yum -y install wget
-- 比較推薦用這種方式
yum –y groupinstall "Development Tools"
安裝net-tools,不然用不了ifconfig
yum install net-tools
安裝gcc
yum install gcc gcc-c++ kernel-devel
-- 或者
yum -y install gcc
yum -y install gcc-c++
yum install make
10、查看CPU、內存使用狀況
top
11、尋找服務的文件位置
which
[[email protected] bin]# which ifconfig
/usr/sbin/ifconfig
whereis
[[email protected] bin]# whereis mysql
mysql: /usr/bin/mysql /usr/lib64/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
[[email protected] bin]# whereis ifconfig
ifconfig: /usr/sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
12、查找文件:find
# 與用戶或用戶組名有關的參數:
-user name : 列出文件所有者為name的文件
-group name : 列出文件所屬用戶組為name的文件
-uid n : 列出文件所有者為用戶ID為n的文件
-gid n : 列出文件所屬用戶組為用戶組ID為n的文件
# 例如:
find /home/wangxin -user wangxin # 在目錄/home/wangxin中找出所有者為wangxin的文件
# 與文件權限及名稱有關的參數:
-name filename :找出文件名為filename的文件
-size [+-]SIZE :找出比SIZE還要大(+)或小(-)的文件
-tpye TYPE :查找文件的類型為TYPE的文件,TYPE的值主要有:一般文件(f)、設備文件(b、c)、
目錄(d)、連接文件(l)、socket(s)、FIFO管道文件(p);
-perm mode :查找文件權限剛好等於mode的文件,mode用數字表示,如0755;
-perm -mode :查找文件權限必須要全部包括mode權限的文件,mode用數字表示
-perm +mode :查找文件權限包含任一mode的權限的文件,mode用數字表示
# 例如:
find / -name passwd # 查找文件名為passwd的文件
find . -perm 0755 # 查找當前目錄中文件權限的0755的文件
find . -size +12k # 查找當前目錄中大於12KB的文件,註意c表示byte
find / -size +120000k
# 查找全部目錄中大於100MB的文件
[[email protected] bin]# find / -size +102400k
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/home/wangxin/jdk-8u131-linux-x64.rpm
/home/wangxin/jdk-8u131-linux-x64.tar.gz
/home/Openfire.zip
13、curl使用
下載文件到本地
curl -o 1.jpg http://static.oschina.net/uploads/img/201204/20230218_pNXn.jpg
打印HTML輸出
curl -L http://www.centos.org
# 將myfile.txt文件上傳到服務器
curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
# 下載xss.php文件
curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php
請求數據
使用GET方式請求數據,這種方式下直接通過URL傳遞數據
可以通過 --data/-d 方式指定使用POST方式傳遞數據
# GET
curl -u username https://api.github.com/user?access_token=XXXXXXXXXX
# POST
curl -u username --data "param1=value1¶m2=value" https://api.github.com
# 也可以指定一個文件,將該文件中的內容當作數據傳遞給服務器端
curl --data @filename https://github.api.com/authorizations
post文件的實際例子:
客戶端curl操作
curl -F file=@/home/new.txt http://192.168.43.170:8070/webUploader/UploadServlet
或指定參數:
curl --form name=myfileparam file=@/home/new.txt \
http://192.168.43.170:8070/webUploader/UploadServlet
必須熟練的基礎linux命令