基础命令
文件管理
mkdir-创建目录(make directories)
语法:# mkdir [参数] [目录]
参数:
-p: 递归创建
-m:创建后设置权限
-v:显示创建过程
-Z:设置安全上下文
创建目录dir1
# mkdir dir1
同时创建dir1、dir2、dir3目录
# mkdir dir{1..3}
创建目录并设置目录权限为755
# mkdir -m 755 /zjz/dir
递归创建目录
# mkdir -p /father/son
ll-查看目录或命令(list directory)
ll 和 ls 命令类似,ll可查看的文件信息更多样。
语法:# ll [参数] [目录]
参数:
-a:显示目录下所有文件(包括.
开头的文件)
-h:以k
单位显示文件大小
-t:时间倒序查看
查看目录下所有文件
# ll -a
以时间倒序,分页排序文件
# ll -t | more
cd-切换目录(change direcotory)
语法:# cd [参数] [目录]
参数:
~
:切换到当前用户家目录
..
:切换到上级目录
-
:返回上一次目录
返回上一次所在目录
# cd -
连续返回两级目录
# cd ../..
pwd-打印当前目录(print work direcotory)
# pwd
/var/log
mv-移动目录或文件(move)
重命名zjz.txt为123.txt
# mv zjz.txt 123.txt
将文件zjz移动到/tmp(类似Windows回收站)
# mv zjz /tmp
将1.txt-2.txt移动到/zjztest 文件夹中
# mv 1.txt 2.txt /test
cp-拷贝(copy)
语法:# cp [参数] [文件]
-r:递归复制
-f:强制覆盖,不回显
-p:保留源文件权限
保留时间戳、模式、所有权
#cp -p file1 file2
递归复制文件和目录
#cp -r dir1 dir2/
touch-创建文件
语法:# touch [参数] [文件]
参数:
-a:改变文件的读取时间
-m:改变文件的修改时间
-r:改变参考档时间
创建文件fiel1到5
# touch file{1..5}
修改`stat`命令查看的`Access`档案的读取时间记录
# touch -a file
rm-删除目录或文件(remove)
语法:# rm [参数] [文件]
-f:强制删除
-r/R:递归删除
-v:显示过程
删除文件或目录
# rm -r /dir
删除当前目录下的所有文件(别用)
#rm -rf *
正确删除文件方式:
使用mv命令移动到 /tmp(回收站定期删除),替代删除命令
rmdir-删除目录
递归删除指定的目录树
# rmdir -p dir/dir_1/dir_2
stat-显示文件或文件系统状态(status)
查看文件三种时间状态:Access,Modify,Change:
# stat file
[root@localhost ~]# stat passwd
File: ‘passwd’
Size: 906 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 25192981 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-05-14 17:06:19.096067049 +0800
Modify: 2020-05-14 17:07:41.806062954 +0800
Change: 2020-05-14 17:07:41.806062954 +0800
Birth: -
显示文件系统的信息
# stat -f passwd
[root@localhost ~]# stat -f passwd
File: "passwd"
ID: fd0000000000 Namelen: 255 Type: xfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 2618880 Free: 2282731 Available: 2282731
Inodes: Total: 5242880 Free: 5208166
cat-显示文件内容
语法:# cat [参数] [文件]
参数:
-n:显示行号(包括空行)
-b:显示行号(不包括空行)
查看文件的内容,并添加行数编号后输出到另外一个文件中
# cat -n zjz.log > zzz.log
清空文件内容
cat /dev/null > /root/filename.txt
cat写入操作
# cat > file.txt << EOF
hello
world!
EOF
# cat file.txt
hello
world!
alias-设置命令别名
使用alias时,用户必须使用单引号 ' '
将原来的命令引起来
语法:# alias [参数]
参数:
-p:打印已经设置的命令别名
查看已经设置的命令别名
# alias -p
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
给命令设置别名
# alias ip=ifconfig
# ip
br-305ebea0aa9f: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.18.0.1 netmask 255.255.0.0 broadcast 172.18.255.255
inet6 fe80::42:ecff:fe6f:97bd prefixlen 64 scopeid 0x20<link>
ether 02:42:ec:6f:97:bd txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
删除别名使用# unalias ip
echo-输出字符串或提取Shell变量的值
> 重定向,会覆盖文件中的数据(没有则创建该文件)
# echo ‘Hello china’ > /home.txt
>> 内容追加
# echo ‘Hello word’ >> /home/zjz.txt
输出一段字符串
# echo "Linux.com"
Linux.com
提取变量值
# echo $LANG
en_US.utf8
修改Linux系统语言为中文
# LANG='zh_CN.UTF-8'
使用反引号符执行命令,并输出
# # echo `date`
输入、输出重定向
stdin=0 标准输入
stdout=1 标准输出
stderr=2 标准错误输出
> 重定向,会覆盖文件中的数据 慎用
如果没有home.txt会创建,写入单引号 内容
如果有,清空已有的内容,写入单引号的内容
echo ‘Hello china’ > /home.txt
>> 内容追加
echo ‘Hello word’ >> /home/zjz.txt
< 输入重定向
<<
2>&1 详解(通过2>&1,就将标准错误重定向到标准输出了)
1>/dev/null 2>$1的含义
---
> 代表重定向到哪里,例如:echo "123" > /home/123.txt
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
1、1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
2、2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
3、/dev/zero文件代表一个永远输出 0的设备文件,使用它作输入可以得到全为空的文件。因此可用来创建新文件和以覆盖的方式清除旧文件。
---
| - 管道符(任意门)
把前一个命令原本要输出到屏幕的数据当作是后一个命令的标准输入”。
格式:命令 A | 命令 B
或者 “命令 A | 命令 B | 命令 C”
统计文本行数的命令则是 wc -l
# cat /etc/passwd | wc -l
28
非交互式修改密码
# echo “Zz123456” | passwd --stdin root
技巧命令
mail-收发邮件
语法:# mail [参数] [文件]
参数:
-s:给邮件追加主题
-a:发送邮件附件,多个附件使用多次-a
-c:抄送收件人地址
-b:指定密件抄送的收件人地址
开启邮件服务
# /etc/init.d/postfix start
Centos默认不能发送邮件,需要安装sendmail
# yum install -y sendmail
设置开机自启动
# systemctl enable sendmail
配置mail.rc文件
# vim /etc/mail.rc
set from=795xxx27@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=79xxx327@qq.com
set smtp-auth-password=wijsixxxxx
set smtp-auth=login
发一封标题为test的空信给后面的邮箱
# mail -s test test@linuxcool.com
/dev/null
/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;
不想看到回显
date > /dev/null
/dev/zero
/dev/zero文件代表一个永远输出 0的设备文件
生成一个1G大小的文件
# dd if=/dev/zero of=testfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 5.82482 s, 184 MB/s