FrankKai.github.io icon indicating copy to clipboard operation
FrankKai.github.io copied to clipboard

常用shell命令集

Open FrankKai opened this issue 6 years ago • 3 comments

  • mac OS
  • Linux
  • windows

FrankKai avatar Apr 27 '18 02:04 FrankKai

mac OS

ls -A 查看包含隐藏文件的所有文件,不包含. .. 。 ls -a查看包含隐藏文件的所有文件,包含. .. 。 chmod 4755 filename赋予文件root权限 chmod 711 file赋予当前用户读,写,执行文件的权限 man command 查看命令详情 ls -l查看文件(夹)权限 ls -al查看包含隐藏文件的所有文件的文件名和属性 ls -lT查看完整的文件最后修改日期 groups当前用户所属组 groups username用户所属组 whoami当前用户 chgrp group filename修改文件所属组,用户需要在对应的组内 cat /private/var/db/dslocal/nodes/Default/users/root.plist 用户详细信息 ls -l *.sh罗列以.sh结尾的文件 unzip apache-maven-3.5.3-bin.zip 解压zip文件 tar xzvf apache-maven-3.5.3-bin.tar.gz解压tar文件 vim ~/.bash_profile修改环境变量配置文件 mkdir -p创建嵌套目录,假设foo不存在,mkdir foo/bar报错,mkdir -p foo/bar 正常。权限为0777。 echo $HOME打印当前用户的目录。 diff a.txt b.txt -y -W 50 比较两个文件的异同。 ps aux | grep [进程名]查看进程数量。 kill [PID]杀死一个进程。 kill -lPOSIX标准信号列表。 which查看全局工具目录。例如:which git ,which npm etc. /etc/hostshosts文件地址 sudo vim /etc/hosts修改hosts文件 source /ect/hosts使hosts文件立即生效 sudo spctl --master-disable打开所有来源 ifconfig | grep 192.168.0.255精确查询ip ifconfig | grep inet查询所有网卡ip ps -ef | grep node查找所有node进程 curl -X OPTIONS http://example.org -i判断后端是否支持跨域,快速定义问题 telnet 192.168.0.144 9090 检查192.168.0.144主机下的9090端口是否开启 tree 查看当前目录的树形结构 cp ./src/App.vue ..复制App.vue到桌面 cp ./src/App.vue ./src/app.vue复制App.vue并重命名为app.vue cp ../foo/bar .复制bar文件夹到当前目录 mv README.md readme.md重命名文件 echo "hello, world" > hello.md输入"hello world"到hello.md文件 find [file/directory] -type f/d递归搜索文件或者目录 cp -r thumb/ ~/Desktop/corporation/weidian-crm/static/thumb复制整个目录到目标目录 alias ll='ls -lG'll:command not found cat package.json | pbcopy复制package.json到粘贴板 ls -lht打印文件详细信息,并且以Byte,Kb,Mb为单位,按最近修改时间排序 tail -f /home/foo.log打印foo.log文件的最后几行,持续的,只有键入ctrl+c才会停止 ifconfig | grep '192' -v展示反向匹配的信息 ifconfig | grep 192 -o精确查找匹配到的内容 ifconfig | grep 192 -c显示匹配到的内容个数 ifconfig | grep foo -i不区分大小写搜索 lsof -i :9090查看某个端口是否被占用 /Users/frank/Library/Application Support/Google/Chrome/Default/Extensionschrome插件目录 cat file | wc -l查看文件有几行 echo hello > foo.txt覆盖文件 echo hello >> foo.txt附加文件 pgrep -lo <process_name>查找对应名称的进程id which <bin_name>查看二进制bin的目录 find <directory>查看文件目录层级 ls -lh逐行显示文件,文件大小按照Byte, Kilo-byte, Megabyte, Gigabyte, Terabyte and Petabyte单位显示 cp -r dir1 dir2 复制整个dir1到dir2 echo date "+%Y-%m-%d %H:%M:%S" 打印服务器当前时间

FrankKai avatar Apr 27 '18 02:04 FrankKai

Linux

  • 修改文件owner sudo chown frank filename
  • 修改文件夹及其子文件owner sudo chown -R frank projectDirectory -R recursive 递归目录
  • 修改文件权限 sudo chmod 644 filename 4 read , 2 write, 1 execute 用户,组,其他
  • 暴力杀进程 kill -9:KILL (non-catchable, non-ignorable kill,完全不关心进程状态)
  • 所有进程(包括控制进程及其子进程)的进程信息 ps -ef
  • export PATH=$PATH是什么意思? 以export PATH=$PATH:$GOPATH/bin为例,它可以使得govendor命令在全局得到访问。 意思是:添加一个bin目录到linux,macOS等unix系统的PATH,而PATH则是全局系统bin命令的集合。 这里的$GOPATH可以是一个文件夹的地址,通过pwd获取到,例如export PATH=$PATH:/Users/frank/Project/apache-maven-3.6.0/bin
  • $PATH是什么? echo $PATH
/Users/frank/.nvm/versions/node/v10.11.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/Applications/Wireshark.app/Contents/MacOS:/Users/frank/go/bin

这的确印证了关于golang那些事儿中的Unix系统中,值是一个由冒号":"分隔的字符串

当用户在terminal中,键入一个command时,会遍历所有的bin目录,若不存在,则会报错:

-bash:hahahahaha: command not found
  • UNIX系统中,character special files ,block special files与普通的文件的区别? https://unix.stackexchange.com/questions/60034/what-are-character-special-and-block-special-files-in-a-unix-system?newreg=24b6a14cc25542d4aabef51748788152 1.普通文件是事先存储在磁盘上的文件,由文件系统驱动进行处理 2.block special files是字节数组,可以缓存进内存,每次读写都是一整块数据 3.character special files是对即时动作的一种处理,如何处理数据是character special files自己的事情

  • linux中的Hard link和Soft link是什么? https://www.geeksforgeeks.org/soft-hard-links-unixlinux/

  • tty是什么linux命令 tty可以返回用户的terminal名称。 tty工具连接标准输入stdin到标准输出stdout。如果stdin不是一个terminal,会返回一个not a tty。

  • 如何查找到bin的位置? 例如如何查找whoami的位置。

  • systemctl命令是什么? centOS启动服务的命令。systemctl start nginx.service

  • ps aux中的aux是什么? ps是process status,aux是什么呢?https://unix.stackexchange.com/questions/106847/what-does-aux-mean-in-ps-aux

aux是ps的一些可选项。 a = show processes for all users; u = display the process's user/owner; x = also show processes not attached to a terminal

  • ps aux与ps -ef区别是什么? -e 和-A一致 Display information about other users' processes, including those without controlling terminals. f Display the uid, pid, parent pid, recent CPU usage, process start time, controlling tty, elapsed CPU usage, and the associated command. aux会打印出命令的完整参数,CPU和内存占用率 -ef打印父进程ID,精简的CMD

  • 如何查看每一项是什么? ps -ef | head或者ps aux | head -ef: UID PID PPID C STIME TTY TIME CMD aux: USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND

  • netstat是什么? netstat -tlnp netstat - show network status -t --tcp -l --listening 显示监听的sockets -n 显示数字型的ip地址,而不是软链接的主机端口和用户名 -p --program 显示socket属于程序的pid // macOS系统没有这个参数

  • lsof是什么? lsof - list open files. 至于什么是open file,下面这段引用有说明。

An open file may be a regular file, a directory, a block special file, a character special file, an executing text reference, a library, a stream or a network file (Internet socket, NFS file or UNIX domain socket.) A specific file or all the files in a file system may be selected by path.

在unix的设计思想中,一切皆文件,所以一个网络端口的占用情况,也可以通过lsof查询到。 sudo lsof -n -P | grep :9090不生效。 -n 禁止将网络号转换为网络文件的主机名。抑制转化可以使lsof跑得更快。当主机名查找工作不正常时,它也很有用。 -P 禁止将网络文件的端口号转换为端口号。抑制这种转换可能会使lsof运行得更快一些。当端口名称查找不能正常工作时,它也很有用。

lsof -i :9090这个才能真正生效。 -i 选择其Internet地址与i中指定的地址匹配的任何文件的列表。

  • 如何区分ubuntu和centos?centos的包管理器是yum;ubuntu的包管理器是apt-get

FrankKai avatar Oct 08 '18 08:10 FrankKai

windows

  • hosts文件地址 c:\windows\system32\drivers\etc
  • 查看网卡信息
ipconfig /all

FrankKai avatar Sep 27 '20 07:09 FrankKai