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个字段,那么每个字段的含义是什么意思呢?
使用-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 桌面
cat命令也是Linux系统中最常见使用的命令之一。cat命令让我们可以查看文件的内容、连接文件、创建一个或多个文件和重定向输出到终端或文件。
cat命令的语法如下所示:
$ cat [OPTION] [FILE]...
使用cat命令查看文件/etc/group的内容:
[root@hadoop100 ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
....
显示多个文件内容:
[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命令可以重定向标准输出到一个新文件。
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
# [http://www.iana.org/assignments/port-numbers](http://www.iana.org/assignments/port-numbers)
# 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命令打开一个文件后,可以使用搜索功能,搜索指定的关键字。
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
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
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]=58f6c*****70887d7136a7181************, 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
wc用于查看文件的行数、单词数和字符数等信息。其语法类似如下所示:
$ wc 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
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 被设置了的文件。
在Linux中,每个文件都关联一个时间戳,并且每个文件都会存储最近一次访问的时间、最近一次修改的时间和最近一次变更的时间等信息。所以,无论何时我们创建一个新文件,访问或修改一个已存在的文件,文件的时间戳都会自动更新。
touch命令就可用于创建、变更和修改文件的时间戳。它是Linux操作系统的标准程序。touch命令有如下选项:
使用touch命令创建一个的名称为effyl的新的空文件(0字节):
$ touch effyl
使用touch命令可以创建多个文件,示例如下:
touch sheffyl myeffyl lurffyl
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
在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
ln命令用于创建软链接或硬链接。ls -l命令列出的每一条目的第一个字符指示文件类型,当一个字符"l"(小写的L)时,即表示它是一个软链接。
使用-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不允许给目录创建硬链接。
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 newfile.txt oldfile.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命令也可以同时移动多个文件或目录。比如想移动当前目录下的所有文件可以使用"*"。
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)选项,递归地删除目录及其下的内容。
使用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个用户权限组:
每个文件或目录华友三个基本的权限类型:
chmod命令用于修改文件或目录的权限。chmod命令根据相应的模式修改每个给定文件的权限。这里的模式有两种:一种是符号表达式模式,另一种是八进制位模式。
使用符号表达式模式的格式如下所示:
$ chmod [OPTION] ...[ugoa] [ [+-=] , [rwxug] ] [,...] FILE...
字母"ugoa"的组合控制哪些用户对文件的访问权限将被改变。
注意:如果使用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+4=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命令可以递归地修改目录的权限。
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...
setuid(设置用户标识)是允许用户以文件所有者的权限执行一个程序的权限位。
setgig(设置组标识)是允许用户以用户组成员的权限执行一个程序的权限位。
可以使用chown命令设置setuid和setgid权限位。
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,1
uniq命令用于移除或发现文件中重复的条目:
现有一个文件,其内容形式如下:
[root@hadoop100 test]# cat letter.txt
aaa
aaa
bbb
bbb
ccc
ccc
ccc
使用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选项,只显示文件中不重复的行
使用-w选项,可以限制uniq命令只比较每行的前N个字符。
使用-s选项,可以避免uniq命令比较每行的前N个字符,
使用-f选项,可以避免uniq命令比较前N列,即跳过前N列,只比较后面的字符。
tr命令用于转换字符、删除字符和压缩重复的字符。它从标准输入读取数据并将结果输出到标准输出。语法如下所示:
$ tr [OPTION]... SET1 [SET2]
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
diff命令用于比较两个文件,并找出它们之间的不同。语法如下所示:
$ diff [OPTION]... from-file to-file
hostname命令用于查看系统的主机名,或是修改系统的主机名。
直接简单地使用hostname命令,不指定任何参数,将显示你的系统的当前主机名:
[root@hadoop100 ~]# hostname
hadoop100
使用houstname可以修改主机名,但是只是临时地修改系统的主机名。当系统重启后,这个新修改的主机名将不会被使用。
使用-F选项,hostname命令可以从指定的文件中读取主机名。
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
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分钟的平均负载
uname命令用于打印内核名称和版本、主机名等系统信息。
$ uname [OPTION]...
[root@hadoop100 ~]# uname
Linux
date命令用于多种格式显示日期和时间,或设置系统的日期和时间。
date命令的语法如下:
$ date [OPTION]...[+FORMAT]
$ date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
[root@hadoop100 ~]# date
2022年 08月 20日 星期六 22:57:38 CST
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