CSDN话题挑战赛第2期
参赛话题:学习笔记
Linux命令行基础
Linux 命令:用来实现某一类功能的指令或程序;命令的执行依赖于解释器(例如:/bin/bash
)
内部命令:属于解释器的一部分
外部命令:解释器之外的其他程序
[root@localhost /]# cat /etc/shells #查看解释器
/etc
存放系统管理和配置文件
命令行提示标识的含义
[root@localhost ~]#
[当前用户@主机名 当前所在位置]用户权限
用户权限
表示管理员权限; $
表示的普通权限
– 若当前用户是 root 管理员用户,则最后一个字符为 #
[lisi@localhost ~]$
– 否则,最后一个字符为 $
文件颜色代表含义
蓝色
表示目录
绿色
表示可执行文件
红色
表示压缩文件
浅蓝色
表示链接文件
白色
表示其他文件
黄色
是设备文件
黑色
代表文本文件
文件类型
-
普通文件d
目录文件l
符号链接文件linkb
块设备blockc
字符设备characterp
管道文件pipes
套接字文件socket
ls -l /run
更换路径
cd dict
如:
cd ~ #返回根目录
创建一个目录
mkdir newDict
创建文件
touch newFIle
路径
当前路径:.
上一级路径:…/
上一级的上一级路径:…/…/
删除一个文件
rm File
rm -f
:强制删除,不提示(与-i
相对)
删除目录
rm -d Dict //删除空目录
rm -r Dict //删除包含内容的目录
或
rmdir Dict //删除空目录
删除 /opt 目录
rm -rf /opt
rm -rf /opt/
上面两个命令作用一样,都会把opt目录本身删除
复制目录和文件
cp -r Dict NewDict
cp File NewFIle
-
-r
:递归复制整个目录 -
-f
:强制覆盖,不提示(与-i
相对) -
-p
:保持原文件属性不变 -
复制支持两个以上的参数
永远把最后一个参数作为目标,其他的所有参数都作为源
[root@zrj ~]# cp -r /boot/ /home/ /etc/passwd /etc/shells /mnt/ # 将 /boot/ /home/ /etc/passwd /etc/shells 复制到/mnt 目录下
- 复制与 一个点 的连用
. :表示当前目录
[root@zrj ~]# cd /mnt/
[root@zrj mnt]# cp /etc/fstab .
[root@zrj mnt]# ls
移动目录和文件
mv FIle NewLocal
重命名目录和文件
使用mv实质就是移动,当路径不变的移动时即为重命名,也就是覆盖
mv Dict NewNameDict
或
mv File NewNameFile
rename 支持通配符方式批量重命名
显示当前文件夹下的文件夹和文件
ls
-l
:以长格式显示(显示详细信息)
-A
:显示所有内容包含隐藏数据
-d
: 显示目录本身(而不是内容)的属性
-h
: 提供易读的容量单位(K、M等)
-R
:递归显示内容
-ld
:目录和符号链接信息
-1
:文件分行显示
-S
:按从大到小排序
-t
:按mtime排序
-u
:配合-t
选项,显示并按atime从新到旧排序
-U
:按目录存放顺序显示
-X
:按文件后缀排序
[root@localhost /]# ls -l /root #显示/root 目录内容详细信息
[root@localhost /]# ls -l / #显示根目录内容详细信息
[root@localhost /]# ls -lh /etc/passwd #查看文件详细信息并加上易读单位
-rw-r--r--. 1 root root 2.2K 1 月 14 06:35 /etc/passwd
[root@localhost /]# ls -lA /boot/ #查看 boot 目录的所有文件
显示当前路径
pwd
查看主机名
[root@localhost /]# hostname
[root@localhost /]# hostname svr1 #临时修改主机名
查看文件
cat File
或
cat -n passwd
cat -n passwd表示显示行号
[root@localhost /]# cat /etc/centos-release #查看 centos 发行版本信息
/etc
存放系统管理和配置文件
长内容的文件查看方式
查看头十行内容
head passwd
head默认查看头十行
查看头n条内容
head -n num FIle
或者
head -num File //num 为指定数字
例如:head -n 11 passwd查看passwd文件头11行内容
查看尾文件与head类似
tail passwd
或
tail -n num file
或
tail -num file //num为指定数字
Tips: 关于 tail 命令,不得不提的还有它一个很牛的参数 -f,这个参数可以实现不停地读取某个文件的内容并显示。这可以让我们动态查看日志,达到实时监视的目的。
编辑文本
使用vi简单编辑文本
vi File
若该文件不存在则新建一个文件
a
或i
进入编辑模式- 编辑完内容后,按键盘的
esc
退出编辑模式 - 敲入冒号
:
- 输入
wq
,回车保存并退出
vim
与vi
的操作方法一样
最小化系统默认是不安装的,yum -y install vim
使用vim创建/修改文件
格式:vim [[/目录/]文件名]
- 若目标文件不存在,则新建空文件并编辑
- 若目标已存在,则打开此文件并编辑
基本操作
- 保存并退出:wq
- 放弃修改并退出:q!
命令模式(还未输入i(插入模式)/o(另起一行)的那一行界面)
光标跳转、复制、粘贴
向下翻页:PgDn
或Ctrl+f
向上翻页:pgUp
或Ctrl+b
光标行内跳转至行首:Home``^``0
光标行内跳转至行尾:End``$
光标行间跳转到文件首行:1G
或gg
光标行间跳转到文件末尾行:G
跳转到第n行::n
复制光标所在行:yy
复制光标n行,包括光标所在行:nyy
粘贴到光标处之后:p
粘贴到光标处之前:P
p 小写p代表贴至游标后(下),因为游标是在具体字符的位置上,所以实际是在该字符的后面
P 大写P代表贴至游标前(上)
整行的复制粘贴在游标的P上(p下)一行,非整行的复制则是粘贴在游标的P前(p后)
删除光标处的单个字符:x
或Delete
删除光标处的一行、#行:dd
#dd
从光标处之前删除至行首:d^
从光标处删除到行尾:d$
删除最后一行::$d
删除n到m行::n,md
查找、撤销、保存
向后查找字符串"word":/word
向前查找字符串"word":?word
跳至下一个找到的字符串:n
跳至上一个找到的字符串:N
撤销最近一次操作:u
撤销当前行的所有修改:U
取消前一次撤销操作:Ctrl+r
保存并退出:ZZ
末行模式基本操作
存盘、退出、文件操作
- 保存当前文件:
:w
- 放弃已有更改后强制退出:
:q!
- 保存已有修改后退出:
wq
或:x
- 另存为其他文件:
:w /root/newfile
- 读入其他文件内容:
:r /etc/filesystems
文件操作:
[root@localhost ~]# echo 123456 > /opt/1.txt
[root@localhost ~]# echo abcd > /opt/2.txt
把 1.txt 文件里面的内容读入到 2.txt 里面
[root@localhost ~]# vim /opt/2.txt
abcd
:r /opt/1.txt
把/etc/passwd 文件里面的内容读入到 2.txt 里面
[root@localhost ~]# vim /opt/2.txt
abcd
123456
:r /etc/passwd
字符串替换
-
替换当前行第一个“old” :
:s /old/new
-
替换当前行所有的“old” :
:s /old/new/g
-
替换第n-m行所有的“old” :
:n,m s/old/new/g
-
替换文件内所有的“old“ :
:%s /old/new/g
-
替换时加c,每次需用户确认:
:%s /old/new/gc
开关设置
- 显示/不显示行号:
:set nu|nonu
- 启用/关闭语法高亮:
:syntax on|off
- 开启/关闭查询结果高亮显示:
:set hlsearch|no hlsearch
- 启用/关闭自动缩进:
:set autoindent|no autoindent
或简写:set ai
:set noai
vim高级使用
与vim相关的配置文件
-
使用
.vimrc
配置文件
位于用户家目录,可预设一些vim参数
-
~/.viminfo
记录用户的历史操作 -
.filename.swp
编辑过程中的缓存文件
可视化选择
选取操作(vim命令模式)
关于可视化更详细的使用方法见连接
http://c.biancheng.net/view/6355.html
v
取连续的多个字符V
取连续的多行Ctrl+v
取连续的多列(块选取)
如注释多行Ctrl + v
选中注释行,shift+i
,在输入#
按esc
,(一定要按esc)gv
重复上述选取
需要注意的是,当选中文本并做完相应操作(例如选中文件并按 p 键将其复制到剪贴板中)后,Vim 会自动从可视化模式转换为命令模式。当然,也可以再次按 v(或者 V、Ctrl+v)手动退出可视化模式。
针对选取文本的操作
d
删除y
复制
less 分屏工具(支持上下键滚动)
格式:less 文件名
[root@localhost /]# less /etc/passwd
wc统计文件字数
- wc 文件名
[root@localhost ~]# wc /etc/passwd
43 84 2237 /etc/passwd
行数 单词 文件大小 文件名
- wc
-l
文件名
输出行数
查找文件
按名字查找
locate
格式:locate [-d ][--help][--version][范本样式...]
用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。
一般情况我们只需要输入locate your_file_name
即可查找指定文件。
选项
-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 – 显示版本信息
与find不同之处
locate 与 find 不同: find 是去硬盘
找,locate 只在 /var/lib/slocate 资料库
中找。
locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:updatedb
which
用于查找文件。
which指令会在环境变量$PATH
设置的目录里查找符合条件的文件。
格式:which [文件...]
选项
-n<文件名长度>
指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p<文件名长度>
与-n参数相同,但此处的<文件名长度>包括了文件的路径。
-w
指定输出时栏位的宽度。
-V
显示版本信息。
实例
使用指令"which"查看指令"bash"的绝对路径,输入如下命令:
$ which bash
输出:
/bin/bash #bash可执行程序的绝对路径
find 检索文件
find 搜索范围 选项 目标文件
通过以下方式查找,更多使用方法find --help
- find 目录
-user
指定用户名
find /etc -user root
- find 目录
-size
文件大小
-size
+|- 文件大小(k/M/G)
find -size 文件大小###查找指定文件大小文件
find -size -文件大小###查找小于指定文件大小的文件
find -size +文件大小###查找大于指定文件大小的文件
[root@localhost ~]# find /boot/ -size +10M #查找大于 10M 的
[root@localhost ~]# find /boot/ -size -10M #不支持-1M,-1G,-1k
-type
类型( f 文件【黑】、d 目录【蓝】、l 快捷方式【青】)
[root@localhost ~]# find /dev/ -type l #查找快捷方式
[root@localhost ~]# find /boot/ -type f #查找是文本文件
[root@localhost ~]# find /boot/ -type d #查找是目录
-name
“文档名称”-iname
忽略大小写
[susu@localhost ~]$ find ~ -name a.txt #从当前路径查找名字为a.txt的文件
/home/susu/a.txt
[root@localhost ~]# find /etc -iname 'PASSWD' #忽略大小写查找
-mtime
修改时间
根据文件修改时间(所有的时间都是过去时间)查找
+10:10 天之前的文档
-10:最近 10 天之内的文档
[root@localhost ~]# find /opt/ -mtime +10
[root@localhost ~]# find /var/ -mtime -10
与wc连用
[root@localhost ~]# wc -l /etc/passwd #查看这个文件有多少行
[root@localhost ~]# find /etc/ -name '*tab'
[root@localhost ~]# find /etc/ -name '*tab' | wc -l
[root@localhost ~]# find /etc/ -name '*.conf'
[root@localhost ~]# find /etc/ -name '*.conf' | wc -l
[root@localhost ~]# mkdir /root/nsd01
[root@localhost ~]# touch /root/nsd02.txt
[root@localhost ~]# touch /root/nsd03.txt
[root@localhost ~]# find /root/ -name 'nsd*'
-a
并且(都满足,默认是-a)
-o
或者(满足其一即可)
[root@localhost ~]# find /root/ -name "nsd*" -a -type f
[root@localhost ~]# find /root/ -name "nsd*" -a -type d
[root@localhost ~]# find /root/ -name "nsd*" -o -type d
[root@localhost ~]# find /root/ -name "nsd*" -type d
查找并处理文件
- 使用
find
命令的-exec
操作
– find
【目录】 条件 -exec
处理命令 {} \;
(需要将查找的结果交给后面的命令处理时,红色部分是固定格式)
– 优势:以 {}
代替每一个结果,逐个处理,遇 \;
结束
find
[目录] [条件 1] [-a
|-o
] [条件 2]
-a表示与(and);-o表示或(or)
# csdn @ edu in ~ [9:16:26]
$ find bot -name 'vm*' -exec cp {} opt \;
注意bot表示当前目录下的bot目录,不能写出/bot/或/bot ,因为/bot/或/bot 都表示根目录下的目录,同理opt也是当前目录下的目录。
一切参照空间都是对于当前路径而言的,即上述的~;
# csdn @ edu in ~ [9:16:47]
$ ls opt
vmsdkfja
把boot 目录下面小于 10M 的文件拷贝到opt 下
[root@localhost ~]# find boot -size -10M -type f -exec cp {} opt \;
grep 工具:输出包含指定字符的行 检索文本
格式:grep
[选项] ‘查找条件’ 目标文件
[root@localhost /]# grep root /etc/passwd #查找/etc/passwd 中包含 root 的行
/etc
存放系统管理和配置文件
常用选项
-i
查找时忽略大小写-v
反转查找,输出不符合查找条件的行-E
表示进行正则表达式匹配
查找条件(支持正则表达式)
- 双引号内指定查找的字符串
^...
表示以...
开头...$
表示以...
结尾^$
表示空行
更多正则表达式方法见我另一篇博客~
创建一个快捷方式
软链接
在/home目录下创建一个软连接 myusr 连接到/usr目录
ln -s 原文件或目录 软链接名
ln -s /usr /home/csdn/myusr
- 使用ls -l或ll查看软连接的链接状态
既然是软链接,那么当原文件被删除后,那么软链接就链接不到文件。但是如果新建了一个与原文件同名的文件时,且路径相同,那么快捷方式就会链接到这个新的文件。
当快捷方式之间链接时,实质上是链接原文件的。
硬链接
通过ln --help
可以看到,当使用ln 1.txt 2.txt
时,当1.txt
被删除后,cat 2.txt
是可以访问到1.txt
的内容的。
二者区别
也就是说,软链接指向源文件路径,而硬链接指向源文件的数据,相当于副本,但是却不占硬盘内存
详细的区别见大佬的文章,略微详细的见我另一篇博客~
归档和压缩
归档
- 将许多零散的文件整理为一个文件
- 文件总的大小基本不变
类似于用文件夹来收纳文件
压缩文件
- 按某种算法减小文件大小
- 恢复时按逆向算法解压
常见的压缩格式及其命令
.gz->gzip、gunzip
.bx2->bzip2、bunzip2
.xz->xz、unxz
gizp
gzip edu.txt
出现有edu.txt.gz
的文件
Tips: gzip只能将文件压缩成*.gz格式。如果要压缩成zip等格式。还有别的命令。
tar集成备份工具
- tar -cvf test.tar test 仅打包,不压缩
- tar -zcvf test.tar.gz test 打包后,以gzip压缩 在参数f后面的压缩文件名是自己取的,习惯上用tar来做,如果加z参数,则以tar.gz或tgz来代表gzip压缩过的tar file文件
常用选项
-c
创建归档
-x
释放归档
-f
指定归档文件名称,该选项必须放在所有选项的后面
-z``-j``J
调用.gz,.bz2,.xz格式的工具进行处理(一个命令可以调用三个格式)
-t
显示归档中的文件清单
-C
指定释放的路径
制作tar备份包
格式tar -c ...
- tar -zcf 备份文件.tar.gz 被备份文档…
调用.gz/bz2/xz格式工具,创建归档,指定归档文件名称
[root@localhost test]# ls
[root@localhost test]# touch a
[root@localhost test]# ls
a
[root@localhost test]# tar -zcf copy.tar.gz a
[root@localhost test]# ls
a copy.tar.gz
[root@localhost test]# ls -lh copy.tar.gz
-rw-r--r--. 1 root root 101 Sep 16 22:56 copy.tar.gz
[root@localhost test]# ls
a copy.tar.gz
[root@localhost test]# tar -jcf jcopy.tar.gz a
[root@localhost test]# ls
a copy.tar.gz jcopy.tar.gz
[root@localhost test]# ls
a copy.tar.gz jcopy.tar.gz
[root@localhost test]# tar -Jcf Jcopy.tar.gz a
[root@localhost test]# ls
a copy.tar.gz jcopy.tar.gz Jcopy.tar.gz
- tar -jcf 备份文件.tar.bz2 被备份的文档…
调用.gz/bz2/xz格式工具,创建归档,指定归档文件名称
[root@localhost test]# tar -zcf zbd.tar.bz2 a
[root@localhost test]# ls
a copy.tar.gz jcopy.tar.gz Jcopy.tar.gz release zbd.tar.bz2
- tar-Jcf 备份文件.tar.xz 被备份文档…
调用.gz/bz2/xz格式工具,创建归档,指定归档文件名称
综上,可见不管是用-z
还是-j
或者是-J
都可以调用.gz
和.bz2
和xz
格式的文件,例子就不再列举了,同理恢复文档也是如此的原理
从tar备份包恢复文档
格式tar -x ...
- tar -xf 备份文件.tar.gz [-C 目标文件夹]
-x
释放文档,-f
指定归档文件名称,-C
指定释放的路径
[root@localhost test]# ls
a copy.tar.gz jcopy.tar.gz Jcopy.tar.gz release
[root@localhost test]# rm a
rm: remove regular empty file ‘a’? y
[root@localhost test]# ls
copy.tar.gz jcopy.tar.gz Jcopy.tar.gz release
[root@localhost test]# tar -xf copy.tar.gz
[root@localhost test]# ls
a copy.tar.gz jcopy.tar.gz Jcopy.tar.gz release
[root@localhost test]# ls release
[root@localhost test]# tar -xf copy.tar.gz -C release
[root@localhost test]# ls
a copy.tar.gz jcopy.tar.gz Jcopy.tar.gz release
[root@localhost test]# ls -lh release
total 0
-rw-r--r--. 1 root root 0 Sep 16 22:56 a
- 查看压缩文件的清单
# csdn @ edu in ~ [18:39:42]
$ ls
a Code
# csdn @ edu in ~ [18:39:43]
$ tar -zcf aa.tar.gz a
# csdn @ edu in ~ [18:40:04]
$ ls
a aa.tar.gz Code
# csdn @ edu in ~ [18:40:05]
$ tar -tf aa.tar.gz
a
多个文件或目录压缩打包
tar czvf my.tar.gz file1 file2,…(file*)
(也可以给file*文件mv 目录在压缩)
多个目录压缩打包 tar czvf my.tar.gz dir1 dir2
解压缩文件
通过gzip File
的压缩文件File.gz
使用gunzip
命令解压缩
gunzip a.txt.gz
或者使用
gzip -d a.txt
zip压缩包
归档+压缩操作
zip [-r] 备份文件.zip 被归档文件
释放归档+解压操作
unzip 备份文件.zip [-d 目标文件夹]
列出已激活的网卡连接信息
[root@localhost /]# ifconfig
或
[root@localhost /]# ifconfig ens33 192.168.1.1 //为ens33网卡临时配置IP地址为192.168.1.1
lo
: 回环接口 127.0.0.1 永远代表自己
vribr0
:虚拟网卡
[root@localhost /]# ifconfig
[root@localhost /]# ping 192.168.1.1
开机及重启
关机:poweroff
[root@localhost /]# poweroff
重启:reboot
[root@localhost /]# reboot
常用通配符
对于不确定的文档名称,以通配符表示
*
:任意多个任意字符
[susu@localhost ~]$ ls a*
a.txt
?
:单个字符
[susu@localhost ~]$ ls a.tx?
a.txt
[a-z]
:多个字符或连续范围 中的一个,若无则忽略
[susu@localhost ~]$ ls a.tx[a-z]
a.txt
{a,min,xy}
:多组不同的字符串,全匹配
[susu@localhost ~]$ ls a.{txt,png,jpg}
ls: cannot access a.png: No such file or directory
ls: cannot access a.jpg: No such file or directory
a.txt
查看日期时间
[root@localhost ~]# date #查看时间
[root@localhost ~]# date -s '2010-1-1 10:10:10' #修改时间
重定向输出
将屏幕显示信息保存到文件
格式:命令 操作符号 文件名
操作符号
1>
或 >
把STDOUT(输出)重定向到文件
2>
把STDERR(输出错误)重定向到文件
&>
把标准输出和错误都重定向
>&
把标准输出和错误都重定向,即和上面功能一样,建议使用上面方式
以上若文件存在,文件内容会进行覆盖,以上方式的>>
模式表示在该基础上追加
- 覆盖重定向:
cmd > file
若file不存在,则自动新建file,并覆盖file
cmd表示一串命令,该命令输出在屏幕的内容会覆盖到file上
[susu@localhost ~]$ ls
a.txt Documents Music Public Videos
Desktop Downloads Pictures Templates
[susu@localhost ~]$ ls > a.txt
[susu@localhost ~]$ cat a.txt
a.txt
Desktop
Documents
Downloads
Music
Pictures
Public
Templates
Videos
- 追加重定向:
cmd >> file
若file不存在,则自动新建file,并覆盖file
cmd表示一串命令,该命令输出在屏幕的内容会覆盖到file上
[susu@localhost ~]$ ls
a.txt c Documents Music Public Videos
b Desktop Downloads Pictures Templates
[susu@localhost ~]$ ls >> c
[susu@localhost ~]$ cat c
a.txt
b
c
Desktop
Documents
Downloads
Music
Pictures
Public
Templates
Videos
定义别名
别名的定义:简化复杂的命令
注意要使用管理者身份“#”,而不是“$”
首先应该要打开root权限的终端
sudo su
然后就可以进行下一步了(若要退出root,输入exit
)
创建别名:
[root@zrj ~]# alias hn='hostname'
[root@zrj ~]# hn
删除别名:
[root@zrj ~]# unalias hn
[root@zrj ~]# hn
-bash: hn: command not found
unalias -a 表示取消所有别名
注意在命令行定义的别名,只在当前shell进程有效,若想永久有效,需要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
echo "alias free='free -h'" >> .bashrc
>>
表示追加(重定向)
管道操作(管道传递)
将前一条命令的标准输出交给后一条命令处理
注意后面命令有唯一输入时才可以使用管道
cmd1 | cmd2 [ | cmd3 ] .. ..
//如下,把ifconfig的输出交给head处理,即只显示出ifconfig输出的前2行
[susu@localhost ~]$ ifconfig | head -2
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:fc:2f:44 txqueuelen 1000 (Ethernet)
tee
利用 tee 命令可以重定向到多个目标,经常配合管道符一起使用
格式:命令1 | tee [-a ] 文件名 | 命令2 ......
以上可以把命令1的STDOUT保存在文件中,做为命令2的输入
- 选项:
-a
追加 - 功能:
保存不同阶段的输出
复杂管道的故障排除
同时查看和记录输出
# csdn @ edu in ~ [21:45:57] C:127
$ echo 2 | tee a | > b
# csdn @ edu in ~ [21:46:11]
$ ls
a b Code
# csdn @ edu in ~ [21:46:12]
$ cat a
2
# csdn @ edu in ~ [21:46:14]
$ cat b
2
useradd
-u:指定 UID 标记号
-d:指定宿主目录,缺省为 /home/用户名
-e:指定帐号失效时间
-g:指定所属的基本组(组名或GID)
-G:指定所属的附加组(组名或GID)
-M:不为用户建立并初始化宿主目录
-s:指定用户的登录Shell
控制执行多个命令
;
当第一条命令执行完成后(不管是否成功),执行第二条命令,顺序执行||
只有当第一条命令执行失败时才会执行第二条命令&&
只有当你第一条命令执行成功的时候,才会执行第二条命令
[root csdn]# ls ; touch a
Code
[root csdn]# ls
a Code
[root csdn]# ls ssdsdfsd|| touch b
ls: cannot access ssdsdfsd: No such file or directory
[root csdn]# ls
a b Code
[root csdn]# ls Code && touch c
[root csdn]# ls
a b c Code
命令行小技巧
- [tab]热键
[tab]热键是Linux bash shell中最最常用的键了。它具有补全命令和文件补全的功能。
比如我们早练习过的tail命令。我只需要在终端输入:tai + [按下tab] 就直动补全了。
- history命令
history命令就是查看当前用户下所以有历史执行命令,即便用户正常退出后也会将内存的命令历史存放在对应的历史文件中,默认是~/.bash_history ,登录shell时,会读取命令历史文件记录下的命令加载到内存,登录进shell后新执行的命令只会记录在内存的缓存区中,这些命令在用户正常退出时“追加”至命令历史文件中,最常用的场景就是忘记了以前执行过的命令时,我们就会通过history来查看之前执行的命令。
常用选项
-c
清空命令历史
-d offset
删除历史中指定的第offset个命令
n
显示最近的n条历史
-a
追加本次会话新执行的命令历史列表至历史文件
-r
读历史文件附加到历史列表
-w
保存历史列表到指定的历史文件
-n
读历史文件中未读过的行道历史列表
-p
展开历史参数成多行,但不存在历史列表中
-s
展开历史参数成一行,附加在历史列表中
- 上下翻页键
上下翻页键可以直接回显最近执行的一条命令。
Ctrl + c
= 停止正在运行的命令Alt + .
或Esc + .
粘贴上一个命令的参数- 一个命令可以用
\
分成多行 - 重复前一个历史命令
三种方法
- 按!!并回车执行
- 上方向键,并回车执行
- !n 执行history命令输出对应序列号n的命令
# csdn @ edu in ~ [10:04:35] C:1 $ history 1 systemctl set-default graphical.target 2 sudo su 3 ls 4 history n # csdn @ edu in ~ [10:05:35] C:1 $ !3 # csdn @ edu in ~ [10:05:37] C:1 $ ls a b c Code
du [选项] ... [目录或文件] ...
统计文件的占用空间
-s
只统计每个参数所占的总空间大小
-h
提供易读容量单位(k,m)
不咋常用命令
真机查看列出 CPU 处理器信息
[root@room9pc01 ~]# lscpu
真机查看检查内存大小、空闲情况
[root@room9pc01 ~]# cat /proc/meminfo
/proc
虚拟文件系统目录,是系统内存的映射,相当于是存储内存中的信息
列出内核版本
[root@localhost /]# uname
[root@localhost /]# uname -r
实际上入门的常用命令早已经完成了,更多的是在实战中体验,本文也对一些命令的特殊用法做了详细的解释,因为作为一篇入门的Linux教学,非入门的知识有点多,可能会劝退一些新人,本人也是新人,只不过花费了很多时间在本文上做了许多添加罢了,所以会显得臃肿些。
一些命令更多的用法可以用--help
命令来查看,只需掌握一些常用的用法即可,不需要面面俱到(这也是本文的一个缺点),后续本人也会针对个别命令进行详细的解释,而非混杂在其他命令之中,这样文章会更有针对性些。
另外,本文有代码阐释的命令均在csdn的linux平台和CentOS中成功运行过,如有问题欢迎在评论区中批评指正!!