一、学会“学习命令”
在linux终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档; linux系统内置的帮助文档很详细,通常能解决我们的问题,我们需要掌握如何正确的去使用它们;
- 需要知道某个命令的简要说明,可以使用whatis;而更详细的介绍,则可用info命令;
- 查看命令在哪个位置,我们需要使用which;
- 而对于命令的具体参数及使用方法,我们需要用到强大的man;
简单说明
简要说明命令的作用(显示命令所处的man分类页面):
$ whatis command
更加详细的说明文档:
$ info command
使用man(详细)
查询命令command的说明文档:
$ man command
eg:man date
使用page up和page down来上下翻页
⭐⭐⭐知道命令但是忘了参数怎么写?
在命令后面加--help
或-h
即可查看用法
for example:
cat --help
会得到下面的内容:
root@dkqhdNzD50ucsy0:~# cat --help
Usage: cat [OPTION]... [FILE]...
Concatenate FILE(s) to standard output.
With no FILE, or when FILE is -, read standard input.
-A, --show-all equivalent to -vET
-b, --number-nonblank number nonempty output lines, overrides -n
-e equivalent to -vE
-E, --show-ends display $ at end of each line
-n, --number number all output lines
-s, --squeeze-blank suppress repeated empty output lines
-t equivalent to -vT
-T, --show-tabs display TAB characters as ^I
-u (ignored)
-v, --show-nonprinting use ^ and M- notation, except for LFD and TAB
--help display this help and exit
--version output version information and exit
Examples:
cat f - g Output f's contents, then standard input, then g's contents.
cat Copy standard input to standard output.
GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report any translation bugs to <https://translationproject.org/team/>
Full documentation <https://www.gnu.org/software/coreutils/cat>
or available locally via: info '(coreutils) cat invocation'
能联网?当然要上网去搜了!
上网搜索往往能得到更容易于理解的答案,不过缺点就是比较麻烦,效率较低
二、基础 Shell 命令
Prompt 能告诉我们什么
- Prompt 即命令提示符,用来等待输入并给你提供一些信息
其中最重要的信息就是工作路径(Working directory)工作路径(Working directory)工作路径,是当前 shell 所处的“位置”
- 一定要时时刻刻知道自己“在哪里”
- ⚠️
rm -rf ./*
- *nix 下的路径分隔符是
/
,Windows 下是\
通常还要有的信息是当前正在操作的用户
- 和权限有关,比如普通用户还是
root
等
- 和权限有关,比如普通用户还是
- 向其中输入命令然后回车,就可以执行命令
常见命令⭐⭐⭐
pwd
获取当前路径- 可见
~
代表的就是当前用户的 “home” 目录
怎么没有
C:\
?
- Windows 下有多个“根目录”,即不同“盘符”,比如
C:\
、D:\
等- *nix 没有分盘概念,所有的文件都挂载在唯一的根目录
/
下
whoami
:显示当前用户名称
ls
:显示指定工作目录下的内容;用法:ls 文件或目录
(1)ls:./ 查看当前目录所有的文件和目录
(2)ls -l:以长格式显示目录下的内容列表
(3)ls -a:查看所有的文件,包括隐藏文件,以.开头的文件
cd
:切换当前工作目录;用法:cd后面加目录
(1)cd /root:进入/root 目录
(2)cd ../:返回上一级目录
(3)cd ./:进入当前目录
cp
:拷贝文件;用法:cp 要复制的文件 目标路径
(1)cp xx.txt /home/backup.txt ,拷贝文件至/home目录下并且重命名为bak.txt
(2) cp xx –r /home:拷贝xx目录到/home目录下
cat
:查看文件内容;用法:cat 文件路径
(1)cat test.txt:查看当前文件夹下 test.txt 文件内容
echo
:回显;用法:输入什么就打印什么
(1)echo "hello"
mkdir
:创建目录;用法:mkdir 目录名
rmdir
:删除空目录,非空不可删除;用法:rmdir 空目录名称
rm
:删除文件或者目录,用法:rm –rf 文件名或目录 (-r 表示递归,-f 表示强制)
touch
:创建文件;用法:touch 文件名,如果文件存在,则修改当前文件时间,文件内容不变
mv
:重命名或者移动文件/目录;用法: mv 原文件名 新文件名 或 mv 原文件位置 新文件位置
chmod
:修改文件或目录的权限
chmod u+x 目录/文件:给该目录/文件所有者赋予执行权限
chmod ug-x 目录/文件:给该目录/文件所有者和组用户减去执行权限
chmod 777 目录/文件:给该目录/文件所有者、组用户、其他用户赋予所有权限
chmod 764 目录/文件:给该目录/文件所有者赋予全部权限,组用户赋予读写权限,其他用户赋予读权限
hexdump
: 用法:hexdump filename:以十六进制输出文件内容
- -C:并排输出十六进制与 ASCII
- -n N:输出前 N 个字节
>
:表示将前面命令的执行结果写入后面的文件中,会覆盖原有文件内容; 常见用法echo world > test.txt
>>
:表示追加;常见用法echo world >> test.txt
find
:查找指定文件;用法:find 目录 -name 文件
(1)find /home -name “*.txt” :查找/home目录下,所有以.txt 结尾的文件或者目录。
groupadd
:创建组;用法:groupadd 组名;注:在/etc/group中查看组名;注:将某用户加入root用户组:usermod –g root 用户名
groupdel
:删除组;用法:groupdel 组名
grep
:用于查找文件里符合条件的字符串;用法:grep [参数] 目标
-r:指定要查找目标的是目录而非文件时使用
-n:显示具体行数
–include:指定后缀文件
(1)grep -rn “eval“ target
:搜索target目标(目录/文件)中是否含有eval的文件,并且确定在所含有的文件中是第几行
(2)grep -rn --include=‘*.php’ ‘eval(’ target
:搜索target目标(目录/文件)中是否含有eval的文件(注:这里是指定只搜索.php后缀的文件),并
且确定在所含有的文件中是第几行
head
:默认查看文件前10行内容;用法:head 文件名;如果查看前20行,用法:head -20 文件名
tail
:默认查看文件后10行内容;用法:tail 文件名,如果查看后20行,用法:tail -20 文件名
more或less
:分页查看文件内容;用法:more 文件名或less 文件名
注:cat 和 more 同时使用例如: cat test.txt |more 分页显示 text 内容,|符号是管道符,用于把|前的输出作为后面命令的输入
useradd
:创建用户;用法:useradd 用户名,注:在/etc/passwd中可查看
(1)将用户添加到指定组中: useradd -g 组名 用户
userdel
:删除用户;用法:userdel 用户名
passwd
: 设置密码;passwd 用户名,不加用户名默认修改当前用户
vi
:修改文件(命令行模式、文本输入模式、末行模式),vi或vim打开一个文件,首先是命令行模式,然后按 i 进入文本输入模式,可以
在文件里写入字符等信息。写完后,按 esc 进入命令模式,然后输入:进入末行模式,例如输入 :wq 表示保存退出。如果想直接退出,不
保存,可以执行 :q , 如果无法退出可以使用 q! 强制退出。
id
:显示用户的ID,以及所属群组的ID
ifconfig
:显示网络详情
netstat
:显示网络状态
netstat –anplt:查看所有tcp端口
netstat –anplu:查看所有udp端口
kill
:停止运行执行中的程序或工作
kill -9:强制执行
ping
:检测主机;用法:ping ip
ps
:显示当前进程的状态,类似于 windows 的任务管理器。 -a 列出全部进程
reboot
:重启;用法:reboot -f(强制重启)
su
:切换用户;用法:su 用户名
sudo
:使用root用户执行命令;用法:sudo 命令
uname
:显示系统信息;用法:uname –a(显示系统详细信息)
clear
:清空命令行
重定向
- 即文件流重定向
- 三种流:stdin 标准输入流,stdout 标准输出流,stderr 标准错误流
- 如何更便捷地将输出存入文件/将文件内容作为程序输入?通过重定向
- 通过 > file 将 stdout 重定向到文件,通过 < file 将文件重定向到 stdin
通过 2> file 将 stderr 重定向到文件
- 2 是什么意思?stderr 的文件描述符
- 两个右箭头(大于号)>> 表示追加模式,即不覆盖原文件,而是追加到文件末尾
- 通过 &> file 将 stdout 和 stderr 都重定向到文件
常见用法:
- echo "Hello world" > file:将字符串 Hello world 写入 file
- cat file1 file2 > file3:将 file1 和 file2 拼接,输出到 file3
- diff file1 file2 > file3:将 file1 和 file2 的差异写入 file3
- ./a.out < file:将 file 作为 a.out 的输入
管道
- 通过管道(pipe)可以将一个命令的输出作为另一个命令的输入
- 使用管道操作符 |,将左侧命令的 stdout 连接到右侧命令的 stdin
- 通过管道可以将多个命令连接起来,形成一个命令序列,可以通过一行命令来完成相对复杂的操作(e.g. SadServers Saskatoon)
$ cat /home/admin/access.log | cut -d ' ' -f 1 | sort | uniq -c | sort | tail -n 1
- 复杂命令看不懂?推荐 explainshell
常见用法:
- some cmd | tail -n lines:只输出最后 lines 行
- some cmd | less:分页输出
- some cmd | grep pattern:在输出中查找匹配 pattern 的行
- 与 cut / sort / uniq / awk 等命令搭配,处理文本数据
- ...
curl https://www.baidu.com/robots.txt | grep User
环境变量
- 记录了系统信息的变量,可供程序读取
- 通过 echo $var 来输出某一环境变量的值,
env
命令查看所有环境变量 一个关于环境变量和 shell 命令执行的例子
- 🤔 命令是什么(例如
ls
)? - -> 绝大部分都是可执行文件(
/bin/ls
),执行命令就是执行程序 - 🤔 为什么 shell 可以只通过
ls
就找到/bin/ls
这个可执行文件? - -> 在
PATH
环境变量中查找 - 🤔 为什么一定要用 ./a.out 而不是 a.out 来执行程序?
- -> 因为 .(即当前目录)并不在
PATH
变量中
- 🤔 命令是什么(例如
设置环境变量
export var=value:设置环境变量
- 仅在当前执行的 shell 中有效。如何持久化?写入配置文件
- unset var:删除环境变量
使用printenv
或env
可以列出当前用户会话的所有环境变量及其值。
补充
- chown:更改文件或目录的所有者和所属组。例如,
chown user:group file.txt
将file.txt
的所有者更改为user
,所属组更改为group
。 - tar:用于归档文件。例如,
tar -czvf archive.tar.gz directory/
将directory/
目录及其内容压缩为archive.tar.gz
文件。 - df:显示磁盘空间使用情况。
- du:估计文件和目录的磁盘使用情况。例如,
du -sh directory/
将显示directory/
目录的总磁盘使用情况。 - ps:显示当前运行的进程。使用
ps aux
可以查看所有进程的详细信息。 - kill:终止一个进程。你需要知道进程的ID(PID),然后使用
kill PID
来终止它。 - top 和 htop:实时显示系统状态和运行的进程。
htop
是一个增强版的top
,界面更加友好。 - nano、vim、emacs:这些是文本编辑器,用于编辑文件。
nano
是一个简单的命令行文本编辑器,适合初学者;vim
和emacs
是更强大的编辑器,有大量的快捷键和功能。 - wget:从网络上下载文件。例如,
wget http://example.com/file.txt
将从http://example.com
下载file.txt
。 - curl:在命令行中发送HTTP请求或下载文件。与
wget
类似,但提供了更多的选项和功能。 - apt(或 yum、dnf,取决于Linux发行版):用于安装、更新和删除软件包。例如,
apt update
更新软件包列表,apt upgrade
升级所有可升级的软件包,apt install package-name
安装一个软件包。 - reboot 和 shutdown:分别用于重启和关闭系统。
声明:
确石如此 | 版权所有,违者必究 | 如未注明,均为原创 | 本站采用 BY-NC-SA4.0 协议进行授权
|
转载请注明原文链接