欢迎来到资源无忧教程网!

红旗linux

当前位置: 主页 > 操作系统 > 红旗linux

Linux系统常用命令

时间:2024-12-13 16:26:00|栏目:红旗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

标准输出

每个命令都有一个标准输出,这个类似标准输入,也是一个流,不过它是用来给命令向外部输出数据的,默认是屏幕,它类似javaSystem.out。如下:

# 命令默认写出内容到标准输出
echo hello | cat  # 显示指定写到标准输出文件
echo hello | 
cat > /dev/stdout

另外,在有些命令中,也会使用-来代表标准输出文件。

标准错误

标准错误概念上和标准输出类似,不过它是用来程序报告错误的,类似javaSystem.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

也是输入重定向,可即时输入多行文本,bashHere Document语法

cat <

也是输入重定向,可即时输入一行文本,bashHere 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.log

6.管道与重定向揭秘

程序中使用文件描述符来引用一个文件,类似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下的怎么安装Hadoop

本文标题:Linux系统常用命令

本文地址:http://www.ziyuanwuyou.com/html/caozuoxitong/hongqilinux/5084.html

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的资源文章、图片、评论等,均由网友发表或上传并维护或收集自网络,本站不保留版权,如侵权,请联系站长删除!与本站立场无关,所有资源仅作学习参考,不能作其它用途。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行删除,本站均不负任何责任。

联系QQ:592269187 | 邮箱:592269187@qq.com

Copyright © 2024-2060 资源无忧教程网 版权所有湘ICP备2022014703号