Linux系统常用命令
1.基础知识
当我们打开终端时,终端软件会为我们打开一个shell软件,这个shell会显示一个提示符,然后等待用户输入命令。
然后我们就可以在这个界面中执行Linux命令了,shell做为一个命令解释器,它会解释并执行用户输入的命令。这种shell有多种,如sh、csh、tcsh、zsh、fish、bash,而目前Linux环境中使用得最广泛的就是bash。
2.命令参数与选项
Linux命令基本都是如下的形式:
cat -n temp.txt
这个命令表示输出temp.txt的内容,同时包含行号,其中,cat是命令程序,-n是选项,而temp.txt
则是命令参数。一般来说,选项用来控制命令的行为,参数用来给命令输入数据。
3.标准输入、标准输出、标准错误
命令除了参数与选项外,还有标准输入、标准输出与标准错误这3个概念,如下:
标准输入
同样是用来给命令输入数据,它与命令参数的区别是,参数一般是一个(或多个)简短的文本值,而标准输入是一个输入流,命令可从其中读取大量数据,类似java的System.in。
cat < temp.txt
它等效于cat temp.txt
,但本质却是不同的,cat temp.txt
是cat这个程序内部会去读取temp.txt
文件的内容,cat是知道它在读取temp.txt
的,而cat < temp.txt是cat这个程序在读取标准输入中的数据,至于标准输入中的数据从何而来,cat是不知道的。
同时,Linux命令中也经常使用 - 这个特殊的文件名来表示标准输入文件,如下四个命令是等效的:
# cat不指定输入文件时,默认就读取标准输入cat # cat认为 - 代表标准输入文件 cat -# /dev/stdin是具体的标准输入文件 cat /dev/stdin# 指定读取0(标准输入)这个文件描述符 cat <&0
标准输出
每个命令都有一个标准输出,这个类似标准输入,也是一个流,不过它是用来给命令向外部输出数据的,默认是屏幕,它类似java
的System.out
。如下:
# 命令默认写出内容到标准输出 echo hello | cat # 显示指定写到标准输出文件 echo hello | cat > /dev/stdout
另外,在有些命令中,也会使用-来代表标准输出文件。
标准错误
标准错误概念上和标准输出类似,不过它是用来程序报告错误的,类似java
的System.err
。
如下:
# 显示指定写到标准错误文件echo hello | cat > /dev/stderr
4.管道
管道的作用是把命令之间连接起来,让它们之间可以传递数据,上面其实已经见过管道,如下:
echo hello | cat
echo
程序将hello写到标准输出,| 将echo的标准输出与cat的标准输入连接起来,前面标准输出写出什么数据,| 就会将这个数据传到后面程序的标准输入,行为就像管道一样。
默认情况下,管道只能将前面的标准输出传递给后面的程序,如果想将标准错误也传递给后面程序,可以使用|&
# 标准输出与标准错误都通过管道传递给catecho hello |& cat# 与上面等价echo hello 2>&1 | cat
5.重定向
输入重定向,将文件内容重定向为程序的标准输入
cat < temp.txt
也是输入重定向,可即时输入多行文本,bash
的Here Document
语法
cat <也是输入重定向,可即时输入一行文本,
bash
的Here String
语法cat <<标准输出内容重定向到文件,覆盖写入
echo hello | cat > temp.txt>>标准输出内容重定向到文件,追加写入
echo hello | cat >> temp.txt>&2标准输出内容重定向到标准错误
echo hello >&2# 其实也可以写成这样echo hello 1>&22>&1标准错误重定向到标准输出
# 标准输出与标准错误都重定向到app.log,注意2>&1要放在后面 echo hello | cat > app.log 2>&1# 简写形式,与上面等价 echo hello | cat &> app.log6.管道与重定向揭秘
程序中使用文件描述符来引用一个文件,类似java中的File对象,但它是一个数字,又有点像指针,这个指针指向具体的文件。
而linux中,0就是标准输入的文件描述符,1就是标准输出的文件描述符,2就是标准错误的文件描述符
重定向本质是改变文件描述符的指向,如下:
1、执行cat命令后,在另一个shell中查看此cat的文件描述符,发现1标准输出指向/dev/pts/1。
2、结束cat,我们再执行cat > temp.txt,在另一个shell中查看此cat的文件描述符,发现1标准输出这个文件描述符指向了/tmp/temp.txt。
管道本质是创建一个临时管道文件,将前面程序的1标准输出指向这个临时文件,后面程序的0标准输入也指向这个临时文件,如下:
1、执行cat|cat命令
2、不要退出,在另一个shell中查看这两个cat的文件描述符,如下:
注:shell会默认为管道符 | 创建临时管道文件,如果有需要你也可以通过mkfifo显示创建管道文件。
注:只执行一个cat后,命令在等待输入流的数据,所以看起来卡住了,这时可以使用Ctrl + d来退出,这和Ctrl + c是不同的,Ctrl + d作用类似于EOF信号,而Ctrl + c是中断了进程。
7.Linux命令分类
基础命令
(cd ls cp mv rm pwd du df tree find locate touch stat basename dirname realpath tar)(echo printf seq yes tee date time dos2unix iconv bc sleep watch true)
文本命令
(find xargs grep sed awk jq cat head tail wc sort uniq comm join paste cut tr)
进程管理
(ps pstree kill pidof pgrep pkill nohup jobs bg fg disown fuser)
信息收集类
(lsof /proc netstat)
系统信息类
(lscpu lsblk lsscsi fdisk hostname uname dmesg ifconfig ethtool)
资源监控类
(top free vmstat iostat sar iftop dstat nmon glances bpytop)
诊断类
(strace tcpdump gdb gprof pmap pstack gcore perf systemtap bcc bpftrace)
网络工具类
(ncat socat ping telnet host nslookup traceroute mtr ngrep tshark tcpdump nmap whois)
开发辅助类
(curl wget mysql screen tmux ssh scp sshpass expect nano vim emacs)
用户管理类
(su sudo w who whoami id)
8.常用基础命令
输出
# 输出hello,并且尾部输出一个换行符 $ echo hellohello# 输出hello,尾部无换行符 $ echo -n hello # -e使用echo可以解释\n\t这样的转义符 $ echo -e 'a\nb\tc'ab c# 效果类似-e,不过用的是bash的语法特性 $ echo $'a\nb\tc'ab c# 格式化输出,类似C语言的printf函数 $ printf "id:%d,name:%s\n" 1001 zhangsanid:1001,name:zhangsan# 参数多于占位符时,printf会重复 $ printf "id:%d,name:%s\n" 1001 zhangsan 1002 lisi 1003 wangwuid:1001,name:zhangsanid:1002,name:lisiid:1003,name:wangwu目录操作
# 切换到/home目录 $ cd /home# 切换到当前用户家目录 $ cd# ~也代表家目录 $ cd ~# 切换到上次的目录 $ cd -# 显示当前目录 $ pwd# 列出目录下的文件或目录 $ ls# 列出当前目录与一层子目录,用了shell的*号扩展功能 $ ls *# 列出文件或目录,并显示详细信息,ll命令与其等价 $ ls -l# 列出文件或目录,时间倒序 $ ls -lt# 列出文件或目录,大小倒序 $ ls -lS# 树形显示目录与子目录中的文件 $ tree# 只显示2层目录结构,-L 2表示递归深度为2 $ tree -L 2# 显示目录以及子目录的大小 $ du -h# 显示当前目录的大小 $ du -h -s # -d1表示递归深度为1,即显示当前目录下的目录或文件大小 $ du -h -a -d1# 当前目录下,创建temp目录 $ mkdir temp# 创建多级目录 $ mkdir -p temp/test/work# 当前目录下,删除temp目录,需保证待删目录是空的 $ rmdir temp# 重命名目录,也可以重命名文件 $ mv temp temp_bak# 移动目录,也可以移动文件 $ mv temp /tmp/temp_bak文件操作
# 创建文件,touch实际是用来更新文件访问时间的,不过如果文件不存在会默认创建它 $ touch temp.txt# 写入hello,会覆盖原来内容 $ echo hello > temp.txt# 追加写入hello $ echo hello >> temp.txt# 查看文件内容 $ cat temp.txt# 清空文件内容 $ echo -n > temp.txt# 复制文件 $ cp temp.txt temp_bak.txt# 删除文件 $ rm temp_bak.txt# 查看文件类型 $ file temp.txttemp.txt: ASCII text# 查看文件属性,大小/日期等 $ stat temp.txt File: temp.txt Size: 6文件打包与压缩
#压缩文件为*.tar.gz(f必须在最后面) $ tar -cvzf files.tar.gz files/#这两个命令与上面等价 $ tar -cvf files.tar files/ $ gzip files.tar#查看压缩文件 $ tar -tvzf files.tar.gz#解压tar.gz文件到/opt/目录 $ tar -xvzf file.tar.gz -C /opt/#解压zip、Jar文件 $ unzip arthas-bin.zip -d arthas-bin/ $ unzip -O cp936 file.zip#解压rar文件 $ rar x file.rar进程管理
# 列出所有进程,BSD格式 $ ps aux# 列出所有进程,Linux格式 $ ps -ef# 列出java进程 $ ps -fC java# 查看进程号为523的进程 $ ps -fp 523# 查看进程树$ pstree -Tp# 查看当前shell的进程树,其中$$会被shell解释为当前shell的进程号
上一篇:重装Windows后怎么重新恢复进入红旗Linux系统
栏 目:红旗linux
本文标题:Linux系统常用命令
本文地址:http://www.ziyuanwuyou.com/html/caozuoxitong/hongqilinux/5084.html
您可能感兴趣的文章
- 12-22一文教你掌握红旗Linux系统安装的实用技巧与方法
- 12-22零基础也能学会的红旗Linux系统安装教程分享给大家
- 12-22红旗Linux系统安装全攻略:轻松掌握每一步操作技巧
- 12-22安装红旗Linux系统,享受高效稳定的操作系统体验
- 12-22红旗Linux操作系统安装教程:一步步教你如何快速上手操作
- 12-22新手如何轻松安装红旗Linux系统?一篇教程告诉你答案
- 12-22安装红旗Linux操作系统,开启你的技术之旅
- 12-22红旗Linux系统安装教程:从下载到启动的详细步骤解析
- 12-22安装红旗Linux系统,让你轻松体验Linux的魅力
- 12-22红旗Linux系统安装全解析:从入门到熟练的过程分享
阅读排行
推荐教程
- 12-22红旗Linux操作系统安装教程,让你成为Linux高手
- 12-13重装Windows后怎么重新恢复进入红旗Linux系统
- 12-22红旗Linux安装全攻略,一篇文章搞定
- 12-22红旗Linux安装图文教程,轻松上手操作
- 12-22安装红旗Linux系统,享受高效稳定的操作系统体验
- 12-22红旗Linux新手安装教程,一步步带你玩转系统安装
- 12-22红旗Linux系统安装全解析:从入门到熟练的过程分享
- 12-22如何安装红旗Linux操作系统?一篇文章解决你的所有疑问
- 12-22新手如何轻松安装红旗Linux系统?一篇教程告诉你答案
- 12-22红旗Linux操作系统安装教程:一步步教你如何快速上手操作