文章目录
1. Linux命令的普遍语法格式
命令格式: 命令 【-选项】【参数】
例子: ls -la /etc
说明: ①、个别命令使用不遵循此格式,【】这种符号表示可以省略
②、当有多个选项时,可以写在一起
③、简化选项(一般用一个-)与完整选项(一般用两个–)
比如 ls -a 等于 ls --all
2. 查看目录内容
2.1.显示目录文件命令:ls
①、命令名称:ls
②、英文原意:list
③、命令所在路径:/bin/ls
④、执行权限:所有用户
⑤、功能描述:显示目录文件
⑥、语法: ls 选项【-ald】【文件或目录】
-a 显示所有文件,包括隐藏文件
-l 详细信息显示
-d 仅显示目录名,而不显示目录下的内容列表
-h 人性化显示(hommization)
-i 查看任意一个文件的i节点(类似于身份证唯一信息)
注意:. 开头的文件除非是目录,否则就是隐藏文件
文件属性如下:
2.2 tree 命令
有可能tree命令不存在,需要安装tree包才有(安装:yum -y install tree)
tree命令的选项说明如下:
【 匹配选项:】
-L:用于指定递归显示的深度,指定的深度必须是大于0的整数。
-P:用于显示通配符匹配模式的目录和文件,但是不管是否匹配,目录一定显示。
-I:用于显示除被通配符匹配外的所有目录和文件
【 显示选项:】
`-a:用于显示隐藏文件,默认不显示。
-d:指定只显示目录。
-f:指定显示全路径。
-i:不缩进显示。和-f一起使用很有用。
-p:用于显示权限位信息。
-h:用于显示大小。
-u:显示username或UID(当没有username时只能显示UID了)。
-g:显示groupname或GID。
-D:显示文件的最后一次Mtime。
--inodes:显示inode号。
--device:显示文件或目录所属的设备号。
-C:显示颜色。
【 输出选项:】
-o filename:指定将tree的结果输出到filename文件中`。
3. 文件/目录的创建和删除
3.1 创建目录mkdir
mkdir [-mp] 目录名
-m:表示创建目录时直接设置权限
-p:表示递归创建多层目录,即上层目录不存在时也会直接将其创建出来(parent)
[root@localhost ~] mkdir /tmp/test1 # 在tmp目录中创建一个test1目录
[root@localhost ~] mkdir -m 711 /tmp/test2 # 直接创建test2时就赋予权限711
[root@localhost ~] mkdir -p /tmp/test3/test4/test5 # 创建test5,此时会将不存在的test3和test4目录也创建好
[root@localhost ~] cd /tmp
[root@localhost tmp] ls
ks-script-OkDpfX
systemd-private-765850f8149f41169696558545d0af1a-chronyd.service-7jh8Hw
systemd-private-d0783b3c3fe34d1fb14f8c671e50e650-chronyd.service-0JMr4y
test1
test2
test3
yum.log
3.2 创建文件touch
touch file_name
[root@localhost ~] touch /tmp/test1/test1.txt
[root@localhost ~] touch {1..10} #创建文件名为1-10的文件
多个{}还可以交换扩展。类似(a+b)(c+d)=ac+ad+bc+bd。
[root@localhost ~] touch {a,b}_{c,d} # 创建a_c、a_d、b_c、b_d四个文件
touch主要是修改文件的时间戳信息,当touch的文件不存在时就自动创建该文件。可以使用 touch –c 来取消创建动作。
touch可以更改最近一次访问时间(atime),最近一次修改时间(mtime),文件属性修改时间(ctime),这些时间可以通过命令stat file来查看。其中ctime是文件属性上的更改,即元数据的更改,比如修改权限。
touch -a修改atime,-m修改mtime,没有修改ctime的选项。因为使用touch改变atime或mtime,同时也都会改变ctime,虽说atime并不总是会影响ctime(如cat文件时)
3.3 删除文件/目录
rm [-rfi] file_name
参数:
-r:表示递归删除,删除目录时需要加此参数
-i:询问是否删除(yes/no)
-f:强制删除,不进行询问
[root@localhost ~] rm -rf 1 10 {a,b}_{c,d}
[root@localhost ~] ls
a anaconda-ks.cfg gid.txt sh
删除空目录时还可以使用rmdir
4.查看文件类型file 命令
这是一个简单查看文件类型的命令,查看文件是属于二进制文件还是数据文件还是ASCII文件。
[root@localhost ~] file /etc/aliases.db
/etc/aliases.db: Berkeley DB (Hash, version 9, native byte-order)
[root@localhost ~] file ~/.bashrc
/root/.bashrc: ASCII text #ASCII文件
5.文件/目录复制和移动
5.1 复制cp命令
cp [-apdriulfs] src dest # 复制单文件或单目录
cp [-apdriuslf] src1 src2 src3…dest_dir # 复制多文件、目录到一个目录下
-p: 文件的属性(权限、属组、时间戳)也复制过去。如果不指定p选项,谁执行复制动作,文件所有者和组就是谁。
-r或-R:递归复制,常用于复制非空目录。####
-d:复制的源文件如果是链接文件,则复制链接文件而不是指向的文件本身。即保持链接属性,复制快捷方式本身。如果不指定-d,则复制的是链接所指向的文件。
-a:a = pdr三个选项。归档拷贝,常用于备份。####
-i:复制时如果目标文件已经存在,询问是否替换。
-u:(update)若目标文件和源文件同名,但属性不一样(如修改时间,大小等),则覆盖目标文件。
-f:强制复制,如果目标存在,不会进行-i选项的询问和-u选项的考虑,直接覆盖。
-l:在目标位置建立硬链接,而不是复制文件本身。
-s:在目标位置建立软链接,而不是复制文件本身(软链接或符号链接相当于windows的快捷方式)。
一般使用cp -a即可,对于目录加上-r选项即可。
[root@localhost ~] cp -a /etc/skel/. /tmp #这里 . 代表隐藏文件
5.2 移动MV命令
①、命令名称:mv
②、英文原意:move
③、命令所在路径:/bin/mv
④、执行权限:所有用户
⑤、功能描述:剪切文件、改名
⑥、语法: mv【原文件或目录】【目标目录】
mv默认已经是递归移动,不需要-r参数。
[root@localhost ~] mkdir -p /tmp/tmp1/tmp1_1
[root@localhost ~] mv /tmp/tmp1/tmp1_1 /tmp
[root@localhost ~] ls /tmp
tmp1 tmp1_1
6.查看文件内容
6.1 cat命令
cat 命令可以用来显示文本文件的内容(类似于 DOS 下的 type 命令),也可以把几个文件内容附加到另一个文件中,即连接合并文件。关于此命令,有人认为写 cat 命令的人是因为喜欢猫,因此给此命令起名为“cat”,其实不然,cat 是 concatenate(连接、连续)的简写。
cat基本格式如下:
[root@localhost ~]# cat [选项] 文件名
或者
[root@localhost ~]# cat 文件1 文件2 > 文件3
选项:
-A 相当于 -vET 选项的整合,用于列出所有隐藏符号;
-E 列出每行结尾的回车符 $;
-n 对输出的所有行进行编号;
-b 同 -n 不同,此选项表示只对非空行进行编号。
-T 把 Tab 键 ^I 显示出来;
-V 列出特殊字符;
-s 当遇到有连续 2 行以上的空白行时,就替换为 1 行的空白行。
【例1】:cat 命令本身非常简单,我们可以直接查看文件的内容
[root@localhost ~] cat anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
cdrom
lang zh一CN.UTF-8
【例2】:通过重定向输入文本
cat > /etc/yum.repos.d/test.repo <<END
[testrepo]
name=xx
baseurl=xxx
gpgcheck=0
enabled=0
END
6.2 tac命令
tac和cat字母正好是相反的,其作用也是和cat相反的,它会反向输出行,将最后一行放在第一行的位置输出,依此类推
【例1】:显示 /etc/issue的内容
[root@localhost ~] cat /etc/issue
\S
Kernel \r on an \m
[root@localhost ~] tac /etc/issue
Kernel \r on an \m
\S
6.3 more命令
在讲解 cat 命令时,我们留下了一个疑问,即当使用 cat 命令查看文件内容时,如果文件过大,以至使用PgUp+上箭头组合键向上翻页也无法看全文件中的内容,该怎么办呢?这就需要使用 more 命令。
more 命令可以分页显示文本文件的内容,使用者可以逐页阅读文件中内容,此命令的基本格式如下:
[root@localhost ~] more [选项] 文件名
参数:
-f 计算行数时,以实际的行数,而不是自动换行过后的行数。
-p 不以卷动的方式显示每一页,而是先清除屏幕后再显示内容。
-c 跟 -p 选项相似,不同的是先显示内容再清除其他旧资料。
-s 当遇到有连续两行以上的空白行时,就替换为一行的空白行。
-u 不显示下引号(根据环境变量 TERM 指定的终端而有所不同)。
+n 从第 n 行开始显示文件内容,n 代表数字。
-n 一次显示的行数,n 代表数字。
【例1】用分页的方式显示 anaconda-ks.cfg 文件的内容
[root@localhost ~] more anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
cdrom
…省略部分内容…
--More--(69%)
#在这里执行交互命令即可
【例 2】显示文件 anaconda-ks.cfg 的内容,每 10 行显示一屏,同时清楚屏幕,使用以下命令:
[root@localhost ~] more -c -10 anaconda-ks.cfg
#省略输出内容。
6.4 head命令
head 命令可以显示指定文件前若干行的文件内容,其基本格式如下:
[root@localhost ~]# head [选项] 文件名
-n K 这里的 K 表示行数,该选项用来显示文件前 K 行的内容;如果使用 "-K" 作为参数,则表示除了文件最后 K 行外,显示剩余的全部内容。
-c K 这里的 K 表示字节数,该选项用来显示文件前 K 个字节的内容;如果使用 "-K",则表示除了文件最后 K 字节的内容,显示剩余全部内容。
-v 显示文件名;
【例 1】基本用法。
[root@localhost ~] head anaconda-ks.cfg
head 命令默认显示文件的开头 10 行内容。如果想显示指定的行数,则只需使用 “-n” 选项即可,例如:
[root@localhost ~] head -n 20 anaconda-ks.cfg
这是显示文件的开头 20 行内容,也可以直接写 “-行数”,例如:
[root@localhost ~] head -20 anaconda-ks.cfg
6.5 less命令
less 命令的作用和 more 十分类似,都用来浏览文本文件中的内容,不同之处在于,使用 more 命令浏览文件内容时,只能不断向后翻看,而使用 less 命令浏览,既可以向后翻看,也可以向前翻看。
less 命令的基本格式如下:
[root@localhost ~] less [选项] 文件名
-N 显示每行的行号。
-S 行过长时将超出部分舍弃。
-e 当文件显示结束后,自动离开。
-g 只标志最后搜索到的关键同。
-Q 不使用警告音。
-i 忽略搜索时的大小写。
-m 显示类似 more 命令的百分比。
-f 强迫打开特殊文件,比如外围设备代号、目录和二进制文件。
-s 显示连续空行为一行。
-b <缓冲区大小> 设置缓冲区的大小。
-o <文件名> 将 less 输出的内容保存到指定文件中。
-x <数字> 将【Tab】键显示为规定的数字空格。
【例 1】使用 less 命令查看 /boot/grub/grub.cfg 文件中的内容。
[root@localhost ~] less /boot/grub/grub.cfg
#
#DO NOT EDIT THIS FILE
#
#It is automatically generated by grub-mkconfig using templates from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
set default="0"
if [ "$ {prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry= save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
:
可以看到,less 在屏幕底部显示一个冒号(:),等待用户输入命令,比如说,用户想向下翻一页,可以按空格键;如果想向上翻一页,可以按 b 键
6.6 tail命令
tail 命令和 head 命令正好相反,它用来查看文件末尾的数据,其基本格式如下:
[root@localhost ~]# tail [选项] 文件名
选项参数:
-n 指定显示的行数
-f 动态显示文件末尾内容(即文件实时变化,那么显示内容也会随之变化)####
【例 1】查看 /etc/passwd 文件最后 3 行的数据内容。
[root@localhost ~] tail -n 3 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin