FrankKai.github.io
FrankKai.github.io copied to clipboard
常用shell命令集
- mac OS
- Linux
- windows
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 -l
POSIX标准信号列表。
which
查看全局工具目录。例如:which git ,which npm etc.
/etc/hosts
hosts文件地址
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/Extensions
chrome插件目录
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"
打印服务器当前时间
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
windows
- hosts文件地址 c:\windows\system32\drivers\etc
- 查看网卡信息
ipconfig /all