3.1 查看文件和目录
3.1.1 ls命令:列出文件名和目录
ls命令不带任何选项,将列出当前目录下所有文件和目录,但不会显示详细的信息。
[root@hadoop100 ~]# ls anaconda-ks.cfg file initial-setup-ks.cfg itheima 公共 模板 视频 图片 文档 下载 音乐 桌面
使用-l选项,将每行显示一条记录:
[root@hadoop100 ~]# ls -l 总用量 44 -rw-------. 1 root root 1685 6月 9 16:55 anaconda-ks.cfg -rw-r--r--. 1 root li 0 6月 17 21:57 file -rw-r--r--. 1 root root 1733 6月 9 17:01 initial-setup-ks.cfg drwxr-xr-x. 2 root root 4096 6月 14 21:44 itheima drwxr-xr-x. 2 root root 4096 6月 10 22:11 公共 drwxr-xr-x. 2 root root 4096 6月 10 22:11 模板 drwxr-xr-x. 2 root root 4096 6月 10 22:11 视频 drwxr-xr-x. 2 root root 4096 6月 10 22:11 图片 drwxr-xr-x. 2 root root 4096 6月 10 22:11 文档 drwxr-xr-x. 2 root root 4096 6月 10 22:11 下载 drwxr-xr-x. 2 root root 4096 6月 10 22:11 音乐 drwxr-xr-x. 2 root root 4096 6月 10 22:11 桌面
使用-l选项,将以长列表格显示文件和目录,包括文件类型、大小、修改日期和时间、权限等信息。
从上面的输出可以看到每行有 7个字段,那么每个字段的含义是什么意思呢?
- 第一个字符:文件类型。
-
- 连字符"-"表示普通文件;
-
- d表示目录;
-
- s表示套接字文件;
-
- l表示链接文件。
- 字段一:文件权限。接下来的9个字符指示文件的权限。每3个字符分别涉及所有者、用户组和其他用户的读、写、执行权限。
- 字段二:链接数。1表示只有一个链接到此文件。
- 字段三:所有者。
- 字段四:用户组。
- 字段五:文件大小。默认输出的大小单位是字节。
- 字段六:文件最近依次被修改的日期时间。
- 字段七:文件名。
使用-lh选项可以将文件大小显示为符合人类阅读习惯的格式:
[root@hadoop100 ~]# ls -lh 总用量 44K -rw-------. 1 root root 1.7K 6月 9 16:55 anaconda-ks.cfg -rw-r--r--. 1 root li 0 6月 17 21:57 file -rw-r--r--. 1 root root 1.7K 6月 9 17:01 initial-setup-ks.cfg drwxr-xr-x. 2 root root 4.0K 6月 14 21:44 itheima drwxr-xr-x. 2 root root 4.0K 6月 10 22:11 公共 drwxr-xr-x. 2 root root 4.0K 6月 10 22:11 模板 drwxr-xr-x. 2 root root 4.0K 6月 10 22:11 视频 drwxr-xr-x. 2 root root 4.0K 6月 10 22:11 图片 drwxr-xr-x. 2 root root 4.0K 6月 10 22:11 文档 drwxr-xr-x. 2 root root 4.0K 6月 10 22:11 下载 drwxr-xr-x. 2 root root 4.0K 6月 10 22:11 音乐 drwxr-xr-x. 2 root root 4.0K 6月 10 22:11 桌面
使用-F选项,将使用不同的特殊字符归类不同的文件类型:
[root@hadoop100 ~]# ls -F anaconda-ks.cfg initial-setup-ks.cfg 公共/ 视频/ 文档/ 音乐/ file itheima/ 模板/ 图片/ 下载/ 桌面/
如上例所示:
- /表示目录
- 无特殊字符表示普通文件
- @ 表示链接文件
-
- 表示可执行文件
使用--color=auto命令,将不同的文件类型显示为不同的颜色:
[root@hadoop100 ~]# ls --color=auto anaconda-ks.cfg file initial-setup-ks.cfg itheima 公共 模板 视频 图片 文档 下载 音乐 桌面
使用-ld选项,可以以长列表格式列出某个目录的信息:
[root@hadoop100 ~]# ls -ld /var/log drwxr-xr-x. 20 root root 4096 8月 19 09:08 /var/log
使用-R选项,将递归地列出子目录的内容:
[root@hadoop100 ~]# ls -R /etc/sysconfig/ /etc/sysconfig/: anaconda crond kdump nfs rpc-rquotad sysstat atd ebtables-config kernel ntpd rsyncd sysstat.ioconf authconfig fcoe ksm ntpdate rsyslog virtlockd autofs firewalld libvirtd qemu-ga run-parts virtlogd cbq grub man-db radvd samba wpa_supplicant cgred init modules raid-check saslauthd chronyd ip6tables-config netconsole rdisc selinux console iptables-config network readonly-root smartmontools cpupower irqbalance network-scripts rpcbind sshd /etc/sysconfig/cbq: avpkt cbq-0000.example /etc/sysconfig/console: /etc/sysconfig/modules: /etc/sysconfig/network-scripts: ifcfg-ens33 ifdown-ipv6 ifdown-TeamPort ifup-ippp ifup-routes network-functions ifcfg-lo ifdown-isdn ifdown-tunnel ifup-ipv6 ifup-sit network-functions-ipv6 ifdown ifdown-post ifup ifup-isdn ifup-Team ifdown-bnep ifdown-ppp ifup-aliases ifup-plip ifup-TeamPort ifdown-eth ifdown-routes ifup-bnep ifup-plusb ifup-tunnel ifdown-ib ifdown-sit ifup-eth ifup-post ifup-wireless ifdown-ippp ifdown-Team ifup-ib ifup-ppp init.ipv6-global [root@hadoop100 ~]#
联合使用-ltr选项,将以长列表格式按文件或目录的修改时间倒序地列出文件和目录:
[root@hadoop100 ~]# ls -ltr 总用量 44 -rw-------. 1 root root 1685 6月 9 16:55 anaconda-ks.cfg -rw-r--r--. 1 root root 1733 6月 9 17:01 initial-setup-ks.cfg drwxr-xr-x. 2 root root 4096 6月 10 22:11 桌面 drwxr-xr-x. 2 root root 4096 6月 10 22:11 音乐 drwxr-xr-x. 2 root root 4096 6月 10 22:11 下载 drwxr-xr-x. 2 root root 4096 6月 10 22:11 文档 drwxr-xr-x. 2 root root 4096 6月 10 22:11 图片 drwxr-xr-x. 2 root root 4096 6月 10 22:11 视频 drwxr-xr-x. 2 root root 4096 6月 10 22:11 模板 drwxr-xr-x. 2 root root 4096 6月 10 22:11 公共 drwxr-xr-x. 2 root root 4096 6月 14 21:44 itheima -rw-r--r--. 1 root li 0 6月 17 21:57 file
联合使用-ls选项,将以长列表格式按文件大小顺序列出文件和目录:
[root@hadoop100 ~]# ls -ls 总用量 44 4 -rw-------. 1 root root 1685 6月 9 16:55 anaconda-ks.cfg 0 -rw-r--r--. 1 root li 0 6月 17 21:57 file 4 -rw-r--r--. 1 root root 1733 6月 9 17:01 initial-setup-ks.cfg 4 drwxr-xr-x. 2 root root 4096 6月 14 21:44 itheima 4 drwxr-xr-x. 2 root root 4096 6月 10 22:11 公共 4 drwxr-xr-x. 2 root root 4096 6月 10 22:11 模板 4 drwxr-xr-x. 2 root root 4096 6月 10 22:11 视频 4 drwxr-xr-x. 2 root root 4096 6月 10 22:11 图片 4 drwxr-xr-x. 2 root root 4096 6月 10 22:11 文档 4 drwxr-xr-x. 2 root root 4096 6月 10 22:11 下载 4 drwxr-xr-x. 2 root root 4096 6月 10 22:11 音乐 4 drwxr-xr-x. 2 root root 4096 6月 10 22:11 桌面
使用-a选项,将列出包括隐藏文件或目录在内的所有文件和目录,包括"."(当前目录)和".."(父目录):
[root@hadoop100 ~]# ls -a . .bash_logout .config file .local 公共 文档 .. .bash_profile .cshrc .ICEauthority .tcshrc 模板 下载 anaconda-ks.cfg .bashrc .dbus initial-setup-ks.cfg .viminfo 视频 音乐 .bash_history .cache .esd_auth itheima .Xauthority 图片 桌面
使用-A选项,将列出包括隐藏文件或目录(不包含","和"..")在内的所有文件和目录:
[root@hadoop100 ~]# ls -A anaconda-ks.cfg .bashrc .dbus initial-setup-ks.cfg .viminfo 视频 音乐 .bash_history .cache .esd_auth itheima .Xauthority 图片 桌面 .bash_logout .config file .local 公共 文档 .bash_profile .cshrc .ICEauthority .tcshrc 模板 下载
使用-i选项,将显示文件或目录的inode编号,有时在系统中操作时可能需要直到inode编号:
[root@hadoop100 ~]# ls -i 1846943 anaconda-ks.cfg 1847000 itheima 1847008 视频 1847002 下载 1847028 file 1847004 公共 1847007 图片 1847006 音乐 1846950 initial-setup-ks.cfg 1847003 模板 1847005 文档 1847001 桌面
注意:在使用find命令中,可以使用inode编号移除文件名中含有特殊字符的文件。
使用-n选项,其输出的内容类似于-l选项,指示显示uid和gid,替代显示所有者和用户组:
[root@hadoop100 ~]# ls -n 总用量 44 -rw-------. 1 0 0 1685 6月 9 16:55 anaconda-ks.cfg -rw-r--r--. 1 0 1000 0 6月 17 21:57 file -rw-r--r--. 1 0 0 1733 6月 9 17:01 initial-setup-ks.cfg drwxr-xr-x. 2 0 0 4096 6月 14 21:44 itheima drwxr-xr-x. 2 0 0 4096 6月 10 22:11 公共 drwxr-xr-x. 2 0 0 4096 6月 10 22:11 模板 drwxr-xr-x. 2 0 0 4096 6月 10 22:11 视频 drwxr-xr-x. 2 0 0 4096 6月 10 22:11 图片 drwxr-xr-x. 2 0 0 4096 6月 10 22:11 文档 drwxr-xr-x. 2 0 0 4096 6月 10 22:11 下载 drwxr-xr-x. 2 0 0 4096 6月 10 22:11 音乐 drwxr-xr-x. 2 0 0 4096 6月 10 22:11 桌面
3.1.2 cat命令:连接显示文件内容
cat命令也是Linux系统中最常见使用的命令之一。cat命令让我们可以查看文件的内容、连接文件、创建一个或多个文件和重定向输出到终端或文件。
cat命令的语法如下所示:
$ cat [OPTION] [FILE]...
使用cat命令查看文件/etc/group的内容:
[root@hadoop100 ~]# cat /etc/group root:x:0: bin:x:1: daemon:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: mem:x:8: kmem:x:9: wheel:x:10:li cdrom:x:11: mail:x:12:postfix man:x:15: dialout:x:18: floppy:x:19: games:x:20: tape:x:33: video:x:39: ftp:x:50: lock:x:54: audio:x:63: nobody:x:99: users:x:100: utmp:x:22: utempter:x:35: input:x:999: systemd-journal:x:190: systemd-network:x:192: dbus:x:81: polkitd:x:998: printadmin:x:997: cgred:x:996: libstoragemgmt:x:995: colord:x:994: rpc:x:32: saned:x:993: dip:x:40: gluster:x:992: ssh_keys:x:991: saslauth:x:76: abrt:x:173: setroubleshoot:x:990: rtkit:x:172: pulse-access:x:989: pulse-rt:x:988: pulse:x:171: radvd:x:75: chrony:x:987: unbound:x:986: kvm:x:36:qemu qemu:x:107: tss:x:59: libvirt:x:985: sssd:x:984: usbmuxd:x:113: geoclue:x:983: ntp:x:38: gdm:x:42: rpcuser:x:29: nfsnobody:x:65534: gnome-initial-setup:x:982: sshd:x:74: slocate:x:21: avahi:x:70: postdrop:x:90: postfix:x:89: stapusr:x:156: stapsys:x:157: stapdev:x:158: tcpdump:x:72: li:x:1000: group1:x:5050:
显示多个文件内容:
[root@hadoop100 etc]# cat /etc/hosts /etc/hostname 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.203.129 hadoop100 hadoop100
使用-n选项,可以显示文件内容的行号:
[root@hadoop100 etc]# cat -n /etc/hosts 1 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 2 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 3 192.168.203.129 hadoop100
-b选项和-n选项类似,但只标识非空白行的行号。
使用-e选项,将每一行的结尾显示"$"字符。这个选项在需要将多行内容转换成一行时是很有用的。
[root@hadoop100 etc]# cat -e /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4$ ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6$ 192.168.203.129 hadoop100$
cat命令可以重定向标准输出到一个新文件。
3.1.3 less、more命令:分屏显示文件
more命令在使用小的xterm窗口时,或是不适用文本编辑器而只是简单地阅读一个文件时是很有用的。more命令是一个用于一次翻阅一整屏文件的过滤器。
使用more命令查看一个文件:
[root@hadoop100 etc]# more /etc/inittab # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target # # systemd uses 'targets' instead of runlevels. By default, there are two main targets: # # multi-user.target: analogous to runlevel 3 # graphical.target: analogous to runlevel 5 # # To view current default target, run: # systemctl get-default # # To set a default target, run: # systemctl set-default TARGET.target #
more会自动地清空屏幕并显示文件的开始部分,如果按空格键,more将会向下移动一个当前终端窗口的高度,来显示下一页内容。
使用-num(num是一个整数)选项,可以指定一次显示的行数:
[root@hadoop100 etc]# more -5 /etc/services # /etc/services: # $Id: services,v 1.55 2013/04/14 ovasik Exp $ # # Network services, Internet style # IANA services version: last updated 2013-04-10 --More--(0%)
也可以通过管道流将cat命令显示的内容输出到more命令。比如有时想输出一个文件的全部内容,但是要慢慢地查看它:
cat README | more
[root@hadoop100 etc]# cat /etc/services | more
/etc/services:
$Id: services,v 1.55 2013/04/14 ovasik Exp $
Network services, Internet style
IANA services version: last updated 2013-04-10
Note that it is presently the policy of IANA to assign a single well-known
port number for both TCP and UDP; hence, most entries here have two entries
even if the protocol doesn't support UDP operations.
Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports
are included, only the more common ones.
The latest IANA port assignments can be gotten from
Service Name and Transport Protocol Port Number Registry
The Well Known Ports are those from 0 through 1023.
The Registered Ports are those from 1024 through 49151
The Dynamic and/or Private Ports are those from 49152 through 65535
Each line describes one service, and is of the form:
service-name port/protocol [aliases ...] [# comment]
tcpmux 1/tcp # TCP port service multiplexer
tcpmux 1/udp # TCP port service multiplexer
rje 5/tcp # Remote Job Entry
rje 5/udp # Remote Job Entry
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
systat 11/udp users
daytime 13/tcp
daytime 13/udp
qotd 17/tcp quote
qotd 17/udp quote
msp 18/tcp # message send protocol (historic)
--More--
less命令与more命令类似,但less命令先前和先后翻页都支持,而且less命令不需要在查看前加载整个文件,即less命令查看文件更快速。使用 less命令打开一个文件后,可以使用搜索功能,搜索指定的关键字。
3.1.4 head命令:显示文件头部
head命令用于打印指定输入的开头部分内容。默认情况下,打印每个指定输入的前10行内容。
使用-n选项可以指定打印文件的前N行,如下所示:
[root@hadoop100 etc]# head -n 5 /etc/inittab # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
也可以直接输入数字:
[root@hadoop100 etc]# head -5 /etc/inittab # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
使用-c选项打印文件的前N个字节的数据,类似如下:
# inittab [root@hadoop100 etc]# head -c 10 /etc/services # /etc/ser
3.1.5 tail命令:显示文件尾部
tail命令与head命令相反,它打印指定输入的结尾部分的内容。默认情况下它打印指定输入的最后10行内容。
使用-n选项可以指定打印文件的最后N行,如下所示:
[root@hadoop100 etc]# tail -n 10 /etc/services 3gpp-cbsp 48049/tcp # 3GPP Cell Broadcast Service Protocol isnetserv 48128/tcp # Image Systems Network Services isnetserv 48128/udp # Image Systems Network Services blp5 48129/tcp # Bloomberg locator blp5 48129/udp # Bloomberg locator com-bardac-dw 48556/tcp # com-bardac-dw com-bardac-dw 48556/udp # com-bardac-dw iqobject 48619/tcp # iqobject iqobject 48619/udp # iqobject matahari 49000/tcp # Matahari Broker
使用-f选项可以即使打印文件中新写入的行:
tail -f /var/log/messages
注意:使用这个选项对于监控日志文件是非常有用的。
--pid选项和-f选项同时使用,可以在特定的进程结束时终结tail命令,命令类似如下:
$ tail -f /tmp/debug.log --pid=24184
3.1.6 file命令:查看文件类型
file命令用于接收一个文件作为参数并执行某些测试,以确定正确的文件类型。下面是使用file命令确定一个文件类型的基本方法:
[root@hadoop100 ~]# file /etc/inittab /etc/inittab: ASCII text [root@hadoop100 ~]# file /etc/inid.d/network /etc/inid.d/network: cannot open (No such file or directory) [root@hadoop100 ~]# file /usr/bin/file /usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=58f6c8b82ee70887d7136a7181ffc8fa18030cde, stripped [root@hadoop100 ~]# file /etc /etc: directory
使用-i选项,可以MIME类型的格式显示文件类型的信息:
[root@hadoop100 ~]# file -i /etc/inittab /etc/inittab: text/plain; charset=us-ascii [root@hadoop100 ~]# file -i /etc/init.d/network /etc/init.d/network: text/x-shellscript; charset=us-ascii [root@hadoop100 ~]# file -i /usr/bin/file /usr/bin/file: application/x-executable; charset=binary
使用-N选项,输出的队列可以以在文件名之后无空白填充的形式显示,其格式对比如下:
[root@hadoop100 ~]# file -N * anaconda-ks.cfg: ASCII text file: empty initial-setup-ks.cfg: ASCII text itheima: directory 公共: directory 模板: directory 视频: directory 图片: directory 文档: directory 下载: directory 音乐: directory 桌面: directory # 区别: [root@hadoop100 ~]# file * anaconda-ks.cfg: ASCII text file: empty initial-setup-ks.cfg: ASCII text itheima: directory 公共: directory 模板: directory 视频: directory 图片: directory 文档: directory 下载: directory 音乐: directory 桌面: directory
3.1.7 wc命令:查看文件统计信息
wc用于查看文件的行数、单词数和字符数等信息。其语法类似如下所示:
$ wc filename
X Y Z filename
X:表示行数
Y:表示单词数
Z:表示字节数
filename:表示文件名
示例:
[root@hadoop100 ~]# wc anaconda-ks.cfg 67 159 1685 anaconda-ks.cfg
使用-l选项,可以只统计文件的行数信息,如下所示:
[root@hadoop100 ~]# wc -l anaconda-ks.cfg 67 anaconda-ks.cfg
使用-w选项,可以只统计文件的单词数信息,如下所示:
[root@hadoop100 ~]# wc -w anaconda-ks.cfg 159 anaconda-ks.cfg
使用-c选项,可以只统计文件的字节数信息,如下所示:
[root@hadoop100 ~]# wc -c anaconda-ks.cfg 1685 anaconda-ks.cfg
使用-L选项,可以统计文件中最长的行的长度,如下所示:
[root@hadoop100 ~]# wc -L anaconda-ks.cfg 125 anaconda-ks.cfg
3.1.8 find命令:查找文件或目录
find命令是Linux系统中最重要也是最常用的命令之一。find命令用于根据指定的参数搜索和定位文件和目录的列表。find命令可以在多种情况下使用,可以通过权限、用户、用户组、文件类型、日期、大小和其他可能的条件来查找文件。
简单的使用find命令查找指定目录下的某个文件的方法如下所示:
[root@hadoop100 ~]# find /etc/ -name inittab /etc/inittab
注意:此处的命令行提示符是"#"号,表示当前用户账号是root。
在当前目录下,根据文件名查找:
$ find . -name filename
当前目录下,文件名不区分大小写查找:
$ find . -name filename
当前目录下,根据目录名查找:
$ find . -type d -name filename
-type c
文件是 c 类型的。类型可取值如下:
b 特殊块文件(缓冲的)
c 特殊字符文件(不缓冲)
d 目录
p 命名管道 (FIFO)
f 普通文件
l 符号链接
s 套接字
D 门 (Solaris 特有)
当前目录下,根据文件权限查找:
$ find . -type f -perm mode
-perm mode
文件的权限位恰好是 mode (八进制或符号)。 Symbolic modes use mode 0 as a point of
departure.
-perm -mode
所有的权限位 mode 都被设置了的文件。
-perm +mode
任何权限位 mode 被设置了的文件。
3.2 操作文件和目录
3.2.1 touch命令:创建文件
在Linux中,每个文件都关联一个时间戳,并且每个文件都会存储最近一次访问的时间、最近一次修改的时间和最近一次变更的时间等信息。所以,无论何时我们创建一个新文件,访问或修改一个已存在的文件,文件的时间戳都会自动更新。
touch命令就可用于创建、变更和修改文件的时间戳。它是Linux操作系统的标准程序。touch命令有如下选项:
- -a:只修改访问时间;
- -c:不创建任何文件;
- -m:只改变修改时间;
- -r:使用指定文件的时间替代当前时间;
- -t:使用[[CC]YY]MMDDhhmm[.ss]替代当前时间。
使用touch命令创建一个的名称为effyl的新的空文件(0字节):
$ touch effyl
使用touch命令可以创建多个文件,示例如下:
touch sheffyl myeffyl lurffyl
示例:
# 使用-a选项,可以改变或更新文件的最新访问时间 touch -a effyl # 使用-c选项,可以避免创建一个新文件,并用当前时间更新文件的时间戳 touch -c effyl # 使用-m选项,可以只改变文件的修改时间,而访问时间不变 touch -m effyl # 使用-c -t选项,来明确设置文件的时间 touch -c -t YYMMDDHHMM filename touch -c -t 1212131030 effyl # 使用-r选项,使用文件myeffyl的时间戳更新文件effyl的时间戳 touch -r myeffyl effyl
3.2.2 mkdir命令:创建目录
mkdir命令用于创建一个新目录。最基本的mkdir命令的使用方法如下所示:
$ mkdir
可以使用相对或绝对路径来创建,示例如下:
$ mkdir /home/backup/old
使用-p选项,mkdir命令会自动创建所有还不存在的父目录,示例如下:
$ mkdir -p backup/old # 或者 $ mkdir -p /home/li/backup/old
要创建的目录已经存在的情况下,会引发错误信息。例如要创建的文件夹backup已经存在,系统会显示错误信息:
[root@hadoop100 ~]# mkdir backup mkdir: 无法创建目录"backup": 文件已存在
使用-p后,不会报错:
[root@hadoop100 ~]# mkdir -p backup
使用-m选项,可以设置将要创建的目录的权限。例如:想要创建一个任何人都有读写访问权限的目录:
$ mkdir -p -m 777 backup/old # 或 $ mkdir -p -m a=rwx backup/old
3.2.3 cp命令:复制文件或目录
在Linux下,我们可以使用cp命令复制文件和目录。cp命令用于将文件从一个地方复制到另一个地方。原来的文件保持不变,新文件可能保持原名或用一个不同的名字。
使用cp命令复制文件和目录的语法有以下几种:
$ cp [OPTION] SOURCE DEST # 复制源文件到目标文件
$ cp [OPTION] SOURCE... DIRECTORY # 复制一个或多个源文件到一个目录
$ cp [OPTION] -t DIRECTORY SOURCE... # 同上
创建一个test目录,进入目录后创建file.txt文件,再复制file.txt文件的副本取命为newfile.txt。代码如下:
[root@hadoop100 ~]# mkdir test [root@hadoop100 ~]# cd test [root@hadoop100 test]# touch file.txt [root@hadoop100 test]# cp file.txt newfile.txt [root@hadoop100 test]# ls file.txt newfile.txt
复制当前目录下的文件file.txt到/root/tmp目录下:
[root@hadoop100 test]# cp file.txt /root/tmp/
复制当前目录下的所有文件到/root/tmp目录:
[root@hadoop100 test]# cp * /root/tmp
使用-p选项,可以使复制一个文件到新文件时,保留源文件的所有者、用户组、权限、修改和访问时间,以及一些扩展属性等信息:
[root@hadoop100 test]# cp -p file.txt /root/tmp/
使用-R或-r选项,可以递归地复制一个目录,即将一个目录及其下的所有文件和子目录都复制到另一个目录。
$ cp -R * /home/li/backup
还有比较常用的归档模式复制;
$ cp -a * /home/li/backup
- -a:存档模式。相当于-dpR。
- -d:保留软链接。
- -p:保留权限、所有权和时间戳等信息。
- -R:递归地复制目录。
3.2.4 ln命令:链接文件或目录
ln命令用于创建软链接或硬链接。ls -l命令列出的每一条目的第一个字符指示文件类型,当一个字符"l"(小写的L)时,即表示它是一个软链接。
- 软链接又称符号链接,是一类特殊的文件,这个文件包含了另一个文件或目录的路径名(绝对路径或相对路径)。在对符号文件进程读或写操作时,系统会自动把该操作转换为对源文件或目录的操作,但输出链接文件时,系统仅仅删除链接文件,而不删除源文件或目录本身。软链接可以链接不同文件系统的文件。
- 硬链接可以理解为一文件的一个或多个文件名。它引用的是文件在文件系统中的物理索引(也称为inode)。当你移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访问原始文件权限,也不会显示原始文件的位置,这样有助于文件的安全。如果删除的文件有相应的硬链接,那么这个文件依然会被保留,直到所有对它的引用都被删除,即硬链接数为0。硬链接只能链接同一文件系统中的文件。
使用-s选项,可以创建一个软链接:
[root@hadoop100 test]# ln -s file.txt ../tmp/
创建软链接时,如果已经存在一个与此软链接同名的文件,那么可以使用--backup选项,让ln命令在创建这个新连结之前,先备份已经存在的同名文件:
[root@hadoop100 test]# ln file.txt sfile.txt ln: 无法创建硬链接"sfile.txt": 文件已存在 # 已经存在时,会提示错误信息 [root@hadoop100 test]# ln --backup file.txt sfile.txt
当前目录下,创建文件file.txt的硬链接,命名为hfile.txt。两个文件的inode编码应该相同:
[root@hadoop100 test]# ln file.txt hfile.txt [root@hadoop100 test]# ls -i 1966391 file.txt 1966391 hfile.txt 1966402 newfile.txt
注意:Linux不允许给目录创建硬链接。
3.2.5 mv命令:重命名文件或目录
mv命令用于将文件和目录从一个位置移到另一个位置。除了移动文件,mv命令还可用于修改文件或目录的名字。
mv命令的基本语法如下所示:
$ mv SOURCE... DIRECTORY
将目录中的file.txt移动到tmp目录中:
[root@hadoop100 test]# mv file.txt ../tmp/
也可以同时移动多个文件:
[root@hadoop100 tmp]# mv file.txt namefile.txt ../test/
使用mv将当前目录下的文件改名:
[root@hadoop100 tmp]# mv oldfile.txt newfile.txt [root@hadoop100 tmp]# ll 总用量 0 -rw-r--r--. 2 root root 0 8月 19 16:54 oldfile.txt
默认情况下,如果目标文件或目录已存在,mv命令并不会提示任何信息,而是直接将其重写覆盖。为了避免这个问题,可以使用-i选项,让mv命令在重写覆盖目标文件或目录之前给出提示信息。这样可以通过输入字符"y"或"n"来接收或拒绝此操作。
使用mv命令也可以同时移动多个文件或目录。比如想移动当前目录下的所有文件可以使用"*"。
3.2.6 rm命令:删除文件或目录
rm命令用于删除指定的文件和目录。其语法如下所示:
$ rm [OPTION] ... FILE ...
使用rm命令删除文件file1.txt、file2.txt、file3.txt,假设这三个在当前目录下:
[root@hadoop100 tmp]# rm file1.txt file2.txt file3.txt rm:是否删除普通空文件 "file1.txt"?y rm:是否删除普通空文件 "file2.txt"?y rm:是否删除普通空文件 "file3.txt"?y
使用-i选项,可以让rm命令在删除每一个文件和目录前提示用户确认:
[root@hadoop100 tmp]# rm -i file1.txt file2.txt file3.txt rm:是否删除普通空文件 "file1.txt"?y rm:是否删除普通空文件 "file2.txt"?y rm:是否删除普通空文件 "file3.txt"?y
使用-f选项,删除前不提示用户确认,并忽略不存在的文件。
使用-r(或-R)选项,递归地删除目录及其下的内容。
3.3 管理文件或目录权限
3.3.1 ls -l:显示文件和目录权限
使用ls -l命令可以按长列表方式输出文件的详细信息,其中第一个字符表示文件的类型(目录、文件或链接),从第2~10这9个字符即指示文件的3种用户类型的权限。
[root@hadoop100 test]# ls -l
总用量 0
-rw-r--r--. 4 root root 0 8月 19 16:54 file.txt
-rw-r--r--. 4 root root 0 8月 19 16:54 hfile.txt
-rw-r--r--. 1 root root 0 8月 19 20:56 namefile.txt
-rw-r--r--. 2 root root 0 8月 19 16:54 newfile.txt
-rw-r--r--. 4 root root 0 8月 19 16:54 sfile.txt
-rw-r--r--. 4 root root 0 8月 19 16:54 sfile.txt~
每个文件或目录都有3个用户权限组:
- 所有者权限:第一组的3个字符rw-,表示只应用于文件或目录的所有者,它们将不影响其他用户行为。
- 用户组权限:第二组的3个字符r--,表示只应用于已经指定给文件或目录的组,它们将同样不影响其他用户的行为。
- 其他用户权限:第三组的三个字符r--,表示只应用于系统中的所有其他用户。
每个文件或目录还有三个基本的权限类型:
- r:读权限。指用户的读文件内容或列出目录内容的权限。
- w:写权限。指用户的写或修改文件或目录的权限。
- x:执行权限。指用户执行文件或进入目录的权限。
3.3.2 chmod命令:修改权限
chmod命令用于修改文件或目录的权限。chmod命令根据相应的模式修改每个给定文件的权限。这里的模式有两种:一种是符号表达式模式,另一种是八进制位模式。
使用符号表达式模式的格式如下所示:
$ chmod [OPTION] ...[ugoa] [ [+-=] , [rwxug] ] [,...] FILE...
字母"ugoa"的组合控制哪些用户对文件的访问权限将被改变。
- u:指文件或目录的所有者。
- g:指文件或目录的用户组的成员。
- o:指不在文件或目录的用户组中的其他用户。
- a:指所有用户,即(ugo)。
注意:如果使用chmod命令的符号表达式模式时,不给出"ugoa"的组合。则得到的结果和使用"a"相同。
操作符"+-="表示权限的授予或撤销。
- +:选定的权限将被添加。
- -:选定的权限将被移除。
- =:文件只拥有选定的权限。
示例:
赋予所有人对文件读、写和执行的权限:
chmod a+rwx file.txt
chmod命令的数字模式使用数字来表示读(4)、写(2)和执行(1)的权限,而每个用户权限组的值就是表示读、写和执行权限的这3个数字(4,2,1)组合的相加得到的八进制数(0~7)。各数字所表示的权限如下表所示:
数值 | 说明 |
4 | r读权限 |
2 | w写权限 |
1 | x执行权限 |
4+2+1=7 | rwx读写执行权限 |
4+2+0=6 | rw读写权限 |
2+1=3 | wx写执行权限 |
4+1=5 | rx读执行权限 |
赋予所有人对文件的读、写和执行权限:
[root@hadoop100 test]# chmod 777 namefile.txt [root@hadoop100 test]# ll 总用量 0 -rwxrwxrwx. 4 root root 0 8月 19 16:54 file.txt -rwxrwxrwx. 4 root root 0 8月 19 16:54 hfile.txt -rwxrwxrwx. 1 root root 0 8月 19 20:56 namefile.txt -rw-r--r--. 2 root root 0 8月 19 16:54 newfile.txt -rwxrwxrwx. 4 root root 0 8月 19 16:54 sfile.txt -rwxrwxrwx. 4 root root 0 8月 19 16:54 sfile.txt~
使用-R选项,chmod命令可以递归地修改目录的权限。
3.3.3 chown、chgrp命令:修改文件所有者和用户组
chown命令用于修改文件或目录的所有者和用户组信息。其语法如下所示:
$ chown [OPTION]... [OWER] [:[GROUP]] FILE
例如,将文件file.txt的所有者改为li:
[root@hadoop100 test]# chown li file.txt [root@hadoop100 test]# ll 总用量 0 -rwxrwxrwx. 4 li root 0 8月 19 16:54 file.txt -rwxrwxrwx. 4 li root 0 8月 19 16:54 hfile.txt -rwxrwxrwx. 1 root root 0 8月 19 20:56 namefile.txt -rw-r--r--. 2 root root 0 8月 19 16:54 newfile.txt -rwxrwxrwx. 4 li root 0 8月 19 16:54 sfile.txt -rwxrwxrwx. 4 li root 0 8月 19 16:54 sfile.txt~
将文件file.txt的用户组也修改为li:
[root@hadoop100 test]# chown :li file.txt [root@hadoop100 test]# ll 总用量 0 -rwxrwxrwx. 4 li li 0 8月 19 16:54 file.txt -rwxrwxrwx. 4 li li 0 8月 19 16:54 hfile.txt -rwxrwxrwx. 1 root root 0 8月 19 20:56 namefile.txt -rw-r--r--. 2 root root 0 8月 19 16:54 newfile.txt -rwxrwxrwx. 4 li li 0 8月 19 16:54 sfile.txt -rwxrwxrwx. 4 li li 0 8月 19 16:54 sfile.txt~
同时修改所有者和用户组:
[root@hadoop100 test]# chown root:root file.txt [root@hadoop100 test]# ll 总用量 0 -rwxrwxrwx. 4 root root 0 8月 19 16:54 file.txt -rwxrwxrwx. 4 root root 0 8月 19 16:54 hfile.txt -rwxrwxrwx. 1 root root 0 8月 19 20:56 namefile.txt -rw-r--r--. 2 root root 0 8月 19 16:54 newfile.txt -rwxrwxrwx. 4 root root 0 8月 19 16:54 sfile.txt -rwxrwxrwx. 4 root root 0 8月 19 16:54 sfile.txt~
修改文件所有者和所有组后,硬链接和软链接文件的所有者和所有组均被修改。
修改软链接文件的所有者和用户组信息:
[root@hadoop100 test]# chown li:li sfile.txt [root@hadoop100 test]# ll 总用量 0 -rwxrwxrwx. 4 li li 0 8月 19 16:54 file.txt -rwxrwxrwx. 4 li li 0 8月 19 16:54 hfile.txt -rwxrwxrwx. 1 root root 0 8月 19 20:56 namefile.txt -rw-r--r--. 2 root root 0 8月 19 16:54 newfile.txt -rwxrwxrwx. 4 li li 0 8月 19 16:54 sfile.txt -rwxrwxrwx. 4 li li 0 8月 19 16:54 sfile.txt~
注意:默认情况下,当使用chown命令修改软链接文件时,实际修改的是软链接所指向的文件。修改
修改硬链接文件的所有者和所有组信息:
[root@hadoop100 test]# chown root:root hfile.txt [root@hadoop100 test]# ll 总用量 0 -rwxrwxrwx. 4 root root 0 8月 19 16:54 file.txt -rwxrwxrwx. 4 root root 0 8月 19 16:54 hfile.txt -rwxrwxrwx. 1 root root 0 8月 19 20:56 namefile.txt -rw-r--r--. 2 root root 0 8月 19 16:54 newfile.txt -rwxrwxrwx. 4 root root 0 8月 19 16:54 sfile.txt -rwxrwxrwx. 4 root root 0 8月 19 16:54 sfile.txt~
chgrp命令和chown命令类似,但是chgrp命令只用于修改文件或目录的用户组(不能修改所有者)。其语法如下:
$ chgrp [OPTION]... GROUP FILE...
3.3.4 设置setuid和setgif权限位:设置用户和组权限位
setuid(设置用户标识)是允许用户以文件所有者的权限执行一个程序的权限位。
setgig(设置组标识)是允许用户以用户组成员的权限执行一个程序的权限位。
任意用户可以以所有者的权限,执行一个设置了setuid的脚本。同样,任意用户可以以用户组成员的权限,执行一个设置了setgid的脚本。与其他权限位类似,可以使用chmod命令设置setuid和setgid权限位。
查看一个文件是否有setuid和setgid,可以使用ls-l命令或者stat命令。如果有字母"s"在所有者权限组表示设置了setuid,有字母"s"在用户组权限组则表示设置了setgid。例如,passwd命令的权限:
[li@Master ~]$ ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 27856 4月 1 2020 /usr/bin/passwd [li@Master ~]$ stat /usr/bin/passwd 文件:"/usr/bin/passwd" 大小:27856 块:56 IO 块:4096 普通文件 设备:fd00h/64768d Inode:51061774 硬链接:1 权限:(4755/-rwsr-xr-x) Uid:( 0/ root) Gid:( 0/ root) 环境:system_u:object_r:passwd_exec_t:s0 最近访问:2020-04-01 11:57:19.000000000 +0800 最近更改:2020-04-01 11:57:19.000000000 +0800 最近改动:2022-09-17 16:54:36.806850122 +0800 创建时间:-
使用chmod命令的符号表达式模式设置setuid:
[li@Master test]$ ll 总用量 4 -rw-r--r--. 1 root root 437 9月 18 14:36 testif.sh [li@Master test]$ chmod u+s testif.sh chmod: 更改"testif.sh" 的权限: 不允许的操作 [li@Master test]$ su root 密码: [root@Master test]# chmod u+s testif.sh [root@Master test]# ll 总用量 4 -rwSr--r--. 1 root root 437 9月 18 14:36 testif.sh [root@Master test]#
使用chmod命令的符号表达式模式设置setgid:
[root@Master test]# chmod g+s testif.sh [root@Master test]# ll 总用量 4 -rwSr-Sr--. 1 root root 437 9月 18 14:36 testif.sh [root@Master test]#
使用chmod命令的数字模式设置setuid的方法是,在3个权限位的前面加数字4:
[root@Master test]# chmod 4755 testif.sh [root@Master test]# ll 总用量 4 -rwsr-xr-x. 1 root root 437 9月 18 14:36 testif.sh
使用chmod命令的数字模式设置setgid的方法是,在3个权限位的前面加数字2:
[root@Master test]# chmod 2755 testif.sh [root@Master test]# ll 总用量 4 -rwxr-sr-x. 1 root root 437 9月 18 14:36 testif.sh
使用chmod命令移除setuid和setgid权限为的方法是,在3个权限位的前面加数字0:
[root@Master test]# chmod 0755 testif.sh [root@Master test]# ll 总用量 4 -rwxr-xr-x. 1 root root 437 9月 18 14:36 testif.sh
3.4 文本处理
3.4.1 sort命令:文本排序
sort命令用于将文本文件的行排序。默认情况下,sort命令是按照字符串的字母顺序排序。现有一个包含如下内容的文件:
[root@hadoop100 test]# cat file.txt
abc
def
ghi
jkl
mno
def
不使用任何选项,sort命令可以简单地将文件内容按字母顺序进行排序:
[root@hadoop100 test]# sort file.txt abc def def ghi jkl mno
使用-u选项,sort命令可以移除所有重复的行:
[root@hadoop100 test]# sort -u file.txt abc def ghi jkl mno
使用-n选项,可以使用sort命令将数字按数值的大小排序:
[root@hadoop100 test]# cat numfile.txt # 原始文件 20 10 35 100 69 83 [root@hadoop100 test]# sort numfile.txt # 使用sort排序并不能按照大小排序 10 100 20 35 69 83 [root@hadoop100 test]# sort -n numfile.txt # 使用-n选项排序 10 20 35 69 83 100
使用-r选项,可以是sort命令以倒序方式排序:
[root@hadoop100 test]# sort -nr numfile.txt 100 83 69 35 20 10
sort命令可以同时将多个文件的内容排序:
$ sort file1 file2
如果一个文件有多个列,(每列以逗号","分隔)如下所示:
[root@hadoop100 test]# cat lettfile.txt
abc,20
def,10
ghi,35
jkl,100
mno,69
def,83
默认情况下,sort命令按文件第一列字符串字母顺序将文件内容排序:
[root@hadoop100 test]# sort lettfile.txt abc,20 def,10 def,83 ghi,35 jkl,100 mno,69
指定sort命令按照第二列的字符串顺序将文件内容排序:
[root@hadoop100 test]# sort -t ',' -k2,2 lettfile.txt def,10 jkl,100 abc,20 ghi,35 mno,69 def,83
使用-t选项用于指定列的分隔符,上例中的分隔符是逗号",";-k选项用于指定进行排序的列 -k POS1[,POS2]
,这里指定了第二列。
指定sort命令按照第二列的数值顺序将文件内容排序:
[root@hadoop100 test]# sort -t ',' -k2n,2 lettfile.txt def,10 abc,20 ghi,35 mno,69 def,83 jkl,100
指定sort命令按照第二列的数值倒序将文件内容排序:
[root@hadoop100 test]# sort -t ',' -k2nr,2 lettfile.txt jkl,100 def,83 mno,69 ghi,35 abc,20 def,10
3.4.2 uniq命令:文本去重
uniq命令用于移除或发现文件中重复的条目:
现有一个文件,其内容形式如下:
[root@hadoop100 test]# cat letter.txt
aaa
aaa
bbb
bbb
ccc
ccc
ccc
ddd
使用uniq命令,不带任何选项时,它将移除文件中重复的行并显示单一行:
[root@hadoop100 test]# uniq letter.txt aaa bbb ccc
使用-c选项,可以统计重复行出现的次数:
[root@hadoop100 test]# uniq -c letter.txt 2 aaa 2 bbb 3 ccc
使用-d选项,只显示文件中有重复的行并且只显示一次:
[root@hadoop100 test]# uniq -d letter.txt aaa bbb ccc
使用-u选项,只显示文件中不重复的行
[root@Master test]# uniq -u letter.txt
使用-w选项,可以限制uniq命令只比较每行的前N个字符。
使用-s选项,可以避免uniq命令比较每行的前N个字符,
使用-f选项,可以避免uniq命令比较前N列,即跳过前N列,只比较后面的字符。
3.4.3 tr命令:替换或删除字符
tr命令用于转换字符、删除字符和压缩重复的字符。它从标准输入读取数据并将结果输出到标准输出。语法如下所示:
$ tr [OPTION]... SET1 [SET2]
3.4.4 grep命令:查找字符串
grep命令用于搜索文本或指定的文件中与指定的字符串或模式相匹配的行。默认情况下,grep命令只显示匹配的行。语法如下所示:
$ grep [OPTION]... PATTERN [FILE] ...
$ grep [OPTION]... [-e PATTERN | -f FILE] [FILE]...
使用grep命令查找文件/etc/passwd中账号root的信息:
[root@hadoop100 ~]# grep root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
使用-i选项,可以强制grep命令忽略搜索关键字的大小写:
[root@hadoop100 ~]# grep -i root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
使用-r选项,可以递归搜索指定目录下的所有文件:
[root@hadoop100 ~]# grep -r root /etc/ # 或者 [root@hadoop100 ~]# grep -R root /etc/
将-r选项与-l选项结合使用,grep命令可以只打印输出包含匹配指定模式的行的文件的名字:
[root@hadoop100 ~]# grep -rl root /etc/ /etc/rsyncd.conf /etc/dnsmasq.conf /etc/rpm/macros.jpackage /etc/rpm/macros.fjava /etc/rpm/macros.perl /etc/lsm/lsmd.conf
默认情况下,当搜索字符串root时,grep命令也会匹配root122、rootegn等字符串。使用-w选项,可以强制grep命令只匹配包含指定单词的行。比如查找文件/etc/passwd中只包含指定单词li的行:
[root@hadoop100 ~]# grep -w li /etc/passwd li:x:1000:1000:li:/home/li:/bin/bash
使用-c选项,grep命令可以报告文件或文本中模式被匹配的次数:
[root@hadoop100 ~]# grep -c li /etc/passwd 10
使用-n选项,grep命令可以显示每一个匹配的行的行号:
[root@hadoop100 ~]# grep -n li /etc/passwd 17:libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin 18:colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin 19:rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin 24:setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin 28:chrony:x:992:987::/var/lib/chrony:/sbin/nologin 34:geoclue:x:989:983:User for geoclue:/var/lib/geoclue:/sbin/nologin 36:gdm:x:42:42::/var/lib/gdm:/sbin/nologin 37:rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin 38:nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin 44:li:x:1000:1000:li:/home/li:/bin/bash
使用-v选项,grep命令可以输出除匹配指定模式的行以外的其他所有行:
[root@hadoop100 ~]# grep -v li /etc/passwd
grep命令通常与Shell管道一起结合使用:
[root@hadoop100 ~]# grep -n li /etc/passwd
3.4.5 diff命令:比较两个文件
diff命令用于比较两个文件,并找出它们之间的不同。语法如下所示:
$ diff [OPTION]... from-file to-file
3.5 其他常用命令
3.5.1 hostname命令:查看主机名
hostname命令用于查看系统的主机名,或是修改系统的主机名。
直接简单地使用hostname命令,不指定任何参数,将显示你的系统的当前主机名:
[root@hadoop100 ~]# hostname hadoop100
使用houstname可以修改主机名,但是只是临时地修改系统的主机名。当系统重启后,这个新修改的主机名将不会被使用。
使用-F选项,hostname命令可以从指定的文件中读取主机名。
3.5.2 w、who命令:列出系统登录的用户
w命令用于显示登录的用户及他们当前运行的进程。
w命令输入的内容格式如下:
$ w
示例:
[root@hadoop100 ~]# w 22:27:27 up 26 min, 1 user, load average: 0.00, 0.01, 0.03 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.203.1 22:01 7.00s 0.08s 0.01s w
w命令输出的第一行内容与uptime命令默认输出的内容相同。第三行分别显示的是:登录账号的用户名、tty名称、从哪台主机登录、登录时间、空闲时间、tty上的所有进程所使用的CPU时间、当前进程所使用的CPU时间以及当前运行的进程。
who命令有与w命令类似的用途,但它的功能比w命令更强大一些。who命令的语法如下:
$ who [OPTION]...[FILE | ARG1 ARG2]
直接使用who命令,不知道任何参数,将显示当前登录的所有用户的信息:
[root@hadoop100 ~]# who root pts/0 2022-08-20 22:01 (192.168.203.1)
使用-b选项,who命令可以显示系统的启动时间:
[root@hadoop100 ~]# who -b 系统引导 2022-08-20 22:01
使用-l选项,who命令会显示出系统登录进程:
[root@hadoop100 ~]# who -l
使用-m选项,who命令将只显示与当前标准输入关联的用户信息:
[root@hadoop100 ~]# who -m root pts/0 2022-08-20 22:01 (192.168.203.1)
使用-r选项,who命令将显示系统的运行级别:
[root@hadoop100 ~]# who -r 运行级别 5 2022-08-20 22:01
使用-q选项,who命令将只显示所有登录用户的用户名和登录的用户数:
[root@hadoop100 ~]# who -q root # 用户数=1
3.5.3 uptime命令:查看系统运行时间
uptime命令用于打印系统的运行时间等信息。
uptime命令的使用很简单,只需要简单地在命令提示符下输入uptime命令,将显示如下信息:
[root@hadoop100 ~]# uptime 22:38:42 up 37 min, 1 user, load average: 0.00, 0.01, 0.03 # 当地时间 系统已经连续运行多久 几个用户 系统的过去1分钟、5分钟、15分钟的平均负载
3.5.4 uname命令:查看系统信息
uname命令用于打印内核名称和版本、主机名等系统信息。
$ uname [OPTION]...
[root@hadoop100 ~]# uname Linux
使用选项-a列出所有信息
[root@Master etc]# uname -a Linux Master 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
3.5.5 date命令:显示和设置系统日期和时间
date命令用于多种格式显示日期和时间,或设置系统的日期和时间。
date命令的语法如下:
$ date [OPTION]...[+FORMAT]
$ date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
[root@hadoop100 ~]# date 2022年 08月 20日 星期六 22:57:38 CST
3.5.6 id命令:显示用户属性
id命令用于打印输出用户的uid、gid、用户名和组名等用户身份信息。id命令的语法如下:
$ id [OPTION]...[USERNAME]
直接输入id命令,将打印输出当前用户的uid、用户名、gid、组名,以及用户属于的所有群组信息:
[root@hadoop100 ~]# id uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
使用-u选项,id命令将只打印输出用户的uid:
# id -u
使用-u选项和-n选项结合,可以打印输出账号的用户名:
# id -un
使用-g选项,id命令将只打印输出账号当前起作用的gid:
# id -g
使用-g与-n选项结合使用,可以打印输出账号当前起作用的用户组名:
# id -gn
使用-G选项,id命令将打印输出账号所属于的所有群组的id:
id -G root
使用-G与-n选项结合使用,可以打印输出账号所属于的所有群组的名称:
# id -Gn root