1. linux基础常用命令
一. bash基本特性
1. 自动补全<tab>
文件路径补全:
ls /etc/sysconfig/network-scripts/ifcf-eth0
启动命令补全
systemctl restart crond.service
date -s 12:30
2. 快捷键
ctrl + c :终止前台运行的程序
ctrl + d :退出,等价于exit
ctrl + l :清屏
ctrl + a :光标移至命令行的而最前端
ctrl + e :光标移至命令行的 最末端
ctrl + u :删除光标前所有的字符
ctrl + k :删除光标后面的所有字符
ctrl + r :搜索历史命令,利用关键词
Alt + . :引用上一行命令的最后一个参数,等价于!$
ESC + . :引用上一行命令的最后一个参数,等价于!$
3. 历史命令
#history
。定制history的功能,可通过环境变量实现
HISTSIZE:shell进程可保留的命令历史的条数
[root@myEcs /]# echo $HISTSIZE
1000
HISTFILE:持久保持命令历史的文件
[root@myEcs /]# echo $HISTFILE
/root/.bash_history
HISTFILESIZE:命令历史问价的大小
[root@myEcs /]# echo $HISTFILESIZE
1000
history -c:清空命令历史
history -d 304:删除304条历史
-r:可以从文件中读取命令历史到历史列表中(内存中的历史)
-w:把历史列表中的命令追加到历史文件中
history -d 234 5:从234条往下删除五条
history 10 :显示最近十条命令
。控制命令历史记录方式:
环境变量:HISTCONTROL
ignoredups:忽略上下重复的历史命令
ignorespace:忽略以空白字符开头的历史命令
ignoreboth:以上两者同时生效
修改变量的值:以下修改只对当前shell有效
NAME="VALUE"
查看历史命令方法:
。光标上下键查看历史命令
。ctrl + r :搜索历史命令(输入某一条命令的关键字:必须是连续的)
。!220 :执行命令历史中的第220条命令
。!字符串:搜索历史中最近一个以指定字符串开头的命令,例如!ser
。!$ :引用上一个命令中的最后一个参数
示例1:
[root@myEcs ~]# ls /root/miniconda3/
[root@myEcs ~]# cd !$
cd /root/miniconda3/
示例2:
[root@myEcs miniconda3]# cd /tmp/
[root@myEcs tmp]# touch !$/fil1
touch /tmp//fil1
[root@myEcs tmp]# ll
total 4
-rw-r--r-- 1 root root 54 Apr 5 11:01 a.txt
-rw-r--r-- 1 root root 0 Apr 7 20:50 fil1
4. 命令别名
#alias
ll='ls -l -- color=tty' :查看系统当前的别名
#alias network=' cat /etc/sysconfig/network-scripts/ifcfg-eth0 ' :建立别名
#unalias network :取消别名
#\network :跳过别名
[root@myEcs tmp]# type -a ls :查看命令类型
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
永久别名:
[root@myEcs tmp]# vim /etc/bashrc
二. Linux获取命令帮助
1. 命令 --help
[root@myEcs tmp]# ls --help
-a :查看目录下的所有文件,包括隐藏文件
-l :长列表显示
-h :以人性化方式显示出来
-d :只列出目录名,不列出其他内容
-t :按照修改时间排序
-S :按照文件的大小排序
-r :逆序排序
-i :显示文件的inode号(索引号)
# date --help
#date
#date +%H
#date +%F
#date 0214080019 # 月日时分年
#date -s 12:00
时间方面:
% : 印出 %
%n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
日期方面 :
%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期与时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)
2.man 手册名(针对命令帮助,针对配置文件帮助,针对函数帮助)
部分 man手册类型以及内容:
1 用户命令
2 内核系统调用(从用户空间到内核的进入点)
3 库函数
4 特殊文件和设备
5 文件格式和规范
6 游戏
7 规范,标准和其他页面
8 系统管理命令
9 Linux,内核,api(内核调用)
三. linux常用命令:
1. pwd:显示当前的工作目录
2. cd :切换目录
注意:在bash中,~代表家目录
cd ~ :切换回自己的家目录
cd ~USERNAME :切换至指定用户的家目录
cd - :在上一次所在目录与当前目录之间来回切换
cd.. :切换到上一级目录
环境变量中:
$PWD :当前工作目录
$OLDPWD :上一次的工作目录
3. ls :列出指定目录下的内容
ls [OPTION]....[FILE]....
-a :显示所有文件,包括隐藏文件
-A :显示出了.和..之外的所有文件
-l :长格式列表,显示文件的详细信息
-rw-r--r-- 1 root root 54 Apr 5 11:01 a.txt
-:文件类型:-,d,b,c,l,s,p
rw-:文件属主权限
r--:文件属组的权限
r--:其他用户的权限(非属主,数组)的权限
1:数字表示文件被硬链接的次数
root:文件的属主
root:文件的属组
54:数字表示文件的大小
Apr 5 11:01 :最近一次被修改的时间
a.txt :文件名
-h:对文件大小做单位换算,换算后的结果可能会非精确值
-d:看目录自身的属性
-r:逆序排序
-R:递归显示。
-t:按照修改时间进行排序
-S :按照文件的大小排序
4. cat :显示文本文件内容。
cat [OPTION]...[FILE]...
-n:显示行号
-E:显示行结束符$
5. tac :文件内容是逆序的,与cat相反
6. file:查看文件的内容类型。
[root@myEcs tmp]# file a.txt
a.txt: Bourne-Again shell script, ASCII text executable
7. echo:回显
echo [SHORT-OPTION]...[STRING]...
[root@myEcs tmp]# echo "hello world"
hello world
-n:不自动换行
[root@myEcs tmp]# echo -n "hello world"
hello world[root@myEcs tmp]#
-e:让转义符生效
[root@myEcs tmp]# echo "hello \nworld"
hello \nworld
[root@myEcs tmp]# echo -e "hello \nworld"
hello
world
[root@myEcs tmp]# echo -e "\\hello \nworld"
\hello
world
\n :换行符
\r :回车符
\t :横向制表符
\v :垂直制表符
\\ :表示转义\
STRING:可以使用引用,单引号双引号均可用。
单引号:强引用,变量不执行替换
[root@myEcs tmp]# echo '$PWD'
$PWD
双引用:弱引用,变量引用会被替换
[root@myEcs tmp]# echo "$PWD"
/tmp
注意:变量引用的正规符号
$(name)
8. 关机或重启命令:shutdown
语法:shutdown [OPTIONS...] [TIME] [WALL...]
shutdown -h now :马上关机
shutdown -r :重启
shutdown +m :表示几分钟之后关机
shutdown -c :取消关机操作
shutdown + 10 “hello erevone”
9. 日期相关命令:
linux:系统启动时从硬件读取日期时间信息:读取完成后,再不与硬件相关联。
date命令:查看系统时钟
语法:
显示系统日期时间:date [OPTION]... [+FORMAT]
FORMAT:格式符
[root@myEcs tmp]# date +%Y-%m-%d-%H-%M-%S
2020-04-07-23-12-09
-s:时间戳,从1970年1月1号(unix元年)
设定系统日期时间:date [MMDDhhmm[[CC]YY][.ss]]
[root@myEcs tmp]# date 101008082013.08 2013年 8月 8日 8点 8分 8秒
clock:查看硬件时钟
hwclock:查看硬件时钟
设定硬件时钟
-s :以硬件时间为准,把系统调整为与硬件时钟相同;
-w:以系统时间为准,把硬件调整为与系统时钟相同;
10. cal:日历
cal 2015:查看2015年的日历
13. which:查看命令所在路径
命令类型:
外部命令:
内部命令:bash shell
查看命令时外部还是内部命令:type COMMAND
注意:命令可以有别名,别名可以与原名相同,此时原名被隐藏。如果要使用原命令则使用\COMMAND
12. whereis:该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。该指令只能用于查找二进制文件
$ whereis -b bash #显示bash 命令的二进制程序
bash: /bin/bash /etc/bash.bashrc /usr/share/bash # bash命令的二进制程序的地址
$ whereis -m bash #显示bash 命令的帮助文件
bash: /usr/share/man/man1/bash.1.gz #bash命令的帮助文件地址
13. who
# who //显示当前登录系统的用户
root tty7 2014-05-13 12:12 (:0)
root pts/0 2014-05-14 17:09 (:0.0)
root pts/1 2014-05-14 18:51 (192.168.1.17)
root pts/2 2014-05-14 19:48 (192.168.1.17)
14. w w命令用于显示目前登入系统的用户信息。
bash的基础特性:
命令补全:
shell程序在收到用户执行的命令请求,分析完成之后,最左侧的字符串会被当作命令
命令的处理机制:
查找内部命令:
根据PATH环境变量中设定的目录,自左向右逐个搜索目录下的文件名
[root@myEcs ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
路径补全机制:
根据给定的起始路径进行补全
目录管理类命令:
mkdir:创建目录
选项:
-p :自动按需创建父目录;递归创建。
-v :显示详细过程
-m :后面跟权限,直接给定权限
[root@myEcs ~]# mkdir -pv /tmp/a/b/c
mkdir: created directory ‘/tmp/a’
mkdir: created directory ‘/tmp/a/b’
mkdir: created directory ‘/tmp/a/b/c’
rmdir:仅仅用于删除空目录
选项:
-p :递归删除空目录
-v :显示详细过程
[root@myEcs ~]# rmdir -pv /tmp/a/b/c/
rmdir: removing directory, ‘/tmp/a/b/c/’
rmdir: removing directory, ‘/tmp/a/b’
rmdir: removing directory, ‘/tmp/a’
rmdir: removing directory, ‘/tmp’
rmdir: failed to remove directory ‘/tmp’: Device or resource busyba'
bash的基础特性之:命令行展开
~ :自定展开为用户的家目录,或指定用户的家目录;
{} :可承载一个以逗号为分隔的路径列表,并能够将其展开为多个路径
例如:/tmp/{a,b} 相当于/tmp/a /tmp/b
例子1:创建/tmp/x/y1 /tmp/x/y2 /tmp/x/y1/a /tmp/x/y1/b
[root@myEcs ~]# mkdir -p /tmp/x/{y1/{a,b},y2}
[root@myEcs ~]# cd /tmp/
[root@myEcs tmp]# ll
total 8
drwxr-xr-x 4 root root 4096 Apr 9 20:56 x
[root@myEcs tmp]# cd x
[root@myEcs x]# ll
total 8
drwxr-xr-x 4 root root 4096 Apr 9 20:56 y1
drwxr-xr-x 2 root root 4096 Apr 9 20:56 y2
[root@myEcs x]# cd y1
[root@myEcs y1]# ll
total 8
drwxr-xr-x 2 root root 4096 Apr 9 20:56 a
drwxr-xr-x 2 root root 4096 Apr 9 20:56 b
例子2:创建 a_c a_d b_c b_d
[root@myEcs tmp]# mkdir -p {a,b}_{b,c}
[root@myEcs tmp]# ll
total 24
drwxr-xr-x 2 root root 4096 Apr 9 21:02 a_b
drwxr-xr-x 2 root root 4096 Apr 9 21:02 a_c
drwxr-xr-x 2 root root 4096 Apr 9 21:02 b_b
drwxr-xr-x 2 root root 4096 Apr 9 21:02 b_c
bash的基础特性之:命令执行的状态结果
命令执行的状态结果:
bash通过状态返回值来输出此结果
成功:0
失败:1-255
命令执行完成后,其状态返回值保存于bash的特殊变量$?中。
[root@myEcs tmp]# ls /tmp/
a_b a_c a.txt b_b b_c fil1 x
[root@myEcs tmp]# echo $?
0
[root@myEcs tmp]# lsss /tmp/
-bash: lsss: command not found
[root@myEcs tmp]# echo $?
127
[root@myEcs tmp]#
命令正常执行时,有的还会返回有命令返回值:
根据命令及其功能不同,结果各不相同:
引用命令的执行结果
$(COMMAND)
或者:
`COMMAND`
[root@myEcs tmp]# mkdir $(date +%H%M%S)
[root@myEcs tmp]# ll
total 28
drwxr-xr-x 2 root root 4096 Apr 9 21:15 211553
或者:
[root@myEcs tmp]# mkdir `date +%H%M%S`
[root@myEcs tmp]# ll
total 32
drwxr-xr-x 2 root root 4096 Apr 9 21:15 211553
drwxr-xr-x 2 root root 4096 Apr 9 21:17 211715
bash的基础特性之:引用
强引用:' '
弱引用:" "
命令引用:` `
文本查看类命令:cat,tac,head,tail,more,less
分屏查看:more,less
more FILE
特点:翻屏至文件尾部后自动退出
less FILE
head 命令:查看文件前n行
head -n 20 :查看文件的前20行
tail 命令:查看文件的后n行
tail -n 20:查看文件的后20行
-f :等待追加进来的新行不直接退出。查看文件的实时更新。
stat 命令:显示文件或文件系统的状态
stat FILE...
[root@myEcs tmp]# stat a.txt
File: ‘a.txt’
Size: 54 Blocks: 8 IO Block: 4096 regular file
Device: fd01h/64769d Inode: 1191896 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-04-07 22:42:15.846533542 +0800
Modify: 2020-04-05 11:01:57.387738519 +0800
Change: 2020-04-05 11:01:57.387738519 +0800
Birth: -
创建文件:
touch FILE...
文件管理命令:cp,mv,rm
cp命令
-i :交互式复制,即覆盖之前提醒用户确认
-f :强制覆盖目标文件
-r:递归复制
-d:复制符号链接文件本身,而非指向的源文件
mv命令:
-i 交互式
rm删除文件:
-i :交互式
-r :递归删除
-f :强制删除