Linux 中常用的基礎命令一
1、目錄相關命令的使用
pwd(printing working directory) 顯示當前工作目錄
? pwd命令相關的環境變量:
?? PWD??保存了當前工作目錄路徑
?? OLDPWD 保存了上一次工作目錄路徑
每次執行pwd命令就是去讀取PWD的值
cd(change directory) 改變工作目錄
語法格式??cd [/PATH/TO/SOMEDIR]
cd或cd~?切換回當前用戶的家目錄
cd ~USERNAME?切換至指定用戶的家目錄(管理員能執行)
cd -?在上一次所在目錄與當前目錄之間來回切換
cd .. 返回上一級目錄
ls(list) 顯示指定路徑下的文件列表
語法格式:ls [OPTION]... [FILE]...
選項:
-a 顯示所有文件,包括隱藏文件
-A?顯示除 . 和 .. 之外的所有文件
-l?長格式列表,即顯示文件的詳細屬性信息
??--color 顯示顏色(不同類型文件顯示為不同顏色)
??-d??顯示目錄自身的屬性,通常與-l同時使用
??-i??顯示文件的inode號(index node)
??-h??文件大小以人類易讀格式顯示
-r??reverse逆序顯示;默認是以升序顯示
-R??recursive遞歸顯示;如果一個目錄裏有子目錄,則同時也顯示其子目錄中的文件
-Sl? 文件由大到小排序
-Slr?文件由小到大排序 配合 l
-t ? 按修改時間排序,-Slt 等配合l,S,r等排序
2、文件查看類命令
cat:文件查看類工具
格式:cat [OPTION]... [FILE]...
選項:
-A?顯示所有非正常的所有符號
-E?顯示行結束符$
-T?顯示制表符
-v?顯示其他的非打印字符
-e?等於-vE
-n?對顯示的行進行編號,與文件內容沒有聯系
-b?打印出行號(空白行不標行號)
-s?將多個連續的空白行合並顯示一個空白行
tac?逆序顯示文件內容(逆序行)
rev?逆序顯示每行字符(逆序列)
file 查看文件內容類型格式
演示:
cat、tac、rev命令的區別
[root@centos7 ~]# echo "123456789" > /testdir/f1
[root@centos7 ~]# ll /testdir/f1
-rw-r--r-- 1 root root 10 2月 11 16:29 /testdir/f1
[root@centos7 ~]# cat /testdir/f1
123456789
[root@centos7 ~]# tac /testdir/f1
123456789
[root@centos7 ~]# rev /testdir/f1
987654321
[root@centos7 ~]# ls > /testdir/f2
[root@centos7 ~]# cat /testdir/f2
anaconda-ks.cfg
Desktop
Discuz
Documents
Downloads
lnamp
MHA
Music
nginx
Pictures
Public
Templates
Videos
zabbix-agent
zabbix-proxy
[root@centos7 ~]# tac /testdir/f2
zabbix-proxy
zabbix-agent
Videos
Templates
Public
Pictures
nginx
Music
MHA
lnamp
Downloads
Documents
Discuz
Desktop
anaconda-ks.cfg
[root@centos7 ~]# rev /testdir/f2
gfc.sk-adnocana
potkseD
zucsiD
stnemucoD
sdaolnwoD
pmanl
AHM
cisuM
xnign
serutciP
cilbuP
setalpmeT
soediV
tnega-xibbaz
yxorp-xibbaz
file命令
[root@centos7 ~]# file /etc/fstab
/etc/fstab: ASCII text
[root@centos7 ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped
3、echo回顯命令
功能:顯示字符
語法:echo [-neE] [字符串]
說明:echo會將輸入的字符串輸出到標準輸出,並在最後加上換行號
-n?不為顯示內容自動換行,默認都會自動換行顯示
??-e?參數來使轉義字符生效(字符串一定要加引號)
????\\ 輸出\本身
????\a 輸出警告音
????\b 退格鍵,也就是向左刪除鍵
????\c 取消輸出行末的換行符,和“-n”選項一致
????\e ESC(換碼符)
????\f 換頁符
????\n 換行符
????\r 回車鍵
????\t 制表符,也是Tab
????\v 垂直制表符,換行但光標仍舊停留在原來的位置
????\0nnn 按八進制ASCII碼表輸出字符。其中0為數字零,nnn為三位八進制數
????\xhh 按十六進制ASCII碼表輸出字符,其中hh為十六進制數
改變輸出內容顏色和格式:\e也可以用\033替代因為都是表示的換碼符
echo -e "\e[1;5;31;47m abc \e[0m"
??輸出abc的顏色\e[表示顏色輸出開始;後跟多個格式參數用分號隔開(1表示輸出為粗體,5表示文字閃爍,31表示前景色為紅色,47表示背景色為白色);abc表示要輸出的信息;\e[表示顏色輸出結束;0m表示恢復為默認輸出格式(如果後面不加0m,命令行所有顯示會一直以定義的格式顯示)
??輸出顏色格式定義:3開頭表示前景顏色,4開頭表示背景顏色:
?? 30m=黑色 31m=紅色 32m=綠色 33m=黃色 34m=藍色 35m=洋色 36m=青色 37m=白色
???40m=黑色 41m=紅色 42m=綠色 43m=黃色 44m=藍色 45m=洋色 46m=青色 47m=白色
4、關機或重啟命令
管理類命令
關機:halt、poweroff、shutdown、init 0
重啟:reboot、shutdown、init 6
用戶登錄信息:who、whoami、w
halt和poweroff:兩者都是關機命令
halt?? 關機但不斷電
poweroff 關機後並斷電????
?? -f 強制關機,相當於切斷電源(不會調用shutdown進行安全關機操作)
reboot:一般情況下是調用shutdown進行關機重啟
-f 強制(不會調用shutdown進行安全關機操作)
-p 切斷電源
shutdown:關機或重啟
格式:shutdown [OPTION...] [TIME] [WALL...]
-r reboot 重啟
-h?halt 關機
-c?cancle 取消關機
??-k?發行警告但是不執行關機操作
時間格式:
??now??立刻
??+#?? 相對時間表示法,#分鐘後執行操作,例如:+3分鐘
??hh:mm 絕對時間表示,到具體時間後關機
wall:在所有終端顯示其輸入的內容,例如:wall "shutdown now"
演示:
# 在5分鐘後重啟,會通知給所有人
[root@centos7 ~]# shutdown -r +5
Shutdown scheduled for 三 2017-02-08 09:35:05 CST, use ‘shutdown -c‘ to cancel.
[root@centos7 ~]#
Broadcast message from root@centos7 (Wed 2017-02-08 09:30:05 CST):
The system is going down for reboot at Wed 2017-02-08 09:35:05 CST!
#取消關機,也會通知給所有人
[root@centos7 ~]# shutdown -c
[root@centos7 ~]#
Broadcast message from root@centos7 (Wed 2017-02-08 09:30:45 CST):
The system shutdown has been cancelled at Wed 2017-02-08 09:31:45 CST!
# 加wall可顯示自定義的語句
[root@centos7 ~]# shutdown -r +5 "hello everyone"
Shutdown scheduled for 三 2017-02-08 09:41:27 CST, use ‘shutdown -c‘ to cancel.
[root@centos7 ~]#
Broadcast message from root@centos7 (Wed 2017-02-08 09:36:27 CST):
hello everyone
The system is going down for reboot at Wed 2017-02-08 09:41:27 CST!
5、與登錄相關的命令
whoami 顯示當前登錄用戶的用戶名
?w ?? 系統當前所有的登錄會話及所做的操作
?tty??顯示當前終端對應終端設備文件
?who ? 顯示當前系統所有登錄用戶名、終端類型、登錄時間;如果是遠程登錄會顯示登錄IP地址
? -b 系統此次啟動的時間
? -r?顯示運行級別
演示:
[root@centos7 ~]# whoami
root
[root@centos7 ~]# who
root tty1 2017-02-08 09:26
root pts/0 2017-02-08 08:57 (192.168.1.104)
root pts/1 2017-02-08 09:30 (192.168.1.104)
root pts/2 2017-02-08 10:15 (192.168.1.104)
root pts/3 2017-02-08 10:18 (192.168.43.174)
root pts/4 2018-07-07 10:10 (192.168.1.104)
[root@centos7 ~]# who -b
系統引導 2017-02-08 15:48
[root@centos7 ~]# who -r
運行級別 3 2017-02-08 08:29
[root@centos7 ~]# w
11:02:39 up 2:32, 6 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN?? @ IDLE JCPU PCPU WHAT
root tty1 09:26 1:02m 0.08s 0.08s -bash
root pts/0 192.168.1.104 08:57 1:25m 0.17s 0.17s -bash
root pts/1 192.168.1.104 09:30 1:32m 0.04s 0.04s -bash
root pts/2 192.168.1.104 10:15 47:11 0.05s 0.05s -bash
root pts/3 192.168.43.174 10:18 ? 0.26s 0.26s -bash
root pts/4 192.168.1.104 10:10 ? 0.10s 0.01s w
6、與日期相關的命令
date 顯示時間和日期
?格式:date[OPTION]...[+FORMAT]
?按指定格式顯示時間
?date[+FORMAT]
%D 直接顯示日期 mm/dd/yy ("Y"長格式年,"y"短格式年)
%F?直接顯示日期(YY-mm-dd)
%T?直接顯示時間(hh:mm:ss24小時制)
%Y?完整年份(0000-9999)
%m?顯示月份
%d?日
%A?星期幾(Sunday-Saturday)
%a?星期幾(Sun-Sat)
%w?一周中的第幾天
%H?顯示小時
%M?顯示分鐘
%S?顯示秒
%s?現在距離1970年1月1號0點0分(unix元年)的秒數,timestamp(時間戳)
設置時間
格式:date MMDDhhmm[CC]YY[.ss]
MM? 月份
DD? 日
hh? 小時
mm? 分鐘
CC? 兩位年份
CCYY 四位年份
ss? 秒
?-s?通過指定字符串設置時間
顯示當前時間的時間戳
date +%s
將指定時間轉換為時間戳的格式
date --date "Thu Nov 18 08:07:21 IST 2010" +%s
獲取指定時間是星期幾
date --date "Jan 20 2001" +%A
Linux的兩個時鐘
系統時鐘:由Linux內核通過cpu的工作頻率進行計時
硬件時鐘:就是主板bios提供的時鐘,由主板電池供電來維持運行
date?顯示的是系統時間;
hwclock或clock?顯示的是硬件時鐘
-s?--hctosys以硬件時鐘為準,將硬件時鐘寫入到系統時鐘(校正系統時鐘)
-w --systohc以系統時鐘為準,將軟件時鐘寫入到硬件時鐘(校正硬件時鐘)
演示:
常用格式的日期顯示
[root@centos7 ~]# date +%D
02/08/17
[root@centos7 ~]# date +%F
2017-02-08
[root@centos7 ~]# date +%T
10:20:00
[root@centos7 ~]# date +%Y
2017
[root@centos7 ~]# date +%m
02
[root@centos7 ~]# date +%d
08
[root@centos7 ~]# date +%A
星期三
[root@centos7 ~]# date +%a
三
[root@centos7 ~]# date +%w
3
[root@centos7 ~]# date +%H
10
[root@centos7 ~]# date +%M
21
[root@centos7 ~]# date +%S
24
[root@centos7 ~]# date +%s
1486520492
完整格式的日期顯示:
[root@centos7 ~]# date "+現在的時間是:%Y-%m-%d %H:%M:%S"
現在的時間是:2017-02-08 10:23:29
[root@centos7 ~]# date "+現在的時間是:%F %H:%M:%S"
現在的時間是:2017-02-08 10:24:33
[root@centos7 ~]# date "+現在的時間是:%F %H:%M:%S %A"
現在的時間是:2017-02-08 10:24:51 星期三
如果要顯示的時間不是當前時間,而是經過運算的時間,則可以使用-d選項,如下:
# 顯示3年前的時間
[root@centos7 ~]# date "+%F %H:%M:%S" -d "-3 year"
2014-02-08 10:26:08
# 顯示3個月後的時間
[root@centos7 ~]# date "+%F %H:%M:%S" -d "+3 month"
2017-05-08 10:26:24
# 顯示10天後的時間
[root@centos7 ~]# date "+%F %H:%M:%S" -d "+10 day"
2017-02-18 10:26:42
有時候需要獲取當前時間距離1970年0時0分0秒經歷的秒數,保存在變量中,如下:
[root@centos7 ~]# time=`date "+%s"`
[root@centos7 ~]# echo $time
1486520847
設置時間
[root@centos7 ~]# date -s "20180707 10:10:10"
2018年 07月 07日 星期六 10:10:10 CST
[root@centos7 ~]# date -s "2018-07-07 10:10:10"
2018年 07月 07日 星期六 10:10:10 CST
[root@centos7 ~]# date -s "2018/07/07 10:10:10"
2018年 07月 07日 星期六 10:10:10 CST
系統時鐘和硬件時鐘
# 系統時鐘
[root@centos7 ~]# date
2018年 07月 07日 星期六 10:26:42 CST
#硬件時鐘
[root@centos7 ~]# clock
2017年02月08日 星期三 10時47分46秒 -0.292560 秒
[root@centos7 ~]# hwclock
2017年02月08日 星期三 10時47分53秒 -0.479196 秒
# 硬件時鐘校正系統時鐘
[root@centos7 ~]# clock -s
[root@centos7 ~]# date
2017年 02月 08日 星期三 10:48:24 CST
cal 顯示當前日歷,默認顯示當前月份的日歷
cal [YY] 顯示指定年份的日歷如:cal 09 2017
演示:
[root@centos7 ~]# cal
二月 2017
日 一 二 三 四 五 六
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28
7、type、alias、which和whereis命令
type
格式:type COMMAND
如果是內部命令顯示為"builtin"
如果是外部命令顯示命令文件的路徑
註意:命令可以有別名,別名可以與原名相同,此時原名被隱藏,此時如果要運行原命令,則使用 \COMMAND
alias 命令別名
alias 顯示所有定義的別名
alias NAME=‘COMMAND‘ 定義別名(僅對當前shell有效)
unalias NAME 撤銷別名
which 顯示應用程序文件位置
格式:which COMMAND
註意:有時候一個命令還有其他的別名,但我們先看命令本身,而非別名,此時可以使用:
which --skip-alias 禁止使用別名,直接使用原始命令
whereis
作用:whereis - locate the binary, source, and manual page files for a command
格式:whereis [options] name...
選項:
-b 僅搜索二進制程序路徑
-m 僅搜索使用手冊文件路徑
演示:
type
[root@centos7 ~]# type cd
cd 是 shell 內嵌
[root@centos7 ~]# type date
date 已被哈希 (/usr/bin/date)
[root@centos7 ~]# type tree
tree 是 /usr/bin/tree
[root@centos7 ~]# type ls
ls 是 `ls --color=auto‘ 的別名
wKioL1iazijg7shYAAAse_IY3-U276.png
which
[root@centos7 ~]# which ls
alias ls=‘ls --color=auto‘
/usr/bin/ls
[root@centos7 ~]# which --skip-alias ls
/usr/bin/ls
whereis
[root@centos7 ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
alias
[root@centos7 ~]# alias
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘
alias mv=‘mv -i‘
alias rm=‘rm -i‘
alias which=‘alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde‘
8、screen命令遠程控制
一個終端下打開多個屏幕,並剝離屏幕與終端的關系,終端關閉也不會影響屏幕下的進程
使用方法:
? screen -S [session 會話] 打開screen
? screen -x [session 會話] 加入screen
??exit 退出並關閉screen
Ctrl+a,d 剝離當前screen
??screen -ls 顯示所有已經打開的screen
??screen -r SCREEN_ID 連接指定screen
Linux 中常用的基礎命令一