1. 用户操作
useradd
添加一个用户
1 | # useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号] |
参数说明
- -c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。
- -d<登入目录> 指定用户登入时的起始目录。
- -D 变更预设值.
- -e<有效期限> 指定帐号的有效期限。
- -f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。
- -g<群组> 指定用户所属的群组。
- -G<群组> 指定用户所属的附加群组。
- -m 自动建立用户的登入目录。
- -M 不要自动建立用户的登入目录。
- -n 取消建立以用户名称为名的群组.
- -r 建立系统帐号。
- -s
指定用户登入后所使用的shell。 - -u
指定用户ID。
userdel
删除一个用户
1 | # userdel temp |
passwd
通过passwd命令可以修改当前用户的密码
1 | $ passwd |
whoami
通过whoami查看当前用户名称
1 | [root@node1 shell_test]# whoami |
users|who|w
查看当前在线用户信息
1 | [root@node1 shell_test]# users |
logout
通过logout可以退出当前登录用户
2. 系统操作
2.1 关机
halt
直接关闭系统
init 0
使用预先定义的脚本关闭系统,关闭前可以清理和更新有关信息
poweroff
通过断电关闭系统
shutdown
安全关闭系统
2.2 重启
init 6
重新启动系统
reboot
重新启动系统
3. 目录操作
ls
查看指定目录下的内容,默认查看当前目录下内容
1 | ls [-ald] [目录名] |
cd
实现目录间切换,使用绝对路径、相对路径、特殊符号
绝对路径:以/开头的
相对路径:不以/开头的
1 | cd 具体路径 | 特殊符号 |
特殊符号 | 表达的路径 |
---|---|
. | 当前目录 |
.. | 上一级目录 |
/ | 根目录 |
~ | 当前登录用户的HOME目录 |
- | 返回 |
mkdir
创建目录,以及创建多级目录方式
1 | mkdir [-p] 目录名 |
rmdir
删除非空目录或包含内容的目录
1 | # 只能删除空目录 |
cp
复制目录下的全部内容
1 | cp -r 来源目录 目标目录 |
mv
移动、重命名目录,会根据第二个参数指定具体操作逻辑
1 | mv 目录名 新目录名 | 路径 |
4. 文件管理
cat
cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。
1 | cat [-AbeEnstTuv] [--help] [--version] fileName |
参数说明:
-n 或 –number:由 1 开始对所有输出的行数编号。
-b 或 –number-nonblank:和 -n 相似,只不过对于空白行不编号。
-s 或 –squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v 或 –show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E 或 –show-ends : 在每行结束处显示 $。
-T 或 –show-tabs: 将 TAB 字符显示为 ^I。
-A, –show-all:等价于 -vET。
-e:等价于”-vE”选项;
-t:等价于”-vT”选项;
chattr
Linux chattr命令用于改变文件属性。
这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
a:让文件或目录仅供附加用途。如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除文件。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。
i:不得任意更动文件或目录。如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防意外删除。
1 | chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...] |
lsattr
Linux lsattr命令用于显示文件属性。
用chattr执行改变文件或目录的属性,可执行lsattr指令查询其属性。
1 | lsattr [-adlRvV][文件或目录...] |
参数:
- -a 显示所有文件和目录,包括以”.”为名称开头字符的额外内建,现行目录”.”与上层目录”..”。
- -d 显示,目录名称,而非其内容。
- -l 此参数目前没有任何作用。
- -R 递归处理,将指定目录下的所有文件及子目录一并处理。
- -v 显示文件或目录版本。
- -V 显示版本信息。
chgrp
Linux chgrp(英文全拼:change group)命令用于变更文件或目录的所属群组。
与 chown 命令不同,chgrp 允许普通用户改变文件所属的组,只要该用户是该组的一员。
在 UNIX 系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用 chgrp 指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。
1 | chgrp [-cfhRv][--help][--version][所属群组][文件或目录...] 或 |
参数说明
- -c 或 –changes:效果类似”-v”参数,但仅回报更改的部分。
- -f 或 –quiet 或 –silent: 不显示错误信息。
- -h 或 –no-dereference: 只对符号连接的文件作修改,而不改动其他任何相关文件。
- -R 或 –recursive: 递归处理,将指定目录下的所有文件及子目录一并处理。
- -v 或 –verbose: 显示指令执行过程。
- –help: 在线帮助。
- **–reference=<参考文件或目录>**: 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
- –version: 显示版本信息。
chmod
Linux chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
1 | chmod [-cfvR] [--help] [--version] mode file... |
参数说明
mode : 权限设定字串,格式如下 :
1 | [ugoa...][[+-=][rwxX]...][,...] |
其中:
- u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。表示更改某个用户的权限
- + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
- r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:
- -c : 若该文件权限确实已经更改,才显示其更改动作
- -f : 若该文件权限无法被更改也不要显示错误讯息
- -v : 显示权限变更的详细资料
- -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
- –help : 显示辅助说明
- –version : 显示版本
chown
Linux chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令。
Linux/Unix 是多人多工操作系统,所有的文件皆有拥有者。利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID,组可以是组名或者组 ID,文件是以空格分开的要改变权限的文件列表,支持通配符。 。
chown 需要超级用户 root 的权限才能执行此命令。
只有超级用户和属于组的文件所有者才能变更文件关联组。非超级用户如需要设置关联组可能需要使用 chgrp 命令。
1 | chown [-cfhvR] [--help] [--version] user[:group] file... |
参数 :
- user : 新的文件拥有者的使用者 ID
- group : 新的文件拥有者的使用者组(group)
- -c : 显示更改的部分的信息
- -f : 忽略错误信息
- -h :修复符号链接
- -v : 显示详细的处理信息
- -R : 处理指定目录以及其子目录下的所有文件
- –help : 显示辅助说明
- –version : 显示版本
cmp
Linux cmp命令用于比较两个文件是否有差异。
当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有所差异,预设会标示出第一个不同之处的字符和列数编号。若不指定任何文件名称或是所给予的文件名为”-“,则cmp指令会从标准输入设备读取数据。
1 | cmp [-clsv][-i <字符数目>][--help][第一个文件][第二个文件] |
参数:
- -c或–print-chars 除了标明差异处的十进制字码之外,一并显示该字符所对应字符。
- -i<字符数目>或–ignore-initial=<字符数目> 指定一个数目。
- -l或–verbose 标示出所有不一样的地方。
- -s或–quiet或–silent 不显示错误信息。
- -v或–version 显示版本信息。
- –help 在线帮助。
diff
Linux diff 命令用于比较文件的差异。
diff 以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。
1 | diff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2] |
参数:
- -<行数> 指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。
- -a或–text diff预设只会逐行比较文本文件。
- -b或–ignore-space-change 不检查空格字符的不同。
- -B或–ignore-blank-lines 不检查空白行。
- -c 显示全部内文,并标出不同之处。
- -C<行数>或–context<行数> 与执行”-c-<行数>”指令相同。
- -d或–minimal 使用不同的演算法,以较小的单位来做比较。
- -D<巨集名称>或ifdef<巨集名称> 此参数的输出格式可用于前置处理器巨集。
- -e或–ed 此参数的输出格式可用于ed的script文件。
- -f或-forward-ed 输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
- -H或–speed-large-files 比较大文件时,可加快速度。
- -I<字符或字符串>或–ignore-matching-lines<字符或字符串> 若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
- -i或–ignore-case 不检查大小写的不同。
- -l或–paginate 将结果交由pr程序来分页。
- -n或–rcs 将比较结果以RCS的格式来显示。
- -N或–new-file 在比较目录时,若文件A仅出现在某个目录中,预设会显示:
- Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
- -p 若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
- -P或–unidirectional-new-file 与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
- -q或–brief 仅显示有无差异,不显示详细的信息。
- -r或–recursive 比较子目录中的文件。
- -s或–report-identical-files 若没有发现任何差异,仍然显示信息。
- -S<文件>或–starting-file<文件> 在比较目录时,从指定的文件开始比较。
- -t或–expand-tabs 在输出时,将tab字符展开。
- -T或–initial-tab 在每行前面加上tab字符以便对齐。
- -u,-U<列数>或–unified=<列数> 以合并的方式来显示文件内容的不同。
- -v或–version 显示版本信息。
- -w或–ignore-all-space 忽略全部的空格字符。
- -W<宽度>或–width<宽度> 在使用-y参数时,指定栏宽。
- -x<文件名或目录>或–exclude<文件名或目录> 不比较选项中所指定的文件或目录。
- -X<文件>或–exclude-from<文件> 您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。
- -y或–side-by-side 以并列的方式显示文件的异同之处。
- –help 显示帮助。
- –left-column 在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
- –suppress-common-lines 在使用-y参数时,仅显示不同之处。
说明:
- “|”表示前后2个文件内容有不同
- “<”表示后面文件比前面文件少了1行内容
- “>”表示后面文件比前面文件多了1行内容
diffstat
Linux diffstat命令根据diff的比较结果,显示统计数字。
diffstat读取diff的输出结果,然后统计各文件的插入,删除,修改等差异计量。
1 | diff [-wV][-n <文件名长度>][-p <文件名长度>] |
参数:
- -n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
- -p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
- -w 指定输出时栏位的宽度。
- -V 显示版本信息。
file
Linux file命令用于辨识文件类型。
通过file指令,我们得以辨识该文件的类型。
1 | file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...] |
参数:
- -b 列出辨识结果时,不显示文件名称。
- -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
- -f<名称文件> 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
- -L 直接显示符号连接所指向的文件的类别。
- -m<魔法数字文件> 指定魔法数字文件。
- -v 显示版本信息。
- -z 尝试去解读压缩文件的内容。
- [文件或目录…] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。
fild
Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
1 | find path -option [ -print ] [ -exec -ok command ] {} \; |
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件。
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket
-pid n : process id 是 n 的文件
你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
cut
Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字。
1 | cut [-bn] [file] |
参数:
- -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
- -c :以字符为单位进行分割。
- -d :自定义分隔符,默认为制表符。
- -f :与-d一起使用,指定显示哪个区域。
- -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除
ln
Linux ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
1 | ln [参数][源文件或目录][目标文件或目录] |
命令参数
必要参数:
- -b 删除,覆盖以前建立的链接
- -d 允许超级用户制作目录的硬链接
- -f 强制执行
- -i 交互模式,文件存在则提示用户是否覆盖
- -n 把符号链接视为一般目录
- -s 软链接(符号链接)
- -v 显示详细的处理过程
选择参数:
- -S “-S<字尾备份字符串> “或 “–suffix=<字尾备份字符串>”
- -V “-V<备份方式>”或”–version-control=<备份方式>”
- –help 显示帮助信息
- –version 显示版本信息
less
less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。
1 | less [参数] 文件 |
参数说明:
- -b <缓冲区大小> 设置缓冲区的大小
- -e 当文件显示结束后,自动离开
- -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
- -g 只标志最后搜索的关键词
- -i 忽略搜索时的大小写
- -m 显示类似more命令的百分比
- -N 显示每行的行号
- -o <文件名> 将less 输出的内容在指定文件中保存起来
- -Q 不使用警告音
- -s 显示连续空行为一行
- -S 行过长时间将超出部分舍弃
- -x <数字> 将”tab”键显示为规定的数字空格
- /字符串:向下搜索”字符串”的功能
- ?字符串:向上搜索”字符串”的功能
- n:重复前一个搜索(与 / 或 ? 有关)
- N:反向重复前一个搜索(与 / 或 ? 有关)
- b 向上翻一页
- d 向后翻半页
- h 显示帮助界面
- Q 退出less 命令
- u 向前滚动半页
- y 向前滚动一行
- 空格键 滚动一页
- 回车键 滚动一行
- [pagedown]: 向下翻动一页
- [pageup]: 向上翻动一页
locate
Linux locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。
一般情况我们只需要输入 locate your_file_name 即可查找指定文件。
1 | locate [-d ][--help][--version][范本样式...] |
参数:
- -b, –basename – 仅匹配路径名的基本名称
- -c, –count – 只输出找到的数量
- -d, –database DBPATH – 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
- -e, –existing – 仅打印当前现有文件的条目
- -1 – 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。
- -0, –null – 在输出上带有NUL的单独条目
- -S, –statistics – 不搜索条目,打印有关每个数据库的统计信息
- -q – 安静模式,不会显示任何错误讯息。
- -P, –nofollow, -H – 检查文件存在时不要遵循尾随的符号链接
- -l, –limit, -n LIMIT – 将输出(或计数)限制为LIMIT个条目
- -n – 至多显示 n个输出。
- -m, –mmap – 被忽略,为了向后兼容
- -r, –regexp REGEXP – 使用基本正则表达式
- –regex – 使用扩展正则表达式
- -q, –quiet – 安静模式,不会显示任何错误讯息
- -s, –stdio – 被忽略,为了向后兼容
- -o – 指定资料库存的名称。
- -h, –help – 显示帮助
- -i, –ignore-case – 忽略大小写
- -V, –version – 显示版本信息
more
Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
1 | more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..] |
参数:
- -num 一次显示的行数
- -d 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声
- -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
- -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
- -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
- -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
- -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
- -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
- +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
- +num 从第 num 行开始显示
- fileNames 欲显示内容的文档,可为复数个数
vi
编辑文件
1 | vi 文件名 # 查看文件。(查看模式) |
编辑文件时,常用的快捷键,方便操作
1 | # 在vi文件时,在底行命令模式下可以输入以下常用内容 |
查看文件
根据不同的业务,可以选择不同的查看方式
1 | # 查看文件 |
mv
移动、重命名目录,会根据第二个参数指定具体操作逻辑
1 | mv 文件名 新文件名 | 路径 |
参数说明:
- -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
- -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
- -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
- -n: 不要覆盖任何已存在的文件或目录。
- -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
touch
Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
1 | touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…] |
参数说明:
- a 改变档案的读取时间记录。
- m 改变档案的修改时间记录。
- c 假如目的档案不存在,不会建立新的档案。与 –no-create 的效果一样。
- f 不使用,是为了与其他 unix 系统的相容性而保留。
- r 使用参考档的时间记录,与 –file 的效果一样。
- d 设定时间与日期,可以使用各种不同的格式。
- t 设定档案的时间记录,格式与 date 指令相同。
- –no-create 不会建立新档案。
- –help 列出指令格式。
- –version 列出版本讯息。
which
Linux which命令用于查找文件。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
1 | which [文件...] |
参数:
- -n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
- -p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
- -w 指定输出时栏位的宽度。
- -V 显示版本信息。
tail
tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
1 | tail [参数] [文件] |
参数:
- -f 循环读取
- -q 不显示处理信息
- -v 显示详细的处理信息
- -c<数目> 显示的字节数
- -n<行数> 显示文件的尾部 n 行内容
- –pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
- -q, –quiet, –silent 从不输出给出文件名的首部
- -s, –sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
cp
复制文件到指定目录下
1 | cp 文件名 目录 |
rm
删除文件方式
1 | rm [-f] 文件名 |