1、查看命令歷史及相關信息
bash查找命令的方式:
外部命令查找:$PATH
[root@linux_basic ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin查找路徑是從左往右查找的,
若是說剛要執行的命令是在/root/bin則要一個路徑一個路徑去查找,不是會耗費不少時間嗎?還有若是命令被反覆使用了,
若是每個使用都要去查找,速度不是會很慢啊。那如何來提高這個速度呢?
能夠把每一次的查找結果存儲下來,之後再執行此命令時,不用去找那個命令了,直接運行便可了。
第一次執行真正的查找操做;查找結果會緩存;執行同一個命令,則有緩存中直接去獲取曾經查找到的路徑
查看此緩存信息使用hash命令
hash顯示全部執行的外部命令(是絕對路徑),以及被命中的次數
查看命令是內置的仍是外部命令
[root@linux_basic ~]# type hash
hash is a shell builtin
爲內置命令,則能夠經過help hash來查看幫助信息
[root@linux_basic ~]# help hash
hash: hash [-lr] [-p pathname] [-dt] [name ...]
Remember or display program locations.
記住或顯示程序存儲位置
Determine and remember the full pathname of each command NAME. If
no arguments are given, information about remembered commands is displayed.
Options:
-d forget the remembered location of each NAME 忘記所指定記住的路徑
-l display in a format that may be reused as input
-p pathname use PATHNAME is the full pathname of NAME
-r forget all remembered locations 忘記全部記住的路徑
-t print the remembered location of each NAME, preceding
each location with the corresponding NAME if multiple
NAMEs are given
Arguments:
NAME Each NAME is searched for in $PATH and added to the list
of remembered commands.
Exit Status:
Returns success unless NAME is not found or an invalid option is given.
-d: 清除指定名稱的緩存內容
-r: 清空所有緩存
[root@linux_basic ~]# hash
hits command
1 /sbin/ifconfig
1 /usr/bin/man
3 /bin/ls
1 /sbin/ip
[root@linux_basic ~]# hash -d ifconfig
[root@linux_basic ~]# hash
hits command
1 /usr/bin/man
3 /bin/ls
1 /sbin/ip
[root@linux_basic ~]# hash
hits command
1 /usr/bin/man
3 /bin/ls
1 /sbin/ip
[root@linux_basic ~]# hash -r
[root@linux_basic ~]# hash
hash: hash table empty 緩存信息已經爲空了,由於剛清空了全部的緩存信息linux
bash的重要特性之一:命令補全
根據內建命令或外部命令的查找方式查找以用戶指定的字符串開頭的命令
若是用戶指定的開頭字符串能唯一標識某命令,則tab鍵可補全此命令
不然,則兩次tab鍵可顯示全部以指定字串開頭的命令正則表達式
Linux文件系統的基礎特性:
一、文件名嚴格區分大小寫
二、全部文件都位於根目錄下,Linux目錄是一顆倒置樹 FHS
三、路徑以/作爲分隔符
四、每一個文件的名稱可以使用除/之外任意字符(通常使用比較規範的格式(用字符或數字或下劃線等
組成)),單個名稱最長不能超出255個字符;shell
bash重要特性之一:路徑補全(可避免本身書寫出錯,也可提升操做效率)
以用戶指定的起始路徑進行文件名補全查找centos
每一個絕對路徑均可以切割爲兩部分,文件名和父目錄
基名
basename /path/to/somewhere 能夠獲取其基名
結果爲somewhere
目錄名
dirname /path/to/somewhere 能夠獲取其目錄名
結果爲/path/to
[root@linux_basic network-scripts]# basename /etc/sysconfig/network-scripts/ifcfg-eth0
ifcfg-eth0
[root@linux_basic network-scripts]# dirname /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts 緩存
bash的命令歷史:幾個依賴以環境變量的有
HISTSIZE
HISTFILE
HISTFILESIZE
[root@linux_basic network-scripts]# echo $HISTSIZE
1000
[root@linux_basic network-scripts]# echo $HISTFILE
/root/.bash_history
[root@linux_basic network-scripts]# echo $HISTFILESIZE
1000
HISTCONTROL:
ignoredups: 忽略重複的命令,輸入的是連續的相同命令纔會爲重複,只顯示一次
ignorespace: 忽略以空白字符開頭的命令(能夠用此值給HISTCONTROL賦值,不讓他人看到命令歷史中咱們
輸入的命令,能夠在輸入命令是先輸入空白符再輸命令)
ignoreboth: 以上兩者同時生效;
[root@linux_basic ~]# echo $HISTCONTROL
ignoredups
[root@linux_basic ~]# HISTCONTROL=ignorespace
以後你輸入一空格開頭的命令後,在命令歷史列表中就不會顯示那條命令了
練習:獲取下面命令的使用方法
shutdown, date, hwclock, ntpdate, reboot, halt, who, whoami, which, hash安全
2、系統關機及日期設置
reboot: 重啓
halt: 關機
[root@linux_basic ~]# halt bash
Broadcast message from root@linux_basic
(/dev/pts/1) at 12:19 ...服務器
The system is going down for halt NOW! 執行後,在每一個終端都會有此信息接收
poweroff: 關機
如何關機,如何重啓,如在指定時間上重啓網絡
shutdown -h
-r 執行以後系統重啓
-r Requests that the system be rebooted after it has been brought down.
-c 取消系統關閉
-c Cancels a running shutdown. TIME is not specified with this option, the first argument is MESSAGE.
-h
-h Requests that the system be either halted or powered off after it has been brought down, with the choice as to which left up to the
system.架構
時間格式
TIME may have different formats, the most common is simply the word ’now’ which will bring the system down immediately. Other valid for-
mats are +m, where m is the number of minutes to wait until shutting down and hh:mm which specifies the time on the 24hr clock.
now
+m
hh:mm
shutdown - bring the system down
SYNOPSIS
shutdown [OPTION]... TIME [MESSAGE]
shutdown -h now 如今立刻關機
[root@linux_basic ~]# shutdown -h +5 過5分鐘後關機
Broadcast message from root@linux_basic
(/dev/pts/0) at 13:14 ...
The system is going down for halt in 5 minutes!
[root@linux_basic ~]# shutdown -c 取消系統關機
date: 顯示和設置系統日期和時間
date - print or set the system date and time
date [options] [+FORMAT]
%s: %s seconds since 1970-01-01 00:00:00 UTC 時間戳計時法,從Unix元年(1970-01-01 00:00:00)到此刻所通過的秒數
%F, %D
%F full date; same as %Y-%m-%d
%D date; same as %m/%d/%y
%T time; same as %H:%M:%S
%Y year
%m month (01..12)
%d day of month (e.g, 01)
%H hour (00..23)
%M minute (00..59)
%S second (00..60)
%u day of week (1..7); 1 is Monday
修改日期:
時間設定成2014年6月20日的命令以下:
#date -s 06/20/2014
修改時間:
將系統時間設定成下午14點20分00秒的命令以下。
#date -s 14:20:00
設定系統時間
date [MMDDhhmm[[CC]YY][.ss]]
[root@linux_basic ~]# date
Sat Dec 20 13:17:18 CST 2014
[root@linux_basic ~]# date +%F
2014-12-20
[root@linux_basic ~]# date +%D
12/20/14
[root@linux_basic ~]# date +%T
13:18:03
[root@linux_basic ~]# date +%Y-%m-%d
2014-12-20
[root@linux_basic ~]# date +%H:%M:%S
13:21:00
Linux有兩個時鐘:系統時鐘和硬件時鐘
硬件時鐘:保證系統能精確計時的,系統開機後,會從硬件時鐘上讀取時間到系統時間
系統時鐘:Linux內核也有工做頻率的,能夠本身設置
bash上同時執行多條命令,命令間使用';'分號分隔開
hwclock 查詢和設置硬件時鐘
hwclock - query and set the hardware clock (RTC)
-s: 以硬件爲準
-s, --hctosys
Set the System Time from the Hardware Clock.
Also set the kernel’s timezone value to the local timezone as indicated by the TZ environment variable and/or /usr/share/zoneinfo,
as tzset(3) would interpret them. The obsolete tz_dsttime field of the kernel’s timezone value is set to DST_NONE. (For details on
what this field used to mean, see settimeofday(2).)
This is a good option to use in one of the system startup scripts.
-w:以系統爲準
-w, --systohc
Set the Hardware Clock to the current System Time.
[root@linux_basic network-scripts]# hwclock ; date
Sat 20 Dec 2014 08:52:26 AM CST -0.982617 seconds
Sat Dec 20 08:52:25 CST 2014
之間是有差異的
ntp: Network Time Protocol 網絡時間協議
centos 7以後不在使用ntp協議了
經過網絡同步系統時間
是C/S架構的: Server, Client
同步到對應時間服務器
ntpdate server 同步到server上的時間
ntpdate ipaddr_server
[root@linux_basic ~]# mtpdate --help
-bash: mtpdate: command not found
[root@linux_basic ~]# ntpdate --help
ntpdate: unknown option --
ntpdate: unknown option -h
ntpdate: encryption delay lp is unlikely
usage: ntpdate [-46bBdqsuv] [-a key#] [-e delay] [-k file] [-p samples] [-o version#] [-t timeo] [-U username] server ...
3、查看用戶登陸和Linux下目錄結構
who: 登陸至當前系統的全部用戶
who - show who is logged on
[root@linux_basic ~]# who
root tty1 2014-12-10 19:34 沒有顯示ip爲本地登陸
root pts/0 2014-12-20 07:39 (192.168.20.93) 在192.168.20.93主機上登陸
root pts/1 2014-12-20 08:38 (192.168.20.93)
whoami: 當前終端上登陸的用戶
whoami - print effective userid
[root@linux_basic ~]# whoami
root
which: 顯示指定命令的完整路徑
which - shows the full path of (shell) commands.
[root@linux_basic ~]# which ls
alias ls='ls --color=auto'
/bin/ls
--skip-alias: 跳過命令別名
--skip-alias
Ignore option `--read-alias′, if any. This is useful to explicity search for normal binaries, while using the `--read-alias′ option in
an alias or function for which.
[root@linux_basic ~]# which --skip-alias ls
/bin/ls
FHS: 文件系統層次結構標準(Filesystem Hierarchy Standard)
/bin, /sbin: 系統自身啓動和運行時可能會用到的核心二進制命令
/lib: 共享庫文件和內核模塊
/lib64:
/etc: 存放配置文件
/etc : Host-specific system configuration
/usr:
/usr/bin, /usr/sbin: 系統運行中,用戶爲完成某些操做可能用到的命令
/usr/lib, /usr/lib64: 庫文件 非核心命令依賴的共享庫
/usr/share/man, /usr/share/doc 幫助文檔
/dev: devices的簡寫,全部設備的設備文件都存放於此處;設備文件一般也稱爲特殊文件(僅有元數據,而沒有數據)
/dev : Device files
/proc: 僞文件系統,內核和進程信息的虛擬文件系統接口
/proc : Kernel and process information virtual filesystem
/sys: 僞文件系統,硬件設備信息虛擬文件系統接口
/sys : Kernel and system information virtual filesystem
/boot: 系統引導加載時用到的靜態文件,內核(vmlinuz)和ramdisk(CentOS5:initrd, CentOS6:initramfs), 引導加載器grub(bootloader(X86機器纔會常見))
/boot : Static files of the boot loader
/home/USERNAME
/home : User home directories (optional)
/root
/mnt 用來臨時掛載的目錄的
/media
/srv: 服務所用到的數據
/srv : Data for services provided by this system
/tmp: 臨時文件存儲位置
/var: 常常發生變化的文件
/var/log 存放日誌的目錄
/misc: 備用目錄
/opt: 第三方應用程序的安裝目錄
/usr/local:
/selinux
Security Enhanced Linux: 安全增強的Linux
查看當前selinux的狀態
[root@linux_basic ~]# getenforce
Permissive
selinux的配置文件,/etc/sysconfig/selinux
修改能夠經過setenforce Value
應用程序的組成部分:
二進制程序
庫文件
配置文件:定義程序的特性的
幫助文件
文件管理類命令:
文件類型
文件信息查看
用戶和權限
bash的一些特性
管道和重定向
文件文本編輯器
正則表達式
文件查找
[root@linux_basic ~]# ls -l
total 3936
-rw-------. 1 root root 1248 Dec 5 23:44 anaconda-ks.cfg 總共7部分
-r--r--r--. 1 root root 186584 Dec 6 01:46 bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm
-rw-r--r--. 1 root root 0 Dec 11 12:03 blank
查看ls屬於那些章節中
[root@linux_basic ~]# whatis ls
ls (1) - list directory contents
ls (1p) - list directory contents
[root@linux_basic ~]# ls /usr/share/man/ 咱們發現有1p
bg da el es fr hu it ko man1 man1x man2x man3p man4 man5 man6 man7 man8 man9 mann overrides pt ro sk sv zh_CN
cs de en fi hr id ja man0p man1p man2 man3 man3x man4x man5x man6x man7x man8x man9x nl pl pt_BR ru sl tr zh
[root@linux_basic ~]# man ls
LS(1) User Commands LS(1)
NAME
ls - list directory contents
。。。。。。。。。。
-l use a long listing format
。。。。。。。。。。
[root@linux_basic ~]# man 1p ls
LS(1P) POSIX Programmer’s Manual LS(1P)
。。。。。。。。。。。。。。。
-l (The letter ell.) Do not follow symbolic links named as operands unless the -H or -L options are specified. Write out in long for-
mat (see the STDOUT section). When -l (ell) is specified, -1 (one) shall be assumed.
。。。。。。。。。。。。。。。
If the -l option is specified without -L, the following information shall be written:
"%s %u %s %s %u %s %s\n", <file mode>, <number of links>, <owner name>, <group name>, <number of bytes in the file>, <date and time>, <pathname> 總共7部分信息,"%s %u %s %s %u %s %s\n"和後面的格式顯示是對應的,詳細解釋能夠本身去man 。。。。。。。。。。。。。 文件類型: - Regular file. 普通文件:-, f d Directory. 目錄文件: d l (ell) Symbolic link. 符號連接文件:l 設備文件: c Character special file. 字符設備:c (線性設備,只能經過順序訪問的) 鍵盤,鼠標 b Block special file. 塊設備:b (隨機設備,能夠隨機訪問) 硬盤 p FIFO. 命名管道:p 套接字文件:s (unix sock文件) 查看文件內容的類型: file /path/to/somefile [root@linux_basic network-scripts]# file /dev/disk/ /dev/disk/: directory [root@linux_basic network-scripts]# file ifcfg-eth0 ifcfg-eth0: ASCII text