一、目录操作命令
1、pwd 查看当前目录
[root@localhost ~]# pwd
/root
2、cd 更改用户当前目录
切换到home目录
[root@localhost ~]# cd /home
[root@localhost home]# pwd
/home
切换到当前目录的上一级目录
[root@localhost home]# cd ..
[root@localhost /]# pwd
/
切换到当前用户的家目录
[root@localhost /]# cd ~
[root@localhost ~]# pwd
/root
将当前目录切换到上一个工作目录
[root@localhost home]# cd -
/root
将当前目录切换到用户root的家目录
[root@localhost ~]# cd ~root
[root@localhost ~]# pwd
/root
3、ls 显示目录内容
显示当前目录的内容
[root@localhost test]# ls
file1 file2
显示boot目录的内容
[root@localhost home]# ls /boot
config-2.6.18-128.el5 lost+found System.map-2.6.18-128.el5
grub message vmlinuz-2.6.18-128.el5
initrd-2.6.18-128.el5.img symvers-2.6.18-128.el5.gz
使用长格式显示boot目录的内容
[root@localhost home]# ls -l /boot
婊璁?6118
-rw-r--r-- 1 root root 67937 2009-01-22 config-2.6.18-128.el5
drwxr-xr-x 2 root root 1024 09-03 03:16 grub
-rw------- 1 root root 3203403 09-03 02:54 initrd-2.6.18-128.el5.img
drwx------ 2 root root 12288 09-03 02:44 lost+found
-rw-r--r-- 1 root root 80032 2009-03-13 message
-rw-r--r-- 1 root root 101127 2009-01-22 symvers-2.6.18-128.el5.gz
-rw-r--r-- 1 root root 931457 2009-01-22 System.map-2.6.18-128.el5
-rw-r--r-- 1 root root 1826484 2009-01-22 vmlinuz-2.6.18-128.el5
使用长格式使用k,M,G单位显示/boot目录的内容
[root@localhost home]# ls -lh /boot
婊璁?6.0M
-rw-r--r-- 1 root root 67K 2009-01-22 config-2.6.18-128.el5
drwxr-xr-x 2 root root 1.0K 09-03 03:16 grub
-rw------- 1 root root 3.1M 09-03 02:54 initrd-2.6.18-128.el5.img
drwx------ 2 root root 12K 09-03 02:44 lost+found
-rw-r--r-- 1 root root 79K 2009-03-13 message
-rw-r--r-- 1 root root 99K 2009-01-22 symvers-2.6.18-128.el5.gz
-rw-r--r-- 1 root root 910K 2009-01-22 System.map-2.6.18-128.el5
-rw-r--r-- 1 root root 1.8M 2009-01-22 vmlinuz-2.6.18-128.el5
4、mkdir 创建目录
在当前目录下建立一个名为test的目录
[root@localhost test]# mkdir test
[root@localhost test]# ls
test
在根目录下建立一个名为test的目录
[root@localhost home]# mkdir /test
[root@localhost home]# cd ..
[root@localhost /]# ls
bin dev home lost+found misc net proc sbin srv test usr
boot etc lib media mnt opt root selinux sys tmp var
在test下一次创建多个目录
[root@localhost test]# mkdir file1 file2
[root@localhost test]# ls
file1 file2
递归创建目录
[root@localhost test]# mkdir -p file1/file2
[root@localhost test]# ls
file1
[root@localhost test]# cd file1
[root@localhost file1]# ls
file2
5、tree 以树状图显示目录内容
树状图显示/boot目录内容
[root@localhost home]# tree /boot
/boot
|-- System.map-2.6.18-128.el5
|-- config-2.6.18-128.el5
|-- grub
| |-- device.map
树状图显示boot目录下的以.conf结尾的文件
[root@localhost home]# tree /boot/ -P *.conf
/boot/
|-- grub
| `-- grub.conf
`-- lost+found
以树状图显示/bin目录内容及文件类型,但是只显示.conf结尾的文件
[root@localhost home]# tree -F -P t* /bin/
/bin/
0 directories, 0 files
二、文件操作命令
1、touch 改变文件或目录时间
建立一个新文件
[root@localhost test]# touch text.txt
将文件的读取时间修改为当前时间
[root@localhost test]# touch -a ./text.txt
2、file 识别文件类型
显示文件类型
[root@localhost test]# file text.txt
text.txt: empty
显示文件类型但是不显示文件名
[root@localhost test]# file -b text.txt
empty
3、cp 复制文件或目录
将文件复制到家目录
[root@localhost test]# cp text.txt ~
将文件夹复制到家目录
[root@localhost home]# cp -r ./test ~
将文件复制另一个文件夹内并改名
[root@localhost test]# cp text.txt /root/abc.txt
将.txt结尾的文件复制到另一个文件夹内
[root@localhost test]# cp /home/test/*.txt /home/test/file1
4、rm 删除文件或目录
删除a.txt文件
[root@localhost test]# rm a.txt
强制删除file1目录
[root@localhost test]# rm -rf file1
5、移动或更新现有的文件或目录
将文件夹f1移动到文件夹f2中
[root@localhost test]# mv f1 f2
把文件名text.txt 修改为abc.txt
[root@localhost test]# mv text.txt abc.txt
6、ln 链接文件或目录(相当于windows中的快捷方式)
为目录f创建符号链接文件g
[root@localhost test]# ln -s /home/test/f /home/test/g
三、查找操作命令
1、locate 查找文件或目录
locate命令查找速度非常快,因为该命令不是实际在硬盘中每个目录区查找文件,而是保存在硬盘上目录结构和文件名的数据库中查找,所以在新增,修改,删除文件盒目录,可能无法找到,这时候需要更新数据库命令更新
[root@localhost test]# updatedb
查找名字问abc.txt的文件或目录
[root@localhost test]# locate abc.txt
/home/test/abc.txt
查找名称包含abc的文件或目录
[root@localhost test]# locate *abc*
/home/test/abc.txt
2、which 查找文件
该命令用于查找文件,但是该命令只会在PATH环境变量中定义的路径及命令别名中查找。
显示PATH环境变量中定义的路径
[root@localhost ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
在环境变量中定义的路径及命令别名中查找ll
[root@localhost ~]# which ll
alias ll='ls -l --color=tty'
/bin/ls
3、whereis 查找文件
查找grub及其帮助文件所在的目录
[root@localhost ~]# whereis grub
grub: /sbin/grub /etc/grub.conf /usr/share/grub /usr/share/man/man8/grub.8.gz
查找grub帮助文件所在的目录
[root@localhost ~]# whereis -m grub
grub: /usr/share/man/man8/grub.8.gz
4、find 查找文件或目录
列出当前目录下所有子目录及文件的名称
[root@localhost ~]# find
查找当前目录及子目录下以t开头的文件或目录
[root@localhost home]# find -name t*
./test
查找当前目录及子目录下以t或f开头的文件或目录,-o表示前后两个条件满足一个就显示
[root@localhost home]# find -name t* -o -name f*
./test
./test/f2
./test/f2/f1
./test/f
./test/f/f
查找home目录下大于1M的文件
[root@localhost home]# find /home -size +1M
四、压缩与归档命令
1、gzip压缩文件
压缩abc.txt文件,压缩后原文件就没有了
[root@localhost test]# gzip abc.txt
[root@localhost test]# ls
abc.txt.gz
压缩abc.txt文件,给压缩文件定义一个新的名称,而保留原来的文件
[root@localhost test]# gzip -c abc.txt>new.gz
[root@localhost test]# ls
abc.txt new.gz
解压abc.txt.gz文件
[root@localhost test]# gzip -d abc.txt.gz
[root@localhost test]# ls
abc.txt
2、bzip2压缩文件
压缩abc.txt文件,压缩后原来的文件就没有了
[root@localhost test]# bzip2 abc.txt
[root@localhost test]# ls
abc.txt.bz2
解压abc.txt文件
[root@localhost test]# bzip2 -d abc.txt.bz2
[root@localhost test]# ls
abc.txt
3、tar 压缩备份
可以将多个文件合并为一个文件
将dir目录打包并使用gzip方式压缩,打包后的文件名是dir_bak.tar.gz
[root@localhost test]# tar -cvzf dir_bak.tar.gz dir
dir/
dir/abc.txt
[root@localhost test]# ls
dir dir_bak.tar.gz
将dir_bak.tar.gz文件解压到当前目录
[root@localhost test]# tar -xvzf dir_bak.tar.gz
dir/
dir/abc.txt
[root@localhost test]# ls
dir dir_bak.tar.gz
将dir目录打包并使用bzip2方式压缩,打包后的文件名是dir_bak.tar.bz2
[root@localhost test]# tar -cvjf dir_bak.tar.bz2 dir
dir/
dir/abc.txt
[root@localhost test]# ls
dir dir_bak.tar.bz2
将bak.tar.bz2解压到当前目录
[root@localhost test]# tar -xvjf dir_bak.tar.bz2
dir/
dir/abc.txt
[root@localhost test]# ls
dir dir_bak.tar.bz2
4、zip文件压缩与解压
将当前目录下的dir目录压缩成dir_bak.zip
[root@localhost test]# zip dir_bak dir
adding: dir/ (stored 0%)
[root@localhost test]# ls
dir dir_bak.zip
将当前目录下的dir目录和文件子目录压缩成dir_bak.zip
[root@localhost test]# zip -r dir_bak dir/
adding: dir/ (stored 0%)
adding: dir/abc.txt (stored 0%)
[root@localhost test]# ls
dir dir_bak.zip
将dir_bak.zip解压缩到当前目录
[root@localhost test]# unzip dir_bak.zip
Archive: dir_bak.zip
creating: dir/
extracting: dir/abc.txt
[root@localhost test]# ls
dir dir_bak.zip
五、文件查看命令
1、cat显示文件内容
显示httpd.conf文件的内容
[root@localhost conf]# cat httpd.conf
带行号显示文件内容
cat -b httpd.conf
2、head 显示文件内容的最前部分
显示文件的前两行
[root@localhost conf]# head -2 httpd.conf
3、tail显示文件内容的末尾部分
显示文件的默认两行
[root@localhost conf]# tail -2 httpd.conf
4、more逐页显示文件内容
回车键向下滚动
空格键向上翻一屏幕
b键向下翻一屏幕
q键退出
[root@localhost conf]# more httpd.conf
5、less 逐页显示文件内容
回车键向下滚动
空格键向上翻一屏幕
b键向下翻一屏幕
q键退出
查看文件内容
[root@localhost conf]# less httpd.conf查看文件
[root@localhost etc]# ll /etc | less
6、grep查找并显示符合条件的信息
显示 /etc/httpd/conf/httpd.conf文件中包含Listen 的行
[root@localhost conf]# grep Listen /etc/httpd/conf/httpd.conf
对目录test中所有扩展名为.txt的文件中寻找并显示包含Listen 的行,查找时不区分大小写
[root@localhost test]# grep -I Listen /home/test/*.txt
在当前目录中查找包含字符串Listen 的文件,在查找过程中遇到子目录时,并不查找此目录中的文件
[root@localhost test]# grep -d skip Listen
六、用户及组管理
查看用户信息
[root@localhost etc]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
相关配置文件
/etc/default/useradd文件用于定义建立用户时的规则
less /etc/login.defs文件用于定义建立用户时相关选项的默认值
/etc/skel文件,子啊linux系统中建立用户时,所建立用户的登录脚本,家目录等所有信息都是在这个目录中的内容为模板
less /etc/passwd文件保存了系统中所有的用户信息,每一行代表一个用户
[root@localhost etc]# less /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
每一行有七列,用;隔开
第一列:用户名
第二列:密码,实际密码存在了/etc/shadow中
第三列:UID
第四列:GID
第五列:用户说明信息
第六列:家目录
第七列:shell,默认是/bin/bash,禁止用户登录的方式就是为用户指定/sbin/nologin的登录shell
/etc/shadow文件中存储系统中所有用户的密码
[root@localhost etc]# less /etc/shadow
root:$1$Ueeeea$PfffffdddsB/dddssfffss40.C1:17046:0:99999:7:::
bin:*:17046:0:99999:7:::
一共有九列
第一列:用户名
第二列:密码
第三列:最近更动密码的日期,该列记录了用户最后一次修改密码的日期。
第四列:密码最短更改时间,记录了对应用户最短需要几天才可以被修改密码,比如设置10天,那么当用户修改密码后十天内不能修改密码。
第五列:密码最长使用时间,指定了一个密码多少天后必须修改,否则对用用户将被禁用。
第六列:密码更改警告时间:linux系统会依据这个字段的配置天数发出警告,提醒再过指定的时间后密码就会失效,比如5,表示当离密码最长使用时间还有5天时向用户发出警告。
第七列:密码过期的时间,如果用户过了警告时间还没有更改密码使得密码失效后,还可以用这个密码在指定的天数内进行登录。比如指定7,表示密码过期后7天内还可以登录。
第八列:用户失效日期:在到达用户失效时间指定的天数后,用户将无法使用,这个日期和最近更动密码的日期一样。
第九列:保留,最后一个字段是保留的,目录还没有作用
/etc/group文件保存了系统用户组信息
[root@localhost etc]# less /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
一共四列
第一列:组名称
第二列:组密码,x表示组密码,实际保存在/etc/gshadow文件中,对于目前linux系统组密码已经没有作用。
第三列:GID,该组对应的GID
第四列:组成员,将该组作为额外组的所有用户。
1、useradd 建立用户
建立一个mm用户
[root@localhost ~]# useradd mm
建立一个mm用户,并制定用户说明信息为"desc"
[root@localhost ~]# useradd mm -c desc
建立一个mm用户,并制定其登陆脚本为/sbin/nologin(该用户不能登陆)
[root@localhost ~]# useradd mm -s /sbin/nologin
建立一个mm用户,并指定其UID为999
[root@localhost ~]# useradd mm -u 999
建立一个mm用户,并指定初始组为group1
[root@localhost ~]# useradd mm -g group1
建立一个mm用户,并指定家目录为/home/her
[root@localhost ~]# useradd mm -d /home/her
2、passwd 更改用户密码
更改用户mm的密码
[root@localhost ~]# passwd mm
更改当前用户密码
[root@localhost ~]# passwd
将用户mm锁定
[root@localhost ~]# passwd -l mm
3、usermod更改用户信息
将用户mm的说明信息修改为24
[root@localhost ~]# usermod -c 24 mm
将用户mm原有的额外组删除并为其增加一个名为group1的额外组
[root@localhost ~]# usermod -G group1 mm
为mm用户增加一个名为group2的新额外组
[root@localhost ~]# usermod -aG group2 mm
3、userdel删除用户
删除名为mm的用户,但保留其家目录
[root@localhost ~]# userdel mm
删除名为mm的用户,同时删除其家目录
[root@localhost ~]# userdel -r mm
4、建立用户组
建立用户组为group1的用户组
[root@localhost ~]# groupadd group1
建立用户组group2 并且指定gid 为999
[root@localhost ~]# groupadd -g 999 group2
5、groupmod修改用户组的名称或gid
修改用户组group1 为group3 gid修改为998
[root@localhost ~]# groupmod group1 -n group3 -g 998
6、groupdel删除用户组
删除用户组group3
[root@localhost ~]# groupdel group3
7、chage修改用户密码
修改root用户密码策略
[root@localhost ~]# chage root
正在为 root 修改年龄信息
请输入新值,或直接敲回车键以使用默认值
最小密码年龄 [0]:
最大密码年龄 [99999]:
最近一次密码修改时间 (YYYY-MM-DD) [2016-09-02]:
密码过期警告 [7]:
密码失效 [-1]:
帐户过期时间 (YYYY-MM-DD) [1969-12-31]:
8、finger[-lmsp]查找并显示用户信息
[root@localhost ~]# finger root
Login: root Name: root
Directory: /root Shell: /bin/bash
On since 四 1月 19 20:07 (CST) on :0 (messages off)
On since 四 1月 19 20:08 (CST) on pts/1 from :0.0
15 minutes 33 seconds idle
On since 四 1月 19 20:09 (CST) on pts/2 from 192.168.0.103
New mail received 四 11月 17 04:02 2016 (CST)
Unread since 六 9月 3 18:17 2016 (CST)
No Plan.
[root@localhost ~]# finger root -l
Login: root Name: root
Directory: /root Shell: /bin/bash
On since 四 1月 19 20:07 (CST) on :0 (messages off)
On since 四 1月 19 20:08 (CST) on pts/1 from :0.0
18 minutes 13 seconds idle
On since 四 1月 19 20:09 (CST) on pts/2 from 192.168.0.103
New mail received 四 11月 17 04:02 2016 (CST)
Unread since 六 9月 3 18:17 2016 (CST)
No Plan.
9、w 显示当前登录系统的用户及用户进程信息
w[-fhlsu] [用户名]
[root@localhost ~]# w
当前时间 系统启动到现在的时间 登录用户的数量 系统在最近1秒,5秒,15秒的平均负载
20:32:08 up 26 min, 3 users, load average: 0.00, 0.02, 0.13
登录账号 终端名称 远程主机名 登录时间 空闲时间 JCPU PCPU
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 - 20:07 ?xdm? 14.02s 0.40s /usr/bin/gnome-
root pts/1 :0.0 20:08 23:36 0.05s 0.05s bash
root pts/2 192.168.0.103 20:09 0.00s 0.18s 0.03s w
JCPU时间指的是和该终端TTY连接的所有进程占用的时间,这个时间里并不包括过去后台作业时间,但却包括当前正在运行的后台作业所占用的时间。
PCPI时间指的是当前进程所占用的时间。
10、who显示当前登录系统的用户信息
who[ami] [-bdHlpqru]
显示当前登录系统的用户信息
[root@localhost ~]# who
root :0 2017-01-19 20:07
root pts/1 2017-01-19 20:08 (:0.0)
root pts/2 2017-01-19 20:09 (192.168.0.103)
只显示与自己相关的登录信息
[root@localhost ~]# whoami
root
显示当前的运行级别
[root@localhost ~]# who -r
run-level 5 2017-01-19 20:06 last=S
11、last 显示当前及过去登录系统的用户信息
last [-adRx] [-<显示列数>] [用户名] [终端编号]
[root@localhost ~]# last
root pts/2 192.168.0.103 Thu Jan 19 20:09 still logged in
root pts/1 :0.0 Thu Jan 19 20:08 still logged in
显示当前及过去登录系统的用户信息
[root@localhost ~]# last -5
root pts/2 192.168.0.103 Thu Jan 19 20:09 still logged in
root pts/1 :0.0 Thu Jan 19 20:08 still logged in
root :0 Thu Jan 19 20:07 still logged in
root :0 Thu Jan 19 20:07 - 20:07 (00:00)
reboot system boot 2.6.18-128.el5 Thu Jan 19 20:06 (00:41)
显示终端tty1的登录信息
[root@localhost ~]# last tty1
wtmp begins Sat Sep 3 03:17:37 2016
12、su 切换用户
su [-] [-c<命令>] [-s] [用户名]
当前用户是root
[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
切换到cha用户,同时改变工作目录和各种环境
[root@localhost ~]# su - cha
[cha@localhost ~]$
恢复原来的用户
[root@localhost ~]# exit
一般用户切换用户需要输入密码
13、sudo 以其他用户身份执行命令
默认只有root用户可以使用sudo命令,如果期望其他用户也可以使用sudo命令,必须由root用户使用visudo命令修改/etc/sudoers文件或使用vim编辑/etc/sudoers文件
由于root用户对/etc/sudoers文件的权限是只读,所以如果使用vim编辑/etc/sudoers文件后,保存需要使用!强制保存。
sudo [-u[<用户名>|#<UID>]] 命令
使用root用户身份执行 /sbin/iptables -L
[root@localhost ~]# sudo -u root /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
RH-Firewall-1-INPUT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:mysql
七、用户切换