lxq.link
postscategoriesabout

Linux / macOS常用terminal命令

tar

解压缩文件

# 解压到指定目录
tar zxvf ./file.tar.gz -C /dir/target

# 打包文件
# 将当前目录下的target文件,打包到指定目录下并命名为file.tar.gz
tar zcvf ./file.tar.gz ./target

lsof

查看端口号使用情况

lsof -i:6000

du

查看目录或者文件所占空间

# 查看当前目录下,所有文件的大小分布
du -d 1 -h

ps

Process Status的缩写,用于报告当前系统的进程状态。

常用参数:

  • -A: 列出所有的进程
  • -l: 长格式(有F,wchan,C 等字段)
  • -w: 显示加宽可以显示较多的资讯
  • -au: 显示较详细的资讯
  • aux: 显示所有包含其他使用者的行程
  • -m: 显示所有的线程

详细进程信息输出的解释:

  • USER: 进程的属主;
  • PID: 进程的ID;
  • PPID: 父进程;
  • %CPU: 进程占用的CPU百分比;
  • %MEM: 占用内存的百分比;
  • NI: 进程的NICE值,数值大,表示较少占用CPU时间;
  • VSZ: 进程虚拟大小;
  • RSS: 驻留中页的数量;
  • TTY: 终端ID
  • STAT: 进程状态(有以下几种)
  • D: 无法中断的休眠状态(通常 IO 的进程);
  • R: 正在运行可中在队列中可过行的;
  • S: 处于休眠状态;
  • T: 停止或被追踪;
  • Z: 僵尸进程;

tail

输入文件中的尾部内容

#监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),动态刷新显示在屏幕上。command + c 退出。
tail -f filename

#显示filename最后20行。
tail -n 20 filename

#逆序显示filename最后10行。
tail -r -n 10 filename

ssh

ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。

登录远程服务器:

ssh user@host
# user => 用户名
# host => 远程服务器

上面的命令,登陆的是SSH默认使用的端口(port 22),如果登陆其他端口,在命令的后面加上 -p port 参数。

ssh user@host -p port

生成本设备的ssh key:

ssh-keygen
#运行上面的命令以后,系统会出现一系列提示,可以一路回车。
#运行结束以后,在~/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是公钥,后者是私钥。

将公钥传送到远程服务器上面:

ssh-copy-id user@host
#将公钥保存在远程服务器的$HOME/.ssh/authorized_keys文件中
#可以免输入密码登录服务器

scp

远程拷贝文件的命令

上传本地文件到远程机器指定目录

scp ~/directory/file1 user@host:~/target/
#将本地的file1文件上传至服务器的target文件夹

从远程服务器复制文件到本地目录

scp user@host:~/directory/file2 ~/target/
#将远程服务器的file2文件复制到本地target文件夹

如果上传/下载目录,需要添加 -r 参数


nohup (Linux only)

nohup命令可以将程序以忽略挂起(SIGHUP)信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。

该命令的一般形式为:

nohup command &

如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

nohup command > myout.file 2>&1 &
  • 在上面的例子中,输出被重定向到myout.file文件中。
  • 2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到myout.file文件中。
  • 使用 jobs -l 查看任务。
  • 使用 kill pid 关闭。

pwd

显示用户当前工作目录


alias

设置指令的别名

  • 语法:alias name='command line'

  • 别名永久化:添加至/etc/bashrc


mkdir

创建目录


touch

创建文件


cat

查看文件


nano / vi / vim

编辑文件


ls

显示目标列表

  • -a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);
  • -A:显示除影藏文件“.”和“..”以外的所有文件列表;
  • -C:多列显示输出结果。这是默认选项;
  • -l:以长格式显示目录下的内容列表。输出文件详细信息;
  • -lh: 会根据文件的大小选择显示的单位是“K”、“M”还是“G”;
  • | wc -w: 查看文件个数
  • -F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;
  • -b:将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;
  • -c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;
  • -d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;
  • -f:此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;
  • -i:显示文件索引节点号(inode)。一个索引节点代表一个文件;
  • -k:以KB(千字节)为单位显示文件大小;
  • -m:用“,”号区隔每个文件和目录的名称;
  • -n:以用户识别码和群组识别码替代其名称;
  • -r:以文件名反序排列并输出目录内容列表;
  • -s:显示文件和目录的大小,以区块为单位;
  • -t:用文件和目录的更改时间排序;
  • -L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;
  • -R:递归处理,将指定目录下的所有文件及子目录一并处理;
  • --full-time:列出完整的日期与时间;
  • --color[=WHEN]:使用不同的颜色高亮显示不同类型的。

rm

删除目标

  • -d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
  • -f:强制删除文件或目录;
  • -i:删除已有文件或目录之前先询问用户;
  • -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
  • --preserve-root:不对根目录进行递归操作;
  • -v:显示指令的详细执行过程。

cp

将一个或多个源文件或者目录复制到指定的目的文件或目录

  • -a:此参数的效果和同时指定"-dpR"参数相同;
  • -d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
  • -f:强行复制文件或目录,不论目标文件或目录是否已存在;
  • -i:覆盖既有文件之前先询问用户;
  • -l:对源文件建立硬连接,而非复制文件;
  • -p:保留源文件或目录的属性;
  • -R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
  • -s:对源文件建立符号连接,而非复制文件;
  • -u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
  • -S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
  • -b:覆盖已存在的文件目标前将目标文件备份; -v:详细显示命令执行的操作。

实例:


#将文件file复制到目录/usr/men/tmp下,并改名为file1 
cp file /usr/men/tmp/file1 

#将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中 
cp -r /usr/men /usr/zh 

#交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh中 
cp -i /usr/men m*.c /usr/zh

mv

用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中

  • --backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
  • -b:当文件存在时,覆盖前,为其创建一个备份;
  • -f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
  • -i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
  • --strip-trailing-slashes:删除源文件中的斜杠“/”;
  • -S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
  • --target-directory=<目录>:指定源文件要移动到目标目录;
  • -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

实例:

#将文件ex3改名为new1 
mv ex3 new1 

#将目录/usr/men中的所有文件移到当前目录(用.表示)中: 
mv /usr/men/* .

cd

切换工作目录


本文内容来源:http://man.linuxde.net/

2021-01-12