Linux基础命令
欢迎来到 来到大浪涛天的博客 !
Linux基础命令
1. date命令:
date 语法
date [OPTION]... [+FORMAT]:显示
FORMAT: 格式符号
%D
%F
%T
date [MMDDhhmm[[CC]YY][.ss]]:设置
MM: 月分
DD:几号
hh: 小时
mm: 分钟
YY: 两位年份
CCYY: 四位年份
.ss: 秒钟
例如:
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ date +%D
06/20/19
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ date +%F
2019-06-20
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ date +%T
16:11:20
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ date +%F_%T
2019-06-20_16:11:48
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ date "+%F—%H.%M.%S"
2019-06-20—16.13.18
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ sudo date 062213082018.34(月日小时分钟年份.秒)
2018年 06月 22日 星期五 13:08:34 CST
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ date
2018年 06月 22日 星期五 13:08:36 CST
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ sudo date 062016182019.00
2019年 06月 20日 星期四 16:18:00 CST
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ date
2019年 06月 20日 星期四 16:18:13 CST
2. linux的时钟相关的
Linux的两种时钟:
- 系统时钟:由Linux内核通过CPU的工作频率进行的计时;
- 硬件时钟:
hwclock: 显示硬件时钟
-s, --hctosys 以硬件时间为准,把系统时间设定为和硬件时间一样
-w, --systohc 以系统时间为准,把硬件时间设置为和系统时间一样
3. 获取文件的元数据stat
stat 文件名即可获取文件的元数据
[zjwh@izm5e88rg4xz5npd1tngcbz scripts]$ stat /home/zjwh/scripts/sum.sh
文件:"/home/zjwh/scripts/sum.sh"
大小:54 块:8 (所占据的块数量) IO 块:4096(块的大小) 普通文件
设备:fd01h/64769d Inode:655396 硬链接:1
权限:(0764/-rwxrw-r--) Uid:( 1000/ zjwh) Gid:( 1000/ zjwh)
最近访问:2019-05-11 19:39:00.474293953 +0800
最近更改:2019-05-11 19:38:51.026073328 +0800
最近改动:2019-05-11 19:38:57.513224810 +0800
创建时间:-
4. 文件查看命令:cat, tac
cat 参数
cat [OPTION]... [FILE]...
-E: 显示行结束符$
-n: 对显示出的每一行进行编号
例如:
[zjwh@izm5e88rg4xz5npd1tngcbz scripts]$ cat sum.sh uid.sh
for ( a=0 ;a<=10 a++);
do
echo "$a";
done;
#!/bin/bash
if [ $UID -ne 0 ]; then
echo "Non root user. Please run as root"
else
echo "Root user"
fi
[zjwh@izm5e88rg4xz5npd1tngcbz scripts]$ cat -En uid.sh
1 #!/bin/bash$
2 if [ $UID -ne 0 ]; then$
3 echo "Non root user. Please run as root"$
4 else$
5 echo "Root user"$
6 fi$
[zjwh@izm5e88rg4xz5npd1tngcbz scripts]$
5. 文件内容类型查看命令:file
file 文件名
例如:
[zjwh@izm5e88rg4xz5npd1tngcbz scripts]$ file uid.sh
uid.sh: Bourne-Again shell script, ASCII text executable
[zjwh@izm5e88rg4xz5npd1tngcbz scripts]$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3d705971a4c4544545cb78fd890d27bf792af6d4, stripped
6. 回显命令:echo
echo 的参数
-n: 禁止自动添加换行符号;
-e: 允许使用转义符;
: 换行
: 制表符
echo "$VAR_NAME": 变量会替换,双引号表弱引用
echo '$VAR_NAME': 变量不会替换,强引用
7. which:显示命令对应的程序文件路径
which [OPTION] COMMAND
--skip-alias:禁止显示别名
例如:
[zjwh@izm5e88rg4xz5npd1tngcbz scripts]$ which ls
alias ls='ls --color=auto'
/bin/ls
[zjwh@izm5e88rg4xz5npd1tngcbz scripts]$ which --skip-alias ls
/bin/ls
8. whatis:
使用mkwhatis命令可将当前系统上所有的帮助手册及与之对应的关键字创建为一个数据库;
例如:
[zjwh@izm5e88rg4xz5npd1tngcbz scripts]$ whatis passwd
passwd (1) - update user's authentication tokens
sslpasswd (1ssl) - compute password hashes
对应的man查询方法如下
[zjwh@izm5e88rg4xz5npd1tngcbz scripts]$ whatis passwd
passwd (1) - update user's authentication tokens
sslpasswd (1ssl) - compute password hashes
[zjwh@izm5e88rg4xz5npd1tngcbz scripts]$ man 1ssl sslpasswd
[zjwh@izm5e88rg4xz5npd1tngcbz scripts]$ man 1 passwd
9. 命令历史 history
环境变量:
- HISTSIZE:命令历史记录的条数;
- HISTFILE:~/.bash_history;
- HISTFILESIZE:命令历史文件记录历史的条数;
参数:
history -d OFFSET :具体删除哪一条记录
-c:全部清楚历史记录
history #: 显示历史中最近的#条命令;
-a: 手动追加当前会话缓冲区的命令历史至历史文件中;
调用历史中的命令:
!#: 重复执行第#条指令;
!!: 重复执行上一条指令;
!string:重复执行上一条含有这个字符串的命令;
调用上一条命令的最后一个参数:
!$:
ESC, .
控制命令历史的记录方式:
环境变量:HISTCONTROL
* ignoredups:忽略重复的命令;连续且相同方为“重复”;
* ignorespace:忽略所有以空白开头的命令;
* ignoreboth:ignoredups, ignorespace;
修改环境变量值的方式:export 变量名="值"
变量赋值:把赋值符号后面的数据存储于变量名指向内存空间;
例如:
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ history -d 225
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ history 1
226 history 1
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ history -c
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ history
1 history
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ history -a
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ history
1 history
2 history -a
3 history
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc scripts .ssh .viminfo
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ !6
history
1 history
2 history -a
3 history
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Oct 15 15:19:00 2017
#
#
# /etc/fstab
# Created by anaconda on Sun Oct 15 15:19:00 2017
#
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ !cat
cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Oct 15 15:19:00 2017
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ ls !$
ls /etc/fstab
/etc/fstab
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ ls -l !$
ls -l /etc/fstab
-rw-r--r-- 1 root root 313 11月 4 2018 /etc/fstab
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ ls -l /etc/fstab(esc .)
-rw-r--r-- 1 root root 313 11月 4 2018 /etc/fstab
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ echo $HISTCONTROL
ignoredups
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ export $HISTCONTROL="ignorespace"
[zjwh@izm5e88rg4xz5npd1tngcbz ~]$ echo $HISTCONTROL
ignoredups
10. 命令补全, 路径补全,命令行展开
命令补全:
- bash执行命令:
- 内部命令:
- 外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到即为要执行的命令;
- 直接补全:Tab,用户给定的字符串只有一条惟一对应的命令;
以用户给定的字符串为开头对应的命令不惟一,则再次Tab会给出列表
路径补全:
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名;
如果惟一:则直接补全;
否则:再次Tab,给出列表;
命令行展开:
~: 展开为用户的主目录
~USERNAME:展开为指定用户的主目录
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径
/tmp/{a,b} = /tmp/a, /tmp/b
/tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi
11. 通配符
bash中用于实现文件名“通配”
通配符:*, ?, []
(1) *
任意长度的任意字符
a*b:
aab, ab, a123b,
abc
(2) ?
任意单个字符
a?b:
aab
ab, a12b, abc
(3) []
匹配指定范围内的任意单个字符
[0-9]
[a-z]:不区分字符大小写
(4) [^]
匹配指定范围外的任意单个字符
[^0-9]
专用字符集合:
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:space:]:
[:punct:]:标点符号