随着对Linux学习的深入,Linux命令也越来越多的。虽然我们可以通过man等帮助查询我
忘记的命令,但写脚本本质是由命令有序的堆砌而运行的。下面让我来总结一番我们学习过的命令
1.查看当前的终端设备:#tty
2.显示当前使用的shell
echo ${SHELL}
3. 显示当前系统使用的所有shell
cat /etc/shells
4.示提示符格式
[root@localhost~]#echo $PS1
5.区别指定的命令是内部或外部命令
type COMMAND
6.hash常见用法
hash 显示hash缓存
hash –l 显示hash缓存,可作为输入使用
hash –p path name 将命令全路径path起别名为name
hash –t name 打印缓存中name的路径
–d name 清name缓存
hash –r 清除缓存
7.显示当前shell进程所有可用的命令别名
alias
定义别名NAME,其相当于执行命令VALUE
alias NAME=’VALUE’
在命令行中定义的别名,仅对当前shell进程有效
如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
撤消别名:unalias
unalias[-a] name [name …]
-a 取消所有别名
8. 用户登录信息查看命令:
whoami: 显示当前登录有效用户
who: 系统当前所有的登录会话
w: 系统当前所有的登录会话及所做的操作
9.命令:
创建新screen会话
screen –S [SESSION]
加入screen会话
screen –x [SESSION]
退出并关闭screen会话
exit
剥离当前screen会话
Ctrl+a,d
显示所有已经打开的screen会话
screen -ls
恢复某screen会话
screen -r [SESSION]
10. echo命令:
功能:显示字符
语法:echo [-neE][字符串]
选项
E (默认)不支持\解释功能
-n 不自动换行
–e 启用\字符的解释功能
显示变量
echo “$VAR_NAME“ 变量会替换,弱引用
echo ‘$VAR_NAME‘ 变量不会替换,强引用
启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出(有可能用到脚本中)
\a 发出警告声 —>自动化脚本会用到
\b 退格键
\c 最后不加上换行符号
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\\插入\字符
11.历史history:
history [-c] [-d offset] [n]
history -anrw[filename]
history -psarg[arg…]
选项:
-c: 清空命令历史
-d offset: 删除历史中指定的第offset个命令
n: 显示最近的n条历史
a: 追加本次会话新执行的命令历史列表至历史文件
-n: 读历史文件中未读过的行到历史列表
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-p: 展开历史参数成多行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后
12.显示日期和时间:date
SYNOPSIS
date [OPTION]…
[+FORMAT]
date [-u|–utc|–uni-
versal] [MMD-
Dhhmm[[CC]YY][.ss]]
Linux的两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板
hwclock,clock: 显示硬件时钟
-s, –hctosys以硬件时钟为准,校正系统时钟
-w, –systohc以系统时钟为准,校正硬件时钟
[root@CentOS6 app]# date #系统格式
Sat Jul 29 21:18:45 CST 2017
[root@CentOS6 app]# date 082712342017.03 系统格式,月日小时分年。秒
Sun Aug 27 12:34:03 CST 2017
[root@CentOS6 app]# date “+%F %T” #自定义模式
2017-07-29 07-29-17
[root@CentOS6 app]# date -d -1 “+%F +%D” #错误自定义一天以前书写格式
date: invalid date `-1′
[root@CentOS6 app]# date -d “-1 days” “+%F %T”#正确的一天以前要加单位要引起来
2017-07-28 07-28-17
13.时区:/etc/localtime
14. cal显示日历
cal-y
15.关机或重启:
halt, poweroff
重启:reboot
-f: 强制,不调用shutdown
-p: 切断电源
关机或重启:shutdown
shutdown [OPTION]… TIME [MESSAGE]
-r: reboot
-h: halt
-c:cancel
TIME:无指定,默认相当于+1
now: 立刻,相当于+0
+m: 相对时间表示法,几分钟之后;例如+3
hh:mm: 绝对时间表示,指明具体时间
显示当前路径pwd
-P 显示真实物理路径
-L 显示链接路径(默认)
16.基名:basename(一般用于脚本取文件名)
17.目录名:dirname
18.当前目录的内容或指定目录
用法:ls [options] [files_or_dirs]
示例:
ls -a包含隐藏文件
ls -l显示额外的信息
ls -R目录递归通过
ls -ld目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
–t 按mtime排序
ls –U 按目录存放顺序显示
ls –X 按文件后缀排序
19. stat
文件:metadata, data
三个时间戳:
access time:访问时间,atime,读取文件内容
modify time: 修改时间, mtime,改变文件内容(数据)
change time: 改变时间, ctime,元数据发生改变
20.touch命令:
touch [OPTION]… FILE…
-a仅改变atime和ctime
-m 仅改变mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss]
指定atime和mtime的时间戳
-c如果文件不存在,则不予创建
21.mv
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]….SOURCE…
选项:
-i: 交互式
-f: 强制
22.rm[OPTION]… FILE…
常用选项:
-i: 交互式
-f: 强制删除
-r: 递归
–no-preserve-root
rm-r递归删除目录树
rm命令:
把删除目录项
数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖。
注意:请慎用rm -rf,一般用把别名处理alias rm=”mv -t”
eg:
rm-tree 显示目录树
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径
23.mkdir
-p: 存在于不报错,且可自动创建所需的各目录
-v: 显
-m MODE: 创建目录时直接指定权限
24.rmdir
rmdir删除空目录
-p: 递归删除父空目录
-v: 显示详细信息
24.cp复制
cp[OPTION]… [-T] SOURCE DEST
cp[OPTION]… SOURCE… DIRECTORY
cp[OPTION]… -t DIRECTORY SOURCE…
25.ln链接
语法:
ln filename [linkname] 硬连接
ln -s filename [linkname] 软连接
26.tr转换和删除字符
tr[OPTION]… SET1 [SET2]
选项:
-c–C –complement:取字符集的补集(除了)
-d–delete:删除所有属于第一字符集的字符
-s–squeeze-repeats:把连续重复的字符以单独一个字符表示
-t–truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符
27. less :一页一页地查看输入(通常与管道一起用)
cat /etc/passwd |less
28.useradd
useradd[options] LOGIN
-u UID: [UID_MIN, UID_MAX]定义在/etc/login.defs
-o 配合-u 选项,不检查UID的唯一性
-g GID:指明用户所属基本组,可为组名,也可以GID
-c “COMMENT”:用户的注释信息
-d HOME_DIR:以指定的路径(不存在)为家目录
-s SHELL: 指明用户的默认shell程序
可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,…]:为用户指明附加组,组须事先存在
-N 不创建私用组做主组,使用users组做主组
-r: 创建系统用户CentOS 6: ID<500,CentOS 7: ID<1000
默认值设定:/etc/default/useradd文件中
显示或更改默认设置:
useradd-D
useradd–D -s SHELL
useradd –D –b BASE_DIR
useradd –D –g GROUP
29. newusers passwd格式文件批量创建用户
30. chpasswd 批量修改用户口令
31.usermod
usermod[OPTION] login
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,…[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s SHELL:新的默认SHELL
-c ‘COMMENT’:新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字;
-L: lock指定用户,在/etc/shadow 密码栏的增加!
-U: unlock指定用户,将/etc/shadow 密码栏的! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期
-f INACTIVE: 设定非活动期限
32.userdel
userdel[OPTION]… login
-r: 删除用户家目录
33.id
id [OPTION]… [USER]
-u: 显示UID
-g: 显示GID
-G: 显示用户所属的组的ID
-n: 显示名称,需配合ugG使用
34.su[options…] [-] [user [args…]]
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su – UserName:登录式切换,会读取目标用户的配置文件,切换至家目录,完全切换
root su至其他用户无须密码;非root用户切换时需要密码
换个身份执行命令:
su[-] UserName-c ‘COMMAND’
选项:-l –login
su-l UserName相当于su-UserName
34. passwd: 修改自己的密码
常用选项:
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-n mindays: 指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-iinactivedays:非活动期限
–stdin:从标准输入接收用户密码
35.gpasswd[OPTION] GROUP
-a user: 将user添加至指定组中
-d user: 从指定组中移除用户user
-A user1,user2,…: 设置有管理权限的用户列表
newgrp命令:临时切换主组
如果用户本不属于此组,则需要组密码
groupmems[options] [action]
options:
-g, –group groupname更改为指定组(只有root)
Actions:
-a, –add username 指定用户加入组
-d, –delete username 从组中删除用户
-p, –purge 从组中清除所有成员
-l, –list 显示组成员列表
36.groups [OPTION].[USERNAME]… 查看用户所属组列表
-M –maxdaysMAX_DAYS
-W –warndaysWARN_DAYS
–l 显示密码策略
示例:
chage-d 0 tom 下一次登录强制重设密码
chage-m 0 –M 42 –W 14 –I 7 tom
chage-E 2016-09-10 tom
37.chfn指定个人信息
38.chsh指定shell
39.finger
40.groupadd[OPTION]… group_name
-g GID: 指明GID号;[GID_MIN, GID_MAX]
-r: 创建系统组
CentOS 6: ID<500
CentOS 7: ID<1000
41.组属性修改:groupmod
groupmod[OPTION]… group
-n group_name: 新名字
-g GID: 新的GID
42.组删除:groupdel
groupdelGROUP
43.修改文件的属主:chown
chown[OPTION]… [OWNER][:[GROUP]] FILE…
用法:
OWNER
OWNER:GROUP
:GROUP
命令中的冒号可用.替换
-R: 递归
44.组密码:gpasswd
gpasswd[OPTION] GROUP
-a user: 将user添加至指定组中
-d user: 从指定组中移除用户user
-A user1,user2,…: 设置有管理权限的用户列表
45.newgrp命令:临时切换主组
如果用户本不属于此组,则需要组密码
46. groupmems[options] [action]
options:
-g, –group groupname更改为指定组(只有root)
Actions:
-a, –add username 指定用户加入组
-d, –delete username 从组中删除用户
-p, –purge 从组中清除所有成员
-l, –list 显示组成员列表
47.groups [OPTION].[USERNAME]… 查看用户所属组列表
48.修改文件的所有者
chown[OPTION]… –reference=RFILE FILE…
49. 修改文件的属组:chgrp
chgrp[OPTION]… GROUP FILE…
chgrp[OPTION]… –reference=RFILE FILE…
-R 递归
文件的权限主要针对三类对象进行定义:
owner: 属主, u
group: 属组, g
other: 其他, o
每个文件针对每类访问者都定义了三种权限:
r: Readable
w: Writable
x: eXcutable
50. 文件权限操作命令
chmod
chmod[OPTION]… OCTAL-MODE FILE…
-R: 递归修改权限
chmod[OPTION]… MODE[,MODE]… FILE…
MODE:
修改一类用户的所有权限:
u= g= o= ug= a= u=,g=
修改一类用户某位或某些位权限
u+ u-g+ g-o+ o-a+ a-+ –
chmod[OPTION]… –reference=RFILE FILE…
参考RFILE文件的权限,将FILE的修改为同RFILE
建 文件和目录的默认权限
51. umask值可以用来保留在创建文件权限
新建FILE权限: 666-umask
如果所得结果某位存在执行(奇数)权限,则将其权限+1
新建DIR权限: 777-umask
非特权用户umask是002
root的umask是022
umask: 查看
umask#: 设定
umask002
umask–S 模式方式显示
umask–p 输出可被调用
51. chattr +i 不能删除,改名,更改
chattr +a 只能追加内容
52. lsattr 显示特定属性
ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权限),而非传统的组权限
53. getfacl可看到特殊权限:flags
通过ACL赋予目录默认x权限,目录内文件也不会继承x权限
base ACL 不能删除
54.setfacl-k dir 删除默认ACL权限
setfacl–b file1清除所有ACL权限
getfaclfile1 | setfacl–set-file=-file2 复制file1的acl权限给file2
全局设置:/etc/bashrc用户设置:~/.bashrc
55.cat [OPTION]… [FILE]…
-E: 显示行结束符$
-n: 对显示出的每一行进行编号
-A:显示所有控制符
-b:非空行编号
-s:压缩连续的空行成一行
56. more: 分页查看文件
more [OPTIONS…] FILE…
-d: 显示翻页及退出提示
57.less:一页一页地查看文件或STDIN输出
查看时有用的命令包括:
/文本搜索文本
n/N跳到下一个或上一个匹配
less命令是man命令使用的分页器
58. head
head [OPTION]… [FILE]…
-c #: 指定获取前#字节
-n #: 指定获取前#行
-#:指定行数
59.tail
tail [OPTION]… [FILE]…
-c #: 指定获取后#字节
-n #: 指定获取后#行
-#:
-f: 跟踪显示文件新追加的内容,常用日志监控
60 .cut [OPTION]… [FILE]…
-d DELIMITER: 指明分隔符,默认tab
-f FILEDS:
#: 第#个字段
#,#[,#]:离散的多个字段,例如1,3,6
#-#:连续的多个字段, 例如1-6
混合使用:1-3,7
-c按字符切割
–output-delimiter=STRING指定输出分隔符
显示文件或STDIN数据的指定列
cut-d:-f1/etc/passwd
cat /etc/passwd|cut-d:-f7
cut-c2-5/usr/share/dict/words
61.paste 合并两个文件同行号的列到一行
paste [OPTION]… [FILE]…
-d 分隔符:指定分隔符,默认用TAB
-s : 所有行合成一行显示
paste f1 f2
paste -s f1 f2
62.wc
计数单词总数、行总数、字节总数和字符总数
可以对文件或STDIN中的数据运行
$wcstory.txt
392371901story.txt
行数字数字符数
使用-l来只计数行数
使用-w来只计数单词总数
使用-c来只计数字节总数
使用-m来只计数字符总数
把整理过的文本显示在STDOUT,不改变原始文件
63.$sort[options]file(s)
常用选项
-r执行反方向(由上至下)整理
-n执行按数字大小整理
-f选项忽略(fold)字符串中的字符大小写
-u选项(独特,unique)删除输出中的重复行
-t c选项使用c做为字段界定符
-k X选项按照使用c字符分隔的X列来整理能够使用多次
64.uniq命令:从输入中删除前后相接的重复的行
uniq[OPTION]… [FILE]…
-c: 显示每行重复出现的次数
-d: 仅显示重复过的行
-u: 仅显示不曾重复的行
连续且完全相同方为重复
常和sort 命令一起配合使用:
sort userlist.txt | uniq-c
65.比较两个文件之间的区别
$difffoo.conf-brokenfoo.conf-works
5c5
<use_widgets=no
—
>use_widgets=yes
注明第5行有区别(改变)
diff命令的输出被保存在一种叫做“补丁”的文件中
使用-u选项来输出“统一的(unified)”diff格式文件,最适用于补丁文件。
patch复制在其它文件中进行的改变(要谨慎使用)
适用-b选项来自动备份改变了的文件
$diff-ufoo.conf-brokenfoo.conf-works>foo.patch
$patch-bfoo.conf-brokenfoo.patch
66.grep命令选项
–color=auto: 对匹配到的文本着色显示
-v: 显示不被pattern匹配到的行
-i: 忽略字符大小写
-n:显示匹配的行号
-c: 统计匹配的行数
-o: 仅显示匹配到的字符串
-q: 静默模式,不输出任何信息
-A #: after, 后#行
-B #: before, 前#行
-C #:context, 前后各#行
-e:实现多个选项间的逻辑or关系
grep –e ‘cat ’ -e ‘dog’ file
-w:匹配整个单词
-E:使用ERE
-F:相当于fgrep,不支持正则表达式
字符匹配:
. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即A-Z, a-z
[:lower:] 小写字母[:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:punct:] 标点符号
匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
* 匹配前面的字符任意次,包括0次
贪婪模式:尽可能长的匹配
.*任意长度的任意字符
\?匹配其前面的字符0或1次
\+匹配其前面的字符至少1次
\{n\}匹配前面的字符n次
\{m,n\}匹配前面的字符至少m次,至多n次
\{,n\}匹配前面的字符至多n次
\{n,\}匹配前面的字符至少n次
位置锚定:定位出现的位置
^ 行首锚定,用于模式的最左侧
$ 行尾锚定,用于模式的最右侧
^PATTERN$ 用于模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或\b词首锚定,用于单词模式的左侧
\> 或\b词尾锚定;用于单词模式的右侧
\<PATTERN\>匹配整个单词
分组:\(\) 将一个或多个字符捆绑在一起,当作一个整体进行处理,如:\(root\)\+
分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, …
\1表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配到的字符
示例:\(string1\+\(string2\)*\)
\1 :string1\+\(string2\)*
\2 :string2
后向引用:引用前面的分组括号中的模式所匹配字符,而非模式本身
或者:\|
示例:a\|b: a或b C\|cat: C或cat \(C\|c\)at:Cat或cat
67. egrep= grep -E
egrep[OPTIONS] PATTERN [FILE…]
扩展正则表达式的元字符:
字符匹配:
. 任意单个字符
[] 指定范围的字符
[^] 不在指定范围的字符
次数匹配:
*:匹配前面字符任意次
?: 0或1次
+:1次或多次
{m}:匹配m次
{m,n}:至少m,至多n次
位置锚定:
^ :行首
$ :行尾
\<, \b :语首
\>, \b :语尾
分组:
()
后向引用:\1, \2, …
或者:
a|b: a或b
C|cat: C或cat
(C|c)at:Cat或cat
原创文章,作者:m25Chronos,如若转载,请注明出处:http://www.178linux.com/83219